| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
| 6 // are met: | 6 // are met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 452 } | 452 } |
| 453 INLINE(explicit Operand(const ExternalReference& f)); | 453 INLINE(explicit Operand(const ExternalReference& f)); |
| 454 explicit Operand(Handle<Object> handle); | 454 explicit Operand(Handle<Object> handle); |
| 455 INLINE(explicit Operand(Smi* value)); | 455 INLINE(explicit Operand(Smi* value)); |
| 456 | 456 |
| 457 // rm | 457 // rm |
| 458 INLINE(explicit Operand(Register rm)); | 458 INLINE(explicit Operand(Register rm)); |
| 459 | 459 |
| 460 // rm <shift_op> shift_imm | 460 // rm <shift_op> shift_imm |
| 461 explicit Operand(Register rm, ShiftOp shift_op, int shift_imm); | 461 explicit Operand(Register rm, ShiftOp shift_op, int shift_imm); |
| 462 INLINE(static Operand SmiUntag(Register rm)) { |
| 463 return Operand(rm, ASR, kSmiTagSize); |
| 464 } |
| 465 INLINE(static Operand PointerOffsetFromSmiKey(Register key)) { |
| 466 STATIC_ASSERT(kSmiTag == 0 && kSmiTagSize < kPointerSizeLog2); |
| 467 return Operand(key, LSL, kPointerSizeLog2 - kSmiTagSize); |
| 468 } |
| 469 INLINE(static Operand DoubleOffsetFromSmiKey(Register key)) { |
| 470 STATIC_ASSERT(kSmiTag == 0 && kSmiTagSize < kDoubleSizeLog2); |
| 471 return Operand(key, LSL, kDoubleSizeLog2 - kSmiTagSize); |
| 472 } |
| 462 | 473 |
| 463 // rm <shift_op> rs | 474 // rm <shift_op> rs |
| 464 explicit Operand(Register rm, ShiftOp shift_op, Register rs); | 475 explicit Operand(Register rm, ShiftOp shift_op, Register rs); |
| 465 | 476 |
| 466 // Return true if this is a register operand. | 477 // Return true if this is a register operand. |
| 467 INLINE(bool is_reg() const); | 478 INLINE(bool is_reg() const); |
| 468 | 479 |
| 469 // Return true if this operand fits in one instruction so that no | 480 // Return true if this operand fits in one instruction so that no |
| 470 // 2-instruction solution with a load into the ip register is necessary. If | 481 // 2-instruction solution with a load into the ip register is necessary. If |
| 471 // the instruction this operand is used for is a MOV or MVN instruction the | 482 // the instruction this operand is used for is a MOV or MVN instruction the |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 // [rn +/- rm] Offset/NegOffset | 519 // [rn +/- rm] Offset/NegOffset |
| 509 // [rn +/- rm]! PreIndex/NegPreIndex | 520 // [rn +/- rm]! PreIndex/NegPreIndex |
| 510 // [rn], +/- rm PostIndex/NegPostIndex | 521 // [rn], +/- rm PostIndex/NegPostIndex |
| 511 explicit MemOperand(Register rn, Register rm, AddrMode am = Offset); | 522 explicit MemOperand(Register rn, Register rm, AddrMode am = Offset); |
| 512 | 523 |
| 513 // [rn +/- rm <shift_op> shift_imm] Offset/NegOffset | 524 // [rn +/- rm <shift_op> shift_imm] Offset/NegOffset |
| 514 // [rn +/- rm <shift_op> shift_imm]! PreIndex/NegPreIndex | 525 // [rn +/- rm <shift_op> shift_imm]! PreIndex/NegPreIndex |
| 515 // [rn], +/- rm <shift_op> shift_imm PostIndex/NegPostIndex | 526 // [rn], +/- rm <shift_op> shift_imm PostIndex/NegPostIndex |
| 516 explicit MemOperand(Register rn, Register rm, | 527 explicit MemOperand(Register rn, Register rm, |
| 517 ShiftOp shift_op, int shift_imm, AddrMode am = Offset); | 528 ShiftOp shift_op, int shift_imm, AddrMode am = Offset); |
| 529 INLINE(static MemOperand PointerAddressFromSmiKey(Register array, |
| 530 Register key, |
| 531 AddrMode am = Offset)) { |
| 532 STATIC_ASSERT(kSmiTag == 0 && kSmiTagSize < kPointerSizeLog2); |
| 533 return MemOperand(array, key, LSL, kPointerSizeLog2 - kSmiTagSize, am); |
| 534 } |
| 518 | 535 |
| 519 void set_offset(int32_t offset) { | 536 void set_offset(int32_t offset) { |
| 520 ASSERT(rm_.is(no_reg)); | 537 ASSERT(rm_.is(no_reg)); |
| 521 offset_ = offset; | 538 offset_ = offset; |
| 522 } | 539 } |
| 523 | 540 |
| 524 uint32_t offset() const { | 541 uint32_t offset() const { |
| 525 ASSERT(rm_.is(no_reg)); | 542 ASSERT(rm_.is(no_reg)); |
| 526 return offset_; | 543 return offset_; |
| 527 } | 544 } |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1025 VFPConversionMode mode = kDefaultRoundToZero, | 1042 VFPConversionMode mode = kDefaultRoundToZero, |
| 1026 const Condition cond = al); | 1043 const Condition cond = al); |
| 1027 void vcvt_f64_f32(const DwVfpRegister dst, | 1044 void vcvt_f64_f32(const DwVfpRegister dst, |
| 1028 const SwVfpRegister src, | 1045 const SwVfpRegister src, |
| 1029 VFPConversionMode mode = kDefaultRoundToZero, | 1046 VFPConversionMode mode = kDefaultRoundToZero, |
| 1030 const Condition cond = al); | 1047 const Condition cond = al); |
| 1031 void vcvt_f32_f64(const SwVfpRegister dst, | 1048 void vcvt_f32_f64(const SwVfpRegister dst, |
| 1032 const DwVfpRegister src, | 1049 const DwVfpRegister src, |
| 1033 VFPConversionMode mode = kDefaultRoundToZero, | 1050 VFPConversionMode mode = kDefaultRoundToZero, |
| 1034 const Condition cond = al); | 1051 const Condition cond = al); |
| 1052 void vcvt_f64_s32(const DwVfpRegister dst, |
| 1053 int fraction_bits, |
| 1054 const Condition cond = al); |
| 1035 | 1055 |
| 1036 void vneg(const DwVfpRegister dst, | 1056 void vneg(const DwVfpRegister dst, |
| 1037 const DwVfpRegister src, | 1057 const DwVfpRegister src, |
| 1038 const Condition cond = al); | 1058 const Condition cond = al); |
| 1039 void vabs(const DwVfpRegister dst, | 1059 void vabs(const DwVfpRegister dst, |
| 1040 const DwVfpRegister src, | 1060 const DwVfpRegister src, |
| 1041 const Condition cond = al); | 1061 const Condition cond = al); |
| 1042 void vadd(const DwVfpRegister dst, | 1062 void vadd(const DwVfpRegister dst, |
| 1043 const DwVfpRegister src1, | 1063 const DwVfpRegister src1, |
| 1044 const DwVfpRegister src2, | 1064 const DwVfpRegister src2, |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1414 public: | 1434 public: |
| 1415 explicit EnsureSpace(Assembler* assembler) { | 1435 explicit EnsureSpace(Assembler* assembler) { |
| 1416 assembler->CheckBuffer(); | 1436 assembler->CheckBuffer(); |
| 1417 } | 1437 } |
| 1418 }; | 1438 }; |
| 1419 | 1439 |
| 1420 | 1440 |
| 1421 } } // namespace v8::internal | 1441 } } // namespace v8::internal |
| 1422 | 1442 |
| 1423 #endif // V8_ARM_ASSEMBLER_ARM_H_ | 1443 #endif // V8_ARM_ASSEMBLER_ARM_H_ |
| OLD | NEW |