| 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 2108 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2119   constexpr IValueT VFPOpcode = B27 | B26 | B25 | B11 | B9; | 2119   constexpr IValueT VFPOpcode = B27 | B26 | B25 | B11 | B9; | 
| 2120   const IValueT Encoding = | 2120   const IValueT Encoding = | 
| 2121       Opcode | VFPOpcode | (encodeCondition(Cond) << kConditionShift) | | 2121       Opcode | VFPOpcode | (encodeCondition(Cond) << kConditionShift) | | 
| 2122       (getYInRegXXXXY(Sd) << 22) | (getXXXXInRegXXXXY(Sd) << 12) | | 2122       (getYInRegXXXXY(Sd) << 22) | (getXXXXInRegXXXXY(Sd) << 12) | | 
| 2123       (getYInRegYXXXX(Dm) << 5) | getXXXXInRegYXXXX(Dm); | 2123       (getYInRegYXXXX(Dm) << 5) | getXXXXInRegYXXXX(Dm); | 
| 2124   emitInst(Encoding); | 2124   emitInst(Encoding); | 
| 2125 } | 2125 } | 
| 2126 | 2126 | 
| 2127 void AssemblerARM32::vcvtsd(const Operand *OpSd, const Operand *OpDm, | 2127 void AssemblerARM32::vcvtsd(const Operand *OpSd, const Operand *OpDm, | 
| 2128                             CondARM32::Cond Cond) { | 2128                             CondARM32::Cond Cond) { | 
| 2129   constexpr const char *Vcvtsd = "vctsd"; | 2129   constexpr const char *Vcvtsd = "vcvtsd"; | 
| 2130   IValueT Sd = encodeSRegister(OpSd, "Sd", Vcvtsd); | 2130   IValueT Sd = encodeSRegister(OpSd, "Sd", Vcvtsd); | 
| 2131   IValueT Dm = encodeDRegister(OpDm, "Dm", Vcvtsd); | 2131   IValueT Dm = encodeDRegister(OpDm, "Dm", Vcvtsd); | 
| 2132   constexpr IValueT VcvtsdOpcode = | 2132   constexpr IValueT VcvtsdOpcode = | 
| 2133       B23 | B21 | B20 | B18 | B17 | B16 | B8 | B7 | B6; | 2133       B23 | B21 | B20 | B18 | B17 | B16 | B8 | B7 | B6; | 
| 2134   emitVFPsd(Cond, VcvtsdOpcode, Sd, Dm); | 2134   emitVFPsd(Cond, VcvtsdOpcode, Sd, Dm); | 
| 2135 } | 2135 } | 
| 2136 | 2136 | 
|  | 2137 void AssemblerARM32::vcvtis(const Operand *OpSd, const Operand *OpSm, | 
|  | 2138                             CondARM32::Cond Cond) { | 
|  | 2139   // VCVT (between floating-point and integer, Floating-point) | 
|  | 2140   //      - ARM Section A8.8.306, encoding A1: | 
|  | 2141   //   vcvt<c>.s32.f32 <Sd>, <Sm> | 
|  | 2142   // | 
|  | 2143   // cccc11101D111101dddd10101M0mmmm where cccc=Cond, ddddD=Sd, and mmmmM=Sm. | 
|  | 2144   constexpr const char *Vcvtis = "vcvtis"; | 
|  | 2145   IValueT Sd = encodeSRegister(OpSd, "Sd", Vcvtis); | 
|  | 2146   IValueT Sm = encodeSRegister(OpSm, "Sm", Vcvtis); | 
|  | 2147   constexpr IValueT VcvtsiOpcode = B23 | B21 | B20 | B19 | B18 | B16 | B7 | B6; | 
|  | 2148   constexpr IValueT S0 = 0; | 
|  | 2149   emitVFPsss(Cond, VcvtsiOpcode, Sd, S0, Sm); | 
|  | 2150 } | 
|  | 2151 | 
| 2137 void AssemblerARM32::emitVFPds(CondARM32::Cond Cond, IValueT Opcode, IValueT Dd, | 2152 void AssemblerARM32::emitVFPds(CondARM32::Cond Cond, IValueT Opcode, IValueT Dd, | 
| 2138                                IValueT Sm) { | 2153                                IValueT Sm) { | 
| 2139   assert(Dd < RegARM32::getNumDRegs()); | 2154   assert(Dd < RegARM32::getNumDRegs()); | 
| 2140   assert(Sm < RegARM32::getNumSRegs()); | 2155   assert(Sm < RegARM32::getNumSRegs()); | 
| 2141   assert(CondARM32::isDefined(Cond)); | 2156   assert(CondARM32::isDefined(Cond)); | 
| 2142   AssemblerBuffer::EnsureCapacity ensured(&Buffer); | 2157   AssemblerBuffer::EnsureCapacity ensured(&Buffer); | 
| 2143   constexpr IValueT VFPOpcode = B27 | B26 | B25 | B11 | B9; | 2158   constexpr IValueT VFPOpcode = B27 | B26 | B25 | B11 | B9; | 
| 2144   const IValueT Encoding = | 2159   const IValueT Encoding = | 
| 2145       Opcode | VFPOpcode | (encodeCondition(Cond) << kConditionShift) | | 2160       Opcode | VFPOpcode | (encodeCondition(Cond) << kConditionShift) | | 
| 2146       (getYInRegYXXXX(Dd) << 22) | (getXXXXInRegYXXXX(Dd) << 12) | | 2161       (getYInRegYXXXX(Dd) << 22) | (getXXXXInRegYXXXX(Dd) << 12) | | 
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2289   // | 2304   // | 
| 2290   // cccc11010D101101dddd1010iiiiiiii where cccc=Cond, ddddD=BaseReg, and | 2305   // cccc11010D101101dddd1010iiiiiiii where cccc=Cond, ddddD=BaseReg, and | 
| 2291   // iiiiiiii=NumConsecRegs. | 2306   // iiiiiiii=NumConsecRegs. | 
| 2292   constexpr IValueT VpushOpcode = | 2307   constexpr IValueT VpushOpcode = | 
| 2293       B27 | B26 | B24 | B21 | B19 | B18 | B16 | B11 | B9; | 2308       B27 | B26 | B24 | B21 | B19 | B18 | B16 | B11 | B9; | 
| 2294   emitVStackOp(Cond, VpushOpcode, OpBaseReg, NumConsecRegs); | 2309   emitVStackOp(Cond, VpushOpcode, OpBaseReg, NumConsecRegs); | 
| 2295 } | 2310 } | 
| 2296 | 2311 | 
| 2297 } // end of namespace ARM32 | 2312 } // end of namespace ARM32 | 
| 2298 } // end of namespace Ice | 2313 } // end of namespace Ice | 
| OLD | NEW | 
|---|