OLD | NEW |
1 //===- subzero/src/IceInstARM32.h - ARM32 machine instructions --*- C++ -*-===// | 1 //===- subzero/src/IceInstARM32.h - ARM32 machine instructions --*- C++ -*-===// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file declares the InstARM32 and OperandARM32 classes and | 10 // This file declares the InstARM32 and OperandARM32 classes and |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 InstARM32() = delete; | 245 InstARM32() = delete; |
246 InstARM32(const InstARM32 &) = delete; | 246 InstARM32(const InstARM32 &) = delete; |
247 InstARM32 &operator=(const InstARM32 &) = delete; | 247 InstARM32 &operator=(const InstARM32 &) = delete; |
248 | 248 |
249 public: | 249 public: |
250 enum InstKindARM32 { | 250 enum InstKindARM32 { |
251 k__Start = Inst::Target, | 251 k__Start = Inst::Target, |
252 Adc, | 252 Adc, |
253 Add, | 253 Add, |
254 And, | 254 And, |
| 255 Bic, |
255 Br, | 256 Br, |
256 Call, | 257 Call, |
257 Cmp, | 258 Cmp, |
258 Eor, | 259 Eor, |
259 Ldr, | 260 Ldr, |
260 Lsl, | 261 Lsl, |
261 Mla, | 262 Mla, |
262 Mov, | 263 Mov, |
263 Movt, | 264 Movt, |
264 Movw, | 265 Movw, |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
503 addSource(Src2); | 504 addSource(Src2); |
504 } | 505 } |
505 ~InstARM32ThreeAddrGPR() override {} | 506 ~InstARM32ThreeAddrGPR() override {} |
506 static const char *Opcode; | 507 static const char *Opcode; |
507 bool SetFlags; | 508 bool SetFlags; |
508 }; | 509 }; |
509 | 510 |
510 typedef InstARM32ThreeAddrGPR<InstARM32::Adc> InstARM32Adc; | 511 typedef InstARM32ThreeAddrGPR<InstARM32::Adc> InstARM32Adc; |
511 typedef InstARM32ThreeAddrGPR<InstARM32::Add> InstARM32Add; | 512 typedef InstARM32ThreeAddrGPR<InstARM32::Add> InstARM32Add; |
512 typedef InstARM32ThreeAddrGPR<InstARM32::And> InstARM32And; | 513 typedef InstARM32ThreeAddrGPR<InstARM32::And> InstARM32And; |
| 514 typedef InstARM32ThreeAddrGPR<InstARM32::Bic> InstARM32Bic; |
513 typedef InstARM32ThreeAddrGPR<InstARM32::Eor> InstARM32Eor; | 515 typedef InstARM32ThreeAddrGPR<InstARM32::Eor> InstARM32Eor; |
514 typedef InstARM32ThreeAddrGPR<InstARM32::Lsl> InstARM32Lsl; | 516 typedef InstARM32ThreeAddrGPR<InstARM32::Lsl> InstARM32Lsl; |
515 typedef InstARM32ThreeAddrGPR<InstARM32::Mul> InstARM32Mul; | 517 typedef InstARM32ThreeAddrGPR<InstARM32::Mul> InstARM32Mul; |
516 typedef InstARM32ThreeAddrGPR<InstARM32::Orr> InstARM32Orr; | 518 typedef InstARM32ThreeAddrGPR<InstARM32::Orr> InstARM32Orr; |
517 typedef InstARM32ThreeAddrGPR<InstARM32::Sbc> InstARM32Sbc; | 519 typedef InstARM32ThreeAddrGPR<InstARM32::Sbc> InstARM32Sbc; |
518 typedef InstARM32ThreeAddrGPR<InstARM32::Sub> InstARM32Sub; | 520 typedef InstARM32ThreeAddrGPR<InstARM32::Sub> InstARM32Sub; |
519 // Move instruction (variable <- flex). This is more of a pseudo-inst. | 521 // Move instruction (variable <- flex). This is more of a pseudo-inst. |
520 // If var is a register, then we use "mov". If var is stack, then we use | 522 // If var is a register, then we use "mov". If var is stack, then we use |
521 // "str" to store to the stack. | 523 // "str" to store to the stack. |
522 typedef InstARM32Movlike<InstARM32::Mov> InstARM32Mov; | 524 typedef InstARM32Movlike<InstARM32::Mov> InstARM32Mov; |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 // Declare partial template specializations of emit() methods that | 740 // Declare partial template specializations of emit() methods that |
739 // already have default implementations. Without this, there is the | 741 // already have default implementations. Without this, there is the |
740 // possibility of ODR violations and link errors. | 742 // possibility of ODR violations and link errors. |
741 | 743 |
742 template <> void InstARM32Movw::emit(const Cfg *Func) const; | 744 template <> void InstARM32Movw::emit(const Cfg *Func) const; |
743 template <> void InstARM32Movt::emit(const Cfg *Func) const; | 745 template <> void InstARM32Movt::emit(const Cfg *Func) const; |
744 | 746 |
745 } // end of namespace Ice | 747 } // end of namespace Ice |
746 | 748 |
747 #endif // SUBZERO_SRC_ICEINSTARM32_H | 749 #endif // SUBZERO_SRC_ICEINSTARM32_H |
OLD | NEW |