| 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 395 case MachineRepresentation::kWord8: | 396 case MachineRepresentation::kWord8: |
| 396 opcode = kArmStrb; | 397 opcode = kArmStrb; |
| 397 break; | 398 break; |
| 398 case MachineRepresentation::kWord16: | 399 case MachineRepresentation::kWord16: |
| 399 opcode = kArmStrh; | 400 opcode = kArmStrh; |
| 400 break; | 401 break; |
| 401 case MachineRepresentation::kTagged: // Fall through. | 402 case MachineRepresentation::kTagged: // Fall through. |
| 402 case MachineRepresentation::kWord32: | 403 case MachineRepresentation::kWord32: |
| 403 opcode = kArmStr; | 404 opcode = kArmStr; |
| 404 break; | 405 break; |
| 405 case MachineRepresentation::kNone: // Fall through. | 406 case MachineRepresentation::kWord64: // Fall through. |
| 406 case MachineRepresentation::kWord64: | 407 case MachineRepresentation::kSimd128: // Fall through. |
| 408 case MachineRepresentation::kNone: |
| 407 UNREACHABLE(); | 409 UNREACHABLE(); |
| 408 return; | 410 return; |
| 409 } | 411 } |
| 410 | 412 |
| 411 if (g.CanBeImmediate(index, opcode)) { | 413 if (g.CanBeImmediate(index, opcode)) { |
| 412 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(), | 414 Emit(opcode | AddressingModeField::encode(kMode_Offset_RI), g.NoOutput(), |
| 413 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); | 415 g.UseRegister(base), g.UseImmediate(index), g.UseRegister(value)); |
| 414 } else { | 416 } else { |
| 415 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), | 417 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), |
| 416 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value)); | 418 g.UseRegister(base), g.UseRegister(index), g.UseRegister(value)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 435 break; | 437 break; |
| 436 case MachineRepresentation::kWord32: | 438 case MachineRepresentation::kWord32: |
| 437 opcode = kCheckedLoadWord32; | 439 opcode = kCheckedLoadWord32; |
| 438 break; | 440 break; |
| 439 case MachineRepresentation::kFloat32: | 441 case MachineRepresentation::kFloat32: |
| 440 opcode = kCheckedLoadFloat32; | 442 opcode = kCheckedLoadFloat32; |
| 441 break; | 443 break; |
| 442 case MachineRepresentation::kFloat64: | 444 case MachineRepresentation::kFloat64: |
| 443 opcode = kCheckedLoadFloat64; | 445 opcode = kCheckedLoadFloat64; |
| 444 break; | 446 break; |
| 445 case MachineRepresentation::kBit: // Fall through. | 447 case MachineRepresentation::kBit: // Fall through. |
| 446 case MachineRepresentation::kTagged: // Fall through. | 448 case MachineRepresentation::kTagged: // Fall through. |
| 447 case MachineRepresentation::kWord64: // Fall through. | 449 case MachineRepresentation::kWord64: // Fall through. |
| 450 case MachineRepresentation::kSimd128: // Fall through. |
| 448 case MachineRepresentation::kNone: | 451 case MachineRepresentation::kNone: |
| 449 UNREACHABLE(); | 452 UNREACHABLE(); |
| 450 return; | 453 return; |
| 451 } | 454 } |
| 452 InstructionOperand offset_operand = g.UseRegister(offset); | 455 InstructionOperand offset_operand = g.UseRegister(offset); |
| 453 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) | 456 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) |
| 454 ? g.UseImmediate(length) | 457 ? g.UseImmediate(length) |
| 455 : g.UseRegister(length); | 458 : g.UseRegister(length); |
| 456 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), | 459 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), |
| 457 g.DefineAsRegister(node), offset_operand, length_operand, | 460 g.DefineAsRegister(node), offset_operand, length_operand, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 476 break; | 479 break; |
| 477 case MachineRepresentation::kWord32: | 480 case MachineRepresentation::kWord32: |
| 478 opcode = kCheckedStoreWord32; | 481 opcode = kCheckedStoreWord32; |
| 479 break; | 482 break; |
| 480 case MachineRepresentation::kFloat32: | 483 case MachineRepresentation::kFloat32: |
| 481 opcode = kCheckedStoreFloat32; | 484 opcode = kCheckedStoreFloat32; |
| 482 break; | 485 break; |
| 483 case MachineRepresentation::kFloat64: | 486 case MachineRepresentation::kFloat64: |
| 484 opcode = kCheckedStoreFloat64; | 487 opcode = kCheckedStoreFloat64; |
| 485 break; | 488 break; |
| 486 case MachineRepresentation::kBit: // Fall through. | 489 case MachineRepresentation::kBit: // Fall through. |
| 487 case MachineRepresentation::kTagged: // Fall through. | 490 case MachineRepresentation::kTagged: // Fall through. |
| 488 case MachineRepresentation::kWord64: // Fall through. | 491 case MachineRepresentation::kWord64: // Fall through. |
| 492 case MachineRepresentation::kSimd128: // Fall through. |
| 489 case MachineRepresentation::kNone: | 493 case MachineRepresentation::kNone: |
| 490 UNREACHABLE(); | 494 UNREACHABLE(); |
| 491 return; | 495 return; |
| 492 } | 496 } |
| 493 InstructionOperand offset_operand = g.UseRegister(offset); | 497 InstructionOperand offset_operand = g.UseRegister(offset); |
| 494 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) | 498 InstructionOperand length_operand = g.CanBeImmediate(length, kArmCmp) |
| 495 ? g.UseImmediate(length) | 499 ? g.UseImmediate(length) |
| 496 : g.UseRegister(length); | 500 : g.UseRegister(length); |
| 497 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), | 501 Emit(opcode | AddressingModeField::encode(kMode_Offset_RR), g.NoOutput(), |
| 498 offset_operand, length_operand, g.UseRegister(value), | 502 offset_operand, length_operand, g.UseRegister(value), |
| (...skipping 1122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1621 MachineOperatorBuilder::kFloat64RoundTiesAway | | 1625 MachineOperatorBuilder::kFloat64RoundTiesAway | |
| 1622 MachineOperatorBuilder::kFloat32RoundTiesEven | | 1626 MachineOperatorBuilder::kFloat32RoundTiesEven | |
| 1623 MachineOperatorBuilder::kFloat64RoundTiesEven; | 1627 MachineOperatorBuilder::kFloat64RoundTiesEven; |
| 1624 } | 1628 } |
| 1625 return flags; | 1629 return flags; |
| 1626 } | 1630 } |
| 1627 | 1631 |
| 1628 } // namespace compiler | 1632 } // namespace compiler |
| 1629 } // namespace internal | 1633 } // namespace internal |
| 1630 } // namespace v8 | 1634 } // namespace v8 |
| OLD | NEW |