Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/ppc/constants-ppc.h

Issue 2760983003: PPC: Clean up simulator code by introducing a OpcodeBase function (Closed)
Patch Set: Add missing cases in simulator Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/ppc/simulator-ppc.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 /* Vector Load Half Word into Half Word Odd Signed and Splat */ \ 548 /* Vector Load Half Word into Half Word Odd Signed and Splat */ \
549 V(evlhhossplat, EVLHHOSSPLAT, 0x1000030F) \ 549 V(evlhhossplat, EVLHHOSSPLAT, 0x1000030F) \
550 /* Vector Load Half Word into Half Word Odd Signed and Splat Indexed */ \ 550 /* Vector Load Half Word into Half Word Odd Signed and Splat Indexed */ \
551 V(evlhhossplatx, EVLHHOSSPLATX, 0x1000030E) \ 551 V(evlhhossplatx, EVLHHOSSPLATX, 0x1000030E) \
552 /* Vector Load Half Word into Half Word Odd Unsigned and Splat */ \ 552 /* Vector Load Half Word into Half Word Odd Unsigned and Splat */ \
553 V(evlhhousplat, EVLHHOUSPLAT, 0x1000030D) \ 553 V(evlhhousplat, EVLHHOUSPLAT, 0x1000030D) \
554 /* Vector Load Half Word into Half Word Odd Unsigned and Splat Indexed */ \ 554 /* Vector Load Half Word into Half Word Odd Unsigned and Splat Indexed */ \
555 V(evlhhousplatx, EVLHHOUSPLATX, 0x1000030C) \ 555 V(evlhhousplatx, EVLHHOUSPLATX, 0x1000030C) \
556 /* Vector Load Word into Two Half Words Even */ \ 556 /* Vector Load Word into Two Half Words Even */ \
557 V(evlwhe, EVLWHE, 0x10000311) \ 557 V(evlwhe, EVLWHE, 0x10000311) \
558 /* Vector Load Word into Two Half Words Even Indexed */ \
559 V(evlwhex, EVLWHEX, 0x10000310) \
560 /* Vector Load Word into Two Half Words Odd Signed (with sign extension) */ \ 558 /* Vector Load Word into Two Half Words Odd Signed (with sign extension) */ \
561 V(evlwhos, EVLWHOS, 0x10000317) \ 559 V(evlwhos, EVLWHOS, 0x10000317) \
562 /* Vector Load Word into Two Half Words Odd Signed Indexed (with sign */ \ 560 /* Vector Load Word into Two Half Words Odd Signed Indexed (with sign */ \
563 /* extension) */ \ 561 /* extension) */ \
564 V(evlwhosx, EVLWHOSX, 0x10000316) \ 562 V(evlwhosx, EVLWHOSX, 0x10000316) \
565 /* Vector Load Word into Two Half Words Odd Unsigned (zero-extended) */ \ 563 /* Vector Load Word into Two Half Words Odd Unsigned (zero-extended) */ \
566 V(evlwhou, EVLWHOU, 0x10000315) \ 564 V(evlwhou, EVLWHOU, 0x10000315) \
567 /* Vector Load Word into Two Half Words Odd Unsigned Indexed (zero- */ \ 565 /* Vector Load Word into Two Half Words Odd Unsigned Indexed (zero- */ \
568 /* extended) */ \ 566 /* extended) */ \
569 V(evlwhoux, EVLWHOUX, 0x10000314) \ 567 V(evlwhoux, EVLWHOUX, 0x10000314) \
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 /* Store Halfword with Decoration Indexed */ \ 1323 /* Store Halfword with Decoration Indexed */ \
1326 V(sthdx, STHDX, 0x7C000546) \ 1324 V(sthdx, STHDX, 0x7C000546) \
1327 /* Store Word with Decoration Indexed */ \ 1325 /* Store Word with Decoration Indexed */ \
1328 V(stwdx, STWDX, 0x7C000586) \ 1326 V(stwdx, STWDX, 0x7C000586) \
1329 /* Data Cache Block Allocate */ \ 1327 /* Data Cache Block Allocate */ \
1330 V(dcba, DCBA, 0x7C0005EC) \ 1328 V(dcba, DCBA, 0x7C0005EC) \
1331 /* Data Cache Block Invalidate */ \ 1329 /* Data Cache Block Invalidate */ \
1332 V(dcbi, DCBI, 0x7C0003AC) \ 1330 V(dcbi, DCBI, 0x7C0003AC) \
1333 /* Instruction Cache Block Touch */ \ 1331 /* Instruction Cache Block Touch */ \
1334 V(icbt, ICBT, 0x7C00002C) \ 1332 V(icbt, ICBT, 0x7C00002C) \
1335 /* Memory Barrier */ \
1336 V(mbar, MBAR, 0x7C0006AC) \
1337 /* Move to Condition Register from XER */ \ 1333 /* Move to Condition Register from XER */ \
1338 V(mcrxr, MCRXR, 0x7C000400) \ 1334 V(mcrxr, MCRXR, 0x7C000400) \
1339 /* TLB Invalidate Local Indexed */ \ 1335 /* TLB Invalidate Local Indexed */ \
1340 V(tlbilx, TLBILX, 0x7C000024) \ 1336 V(tlbilx, TLBILX, 0x7C000024) \
1341 /* TLB Invalidate Virtual Address Indexed */ \ 1337 /* TLB Invalidate Virtual Address Indexed */ \
1342 V(tlbivax, TLBIVAX, 0x7C000624) \ 1338 V(tlbivax, TLBIVAX, 0x7C000624) \
1343 /* TLB Read Entry */ \ 1339 /* TLB Read Entry */ \
1344 V(tlbre, TLBRE, 0x7C000764) \ 1340 V(tlbre, TLBRE, 0x7C000764) \
1345 /* TLB Search Indexed */ \ 1341 /* TLB Search Indexed */ \
1346 V(tlbsx, TLBSX, 0x7C000724) \ 1342 V(tlbsx, TLBSX, 0x7C000724) \
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1677 V(std, STD, 0xF8000000) \ 1673 V(std, STD, 0xF8000000) \
1678 /* Store Doubleword with Update */ \ 1674 /* Store Doubleword with Update */ \
1679 V(stdu, STDU, 0xF8000001) \ 1675 V(stdu, STDU, 0xF8000001) \
1680 /* Load Floating-Point Double Pair */ \ 1676 /* Load Floating-Point Double Pair */ \
1681 V(lfdp, LFDP, 0xE4000000) \ 1677 V(lfdp, LFDP, 0xE4000000) \
1682 /* Store Floating-Point Double Pair */ \ 1678 /* Store Floating-Point Double Pair */ \
1683 V(stfdp, STFDP, 0xF4000000) \ 1679 V(stfdp, STFDP, 0xF4000000) \
1684 /* Store Quadword */ \ 1680 /* Store Quadword */ \
1685 V(stq, STQ, 0xF8000002) 1681 V(stq, STQ, 0xF8000002)
1686 1682
1683 #define PPC_DQ_OPCODE_LIST(V) \
1684 V(lsq, LSQ, 0xE0000000)
1685
1687 #define PPC_D_OPCODE_LIST(V) \ 1686 #define PPC_D_OPCODE_LIST(V) \
1688 /* Trap Doubleword Immediate */ \ 1687 /* Trap Doubleword Immediate */ \
1689 V(tdi, TDI, 0x08000000) \ 1688 V(tdi, TDI, 0x08000000) \
1690 /* Add Immediate */ \ 1689 /* Add Immediate */ \
1691 V(addi, ADDI, 0x38000000) \ 1690 V(addi, ADDI, 0x38000000) \
1692 /* Add Immediate Carrying */ \ 1691 /* Add Immediate Carrying */ \
1693 V(addic, ADDIC, 0x30000000) \ 1692 V(addic, ADDIC, 0x30000000) \
1694 /* Add Immediate Carrying & record CR0 */ \ 1693 /* Add Immediate Carrying & record CR0 */ \
1695 V(addicx, ADDICx, 0x34000000) \ 1694 V(addicx, ADDICx, 0x34000000) \
1696 /* Add Immediate Shifted */ \ 1695 /* Add Immediate Shifted */ \
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
2018 /* Subtract From & record OV */ \ 2017 /* Subtract From & record OV */ \
2019 V(subfo, SUBFO, 0x7C000450) \ 2018 V(subfo, SUBFO, 0x7C000450) \
2020 /* Subtract From Zero Extended */ \ 2019 /* Subtract From Zero Extended */ \
2021 V(subfze, SUBFZE, 0x7C000190) \ 2020 V(subfze, SUBFZE, 0x7C000190) \
2022 /* Subtract From Zero Extended & record OV */ \ 2021 /* Subtract From Zero Extended & record OV */ \
2023 V(subfzeo, SUBFZEO, 0x7C000590) \ 2022 V(subfzeo, SUBFZEO, 0x7C000590) \
2024 /* Add and Generate Sixes */ \ 2023 /* Add and Generate Sixes */ \
2025 V(addg, ADDG, 0x7C000094) \ 2024 V(addg, ADDG, 0x7C000094) \
2026 /* Multiply Accumulate Cross Halfword to Word Modulo Signed */ \ 2025 /* Multiply Accumulate Cross Halfword to Word Modulo Signed */ \
2027 V(macchw, MACCHW, 0x10000158) \ 2026 V(macchw, MACCHW, 0x10000158) \
2028 /* Multiply Accumulate Cross Halfword to Word Modulo Signed & record OV */ \
2029 V(macchwo, MACCHWO, 0x10000158) \
2030 /* Multiply Accumulate Cross Halfword to Word Saturate Signed */ \ 2027 /* Multiply Accumulate Cross Halfword to Word Saturate Signed */ \
2031 V(macchws, MACCHWS, 0x100001D8) \ 2028 V(macchws, MACCHWS, 0x100001D8) \
2032 /* Multiply Accumulate Cross Halfword to Word Saturate Signed & record */ \
2033 /* OV */ \
2034 V(macchwso, MACCHWSO, 0x100001D8) \
2035 /* Multiply Accumulate Cross Halfword to Word Saturate Unsigned */ \ 2029 /* Multiply Accumulate Cross Halfword to Word Saturate Unsigned */ \
2036 V(macchwsu, MACCHWSU, 0x10000198) \ 2030 V(macchwsu, MACCHWSU, 0x10000198) \
2037 /* Multiply Accumulate Cross Halfword to Word Saturate Unsigned & record */ \
2038 /* OV */ \
2039 V(macchwsuo, MACCHWSUO, 0x10000198) \
2040 /* Multiply Accumulate Cross Halfword to Word Modulo Unsigned */ \ 2031 /* Multiply Accumulate Cross Halfword to Word Modulo Unsigned */ \
2041 V(macchwu, MACCHWU, 0x10000118) \ 2032 V(macchwu, MACCHWU, 0x10000118) \
2042 /* Multiply Accumulate Cross Halfword to Word Modulo Unsigned & record */ \
2043 /* OV */ \
2044 V(macchwuo, MACCHWUO, 0x10000118) \
2045 /* Multiply Accumulate High Halfword to Word Modulo Signed */ \ 2033 /* Multiply Accumulate High Halfword to Word Modulo Signed */ \
2046 V(machhw, MACHHW, 0x10000058) \ 2034 V(machhw, MACHHW, 0x10000058) \
2047 /* Multiply Accumulate High Halfword to Word Modulo Signed & record OV */ \
2048 V(machhwo, MACHHWO, 0x10000058) \
2049 /* Multiply Accumulate High Halfword to Word Saturate Signed */ \ 2035 /* Multiply Accumulate High Halfword to Word Saturate Signed */ \
2050 V(machhws, MACHHWS, 0x100000D8) \ 2036 V(machhws, MACHHWS, 0x100000D8) \
2051 /* Multiply Accumulate High Halfword to Word Saturate Signed & record OV */ \
2052 V(machhwso, MACHHWSO, 0x100000D8) \
2053 /* Multiply Accumulate High Halfword to Word Saturate Unsigned */ \ 2037 /* Multiply Accumulate High Halfword to Word Saturate Unsigned */ \
2054 V(machhwsu, MACHHWSU, 0x10000098) \ 2038 V(machhwsu, MACHHWSU, 0x10000098) \
2055 /* Multiply Accumulate High Halfword to Word Saturate Unsigned & record */ \
2056 /* OV */ \
2057 V(machhwsuo, MACHHWSUO, 0x10000098) \
2058 /* Multiply Accumulate High Halfword to Word Modulo Unsigned */ \ 2039 /* Multiply Accumulate High Halfword to Word Modulo Unsigned */ \
2059 V(machhwu, MACHHWU, 0x10000018) \ 2040 V(machhwu, MACHHWU, 0x10000018) \
2060 /* Multiply Accumulate High Halfword to Word Modulo Unsigned & record OV */ \
2061 V(machhwuo, MACHHWUO, 0x10000018) \
2062 /* Multiply Accumulate Low Halfword to Word Modulo Signed */ \ 2041 /* Multiply Accumulate Low Halfword to Word Modulo Signed */ \
2063 V(maclhw, MACLHW, 0x10000358) \ 2042 V(maclhw, MACLHW, 0x10000358) \
2064 /* Multiply Accumulate Low Halfword to Word Modulo Signed & record OV */ \
2065 V(maclhwo, MACLHWO, 0x10000358) \
2066 /* Multiply Accumulate Low Halfword to Word Saturate Signed */ \ 2043 /* Multiply Accumulate Low Halfword to Word Saturate Signed */ \
2067 V(maclhws, MACLHWS, 0x100003D8) \ 2044 V(maclhws, MACLHWS, 0x100003D8) \
2068 /* Multiply Accumulate Low Halfword to Word Saturate Signed & record OV */ \
2069 V(maclhwso, MACLHWSO, 0x100003D8) \
2070 /* Multiply Accumulate Low Halfword to Word Saturate Unsigned */ \ 2045 /* Multiply Accumulate Low Halfword to Word Saturate Unsigned */ \
2071 V(maclhwsu, MACLHWSU, 0x10000398) \ 2046 V(maclhwsu, MACLHWSU, 0x10000398) \
2072 /* Multiply Accumulate Low Halfword to Word Saturate Unsigned & record */ \
2073 /* OV */ \
2074 V(maclhwsuo, MACLHWSUO, 0x10000398) \
2075 /* Multiply Accumulate Low Halfword to Word Modulo Unsigned */ \ 2047 /* Multiply Accumulate Low Halfword to Word Modulo Unsigned */ \
2076 V(maclhwu, MACLHWU, 0x10000318) \ 2048 V(maclhwu, MACLHWU, 0x10000318) \
2077 /* Multiply Accumulate Low Halfword to Word Modulo Unsigned & record OV */ \
2078 V(maclhwuo, MACLHWUO, 0x10000318) \
2079 /* Negative Multiply Accumulate Cross Halfword to Word Modulo Signed */ \ 2049 /* Negative Multiply Accumulate Cross Halfword to Word Modulo Signed */ \
2080 V(nmacchw, NMACCHW, 0x1000015C) \ 2050 V(nmacchw, NMACCHW, 0x1000015C) \
2081 /* Negative Multiply Accumulate Cross Halfword to Word Modulo Signed & */ \
2082 /* record OV */ \
2083 V(nmacchwo, NMACCHWO, 0x1000015C) \
2084 /* Negative Multiply Accumulate Cross Halfword to Word Saturate Signed */ \ 2051 /* Negative Multiply Accumulate Cross Halfword to Word Saturate Signed */ \
2085 V(nmacchws, NMACCHWS, 0x100001DC) \ 2052 V(nmacchws, NMACCHWS, 0x100001DC) \
2086 /* Negative Multiply Accumulate Cross Halfword to Word Saturate Signed & */ \
2087 /* record OV */ \
2088 V(nmacchwso, NMACCHWSO, 0x100001DC) \
2089 /* Negative Multiply Accumulate High Halfword to Word Modulo Signed */ \ 2053 /* Negative Multiply Accumulate High Halfword to Word Modulo Signed */ \
2090 V(nmachhw, NMACHHW, 0x1000005C) \ 2054 V(nmachhw, NMACHHW, 0x1000005C) \
2091 /* Negative Multiply Accumulate High Halfword to Word Modulo Signed & */ \
2092 /* record OV */ \
2093 V(nmachhwo, NMACHHWO, 0x1000005C) \
2094 /* Negative Multiply Accumulate High Halfword to Word Saturate Signed */ \ 2055 /* Negative Multiply Accumulate High Halfword to Word Saturate Signed */ \
2095 V(nmachhws, NMACHHWS, 0x100000DC) \ 2056 V(nmachhws, NMACHHWS, 0x100000DC) \
2096 /* Negative Multiply Accumulate High Halfword to Word Saturate Signed & */ \
2097 /* record OV */ \
2098 V(nmachhwso, NMACHHWSO, 0x100000DC) \
2099 /* Negative Multiply Accumulate Low Halfword to Word Modulo Signed */ \ 2057 /* Negative Multiply Accumulate Low Halfword to Word Modulo Signed */ \
2100 V(nmaclhw, NMACLHW, 0x1000035C) \ 2058 V(nmaclhw, NMACLHW, 0x1000035C) \
2101 /* Negative Multiply Accumulate Low Halfword to Word Modulo Signed & */ \
2102 /* record OV */ \
2103 V(nmaclhwo, NMACLHWO, 0x1000035C) \
2104 /* Negative Multiply Accumulate Low Halfword to Word Saturate Signed */ \ 2059 /* Negative Multiply Accumulate Low Halfword to Word Saturate Signed */ \
2105 V(nmaclhws, NMACLHWS, 0x100003DC) \ 2060 V(nmaclhws, NMACLHWS, 0x100003DC) \
2106 /* Negative Multiply Accumulate Low Halfword to Word Saturate Signed & */ \
2107 /* record OV */ \
2108 V(nmaclhwso, NMACLHWSO, 0x100003DC)
2109 2061
2110 #define PPC_XL_OPCODE_LIST(V) \ 2062 #define PPC_XL_OPCODE_LIST(V) \
2111 /* Branch Conditional to Count Register */ \ 2063 /* Branch Conditional to Count Register */ \
2112 V(bcctr, BCCTRX, 0x4C000420) \ 2064 V(bcctr, BCCTRX, 0x4C000420) \
2113 /* Branch Conditional to Link Register */ \ 2065 /* Branch Conditional to Link Register */ \
2114 V(bclr, BCLRX, 0x4C000020) \ 2066 V(bclr, BCLRX, 0x4C000020) \
2115 /* Condition Register AND */ \ 2067 /* Condition Register AND */ \
2116 V(crand, CRAND, 0x4C000202) \ 2068 V(crand, CRAND, 0x4C000202) \
2117 /* Condition Register AND with Complement */ \ 2069 /* Condition Register AND with Complement */ \
2118 V(crandc, CRANDC, 0x4C000102) \ 2070 V(crandc, CRANDC, 0x4C000102) \
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
2531 2483
2532 #define PPC_SC_OPCODE_LIST(V) \ 2484 #define PPC_SC_OPCODE_LIST(V) \
2533 /* System Call */ \ 2485 /* System Call */ \
2534 V(sc, SC, 0x44000002) 2486 V(sc, SC, 0x44000002)
2535 2487
2536 2488
2537 #define PPC_OPCODE_LIST(V) \ 2489 #define PPC_OPCODE_LIST(V) \
2538 PPC_X_OPCODE_LIST(V) \ 2490 PPC_X_OPCODE_LIST(V) \
2539 PPC_XO_OPCODE_LIST(V) \ 2491 PPC_XO_OPCODE_LIST(V) \
2540 PPC_DS_OPCODE_LIST(V) \ 2492 PPC_DS_OPCODE_LIST(V) \
2493 PPC_DQ_OPCODE_LIST(V) \
2541 PPC_MDS_OPCODE_LIST(V) \ 2494 PPC_MDS_OPCODE_LIST(V) \
2542 PPC_MD_OPCODE_LIST(V) \ 2495 PPC_MD_OPCODE_LIST(V) \
2543 PPC_XS_OPCODE_LIST(V) \ 2496 PPC_XS_OPCODE_LIST(V) \
2544 PPC_D_OPCODE_LIST(V) \ 2497 PPC_D_OPCODE_LIST(V) \
2545 PPC_I_OPCODE_LIST(V) \ 2498 PPC_I_OPCODE_LIST(V) \
2546 PPC_B_OPCODE_LIST(V) \ 2499 PPC_B_OPCODE_LIST(V) \
2547 PPC_XL_OPCODE_LIST(V) \ 2500 PPC_XL_OPCODE_LIST(V) \
2548 PPC_A_OPCODE_LIST(V) \ 2501 PPC_A_OPCODE_LIST(V) \
2549 PPC_XFX_OPCODE_LIST(V) \ 2502 PPC_XFX_OPCODE_LIST(V) \
2550 PPC_M_OPCODE_LIST(V) \ 2503 PPC_M_OPCODE_LIST(V) \
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
2810 inline int RSValue() const { return Bits(25, 21); } 2763 inline int RSValue() const { return Bits(25, 21); }
2811 inline int RTValue() const { return Bits(25, 21); } 2764 inline int RTValue() const { return Bits(25, 21); }
2812 inline int RAValue() const { return Bits(20, 16); } 2765 inline int RAValue() const { return Bits(20, 16); }
2813 DECLARE_STATIC_ACCESSOR(RAValue); 2766 DECLARE_STATIC_ACCESSOR(RAValue);
2814 inline int RBValue() const { return Bits(15, 11); } 2767 inline int RBValue() const { return Bits(15, 11); }
2815 DECLARE_STATIC_ACCESSOR(RBValue); 2768 DECLARE_STATIC_ACCESSOR(RBValue);
2816 inline int RCValue() const { return Bits(10, 6); } 2769 inline int RCValue() const { return Bits(10, 6); }
2817 DECLARE_STATIC_ACCESSOR(RCValue); 2770 DECLARE_STATIC_ACCESSOR(RCValue);
2818 2771
2819 inline int OpcodeValue() const { return static_cast<Opcode>(Bits(31, 26)); } 2772 inline int OpcodeValue() const { return static_cast<Opcode>(Bits(31, 26)); }
2820 inline Opcode OpcodeField() const { 2773 inline uint32_t OpcodeField() const {
2821 return static_cast<Opcode>(BitField(31, 26)); 2774 return static_cast<Opcode>(BitField(31, 26));
2822 } 2775 }
2823 2776
2777 #define OPCODE_CASES(name, opcode_name, opcode_value) \
2778 case opcode_name:
2779
2780 inline Opcode OpcodeBase() const {
2781 uint32_t opcode = OpcodeField();
2782 uint32_t extcode = OpcodeField();
2783 switch (opcode) {
2784 PPC_D_OPCODE_LIST(OPCODE_CASES)
2785 PPC_I_OPCODE_LIST(OPCODE_CASES)
2786 PPC_B_OPCODE_LIST(OPCODE_CASES)
2787 PPC_M_OPCODE_LIST(OPCODE_CASES)
2788 return static_cast<Opcode>(opcode);
2789 }
2790
2791 opcode = extcode | BitField(10, 0);
2792 switch (opcode) {
2793 PPC_VX_OPCODE_LIST(OPCODE_CASES)
2794 return static_cast<Opcode>(opcode);
2795 }
2796 opcode = extcode | BitField(9, 0);
2797 switch (opcode) {
2798 PPC_VC_OPCODE_LIST(OPCODE_CASES)
2799 return static_cast<Opcode>(opcode);
2800 }
2801 opcode = extcode | BitField(10, 1) | BitField(20, 20);
2802 switch (opcode) {
2803 PPC_XFX_OPCODE_LIST(OPCODE_CASES)
2804 return static_cast<Opcode>(opcode);
2805 }
2806 opcode = extcode | BitField(10, 1);
2807 switch (opcode) {
2808 PPC_X_OPCODE_LIST(OPCODE_CASES)
2809 PPC_XL_OPCODE_LIST(OPCODE_CASES)
2810 PPC_XFL_OPCODE_LIST(OPCODE_CASES)
2811 PPC_XX1_OPCODE_LIST(OPCODE_CASES)
2812 PPC_XX2_OPCODE_LIST(OPCODE_CASES)
2813 PPC_EVX_OPCODE_LIST(OPCODE_CASES)
2814 return static_cast<Opcode>(opcode);
2815 }
2816 opcode = extcode | BitField(9, 1);
2817 switch (opcode) {
2818 PPC_XO_OPCODE_LIST(OPCODE_CASES)
2819 PPC_Z22_OPCODE_LIST(OPCODE_CASES)
2820 return static_cast<Opcode>(opcode);
2821 }
2822 opcode = extcode | BitField(10, 2);
2823 switch (opcode) {
2824 PPC_XS_OPCODE_LIST(OPCODE_CASES)
2825 return static_cast<Opcode>(opcode);
2826 }
2827 opcode = extcode | BitField(10, 3);
2828 switch (opcode) {
2829 PPC_EVS_OPCODE_LIST(OPCODE_CASES)
2830 PPC_XX3_OPCODE_LIST(OPCODE_CASES)
2831 return static_cast<Opcode>(opcode);
2832 }
2833 opcode = extcode | BitField(8, 1);
2834 switch (opcode) {
2835 PPC_Z23_OPCODE_LIST(OPCODE_CASES)
2836 return static_cast<Opcode>(opcode);
2837 }
2838 opcode = extcode | BitField(5, 0);
2839 switch (opcode) {
2840 PPC_VA_OPCODE_LIST(OPCODE_CASES)
2841 return static_cast<Opcode>(opcode);
2842 }
2843 opcode = extcode | BitField(5, 1);
2844 switch (opcode) {
2845 PPC_A_OPCODE_LIST(OPCODE_CASES)
2846 return static_cast<Opcode>(opcode);
2847 }
2848 opcode = extcode | BitField(4, 1);
2849 switch (opcode) {
2850 PPC_MDS_OPCODE_LIST(OPCODE_CASES)
2851 return static_cast<Opcode>(opcode);
2852 }
2853 opcode = extcode | BitField(4, 2);
2854 switch (opcode) {
2855 PPC_MD_OPCODE_LIST(OPCODE_CASES)
2856 return static_cast<Opcode>(opcode);
2857 }
2858 opcode = extcode | BitField(5, 4);
2859 switch (opcode) {
2860 PPC_XX4_OPCODE_LIST(OPCODE_CASES)
2861 return static_cast<Opcode>(opcode);
2862 }
2863 opcode = extcode | BitField(2, 0);
2864 switch (opcode) {
2865 PPC_DQ_OPCODE_LIST(OPCODE_CASES)
2866 return static_cast<Opcode>(opcode);
2867 }
2868 opcode = extcode | BitField(1, 0);
2869 switch (opcode) {
2870 PPC_DS_OPCODE_LIST(OPCODE_CASES)
2871 return static_cast<Opcode>(opcode);
2872 }
2873 opcode = extcode | BitField(1, 1);
2874 switch (opcode) {
2875 PPC_SC_OPCODE_LIST(OPCODE_CASES)
2876 return static_cast<Opcode>(opcode);
2877 }
2878 printf("opcode = %x\n", InstructionBits());
2879 UNIMPLEMENTED();
2880 return static_cast<Opcode>(0);
2881 }
2882
2883 #undef OPCODE_CASES
2884
2824 // Fields used in Software interrupt instructions 2885 // Fields used in Software interrupt instructions
2825 inline SoftwareInterruptCodes SvcValue() const { 2886 inline SoftwareInterruptCodes SvcValue() const {
2826 return static_cast<SoftwareInterruptCodes>(Bits(23, 0)); 2887 return static_cast<SoftwareInterruptCodes>(Bits(23, 0));
2827 } 2888 }
2828 2889
2829 // Instructions are read of out a code stream. The only way to get a 2890 // Instructions are read of out a code stream. The only way to get a
2830 // reference to an instruction is to convert a pointer. There is no way 2891 // reference to an instruction is to convert a pointer. There is no way
2831 // to allocate or create instances of class Instruction. 2892 // to allocate or create instances of class Instruction.
2832 // Use the At(pc) function to create references to Instruction. 2893 // Use the At(pc) function to create references to Instruction.
2833 static Instruction* At(byte* pc) { 2894 static Instruction* At(byte* pc) {
(...skipping 23 matching lines...) Expand all
2857 // Lookup the register number for the name provided. 2918 // Lookup the register number for the name provided.
2858 static int Number(const char* name); 2919 static int Number(const char* name);
2859 2920
2860 private: 2921 private:
2861 static const char* names_[kNumDoubleRegisters]; 2922 static const char* names_[kNumDoubleRegisters];
2862 }; 2923 };
2863 } // namespace internal 2924 } // namespace internal
2864 } // namespace v8 2925 } // namespace v8
2865 2926
2866 #endif // V8_PPC_CONSTANTS_PPC_H_ 2927 #endif // V8_PPC_CONSTANTS_PPC_H_
OLDNEW
« no previous file with comments | « no previous file | src/ppc/simulator-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698