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 /// \file | 10 /// \file |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 InstARM32LoadBase(const InstARM32LoadBase &) = delete; | 530 InstARM32LoadBase(const InstARM32LoadBase &) = delete; |
531 InstARM32LoadBase &operator=(const InstARM32LoadBase &) = delete; | 531 InstARM32LoadBase &operator=(const InstARM32LoadBase &) = delete; |
532 | 532 |
533 public: | 533 public: |
534 static InstARM32LoadBase *create(Cfg *Func, Variable *Dest, Operand *Source, | 534 static InstARM32LoadBase *create(Cfg *Func, Variable *Dest, Operand *Source, |
535 CondARM32::Cond Predicate) { | 535 CondARM32::Cond Predicate) { |
536 return new (Func->allocate<InstARM32LoadBase>()) | 536 return new (Func->allocate<InstARM32LoadBase>()) |
537 InstARM32LoadBase(Func, Dest, Source, Predicate); | 537 InstARM32LoadBase(Func, Dest, Source, Predicate); |
538 } | 538 } |
539 void emit(const Cfg *Func) const override; | 539 void emit(const Cfg *Func) const override; |
| 540 void emitIAS(const Cfg *Func) const override; |
540 void dump(const Cfg *Func) const override { | 541 void dump(const Cfg *Func) const override { |
541 if (!BuildDefs::dump()) | 542 if (!BuildDefs::dump()) |
542 return; | 543 return; |
543 Ostream &Str = Func->getContext()->getStrDump(); | 544 Ostream &Str = Func->getContext()->getStrDump(); |
544 dumpOpcodePred(Str, Opcode, getDest()->getType()); | 545 dumpOpcodePred(Str, Opcode, getDest()->getType()); |
545 Str << " "; | 546 Str << " "; |
546 dumpDest(Func); | 547 dumpDest(Func); |
547 Str << ", "; | 548 Str << ", "; |
548 dumpSources(Func); | 549 dumpSources(Func); |
549 } | 550 } |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1000 InstARM32Str &operator=(const InstARM32Str &) = delete; | 1001 InstARM32Str &operator=(const InstARM32Str &) = delete; |
1001 | 1002 |
1002 public: | 1003 public: |
1003 /// Value must be a register. | 1004 /// Value must be a register. |
1004 static InstARM32Str *create(Cfg *Func, Variable *Value, OperandARM32Mem *Mem, | 1005 static InstARM32Str *create(Cfg *Func, Variable *Value, OperandARM32Mem *Mem, |
1005 CondARM32::Cond Predicate) { | 1006 CondARM32::Cond Predicate) { |
1006 return new (Func->allocate<InstARM32Str>()) | 1007 return new (Func->allocate<InstARM32Str>()) |
1007 InstARM32Str(Func, Value, Mem, Predicate); | 1008 InstARM32Str(Func, Value, Mem, Predicate); |
1008 } | 1009 } |
1009 void emit(const Cfg *Func) const override; | 1010 void emit(const Cfg *Func) const override; |
| 1011 void emitIAS(const Cfg *Func) const override; |
1010 void dump(const Cfg *Func) const override; | 1012 void dump(const Cfg *Func) const override; |
1011 static bool classof(const Inst *Inst) { return isClassof(Inst, Str); } | 1013 static bool classof(const Inst *Inst) { return isClassof(Inst, Str); } |
1012 | 1014 |
1013 private: | 1015 private: |
1014 InstARM32Str(Cfg *Func, Variable *Value, OperandARM32Mem *Mem, | 1016 InstARM32Str(Cfg *Func, Variable *Value, OperandARM32Mem *Mem, |
1015 CondARM32::Cond Predicate); | 1017 CondARM32::Cond Predicate); |
1016 }; | 1018 }; |
1017 | 1019 |
1018 /// Exclusive Store instruction. Like its non-exclusive sibling, it's important | 1020 /// Exclusive Store instruction. Like its non-exclusive sibling, it's important |
1019 /// for liveness that there is no Dest operand (OperandARM32Mem instead of Dest | 1021 /// for liveness that there is no Dest operand (OperandARM32Mem instead of Dest |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1229 // default implementations. Without this, there is the possibility of ODR | 1231 // default implementations. Without this, there is the possibility of ODR |
1230 // violations and link errors. | 1232 // violations and link errors. |
1231 | 1233 |
1232 template <> void InstARM32Ldr::emit(const Cfg *Func) const; | 1234 template <> void InstARM32Ldr::emit(const Cfg *Func) const; |
1233 template <> void InstARM32Movw::emit(const Cfg *Func) const; | 1235 template <> void InstARM32Movw::emit(const Cfg *Func) const; |
1234 template <> void InstARM32Movt::emit(const Cfg *Func) const; | 1236 template <> void InstARM32Movt::emit(const Cfg *Func) const; |
1235 | 1237 |
1236 } // end of namespace Ice | 1238 } // end of namespace Ice |
1237 | 1239 |
1238 #endif // SUBZERO_SRC_ICEINSTARM32_H | 1240 #endif // SUBZERO_SRC_ICEINSTARM32_H |
OLD | NEW |