OLD | NEW |
1 //===- subzero/src/IceAssemblerARM32.cpp - Assembler for ARM32 --*- C++ -*-===// | 1 //===- subzero/src/IceAssemblerARM32.cpp - 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 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 AssemblerARM32::createBlFixup(const ConstantRelocatable *BlTarget) { | 681 AssemblerARM32::createBlFixup(const ConstantRelocatable *BlTarget) { |
682 BlRelocatableFixup *F = | 682 BlRelocatableFixup *F = |
683 new (allocate<BlRelocatableFixup>()) BlRelocatableFixup(); | 683 new (allocate<BlRelocatableFixup>()) BlRelocatableFixup(); |
684 F->set_kind(llvm::ELF::R_ARM_CALL); | 684 F->set_kind(llvm::ELF::R_ARM_CALL); |
685 F->set_value(BlTarget); | 685 F->set_value(BlTarget); |
686 Buffer.installFixup(F); | 686 Buffer.installFixup(F); |
687 return F; | 687 return F; |
688 } | 688 } |
689 | 689 |
690 void AssemblerARM32::bindCfgNodeLabel(const CfgNode *Node) { | 690 void AssemblerARM32::bindCfgNodeLabel(const CfgNode *Node) { |
691 GlobalContext *Ctx = Node->getCfg()->getContext(); | 691 if (BuildDefs::dump() && !getFlags().getDisableHybridAssembly()) { |
692 if (BuildDefs::dump() && !Ctx->getFlags().getDisableHybridAssembly()) { | |
693 // Generate label name so that branches can find it. | 692 // Generate label name so that branches can find it. |
694 constexpr SizeT InstSize = 0; | 693 constexpr SizeT InstSize = 0; |
695 emitTextInst(Node->getAsmName() + ":", InstSize); | 694 emitTextInst(Node->getAsmName() + ":", InstSize); |
696 } | 695 } |
697 SizeT NodeNumber = Node->getIndex(); | 696 SizeT NodeNumber = Node->getIndex(); |
698 assert(!getPreliminary()); | 697 assert(!getPreliminary()); |
699 Label *L = getOrCreateCfgNodeLabel(NodeNumber); | 698 Label *L = getOrCreateCfgNodeLabel(NodeNumber); |
700 this->bind(L); | 699 this->bind(L); |
701 } | 700 } |
702 | 701 |
(...skipping 2498 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3201 constexpr const char *Vsqrts = "vsqrts"; | 3200 constexpr const char *Vsqrts = "vsqrts"; |
3202 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts); | 3201 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts); |
3203 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts); | 3202 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts); |
3204 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6; | 3203 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6; |
3205 constexpr IValueT S0 = 0; | 3204 constexpr IValueT S0 = 0; |
3206 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm); | 3205 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm); |
3207 } | 3206 } |
3208 | 3207 |
3209 } // end of namespace ARM32 | 3208 } // end of namespace ARM32 |
3210 } // end of namespace Ice | 3209 } // end of namespace Ice |
OLD | NEW |