Chromium Code Reviews| 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 are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // 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 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 371 }; | 371 }; |
| 372 } | 372 } |
| 373 | 373 |
| 374 | 374 |
| 375 // ----------------------------------------------------------------------------- | 375 // ----------------------------------------------------------------------------- |
| 376 // Machine instruction Immediates | 376 // Machine instruction Immediates |
| 377 | 377 |
| 378 class Immediate BASE_EMBEDDED { | 378 class Immediate BASE_EMBEDDED { |
| 379 public: | 379 public: |
| 380 explicit Immediate(int32_t value) : value_(value) {} | 380 explicit Immediate(int32_t value) : value_(value) {} |
| 381 #if V8_USE_31_BITS_SMI_VALUE | |
| 382 explicit Immediate(Smi* value) { | |
|
danno
2013/07/29 13:02:23
Don't add a Smi* constructor here. The wrapper fun
haitao.feng
2013/07/30 08:56:43
Done.
| |
| 383 value_ = static_cast<int32_t>(reinterpret_cast<intptr_t>(value)); | |
| 384 } | |
| 385 #endif | |
| 381 | 386 |
| 382 private: | 387 private: |
| 383 int32_t value_; | 388 int32_t value_; |
| 384 | 389 |
| 385 friend class Assembler; | 390 friend class Assembler; |
| 386 }; | 391 }; |
| 387 | 392 |
| 388 | 393 |
| 389 // ----------------------------------------------------------------------------- | 394 // ----------------------------------------------------------------------------- |
| 390 // Machine instruction Operands | 395 // Machine instruction Operands |
| (...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 981 | 986 |
| 982 | 987 |
| 983 void rcl(Register dst, Immediate imm8) { | 988 void rcl(Register dst, Immediate imm8) { |
| 984 shift(dst, imm8, 0x2); | 989 shift(dst, imm8, 0x2); |
| 985 } | 990 } |
| 986 | 991 |
| 987 void rol(Register dst, Immediate imm8) { | 992 void rol(Register dst, Immediate imm8) { |
| 988 shift(dst, imm8, 0x0); | 993 shift(dst, imm8, 0x0); |
| 989 } | 994 } |
| 990 | 995 |
| 996 #if V8_USE_31_BITS_SMI_VALUE | |
|
danno
2013/07/29 13:02:23
Is there some way to not including this conditiona
haitao.feng
2013/07/30 08:56:43
Done.
| |
| 997 void roll(Register dst, Immediate imm8) { | |
| 998 shift_32(dst, imm8, 0x0); | |
| 999 } | |
| 1000 #endif | |
| 1001 | |
| 991 void rcr(Register dst, Immediate imm8) { | 1002 void rcr(Register dst, Immediate imm8) { |
| 992 shift(dst, imm8, 0x3); | 1003 shift(dst, imm8, 0x3); |
| 993 } | 1004 } |
| 994 | 1005 |
| 995 void ror(Register dst, Immediate imm8) { | 1006 void ror(Register dst, Immediate imm8) { |
| 996 shift(dst, imm8, 0x1); | 1007 shift(dst, imm8, 0x1); |
| 997 } | 1008 } |
| 998 | 1009 |
| 999 void rorl(Register dst, Immediate imm8) { | 1010 void rorl(Register dst, Immediate imm8) { |
| 1000 shift_32(dst, imm8, 0x1); | 1011 shift_32(dst, imm8, 0x1); |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1371 kRoundToNearest = 0x0, | 1382 kRoundToNearest = 0x0, |
| 1372 kRoundDown = 0x1, | 1383 kRoundDown = 0x1, |
| 1373 kRoundUp = 0x2, | 1384 kRoundUp = 0x2, |
| 1374 kRoundToZero = 0x3 | 1385 kRoundToZero = 0x3 |
| 1375 }; | 1386 }; |
| 1376 | 1387 |
| 1377 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); | 1388 void roundsd(XMMRegister dst, XMMRegister src, RoundingMode mode); |
| 1378 | 1389 |
| 1379 void movmskpd(Register dst, XMMRegister src); | 1390 void movmskpd(Register dst, XMMRegister src); |
| 1380 void movmskps(Register dst, XMMRegister src); | 1391 void movmskps(Register dst, XMMRegister src); |
| 1392 #if V8_USE_31_BITS_SMI_VALUE | |
| 1393 void pcmpeqd(XMMRegister dst, XMMRegister src); | |
|
danno
2013/07/29 13:02:23
Why can't this always be part of the code (no cond
haitao.feng
2013/07/30 08:56:43
Done.
| |
| 1394 #endif | |
| 1381 | 1395 |
| 1382 // The first argument is the reg field, the second argument is the r/m field. | 1396 // The first argument is the reg field, the second argument is the r/m field. |
| 1383 void emit_sse_operand(XMMRegister dst, XMMRegister src); | 1397 void emit_sse_operand(XMMRegister dst, XMMRegister src); |
| 1384 void emit_sse_operand(XMMRegister reg, const Operand& adr); | 1398 void emit_sse_operand(XMMRegister reg, const Operand& adr); |
| 1385 void emit_sse_operand(XMMRegister dst, Register src); | 1399 void emit_sse_operand(XMMRegister dst, Register src); |
| 1386 void emit_sse_operand(Register dst, XMMRegister src); | 1400 void emit_sse_operand(Register dst, XMMRegister src); |
| 1387 | 1401 |
| 1388 // Debugging | 1402 // Debugging |
| 1389 void Print(); | 1403 void Print(); |
| 1390 | 1404 |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1652 private: | 1666 private: |
| 1653 Assembler* assembler_; | 1667 Assembler* assembler_; |
| 1654 #ifdef DEBUG | 1668 #ifdef DEBUG |
| 1655 int space_before_; | 1669 int space_before_; |
| 1656 #endif | 1670 #endif |
| 1657 }; | 1671 }; |
| 1658 | 1672 |
| 1659 } } // namespace v8::internal | 1673 } } // namespace v8::internal |
| 1660 | 1674 |
| 1661 #endif // V8_X64_ASSEMBLER_X64_H_ | 1675 #endif // V8_X64_ASSEMBLER_X64_H_ |
| OLD | NEW |