| 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 #ifndef V8_PPC_CONSTANTS_PPC_H_ | 5 #ifndef V8_PPC_CONSTANTS_PPC_H_ |
| 6 #define V8_PPC_CONSTANTS_PPC_H_ | 6 #define V8_PPC_CONSTANTS_PPC_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "src/base/logging.h" | 10 #include "src/base/logging.h" |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 LFS = 48 << 26, // Load Floating-Point Single | 138 LFS = 48 << 26, // Load Floating-Point Single |
| 139 LFSU = 49 << 26, // Load Floating-Point Single with Update | 139 LFSU = 49 << 26, // Load Floating-Point Single with Update |
| 140 LFD = 50 << 26, // Load Floating-Point Double | 140 LFD = 50 << 26, // Load Floating-Point Double |
| 141 LFDU = 51 << 26, // Load Floating-Point Double with Update | 141 LFDU = 51 << 26, // Load Floating-Point Double with Update |
| 142 STFS = 52 << 26, // Store Floating-Point Single | 142 STFS = 52 << 26, // Store Floating-Point Single |
| 143 STFSU = 53 << 26, // Store Floating-Point Single with Update | 143 STFSU = 53 << 26, // Store Floating-Point Single with Update |
| 144 STFD = 54 << 26, // Store Floating-Point Double | 144 STFD = 54 << 26, // Store Floating-Point Double |
| 145 STFDU = 55 << 26, // Store Floating-Point Double with Update | 145 STFDU = 55 << 26, // Store Floating-Point Double with Update |
| 146 LD = 58 << 26, // Load Double Word | 146 LD = 58 << 26, // Load Double Word |
| 147 EXT3 = 59 << 26, // Extended code set 3 | 147 EXT3 = 59 << 26, // Extended code set 3 |
| 148 EXT6 = 60 << 26, // Extended code set 6 |
| 148 STD = 62 << 26, // Store Double Word (optionally with Update) | 149 STD = 62 << 26, // Store Double Word (optionally with Update) |
| 149 EXT4 = 63 << 26 // Extended code set 4 | 150 EXT4 = 63 << 26 // Extended code set 4 |
| 150 }; | 151 }; |
| 151 | 152 |
| 152 // Bits 10-1 | 153 // Bits 10-1 |
| 153 enum OpcodeExt1 { | 154 enum OpcodeExt1 { |
| 154 MCRF = 0 << 1, // Move Condition Register Field | 155 MCRF = 0 << 1, // Move Condition Register Field |
| 155 BCLRX = 16 << 1, // Branch Conditional Link Register | 156 BCLRX = 16 << 1, // Branch Conditional Link Register |
| 156 CRNOR = 33 << 1, // Condition Register NOR) | 157 CRNOR = 33 << 1, // Condition Register NOR) |
| 157 RFI = 50 << 1, // Return from Interrupt | 158 RFI = 50 << 1, // Return from Interrupt |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 307 // Bits 4-2 | 308 // Bits 4-2 |
| 308 RLDICL = 0 << 1, // Rotate Left Double Word Immediate then Clear Left | 309 RLDICL = 0 << 1, // Rotate Left Double Word Immediate then Clear Left |
| 309 RLDICR = 2 << 1, // Rotate Left Double Word Immediate then Clear Right | 310 RLDICR = 2 << 1, // Rotate Left Double Word Immediate then Clear Right |
| 310 RLDIC = 4 << 1, // Rotate Left Double Word Immediate then Clear | 311 RLDIC = 4 << 1, // Rotate Left Double Word Immediate then Clear |
| 311 RLDIMI = 6 << 1, // Rotate Left Double Word Immediate then Mask Insert | 312 RLDIMI = 6 << 1, // Rotate Left Double Word Immediate then Mask Insert |
| 312 // Bits 4-1 | 313 // Bits 4-1 |
| 313 RLDCL = 8 << 1, // Rotate Left Double Word then Clear Left | 314 RLDCL = 8 << 1, // Rotate Left Double Word then Clear Left |
| 314 RLDCR = 9 << 1 // Rotate Left Double Word then Clear Right | 315 RLDCR = 9 << 1 // Rotate Left Double Word then Clear Right |
| 315 }; | 316 }; |
| 316 | 317 |
| 318 // Bits 10-3 |
| 319 #define XX3_OPCODE_LIST(V) \ |
| 320 V(xsaddsp, XSADDSP, 0 << 3) /* VSX Scalar Add SP */ \ |
| 321 V(xssubsp, XSSUBSP, 8 << 3) /* VSX Scalar Subtract SP */ \ |
| 322 V(xsmulsp, XSMULSP, 16 << 3) /* VSX Scalar Multiply SP */ \ |
| 323 V(xsdivsp, XSDIVSP, 24 << 3) /* VSX Scalar Divide SP */ \ |
| 324 V(xsadddp, XSADDDP, 32 << 3) /* VSX Scalar Add DP */ \ |
| 325 V(xssubdp, XSSUBDP, 40 << 3) /* VSX Scalar Subtract DP */ \ |
| 326 V(xsmuldp, XSMULDP, 48 << 3) /* VSX Scalar Multiply DP */ \ |
| 327 V(xsdivdp, XSDIVDP, 56 << 3) /* VSX Scalar Divide DP */ \ |
| 328 V(xsmaxdp, XSMAXDP, 160 << 3) /* VSX Scalar Maximum DP */ \ |
| 329 V(xsmindp, XSMINDP, 168 << 3) /* VSX Scalar Minimum DP */ |
| 330 |
| 331 // Bits 10-2 |
| 332 #define XX2_OPCODE_LIST(V) \ |
| 333 V(XSCVDPSP, XSCVDPSP, 265 << 2) /* VSX Scalar Convert DP to SP */ \ |
| 334 V(XSCVSPDP, XSCVSPDP, 329 << 2) /* VSX Scalar Convert SP to DP */ |
| 335 |
| 336 enum OpcodeExt6 { |
| 337 #define DECLARE_OPCODES(name, opcode_name, opcode_value) \ |
| 338 opcode_name = opcode_value, |
| 339 XX3_OPCODE_LIST(DECLARE_OPCODES) XX2_OPCODE_LIST(DECLARE_OPCODES) |
| 340 #undef DECLARE_OPCODES |
| 341 }; |
| 342 |
| 317 // Instruction encoding bits and masks. | 343 // Instruction encoding bits and masks. |
| 318 enum { | 344 enum { |
| 319 // Instruction encoding bit | 345 // Instruction encoding bit |
| 320 B1 = 1 << 1, | 346 B1 = 1 << 1, |
| 347 B2 = 1 << 2, |
| 348 B3 = 1 << 3, |
| 321 B4 = 1 << 4, | 349 B4 = 1 << 4, |
| 322 B5 = 1 << 5, | 350 B5 = 1 << 5, |
| 323 B7 = 1 << 7, | 351 B7 = 1 << 7, |
| 324 B8 = 1 << 8, | 352 B8 = 1 << 8, |
| 325 B9 = 1 << 9, | 353 B9 = 1 << 9, |
| 326 B12 = 1 << 12, | 354 B12 = 1 << 12, |
| 327 B18 = 1 << 18, | 355 B18 = 1 << 18, |
| 328 B19 = 1 << 19, | 356 B19 = 1 << 19, |
| 329 B20 = 1 << 20, | 357 B20 = 1 << 20, |
| 330 B22 = 1 << 22, | 358 B22 = 1 << 22, |
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 // Lookup the register number for the name provided. | 621 // Lookup the register number for the name provided. |
| 594 static int Number(const char* name); | 622 static int Number(const char* name); |
| 595 | 623 |
| 596 private: | 624 private: |
| 597 static const char* names_[kNumDoubleRegisters]; | 625 static const char* names_[kNumDoubleRegisters]; |
| 598 }; | 626 }; |
| 599 } // namespace internal | 627 } // namespace internal |
| 600 } // namespace v8 | 628 } // namespace v8 |
| 601 | 629 |
| 602 #endif // V8_PPC_CONSTANTS_PPC_H_ | 630 #endif // V8_PPC_CONSTANTS_PPC_H_ |
| OLD | NEW |