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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15) \ | 68 V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15) \ |
69 V(d16) V(d17) V(d18) V(d19) V(d20) V(d21) V(d22) V(d23) \ | 69 V(d16) V(d17) V(d18) V(d19) V(d20) V(d21) V(d22) V(d23) \ |
70 V(d24) V(d25) V(d26) V(d27) V(d28) V(d29) V(d30) V(d31) | 70 V(d24) V(d25) V(d26) V(d27) V(d28) V(d29) V(d30) V(d31) |
71 | 71 |
72 #define SIMD128_REGISTERS(V) \ | 72 #define SIMD128_REGISTERS(V) \ |
73 V(q0) V(q1) V(q2) V(q3) V(q4) V(q5) V(q6) V(q7) \ | 73 V(q0) V(q1) V(q2) V(q3) V(q4) V(q5) V(q6) V(q7) \ |
74 V(q8) V(q9) V(q10) V(q11) V(q12) V(q13) V(q14) V(q15) | 74 V(q8) V(q9) V(q10) V(q11) V(q12) V(q13) V(q14) V(q15) |
75 | 75 |
76 #define ALLOCATABLE_DOUBLE_REGISTERS(V) \ | 76 #define ALLOCATABLE_DOUBLE_REGISTERS(V) \ |
77 V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \ | 77 V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \ |
78 V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) \ | 78 V(d8) V(d9) V(d10) V(d11) V(d12) \ |
79 V(d16) V(d17) V(d18) V(d19) V(d20) V(d21) V(d22) V(d23) \ | 79 V(d16) V(d17) V(d18) V(d19) V(d20) V(d21) V(d22) V(d23) \ |
80 V(d24) V(d25) V(d26) V(d27) V(d28) V(d29) V(d30) V(d31) | 80 V(d24) V(d25) V(d26) V(d27) V(d28) V(d29) V(d30) V(d31) |
81 | 81 |
82 #define ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS(V) \ | 82 #define ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS(V) \ |
83 V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \ | 83 V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \ |
84 V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) \ | 84 V(d8) V(d9) V(d10) V(d11) V(d12) V(d15) \ |
85 // clang-format on | 85 // clang-format on |
86 | 86 |
87 // CPU Registers. | 87 // CPU Registers. |
88 // | 88 // |
89 // 1) We would prefer to use an enum, but enum values are assignment- | 89 // 1) We would prefer to use an enum, but enum values are assignment- |
90 // compatible with int, which has caused code-generation bugs. | 90 // compatible with int, which has caused code-generation bugs. |
91 // | 91 // |
92 // 2) We would prefer to use a class instead of a struct but we don't like | 92 // 2) We would prefer to use a class instead of a struct but we don't like |
93 // the register initialization to depend on the particular initialization | 93 // the register initialization to depend on the particular initialization |
94 // order (which appears to be different on OS X, Linux, and Windows for the | 94 // order (which appears to be different on OS X, Linux, and Windows for the |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 constexpr QwNeonRegister q11 = { 11 }; | 416 constexpr QwNeonRegister q11 = { 11 }; |
417 constexpr QwNeonRegister q12 = { 12 }; | 417 constexpr QwNeonRegister q12 = { 12 }; |
418 constexpr QwNeonRegister q13 = { 13 }; | 418 constexpr QwNeonRegister q13 = { 13 }; |
419 constexpr QwNeonRegister q14 = { 14 }; | 419 constexpr QwNeonRegister q14 = { 14 }; |
420 constexpr QwNeonRegister q15 = { 15 }; | 420 constexpr QwNeonRegister q15 = { 15 }; |
421 | 421 |
422 | 422 |
423 // Aliases for double registers. | 423 // Aliases for double registers. |
424 constexpr LowDwVfpRegister kFirstCalleeSavedDoubleReg = d8; | 424 constexpr LowDwVfpRegister kFirstCalleeSavedDoubleReg = d8; |
425 constexpr LowDwVfpRegister kLastCalleeSavedDoubleReg = d15; | 425 constexpr LowDwVfpRegister kLastCalleeSavedDoubleReg = d15; |
426 // kDoubleRegZero and kScratchDoubleReg must pair to form kScratchQuadReg. SIMD | 426 constexpr LowDwVfpRegister kDoubleRegZero = d13; |
427 // code depends on kDoubleRegZero before kScratchDoubleReg. | 427 constexpr LowDwVfpRegister kScratchDoubleReg = d14; |
428 constexpr LowDwVfpRegister kDoubleRegZero = d14; | 428 // This scratch q-register aliases d14 (kScratchDoubleReg) and d15, but is only |
429 constexpr LowDwVfpRegister kScratchDoubleReg = d15; | 429 // used when NEON is supported. d15 is still allocatable if there are only 16 |
430 // After using kScratchQuadReg, kDoubleRegZero must be reset to 0. | 430 // VFP registers. |
431 constexpr QwNeonRegister kScratchQuadReg = q7; | 431 constexpr QwNeonRegister kScratchQuadReg = q7; |
432 | 432 |
433 // Coprocessor register | 433 // Coprocessor register |
434 struct CRegister { | 434 struct CRegister { |
435 bool is_valid() const { return 0 <= reg_code && reg_code < 16; } | 435 bool is_valid() const { return 0 <= reg_code && reg_code < 16; } |
436 bool is(CRegister creg) const { return reg_code == creg.reg_code; } | 436 bool is(CRegister creg) const { return reg_code == creg.reg_code; } |
437 int code() const { | 437 int code() const { |
438 DCHECK(is_valid()); | 438 DCHECK(is_valid()); |
439 return reg_code; | 439 return reg_code; |
440 } | 440 } |
(...skipping 1358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1799 | 1799 |
1800 void Emit(Address addr); | 1800 void Emit(Address addr); |
1801 void FlushICache(Isolate* isolate); | 1801 void FlushICache(Isolate* isolate); |
1802 }; | 1802 }; |
1803 | 1803 |
1804 | 1804 |
1805 } // namespace internal | 1805 } // namespace internal |
1806 } // namespace v8 | 1806 } // namespace v8 |
1807 | 1807 |
1808 #endif // V8_ARM_ASSEMBLER_ARM_H_ | 1808 #endif // V8_ARM_ASSEMBLER_ARM_H_ |
OLD | NEW |