| OLD | NEW |
| 1 //===- subzero/src/IceAssemblerARM32.h - Assembler for ARM32 ----*- C++ -*-===// | 1 //===- subzero/src/IceAssemblerARM32.h - Assembler for ARM32 ----*- C++ -*-===// |
| 2 // | 2 // |
| 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 3 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 4 // for details. All rights reserved. Use of this source code is governed by a | 4 // for details. All rights reserved. Use of this source code is governed by a |
| 5 // BSD-style license that can be found in the LICENSE file. | 5 // BSD-style license that can be found in the LICENSE file. |
| 6 // | 6 // |
| 7 // Modified by the Subzero authors. | 7 // Modified by the Subzero authors. |
| 8 // | 8 // |
| 9 //===----------------------------------------------------------------------===// | 9 //===----------------------------------------------------------------------===// |
| 10 // | 10 // |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 public: | 88 public: |
| 89 TargetInfo(bool HasFramePointer, SizeT FrameOrStackReg) | 89 TargetInfo(bool HasFramePointer, SizeT FrameOrStackReg) |
| 90 : HasFramePointer(HasFramePointer), FrameOrStackReg(FrameOrStackReg) {} | 90 : HasFramePointer(HasFramePointer), FrameOrStackReg(FrameOrStackReg) {} |
| 91 explicit TargetInfo(const TargetLowering *Target) | 91 explicit TargetInfo(const TargetLowering *Target) |
| 92 : HasFramePointer(Target->hasFramePointer()), | 92 : HasFramePointer(Target->hasFramePointer()), |
| 93 FrameOrStackReg(Target->getFrameOrStackReg()) {} | 93 FrameOrStackReg(Target->getFrameOrStackReg()) {} |
| 94 const bool HasFramePointer; | 94 const bool HasFramePointer; |
| 95 const SizeT FrameOrStackReg; | 95 const SizeT FrameOrStackReg; |
| 96 }; | 96 }; |
| 97 | 97 |
| 98 explicit AssemblerARM32(bool use_far_branches = false) | 98 explicit AssemblerARM32(bool IsNonsfi, bool use_far_branches = false) |
| 99 : Assembler(Asm_ARM32) { | 99 : Assembler(Asm_ARM32), IsNonsfi(IsNonsfi) { |
| 100 // TODO(kschimpf): Add mode if needed when branches are handled. | 100 // TODO(kschimpf): Add mode if needed when branches are handled. |
| 101 (void)use_far_branches; | 101 (void)use_far_branches; |
| 102 } | 102 } |
| 103 ~AssemblerARM32() override { | 103 ~AssemblerARM32() override { |
| 104 if (BuildDefs::asserts()) { | 104 if (BuildDefs::asserts()) { |
| 105 for (const Label *Label : CfgNodeLabels) { | 105 for (const Label *Label : CfgNodeLabels) { |
| 106 Label->finalCheck(); | 106 Label->finalCheck(); |
| 107 } | 107 } |
| 108 for (const Label *Label : LocalLabels) { | 108 for (const Label *Label : LocalLabels) { |
| 109 Label->finalCheck(); | 109 Label->finalCheck(); |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 | 520 |
| 521 static bool classof(const Assembler *Asm) { | 521 static bool classof(const Assembler *Asm) { |
| 522 return Asm->getKind() == Asm_ARM32; | 522 return Asm->getKind() == Asm_ARM32; |
| 523 } | 523 } |
| 524 | 524 |
| 525 void emitTextInst(const std::string &Text, SizeT InstSize); | 525 void emitTextInst(const std::string &Text, SizeT InstSize); |
| 526 | 526 |
| 527 private: | 527 private: |
| 528 ENABLE_MAKE_UNIQUE; | 528 ENABLE_MAKE_UNIQUE; |
| 529 | 529 |
| 530 const bool IsNonsfi; |
| 531 |
| 530 // A vector of pool-allocated x86 labels for CFG nodes. | 532 // A vector of pool-allocated x86 labels for CFG nodes. |
| 531 using LabelVector = std::vector<Label *>; | 533 using LabelVector = std::vector<Label *>; |
| 532 LabelVector CfgNodeLabels; | 534 LabelVector CfgNodeLabels; |
| 533 // A vector of pool-allocated x86 labels for Local labels. | 535 // A vector of pool-allocated x86 labels for Local labels. |
| 534 LabelVector LocalLabels; | 536 LabelVector LocalLabels; |
| 535 // Number of bytes emitted by InstARM32::emit() methods, when run inside | 537 // Number of bytes emitted by InstARM32::emit() methods, when run inside |
| 536 // InstARM32::emitUsingTextFixup(). | 538 // InstARM32::emitUsingTextFixup(). |
| 537 size_t EmitTextSize = 0; | 539 size_t EmitTextSize = 0; |
| 538 | 540 |
| 539 // Load/store multiple addressing mode. | 541 // Load/store multiple addressing mode. |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 705 | 707 |
| 706 void emitVFPsss(CondARM32::Cond Cond, IValueT Opcode, const Operand *OpSd, | 708 void emitVFPsss(CondARM32::Cond Cond, IValueT Opcode, const Operand *OpSd, |
| 707 const Operand *OpSn, const Operand *OpSm, | 709 const Operand *OpSn, const Operand *OpSm, |
| 708 const char *InstName); | 710 const char *InstName); |
| 709 }; | 711 }; |
| 710 | 712 |
| 711 } // end of namespace ARM32 | 713 } // end of namespace ARM32 |
| 712 } // end of namespace Ice | 714 } // end of namespace Ice |
| 713 | 715 |
| 714 #endif // SUBZERO_SRC_ICEASSEMBLERARM32_H | 716 #endif // SUBZERO_SRC_ICEASSEMBLERARM32_H |
| OLD | NEW |