| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe | 5 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe |
| 6 // Please update the (git) revision if we merge changes from Dart. | 6 // Please update the (git) revision if we merge changes from Dart. |
| 7 // https://code.google.com/p/dart/wiki/GettingTheSource | 7 // https://code.google.com/p/dart/wiki/GettingTheSource |
| 8 | 8 |
| 9 #include "vm/globals.h" // NOLINT | 9 #include "vm/globals.h" // NOLINT |
| 10 #if defined(TARGET_ARCH_ARM) | 10 #if defined(TARGET_ARCH_ARM) |
| (...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1206 return 0; | 1206 return 0; |
| 1207 default: | 1207 default: |
| 1208 UNREACHABLE(); | 1208 UNREACHABLE(); |
| 1209 break; | 1209 break; |
| 1210 } | 1210 } |
| 1211 | 1211 |
| 1212 UNREACHABLE(); | 1212 UNREACHABLE(); |
| 1213 return -1; | 1213 return -1; |
| 1214 } | 1214 } |
| 1215 | 1215 |
| 1216 | 1216 #if 0 |
| 1217 // Moved to ARM32::AssemblerARM32::emitSIMDqqq() |
| 1217 void Assembler::EmitSIMDqqq(int32_t opcode, OperandSize size, | 1218 void Assembler::EmitSIMDqqq(int32_t opcode, OperandSize size, |
| 1218 QRegister qd, QRegister qn, QRegister qm) { | 1219 QRegister qd, QRegister qn, QRegister qm) { |
| 1219 ASSERT(TargetCPUFeatures::neon_supported()); | 1220 ASSERT(TargetCPUFeatures::neon_supported()); |
| 1220 int sz = ShiftOfOperandSize(size); | 1221 int sz = ShiftOfOperandSize(size); |
| 1221 int32_t encoding = | 1222 int32_t encoding = |
| 1222 (static_cast<int32_t>(kSpecialCondition) << kConditionShift) | | 1223 (static_cast<int32_t>(kSpecialCondition) << kConditionShift) | |
| 1223 B25 | B6 | | 1224 B25 | B6 | |
| 1224 opcode | ((sz & 0x3) * B20) | | 1225 opcode | ((sz & 0x3) * B20) | |
| 1225 ((static_cast<int32_t>(qd * 2) >> 4)*B22) | | 1226 ((static_cast<int32_t>(qd * 2) >> 4)*B22) | |
| 1226 ((static_cast<int32_t>(qn * 2) & 0xf)*B16) | | 1227 ((static_cast<int32_t>(qn * 2) & 0xf)*B16) | |
| 1227 ((static_cast<int32_t>(qd * 2) & 0xf)*B12) | | 1228 ((static_cast<int32_t>(qd * 2) & 0xf)*B12) | |
| 1228 ((static_cast<int32_t>(qn * 2) >> 4)*B7) | | 1229 ((static_cast<int32_t>(qn * 2) >> 4)*B7) | |
| 1229 ((static_cast<int32_t>(qm * 2) >> 4)*B5) | | 1230 ((static_cast<int32_t>(qm * 2) >> 4)*B5) | |
| 1230 (static_cast<int32_t>(qm * 2) & 0xf); | 1231 (static_cast<int32_t>(qm * 2) & 0xf); |
| 1231 Emit(encoding); | 1232 Emit(encoding); |
| 1232 } | 1233 } |
| 1233 | 1234 #endif |
| 1234 | 1235 |
| 1235 void Assembler::EmitSIMDddd(int32_t opcode, OperandSize size, | 1236 void Assembler::EmitSIMDddd(int32_t opcode, OperandSize size, |
| 1236 DRegister dd, DRegister dn, DRegister dm) { | 1237 DRegister dd, DRegister dn, DRegister dm) { |
| 1237 ASSERT(TargetCPUFeatures::neon_supported()); | 1238 ASSERT(TargetCPUFeatures::neon_supported()); |
| 1238 int sz = ShiftOfOperandSize(size); | 1239 int sz = ShiftOfOperandSize(size); |
| 1239 int32_t encoding = | 1240 int32_t encoding = |
| 1240 (static_cast<int32_t>(kSpecialCondition) << kConditionShift) | | 1241 (static_cast<int32_t>(kSpecialCondition) << kConditionShift) | |
| 1241 B25 | | 1242 B25 | |
| 1242 opcode | ((sz & 0x3) * B20) | | 1243 opcode | ((sz & 0x3) * B20) | |
| 1243 ((static_cast<int32_t>(dd) >> 4)*B22) | | 1244 ((static_cast<int32_t>(dd) >> 4)*B22) | |
| 1244 ((static_cast<int32_t>(dn) & 0xf)*B16) | | 1245 ((static_cast<int32_t>(dn) & 0xf)*B16) | |
| 1245 ((static_cast<int32_t>(dd) & 0xf)*B12) | | 1246 ((static_cast<int32_t>(dd) & 0xf)*B12) | |
| 1246 ((static_cast<int32_t>(dn) >> 4)*B7) | | 1247 ((static_cast<int32_t>(dn) >> 4)*B7) | |
| 1247 ((static_cast<int32_t>(dm) >> 4)*B5) | | 1248 ((static_cast<int32_t>(dm) >> 4)*B5) | |
| 1248 (static_cast<int32_t>(dm) & 0xf); | 1249 (static_cast<int32_t>(dm) & 0xf); |
| 1249 Emit(encoding); | 1250 Emit(encoding); |
| 1250 } | 1251 } |
| 1251 | 1252 |
| 1252 | 1253 |
| 1253 void Assembler::vmovq(QRegister qd, QRegister qm) { | 1254 void Assembler::vmovq(QRegister qd, QRegister qm) { |
| 1254 EmitSIMDqqq(B21 | B8 | B4, kByte, qd, qm, qm); | 1255 EmitSIMDqqq(B21 | B8 | B4, kByte, qd, qm, qm); |
| 1255 } | 1256 } |
| 1256 | 1257 |
| 1257 | 1258 #if 0 |
| 1259 // Moved to ARM32::AssemblerARM32::vaddqi(). |
| 1258 void Assembler::vaddqi(OperandSize sz, | 1260 void Assembler::vaddqi(OperandSize sz, |
| 1259 QRegister qd, QRegister qn, QRegister qm) { | 1261 QRegister qd, QRegister qn, QRegister qm) { |
| 1260 EmitSIMDqqq(B11, sz, qd, qn, qm); | 1262 EmitSIMDqqq(B11, sz, qd, qn, qm); |
| 1261 } | 1263 } |
| 1262 | 1264 |
| 1263 | 1265 // Moved to ARM32::AssemblerARM32::vaddqf(). |
| 1264 void Assembler::vaddqs(QRegister qd, QRegister qn, QRegister qm) { | 1266 void Assembler::vaddqs(QRegister qd, QRegister qn, QRegister qm) { |
| 1265 EmitSIMDqqq(B11 | B10 | B8, kSWord, qd, qn, qm); | 1267 EmitSIMDqqq(B11 | B10 | B8, kSWord, qd, qn, qm); |
| 1266 } | 1268 } |
| 1267 | 1269 #endif |
| 1268 | 1270 |
| 1269 void Assembler::vsubqi(OperandSize sz, | 1271 void Assembler::vsubqi(OperandSize sz, |
| 1270 QRegister qd, QRegister qn, QRegister qm) { | 1272 QRegister qd, QRegister qn, QRegister qm) { |
| 1271 EmitSIMDqqq(B24 | B11, sz, qd, qn, qm); | 1273 EmitSIMDqqq(B24 | B11, sz, qd, qn, qm); |
| 1272 } | 1274 } |
| 1273 | 1275 |
| 1274 | 1276 |
| 1275 void Assembler::vsubqs(QRegister qd, QRegister qn, QRegister qm) { | 1277 void Assembler::vsubqs(QRegister qd, QRegister qn, QRegister qm) { |
| 1276 EmitSIMDqqq(B21 | B11 | B10 | B8, kSWord, qd, qn, qm); | 1278 EmitSIMDqqq(B21 | B11 | B10 | B8, kSWord, qd, qn, qm); |
| 1277 } | 1279 } |
| (...skipping 2409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3687 | 3689 |
| 3688 | 3690 |
| 3689 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 3691 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
| 3690 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); | 3692 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); |
| 3691 return fpu_reg_names[reg]; | 3693 return fpu_reg_names[reg]; |
| 3692 } | 3694 } |
| 3693 | 3695 |
| 3694 } // namespace dart | 3696 } // namespace dart |
| 3695 | 3697 |
| 3696 #endif // defined TARGET_ARCH_ARM | 3698 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |