Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(638)

Side by Side Diff: src/DartARM32/assembler_arm.cc

Issue 1652173002: Implements the vector add instructions in the integrated ARM assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix nits. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/DartARM32/assembler_arm.h ('k') | src/IceAssemblerARM32.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « src/DartARM32/assembler_arm.h ('k') | src/IceAssemblerARM32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698