| 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/base/adapters.h" | 5 #include "src/base/adapters.h" |
| 6 #include "src/base/bits.h" | 6 #include "src/base/bits.h" |
| 7 #include "src/compiler/instruction-selector-impl.h" | 7 #include "src/compiler/instruction-selector-impl.h" |
| 8 #include "src/compiler/node-matchers.h" | 8 #include "src/compiler/node-matchers.h" |
| 9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
| 10 | 10 |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 case MachineRepresentation::kWord8: | 320 case MachineRepresentation::kWord8: |
| 321 opcode = load_rep.IsUnsigned() ? kArmLdrb : kArmLdrsb; | 321 opcode = load_rep.IsUnsigned() ? kArmLdrb : kArmLdrsb; |
| 322 break; | 322 break; |
| 323 case MachineRepresentation::kWord16: | 323 case MachineRepresentation::kWord16: |
| 324 opcode = load_rep.IsUnsigned() ? kArmLdrh : kArmLdrsh; | 324 opcode = load_rep.IsUnsigned() ? kArmLdrh : kArmLdrsh; |
| 325 break; | 325 break; |
| 326 case MachineRepresentation::kTagged: // Fall through. | 326 case MachineRepresentation::kTagged: // Fall through. |
| 327 case MachineRepresentation::kWord32: | 327 case MachineRepresentation::kWord32: |
| 328 opcode = kArmLdr; | 328 opcode = kArmLdr; |
| 329 break; | 329 break; |
| 330 case MachineRepresentation::kNone: // Fall through. | 330 case MachineRepresentation::kWord64: // Fall through. |
| 331 case MachineRepresentation::kWord64: | 331 case MachineRepresentation::kSimd128: // Fall through. |
| 332 case MachineRepresentation::kNone: |
| 332 UNREACHABLE(); | 333 UNREACHABLE(); |
| 333 return; | 334 return; |
| 334 } | 335 } |
| 335 | 336 |
| 336 if (g.CanBeImmediate(index, opcode)) { | 337 if (g.CanBeImmediate(index, opcode)) { |
| 337 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), | 338 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), |
| 338 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); | 339 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); |
| 339 } else { | 340 } else { |
| 340 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), | 341 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), |
| 341 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index)); | 342 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index)); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 case MachineRepresentation::kWord8: | 406 case MachineRepresentation::kWord8: |
| 406 opcode = kArmStrb; | 407 opcode = kArmStrb; |
| 407 break; | 408 break; |
| 408 case MachineRepresentation::kWord16: | 409 case MachineRepresentation::kWord16: |
| 409 opcode = kArmStrh; | 410 opcode = kArmStrh; |
| 410 break; | 411 break; |
| 411 case MachineRepresentation::kTagged: // Fall through. | 412 case MachineRepresentation::kTagged: // Fall through. |
| 412 case MachineRepresentation::kWord32: | 413 case MachineRepresentation::kWord32: |
| 413 opcode = kArmStr; | 414 opcode = kArmStr; |
| 414 break; | 415 break; |
| 415 case MachineRepresentation::kNone: // Fall through. | 416 case MachineRepresentation::kWord64: // Fall through. |
| 416 case MachineRepresentation::kWord64: | 417 case MachineRepresentation::kSimd128: // Fall through. |
| 418 case MachineRepresentation::kNone: |
| 417 UNREACHABLE(); | 419 UNREACHABLE(); |
| 418 return; | 420 return; |
| 419 } | 421 } |
| 420 | 422 |
| 421 if (g.CanBeImmediate(index, opcode)) { | 423 if (g.CanBeImmediate(index, opcode)) { |
| 422 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(), | 424 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(), |
| 423 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); | 425 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); |
| 424 } else { | 426 } else { |
| 425 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), | 427 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), |
| 426 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value)); | 428 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 445 break; | 447 break; |
| 446 case MachineRepresentation::kWord32: | 448 case MachineRepresentation::kWord32: |
| 447 opcode = kCheckedLoadWord32; | 449 opcode = kCheckedLoadWord32; |
| 448 break; | 450 break; |
| 449 case MachineRepresentation::kFloat32: | 451 case MachineRepresentation::kFloat32: |
| 450 opcode = kCheckedLoadFloat32; | 452 opcode = kCheckedLoadFloat32; |
| 451 break; | 453 break; |
| 452 case MachineRepresentation::kFloat64: | 454 case MachineRepresentation::kFloat64: |
| 453 opcode = kCheckedLoadFloat64; | 455 opcode = kCheckedLoadFloat64; |
| 454 break; | 456 break; |
| 455 case MachineRepresentation::kBit: // Fall through. | 457 case MachineRepresentation::kBit: // Fall through. |
| 456 case MachineRepresentation::kTagged: // Fall through. | 458 case MachineRepresentation::kTagged: // Fall through. |
| 457 case MachineRepresentation::kWord64: // Fall through. | 459 case MachineRepresentation::kWord64: // Fall through. |
| 460 case MachineRepresentation::kSimd128: // Fall through. |
| 458 case MachineRepresentation::kNone: | 461 case MachineRepresentation::kNone: |
| 459 UNREACHABLE(); | 462 UNREACHABLE(); |
| 460 return; | 463 return; |
| 461 } | 464 } |
| 462 InstructionOperand offset_operand = g.UseRegister(offset); | 465 InstructionOperand offset_operand = g.UseRegister(offset); |
| 463 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) | 466 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) |
| 464 ? g.UseImmediate(length) | 467 ? g.UseImmediate(length) |
| 465 : g.UseRegister(length); | 468 : g.UseRegister(length); |
| 466 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), | 469 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), |
| 467 g.DefineAsRegister(node), offset_operand, length_operand, | 470 g.DefineAsRegister(node), offset_operand, length_operand, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 486 break; | 489 break; |
| 487 case MachineRepresentation::kWord32: | 490 case MachineRepresentation::kWord32: |
| 488 opcode = kCheckedStoreWord32; | 491 opcode = kCheckedStoreWord32; |
| 489 break; | 492 break; |
| 490 case MachineRepresentation::kFloat32: | 493 case MachineRepresentation::kFloat32: |
| 491 opcode = kCheckedStoreFloat32; | 494 opcode = kCheckedStoreFloat32; |
| 492 break; | 495 break; |
| 493 case MachineRepresentation::kFloat64: | 496 case MachineRepresentation::kFloat64: |
| 494 opcode = kCheckedStoreFloat64; | 497 opcode = kCheckedStoreFloat64; |
| 495 break; | 498 break; |
| 496 case MachineRepresentation::kBit: // Fall through. | 499 case MachineRepresentation::kBit: // Fall through. |
| 497 case MachineRepresentation::kTagged: // Fall through. | 500 case MachineRepresentation::kTagged: // Fall through. |
| 498 case MachineRepresentation::kWord64: // Fall through. | 501 case MachineRepresentation::kWord64: // Fall through. |
| 502 case MachineRepresentation::kSimd128: // Fall through. |
| 499 case MachineRepresentation::kNone: | 503 case MachineRepresentation::kNone: |
| 500 UNREACHABLE(); | 504 UNREACHABLE(); |
| 501 return; | 505 return; |
| 502 } | 506 } |
| 503 InstructionOperand offset_operand = g.UseRegister(offset); | 507 InstructionOperand offset_operand = g.UseRegister(offset); |
| 504 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) | 508 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) |
| 505 ? g.UseImmediate(length) | 509 ? g.UseImmediate(length) |
| 506 : g.UseRegister(length); | 510 : g.UseRegister(length); |
| 507 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), | 511 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), |
| 508 offset_operand, length_operand, g.UseRegister(value), | 512 offset_operand, length_operand, g.UseRegister(value), |
| (...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1673 MachineOperatorBuilder::kFloat64RoundTiesAway | | 1677 MachineOperatorBuilder::kFloat64RoundTiesAway | |
| 1674 MachineOperatorBuilder::kFloat32RoundTiesEven | | 1678 MachineOperatorBuilder::kFloat32RoundTiesEven | |
| 1675 MachineOperatorBuilder::kFloat64RoundTiesEven; | 1679 MachineOperatorBuilder::kFloat64RoundTiesEven; |
| 1676 } | 1680 } |
| 1677 return flags; | 1681 return flags; |
| 1678 } | 1682 } |
| 1679 | 1683 |
| 1680 } // namespace compiler | 1684 } // namespace compiler |
| 1681 } // namespace internal | 1685 } // namespace internal |
| 1682 } // namespace v8 | 1686 } // namespace v8 |
| OLD | NEW |