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 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 const QwNeonRegister q13 = { 13 }; | 411 const QwNeonRegister q13 = { 13 }; |
412 const QwNeonRegister q14 = { 14 }; | 412 const QwNeonRegister q14 = { 14 }; |
413 const QwNeonRegister q15 = { 15 }; | 413 const QwNeonRegister q15 = { 15 }; |
414 | 414 |
415 | 415 |
416 // Aliases for double registers. Defined using #define instead of | 416 // Aliases for double registers. Defined using #define instead of |
417 // "static const DwVfpRegister&" because Clang complains otherwise when a | 417 // "static const DwVfpRegister&" because Clang complains otherwise when a |
418 // compilation unit that includes this header doesn't use the variables. | 418 // compilation unit that includes this header doesn't use the variables. |
419 #define kFirstCalleeSavedDoubleReg d8 | 419 #define kFirstCalleeSavedDoubleReg d8 |
420 #define kLastCalleeSavedDoubleReg d15 | 420 #define kLastCalleeSavedDoubleReg d15 |
421 // kDoubleRegZero and kScratchDoubleReg must pair to form kScratchQuadReg. | 421 // kDoubleRegZero and kScratchDoubleReg must pair to form kScratchQuadReg. SIMD |
| 422 // code depends on kDoubleRegZero before kScratchDoubleReg. |
422 #define kDoubleRegZero d14 | 423 #define kDoubleRegZero d14 |
423 #define kScratchDoubleReg d15 | 424 #define kScratchDoubleReg d15 |
424 // After using kScratchQuadReg, kDoubleRegZero must be reset to 0. | 425 // After using kScratchQuadReg, kDoubleRegZero must be reset to 0. |
425 #define kScratchQuadReg q7 | 426 #define kScratchQuadReg q7 |
426 | 427 |
427 // Coprocessor register | 428 // Coprocessor register |
428 struct CRegister { | 429 struct CRegister { |
429 bool is_valid() const { return 0 <= reg_code && reg_code < 16; } | 430 bool is_valid() const { return 0 <= reg_code && reg_code < 16; } |
430 bool is(CRegister creg) const { return reg_code == creg.reg_code; } | 431 bool is(CRegister creg) const { return reg_code == creg.reg_code; } |
431 int code() const { | 432 int code() const { |
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1378 void vmul(QwNeonRegister dst, QwNeonRegister src1, | 1379 void vmul(QwNeonRegister dst, QwNeonRegister src1, |
1379 QwNeonRegister src2); | 1380 QwNeonRegister src2); |
1380 void vmul(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, | 1381 void vmul(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, |
1381 QwNeonRegister src2); | 1382 QwNeonRegister src2); |
1382 void vmin(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); | 1383 void vmin(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
1383 void vmin(NeonDataType dt, QwNeonRegister dst, | 1384 void vmin(NeonDataType dt, QwNeonRegister dst, |
1384 QwNeonRegister src1, QwNeonRegister src2); | 1385 QwNeonRegister src1, QwNeonRegister src2); |
1385 void vmax(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); | 1386 void vmax(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
1386 void vmax(NeonDataType dt, QwNeonRegister dst, | 1387 void vmax(NeonDataType dt, QwNeonRegister dst, |
1387 QwNeonRegister src1, QwNeonRegister src2); | 1388 QwNeonRegister src1, QwNeonRegister src2); |
| 1389 void vpmin(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1, |
| 1390 DwVfpRegister src2); |
| 1391 void vpmax(NeonDataType dt, DwVfpRegister dst, DwVfpRegister src1, |
| 1392 DwVfpRegister src2); |
1388 void vshl(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); | 1393 void vshl(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); |
1389 void vshr(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); | 1394 void vshr(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src, int shift); |
1390 // vrecpe and vrsqrte only support floating point lanes. | 1395 // vrecpe and vrsqrte only support floating point lanes. |
1391 void vrecpe(QwNeonRegister dst, QwNeonRegister src); | 1396 void vrecpe(QwNeonRegister dst, QwNeonRegister src); |
1392 void vrsqrte(QwNeonRegister dst, QwNeonRegister src); | 1397 void vrsqrte(QwNeonRegister dst, QwNeonRegister src); |
1393 void vrecps(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); | 1398 void vrecps(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
1394 void vrsqrts(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); | 1399 void vrsqrts(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
1395 void vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, | 1400 void vtst(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, |
1396 QwNeonRegister src2); | 1401 QwNeonRegister src2); |
1397 void vceq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); | 1402 void vceq(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1814 explicit EnsureSpace(Assembler* assembler) { | 1819 explicit EnsureSpace(Assembler* assembler) { |
1815 assembler->CheckBuffer(); | 1820 assembler->CheckBuffer(); |
1816 } | 1821 } |
1817 }; | 1822 }; |
1818 | 1823 |
1819 | 1824 |
1820 } // namespace internal | 1825 } // namespace internal |
1821 } // namespace v8 | 1826 } // namespace v8 |
1822 | 1827 |
1823 #endif // V8_ARM_ASSEMBLER_ARM_H_ | 1828 #endif // V8_ARM_ASSEMBLER_ARM_H_ |
OLD | NEW |