| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 | 6 |
| 7 #include "src/arm64/frames-arm64.h" | 7 #include "src/arm64/frames-arm64.h" |
| 8 #include "src/arm64/macro-assembler-arm64.h" | 8 #include "src/arm64/macro-assembler-arm64.h" |
| 9 #include "src/ast/scopes.h" | 9 #include "src/ast/scopes.h" |
| 10 #include "src/compiler/code-generator-impl.h" | 10 #include "src/compiler/code-generator-impl.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 break; | 152 break; |
| 153 } | 153 } |
| 154 UNREACHABLE(); | 154 UNREACHABLE(); |
| 155 return Operand(-1); | 155 return Operand(-1); |
| 156 } | 156 } |
| 157 | 157 |
| 158 MemOperand MemoryOperand(size_t* first_index) { | 158 MemOperand MemoryOperand(size_t* first_index) { |
| 159 const size_t index = *first_index; | 159 const size_t index = *first_index; |
| 160 switch (AddressingModeField::decode(instr_->opcode())) { | 160 switch (AddressingModeField::decode(instr_->opcode())) { |
| 161 case kMode_None: | 161 case kMode_None: |
| 162 case kMode_Operand2_R_LSL_I: | |
| 163 case kMode_Operand2_R_LSR_I: | 162 case kMode_Operand2_R_LSR_I: |
| 164 case kMode_Operand2_R_ASR_I: | 163 case kMode_Operand2_R_ASR_I: |
| 165 case kMode_Operand2_R_ROR_I: | 164 case kMode_Operand2_R_ROR_I: |
| 166 case kMode_Operand2_R_UXTB: | 165 case kMode_Operand2_R_UXTB: |
| 167 case kMode_Operand2_R_UXTH: | 166 case kMode_Operand2_R_UXTH: |
| 168 case kMode_Operand2_R_SXTB: | 167 case kMode_Operand2_R_SXTB: |
| 169 case kMode_Operand2_R_SXTH: | 168 case kMode_Operand2_R_SXTH: |
| 170 break; | 169 break; |
| 170 case kMode_Operand2_R_LSL_I: |
| 171 *first_index += 3; |
| 172 return MemOperand(InputRegister(index + 0), InputRegister(index + 1), |
| 173 LSL, InputInt32(index + 2)); |
| 171 case kMode_MRI: | 174 case kMode_MRI: |
| 172 *first_index += 2; | 175 *first_index += 2; |
| 173 return MemOperand(InputRegister(index + 0), InputInt32(index + 1)); | 176 return MemOperand(InputRegister(index + 0), InputInt32(index + 1)); |
| 174 case kMode_MRR: | 177 case kMode_MRR: |
| 175 *first_index += 2; | 178 *first_index += 2; |
| 176 return MemOperand(InputRegister(index + 0), InputRegister(index + 1)); | 179 return MemOperand(InputRegister(index + 0), InputRegister(index + 1)); |
| 177 } | 180 } |
| 178 UNREACHABLE(); | 181 UNREACHABLE(); |
| 179 return MemOperand(no_reg); | 182 return MemOperand(no_reg); |
| 180 } | 183 } |
| (...skipping 1176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1357 case kArm64U64MoveFloat64: | 1360 case kArm64U64MoveFloat64: |
| 1358 __ Fmov(i.OutputRegister(), i.InputDoubleRegister(0)); | 1361 __ Fmov(i.OutputRegister(), i.InputDoubleRegister(0)); |
| 1359 break; | 1362 break; |
| 1360 case kArm64Ldrb: | 1363 case kArm64Ldrb: |
| 1361 __ Ldrb(i.OutputRegister(), i.MemoryOperand()); | 1364 __ Ldrb(i.OutputRegister(), i.MemoryOperand()); |
| 1362 break; | 1365 break; |
| 1363 case kArm64Ldrsb: | 1366 case kArm64Ldrsb: |
| 1364 __ Ldrsb(i.OutputRegister(), i.MemoryOperand()); | 1367 __ Ldrsb(i.OutputRegister(), i.MemoryOperand()); |
| 1365 break; | 1368 break; |
| 1366 case kArm64Strb: | 1369 case kArm64Strb: |
| 1367 __ Strb(i.InputOrZeroRegister64(2), i.MemoryOperand()); | 1370 __ Strb(i.InputOrZeroRegister64(0), i.MemoryOperand(1)); |
| 1368 break; | 1371 break; |
| 1369 case kArm64Ldrh: | 1372 case kArm64Ldrh: |
| 1370 __ Ldrh(i.OutputRegister(), i.MemoryOperand()); | 1373 __ Ldrh(i.OutputRegister(), i.MemoryOperand()); |
| 1371 break; | 1374 break; |
| 1372 case kArm64Ldrsh: | 1375 case kArm64Ldrsh: |
| 1373 __ Ldrsh(i.OutputRegister(), i.MemoryOperand()); | 1376 __ Ldrsh(i.OutputRegister(), i.MemoryOperand()); |
| 1374 break; | 1377 break; |
| 1375 case kArm64Strh: | 1378 case kArm64Strh: |
| 1376 __ Strh(i.InputOrZeroRegister64(2), i.MemoryOperand()); | 1379 __ Strh(i.InputOrZeroRegister64(0), i.MemoryOperand(1)); |
| 1377 break; | 1380 break; |
| 1378 case kArm64LdrW: | 1381 case kArm64LdrW: |
| 1379 __ Ldr(i.OutputRegister32(), i.MemoryOperand()); | 1382 __ Ldr(i.OutputRegister32(), i.MemoryOperand()); |
| 1380 break; | 1383 break; |
| 1381 case kArm64StrW: | 1384 case kArm64StrW: |
| 1382 __ Str(i.InputOrZeroRegister32(2), i.MemoryOperand()); | 1385 __ Str(i.InputOrZeroRegister32(0), i.MemoryOperand(1)); |
| 1383 break; | 1386 break; |
| 1384 case kArm64Ldr: | 1387 case kArm64Ldr: |
| 1385 __ Ldr(i.OutputRegister(), i.MemoryOperand()); | 1388 __ Ldr(i.OutputRegister(), i.MemoryOperand()); |
| 1386 break; | 1389 break; |
| 1387 case kArm64Str: | 1390 case kArm64Str: |
| 1388 __ Str(i.InputOrZeroRegister64(2), i.MemoryOperand()); | 1391 __ Str(i.InputOrZeroRegister64(0), i.MemoryOperand(1)); |
| 1389 break; | 1392 break; |
| 1390 case kArm64LdrS: | 1393 case kArm64LdrS: |
| 1391 __ Ldr(i.OutputDoubleRegister().S(), i.MemoryOperand()); | 1394 __ Ldr(i.OutputDoubleRegister().S(), i.MemoryOperand()); |
| 1392 break; | 1395 break; |
| 1393 case kArm64StrS: | 1396 case kArm64StrS: |
| 1394 __ Str(i.InputFloat32OrZeroRegister(2), i.MemoryOperand()); | 1397 __ Str(i.InputFloat32OrZeroRegister(0), i.MemoryOperand(1)); |
| 1395 break; | 1398 break; |
| 1396 case kArm64LdrD: | 1399 case kArm64LdrD: |
| 1397 __ Ldr(i.OutputDoubleRegister(), i.MemoryOperand()); | 1400 __ Ldr(i.OutputDoubleRegister(), i.MemoryOperand()); |
| 1398 break; | 1401 break; |
| 1399 case kArm64StrD: | 1402 case kArm64StrD: |
| 1400 __ Str(i.InputFloat64OrZeroRegister(2), i.MemoryOperand()); | 1403 __ Str(i.InputFloat64OrZeroRegister(0), i.MemoryOperand(1)); |
| 1401 break; | 1404 break; |
| 1402 case kCheckedLoadInt8: | 1405 case kCheckedLoadInt8: |
| 1403 ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrsb); | 1406 ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrsb); |
| 1404 break; | 1407 break; |
| 1405 case kCheckedLoadUint8: | 1408 case kCheckedLoadUint8: |
| 1406 ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrb); | 1409 ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrb); |
| 1407 break; | 1410 break; |
| 1408 case kCheckedLoadInt16: | 1411 case kCheckedLoadInt16: |
| 1409 ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrsh); | 1412 ASSEMBLE_CHECKED_LOAD_INTEGER(Ldrsh); |
| 1410 break; | 1413 break; |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1896 padding_size -= kInstructionSize; | 1899 padding_size -= kInstructionSize; |
| 1897 } | 1900 } |
| 1898 } | 1901 } |
| 1899 } | 1902 } |
| 1900 | 1903 |
| 1901 #undef __ | 1904 #undef __ |
| 1902 | 1905 |
| 1903 } // namespace compiler | 1906 } // namespace compiler |
| 1904 } // namespace internal | 1907 } // namespace internal |
| 1905 } // namespace v8 | 1908 } // namespace v8 |
| OLD | NEW |