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 2453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2464 IValueT Dm = encodeDRegister(OpDm, "Dm", Veord); | 2464 IValueT Dm = encodeDRegister(OpDm, "Dm", Veord); |
2465 const IValueT Encoding = | 2465 const IValueT Encoding = |
2466 B25 | B24 | B8 | B4 | | 2466 B25 | B24 | B8 | B4 | |
2467 (encodeCondition(CondARM32::Cond::kNone) << kConditionShift) | | 2467 (encodeCondition(CondARM32::Cond::kNone) << kConditionShift) | |
2468 (getYInRegYXXXX(Dd) << 22) | (getXXXXInRegYXXXX(Dn) << 16) | | 2468 (getYInRegYXXXX(Dd) << 22) | (getXXXXInRegYXXXX(Dn) << 16) | |
2469 (getXXXXInRegYXXXX(Dd) << 12) | (getYInRegYXXXX(Dn) << 7) | | 2469 (getXXXXInRegYXXXX(Dd) << 12) | (getYInRegYXXXX(Dn) << 7) | |
2470 (getYInRegYXXXX(Dm) << 5) | getXXXXInRegYXXXX(Dm); | 2470 (getYInRegYXXXX(Dm) << 5) | getXXXXInRegYXXXX(Dm); |
2471 emitInst(Encoding); | 2471 emitInst(Encoding); |
2472 } | 2472 } |
2473 | 2473 |
| 2474 void AssemblerARM32::veorq(const Operand *OpQd, const Operand *OpQn, |
| 2475 const Operand *OpQm) { |
| 2476 constexpr const char *Veorq = "veorq"; |
| 2477 constexpr IValueT VeorqOpcode = B24 | B8 | B4; |
| 2478 emitSIMDqqq(VeorqOpcode, IceType_i8, OpQd, OpQn, OpQm, Veorq); |
| 2479 } |
| 2480 |
2474 void AssemblerARM32::vldrd(const Operand *OpDd, const Operand *OpAddress, | 2481 void AssemblerARM32::vldrd(const Operand *OpDd, const Operand *OpAddress, |
2475 CondARM32::Cond Cond, const TargetInfo &TInfo) { | 2482 CondARM32::Cond Cond, const TargetInfo &TInfo) { |
2476 // VLDR - ARM section A8.8.333, encoding A1. | 2483 // VLDR - ARM section A8.8.333, encoding A1. |
2477 // vldr<c> <Dd>, [<Rn>{, #+/-<imm>}] | 2484 // vldr<c> <Dd>, [<Rn>{, #+/-<imm>}] |
2478 // | 2485 // |
2479 // cccc1101UD01nnnndddd1011iiiiiiii where cccc=Cond, nnnn=Rn, Ddddd=Rd, | 2486 // cccc1101UD01nnnndddd1011iiiiiiii where cccc=Cond, nnnn=Rn, Ddddd=Rd, |
2480 // iiiiiiii=abs(Imm >> 2), and U=1 if Opcode>=0. | 2487 // iiiiiiii=abs(Imm >> 2), and U=1 if Opcode>=0. |
2481 constexpr const char *Vldrd = "vldrd"; | 2488 constexpr const char *Vldrd = "vldrd"; |
2482 IValueT Dd = encodeDRegister(OpDd, "Dd", Vldrd); | 2489 IValueT Dd = encodeDRegister(OpDd, "Dd", Vldrd); |
2483 assert(CondARM32::isDefined(Cond)); | 2490 assert(CondARM32::isDefined(Cond)); |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2921 constexpr const char *Vsqrts = "vsqrts"; | 2928 constexpr const char *Vsqrts = "vsqrts"; |
2922 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts); | 2929 IValueT Sd = encodeSRegister(OpSd, "Sd", Vsqrts); |
2923 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts); | 2930 IValueT Sm = encodeSRegister(OpSm, "Sm", Vsqrts); |
2924 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6; | 2931 constexpr IValueT VsqrtsOpcode = B23 | B21 | B20 | B16 | B7 | B6; |
2925 constexpr IValueT S0 = 0; | 2932 constexpr IValueT S0 = 0; |
2926 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm); | 2933 emitVFPsss(Cond, VsqrtsOpcode, Sd, S0, Sm); |
2927 } | 2934 } |
2928 | 2935 |
2929 } // end of namespace ARM32 | 2936 } // end of namespace ARM32 |
2930 } // end of namespace Ice | 2937 } // end of namespace Ice |
OLD | NEW |