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 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1070 V(vcmpgtsw, VCMPGTSW, 0x10000386) \ | 1070 V(vcmpgtsw, VCMPGTSW, 0x10000386) \ |
1071 /* Vector Compare Greater Than Unsigned Byte */ \ | 1071 /* Vector Compare Greater Than Unsigned Byte */ \ |
1072 V(vcmpgtub, VCMPGTUB, 0x10000206) \ | 1072 V(vcmpgtub, VCMPGTUB, 0x10000206) \ |
1073 /* Vector Compare Greater Than Unsigned Doubleword */ \ | 1073 /* Vector Compare Greater Than Unsigned Doubleword */ \ |
1074 V(vcmpgtud, VCMPGTUD, 0x100002C7) \ | 1074 V(vcmpgtud, VCMPGTUD, 0x100002C7) \ |
1075 /* Vector Compare Greater Than Unsigned Halfword */ \ | 1075 /* Vector Compare Greater Than Unsigned Halfword */ \ |
1076 V(vcmpgtuh, VCMPGTUH, 0x10000246) \ | 1076 V(vcmpgtuh, VCMPGTUH, 0x10000246) \ |
1077 /* Vector Compare Greater Than Unsigned Word */ \ | 1077 /* Vector Compare Greater Than Unsigned Word */ \ |
1078 V(vcmpgtuw, VCMPGTUW, 0x10000286) | 1078 V(vcmpgtuw, VCMPGTUW, 0x10000286) |
1079 | 1079 |
1080 #define PPC_X_OPCODE_A_FORM_LIST(V) \ | 1080 #define PPC_X_OPCODE_A_FORM_LIST(V) \ |
1081 /* Modulo Signed Dword */ \ | 1081 /* Modulo Signed Dword */ \ |
1082 V(modsd, MODSD, 0x7C000612) \ | 1082 V(modsd, MODSD, 0x7C000612) \ |
1083 /* Modulo Unsigned Dword */ \ | 1083 /* Modulo Unsigned Dword */ \ |
1084 V(modud, MODUD, 0x7C000212) \ | 1084 V(modud, MODUD, 0x7C000212) \ |
1085 /* Modulo Signed Word */ \ | 1085 /* Modulo Signed Word */ \ |
1086 V(modsw, MODSW, 0x7C000616) \ | 1086 V(modsw, MODSW, 0x7C000616) \ |
1087 /* Modulo Unsigned Word */ \ | 1087 /* Modulo Unsigned Word */ \ |
1088 V(moduw, MODUW, 0x7C000216) \ | 1088 V(moduw, MODUW, 0x7C000216) |
1089 | 1089 |
1090 #define PPC_X_OPCODE_B_FORM_LIST(V) \ | 1090 #define PPC_X_OPCODE_B_FORM_LIST(V) \ |
1091 /* XOR */ \ | 1091 /* XOR */ \ |
1092 V(xor_, XORX, 0x7C000278) \ | 1092 V(xor_, XORX, 0x7C000278) \ |
1093 /* AND */ \ | 1093 /* AND */ \ |
1094 V(and_, ANDX, 0x7C000038) \ | 1094 V(and_, ANDX, 0x7C000038) \ |
1095 /* AND with Complement */ \ | 1095 /* AND with Complement */ \ |
1096 V(andc, ANDCX, 0x7C000078) \ | 1096 V(andc, ANDCX, 0x7C000078) \ |
1097 /* OR */ \ | 1097 /* OR */ \ |
1098 V(orx, ORX, 0x7C000378) \ | 1098 V(orx, ORX, 0x7C000378) \ |
1099 /* OR with Complement */ \ | 1099 /* OR with Complement */ \ |
1100 V(orc, ORC, 0x7C000338) \ | 1100 V(orc, ORC, 0x7C000338) \ |
1101 /* NOR */ \ | 1101 /* NOR */ \ |
1102 V(nor, NORX, 0x7C0000F8) \ | 1102 V(nor, NORX, 0x7C0000F8) \ |
1103 /* Shift Right Word */ \ | 1103 /* Shift Right Word */ \ |
1104 V(srw, SRWX, 0x7C000430) \ | 1104 V(srw, SRWX, 0x7C000430) \ |
1105 /* Shift Left Word */ \ | 1105 /* Shift Left Word */ \ |
1106 V(slw, SLWX, 0x7C000030) \ | 1106 V(slw, SLWX, 0x7C000030) \ |
1107 /* Shift Right Algebraic Word */ \ | 1107 /* Shift Right Algebraic Word */ \ |
1108 V(sraw, SRAW, 0x7C000630) \ | 1108 V(sraw, SRAW, 0x7C000630) \ |
1109 /* Shift Left Doubleword */ \ | 1109 /* Shift Left Doubleword */ \ |
1110 V(sld, SLDX, 0x7C000036) \ | 1110 V(sld, SLDX, 0x7C000036) \ |
1111 /* Shift Right Algebraic Doubleword */ \ | 1111 /* Shift Right Algebraic Doubleword */ \ |
1112 V(srad, SRAD, 0x7C000634) \ | 1112 V(srad, SRAD, 0x7C000634) \ |
1113 /* Shift Right Doubleword */ \ | 1113 /* Shift Right Doubleword */ \ |
1114 V(srd, SRDX, 0x7C000436) \ | 1114 V(srd, SRDX, 0x7C000436) |
1115 | 1115 |
1116 #define PPC_X_OPCODE_C_FORM_LIST(V) \ | 1116 #define PPC_X_OPCODE_C_FORM_LIST(V) \ |
1117 /* Count Leading Zeros Word */ \ | 1117 /* Count Leading Zeros Word */ \ |
1118 V(cntlzw, CNTLZWX, 0x7C000034) \ | 1118 V(cntlzw, CNTLZWX, 0x7C000034) \ |
1119 /* Count Leading Zeros Doubleword */ \ | 1119 /* Count Leading Zeros Doubleword */ \ |
1120 V(cntlzd, CNTLZDX, 0x7C000074) \ | 1120 V(cntlzd, CNTLZDX, 0x7C000074) \ |
1121 /* Population Count Byte-wise */ \ | 1121 /* Population Count Byte-wise */ \ |
1122 V(popcntb, POPCNTB, 0x7C0000F4) \ | 1122 V(popcntb, POPCNTB, 0x7C0000F4) \ |
1123 /* Population Count Words */ \ | 1123 /* Population Count Words */ \ |
1124 V(popcntw, POPCNTW, 0x7C0002F4) \ | 1124 V(popcntw, POPCNTW, 0x7C0002F4) \ |
1125 /* Population Count Doubleword */ \ | 1125 /* Population Count Doubleword */ \ |
1126 V(popcntd, POPCNTD, 0x7C0003F4) \ | 1126 V(popcntd, POPCNTD, 0x7C0003F4) \ |
1127 /* Extend Sign Byte */ \ | 1127 /* Extend Sign Byte */ \ |
1128 V(extsb, EXTSB, 0x7C000774) \ | 1128 V(extsb, EXTSB, 0x7C000774) \ |
1129 /* Extend Sign Halfword */ \ | 1129 /* Extend Sign Halfword */ \ |
1130 V(extsh, EXTSH, 0x7C000734) \ | 1130 V(extsh, EXTSH, 0x7C000734) |
1131 | 1131 |
1132 #define PPC_X_OPCODE_D_FORM_LIST(V) \ | 1132 #define PPC_X_OPCODE_D_FORM_LIST(V) \ |
1133 /* Load Halfword Byte-Reverse Indexed */ \ | 1133 /* Load Halfword Byte-Reverse Indexed */ \ |
1134 V(lhbrx, LHBRX, 0x7C00062C) \ | 1134 V(lhbrx, LHBRX, 0x7C00062C) \ |
1135 /* Load Word Byte-Reverse Indexed */ \ | 1135 /* Load Word Byte-Reverse Indexed */ \ |
1136 V(lwbrx, LWBRX, 0x7C00042C) \ | 1136 V(lwbrx, LWBRX, 0x7C00042C) \ |
1137 /* Load Doubleword Byte-Reverse Indexed */ \ | 1137 /* Load Doubleword Byte-Reverse Indexed */ \ |
1138 V(ldbrx, LDBRX, 0x7C000428) \ | 1138 V(ldbrx, LDBRX, 0x7C000428) \ |
1139 /* Load Byte and Zero Indexed */ \ | 1139 /* Load Byte and Zero Indexed */ \ |
1140 V(lbzx, LBZX, 0x7C0000AE) \ | 1140 V(lbzx, LBZX, 0x7C0000AE) \ |
1141 /* Load Byte and Zero with Update Indexed */ \ | 1141 /* Load Byte and Zero with Update Indexed */ \ |
1142 V(lbzux, LBZUX, 0x7C0000EE) \ | 1142 V(lbzux, LBZUX, 0x7C0000EE) \ |
1143 /* Load Halfword and Zero Indexed */ \ | 1143 /* Load Halfword and Zero Indexed */ \ |
1144 V(lhzx, LHZX, 0x7C00022E) \ | 1144 V(lhzx, LHZX, 0x7C00022E) \ |
1145 /* Load Halfword and Zero with Update Indexed */ \ | 1145 /* Load Halfword and Zero with Update Indexed */ \ |
1146 V(lhzux, LHZUX, 0x7C00026E) \ | 1146 V(lhzux, LHZUX, 0x7C00026E) \ |
1147 /* Load Halfword Algebraic Indexed */ \ | 1147 /* Load Halfword Algebraic Indexed */ \ |
1148 V(lhax, LHAX, 0x7C0002AE) \ | 1148 V(lhax, LHAX, 0x7C0002AE) \ |
1149 /* Load Word and Zero Indexed */ \ | 1149 /* Load Word and Zero Indexed */ \ |
1150 V(lwzx, LWZX, 0x7C00002E) \ | 1150 V(lwzx, LWZX, 0x7C00002E) \ |
1151 /* Load Word and Zero with Update Indexed */ \ | 1151 /* Load Word and Zero with Update Indexed */ \ |
1152 V(lwzux, LWZUX, 0x7C00006E) \ | 1152 V(lwzux, LWZUX, 0x7C00006E) \ |
1153 /* Load Doubleword Indexed */ \ | 1153 /* Load Doubleword Indexed */ \ |
1154 V(ldx, LDX, 0x7C00002A) \ | 1154 V(ldx, LDX, 0x7C00002A) \ |
1155 /* Load Doubleword with Update Indexed */ \ | 1155 /* Load Doubleword with Update Indexed */ \ |
1156 V(ldux, LDUX, 0x7C00006A) \ | 1156 V(ldux, LDUX, 0x7C00006A) \ |
1157 /* Load Floating-Point Double Indexed */ \ | 1157 /* Load Floating-Point Double Indexed */ \ |
1158 V(lfdx, LFDX, 0x7C0004AE) \ | 1158 V(lfdx, LFDX, 0x7C0004AE) \ |
1159 /* Load Floating-Point Single Indexed */ \ | 1159 /* Load Floating-Point Single Indexed */ \ |
1160 V(lfsx, LFSX, 0x7C00042E) \ | 1160 V(lfsx, LFSX, 0x7C00042E) \ |
1161 /* Load Floating-Point Double with Update Indexed */ \ | 1161 /* Load Floating-Point Double with Update Indexed */ \ |
1162 V(lfdux, LFDUX, 0x7C0004EE) \ | 1162 V(lfdux, LFDUX, 0x7C0004EE) \ |
1163 /* Load Floating-Point Single with Update Indexed */ \ | 1163 /* Load Floating-Point Single with Update Indexed */ \ |
1164 V(lfsux, LFSUX, 0x7C00046E) \ | 1164 V(lfsux, LFSUX, 0x7C00046E) \ |
1165 /* Store Byte with Update Indexed */ \ | 1165 /* Store Byte with Update Indexed */ \ |
1166 V(stbux, STBUX, 0x7C0001EE) \ | 1166 V(stbux, STBUX, 0x7C0001EE) \ |
1167 /* Store Byte Indexed */ \ | 1167 /* Store Byte Indexed */ \ |
1168 V(stbx, STBX, 0x7C0001AE) \ | 1168 V(stbx, STBX, 0x7C0001AE) \ |
1169 /* Store Halfword with Update Indexed */ \ | 1169 /* Store Halfword with Update Indexed */ \ |
1170 V(sthux, STHUX, 0x7C00036E) \ | 1170 V(sthux, STHUX, 0x7C00036E) \ |
1171 /* Store Halfword Indexed */ \ | 1171 /* Store Halfword Indexed */ \ |
1172 V(sthx, STHX, 0x7C00032E) \ | 1172 V(sthx, STHX, 0x7C00032E) \ |
1173 /* Store Word with Update Indexed */ \ | 1173 /* Store Word with Update Indexed */ \ |
1174 V(stwux, STWUX, 0x7C00016E) \ | 1174 V(stwux, STWUX, 0x7C00016E) \ |
1175 /* Store Word Indexed */ \ | 1175 /* Store Word Indexed */ \ |
1176 V(stwx, STWX, 0x7C00012E) \ | 1176 V(stwx, STWX, 0x7C00012E) \ |
1177 /* Store Doubleword with Update Indexed */ \ | 1177 /* Store Doubleword with Update Indexed */ \ |
1178 V(stdux, STDUX, 0x7C00016A) \ | 1178 V(stdux, STDUX, 0x7C00016A) \ |
1179 /* Store Doubleword Indexed */ \ | 1179 /* Store Doubleword Indexed */ \ |
1180 V(stdx, STDX, 0x7C00012A) \ | 1180 V(stdx, STDX, 0x7C00012A) \ |
1181 /* Store Floating-Point Double with Update Indexed */ \ | 1181 /* Store Floating-Point Double with Update Indexed */ \ |
1182 V(stfdux, STFDUX, 0x7C0005EE) \ | 1182 V(stfdux, STFDUX, 0x7C0005EE) \ |
1183 /* Store Floating-Point Double Indexed */ \ | 1183 /* Store Floating-Point Double Indexed */ \ |
1184 V(stfdx, STFDX, 0x7C0005AE) \ | 1184 V(stfdx, STFDX, 0x7C0005AE) \ |
1185 /* Store Floating-Point Single with Update Indexed */ \ | 1185 /* Store Floating-Point Single with Update Indexed */ \ |
1186 V(stfsux, STFSUX, 0x7C00056E) \ | 1186 V(stfsux, STFSUX, 0x7C00056E) \ |
1187 /* Store Floating-Point Single Indexed */ \ | 1187 /* Store Floating-Point Single Indexed */ \ |
1188 V(stfsx, STFSX, 0x7C00052E) \ | 1188 V(stfsx, STFSX, 0x7C00052E) |
1189 | 1189 |
1190 #define PPC_X_OPCODE_E_FORM_LIST(V) \ | 1190 #define PPC_X_OPCODE_E_FORM_LIST(V) \ |
1191 /* Shift Right Algebraic Word Immediate */ \ | 1191 /* Shift Right Algebraic Word Immediate */ \ |
1192 V(srawi, SRAWIX, 0x7C000670) \ | 1192 V(srawi, SRAWIX, 0x7C000670) |
1193 | 1193 |
1194 #define PPC_X_OPCODE_F_FORM_LIST(V) \ | 1194 #define PPC_X_OPCODE_F_FORM_LIST(V) \ |
1195 /* Compare */ \ | 1195 /* Compare */ \ |
1196 V(cmp, CMP, 0x7C000000) \ | 1196 V(cmp, CMP, 0x7C000000) \ |
1197 /* Compare Logical */ \ | 1197 /* Compare Logical */ \ |
1198 V(cmpl, CMPL, 0x7C000040) \ | 1198 V(cmpl, CMPL, 0x7C000040) |
| 1199 |
| 1200 #define PPC_X_OPCODE_EH_S_FORM_LIST(V) \ |
| 1201 /* Store Byte Conditional Indexed */ \ |
| 1202 V(stbcx, STBCX, 0x7C00056D) \ |
| 1203 /* Store Halfword Conditional Indexed Xform */ \ |
| 1204 V(sthcx, STHCX, 0x7C0005AD) \ |
| 1205 /* Store Word Conditional Indexed & record CR0 */ \ |
| 1206 V(stwcx, STWCX, 0x7C00012D) |
| 1207 |
| 1208 #define PPC_X_OPCODE_EH_L_FORM_LIST(V) \ |
| 1209 /* Load Byte And Reserve Indexed */ \ |
| 1210 V(lbarx, LBARX, 0x7C000068) \ |
| 1211 /* Load Halfword And Reserve Indexed Xform */ \ |
| 1212 V(lharx, LHARX, 0x7C0000E8) \ |
| 1213 /* Load Word and Reserve Indexed */ \ |
| 1214 V(lwarx, LWARX, 0x7C000028) |
1199 | 1215 |
1200 #define PPC_X_OPCODE_UNUSED_LIST(V) \ | 1216 #define PPC_X_OPCODE_UNUSED_LIST(V) \ |
1201 /* Bit Permute Doubleword */ \ | 1217 /* Bit Permute Doubleword */ \ |
1202 V(bpermd, BPERMD, 0x7C0001F8) \ | 1218 V(bpermd, BPERMD, 0x7C0001F8) \ |
1203 /* Extend Sign Word */ \ | 1219 /* Extend Sign Word */ \ |
1204 V(extsw, EXTSW, 0x7C0007B4) \ | 1220 V(extsw, EXTSW, 0x7C0007B4) \ |
1205 /* Load Doubleword And Reserve Indexed */ \ | 1221 /* Load Doubleword And Reserve Indexed */ \ |
1206 V(ldarx, LDARX, 0x7C0000A8) \ | 1222 V(ldarx, LDARX, 0x7C0000A8) \ |
1207 /* Load Word Algebraic with Update Indexed */ \ | 1223 /* Load Word Algebraic with Update Indexed */ \ |
1208 V(lwaux, LWAUX, 0x7C0002EA) \ | 1224 V(lwaux, LWAUX, 0x7C0002EA) \ |
(...skipping 18 matching lines...) Expand all Loading... |
1227 /* Data Cache Block Touch */ \ | 1243 /* Data Cache Block Touch */ \ |
1228 V(dcbt, DCBT, 0x7C00022C) \ | 1244 V(dcbt, DCBT, 0x7C00022C) \ |
1229 /* Data Cache Block Touch for Store */ \ | 1245 /* Data Cache Block Touch for Store */ \ |
1230 V(dcbtst, DCBTST, 0x7C0001EC) \ | 1246 V(dcbtst, DCBTST, 0x7C0001EC) \ |
1231 /* Data Cache Block Zero */ \ | 1247 /* Data Cache Block Zero */ \ |
1232 V(dcbz, DCBZ, 0x7C0007EC) \ | 1248 V(dcbz, DCBZ, 0x7C0007EC) \ |
1233 /* Equivalent */ \ | 1249 /* Equivalent */ \ |
1234 V(eqv, EQV, 0x7C000238) \ | 1250 V(eqv, EQV, 0x7C000238) \ |
1235 /* Instruction Cache Block Invalidate */ \ | 1251 /* Instruction Cache Block Invalidate */ \ |
1236 V(icbi, ICBI, 0x7C0007AC) \ | 1252 V(icbi, ICBI, 0x7C0007AC) \ |
1237 /* Load Byte And Reserve Indexed */ \ | |
1238 V(lbarx, LBARX, 0x7C000068) \ | |
1239 /* Load Halfword And Reserve Indexed Xform */ \ | |
1240 V(lharx, LHARX, 0x7C0000E8) \ | |
1241 /* Load Halfword Algebraic with Update Indexed */ \ | |
1242 V(lhaux, LHAUX, 0x7C0002EE) \ | |
1243 /* Load Word and Reserve Indexed */ \ | |
1244 V(lwarx, LWARX, 0x7C000028) \ | |
1245 /* NAND */ \ | 1253 /* NAND */ \ |
1246 V(nand, NAND, 0x7C0003B8) \ | 1254 V(nand, NAND, 0x7C0003B8) \ |
1247 /* Parity Word */ \ | 1255 /* Parity Word */ \ |
1248 V(prtyw, PRTYW, 0x7C000134) \ | 1256 V(prtyw, PRTYW, 0x7C000134) \ |
1249 /* Store Byte Conditional Indexed */ \ | |
1250 V(stbcx, STBCX, 0x7C00056D) \ | |
1251 /* Store Halfword Byte-Reverse Indexed */ \ | 1257 /* Store Halfword Byte-Reverse Indexed */ \ |
1252 V(sthbrx, STHBRX, 0x7C00072C) \ | 1258 V(sthbrx, STHBRX, 0x7C00072C) \ |
1253 /* Store Halfword Conditional Indexed Xform */ \ | |
1254 V(sthcx, STHCX, 0x7C0005AD) \ | |
1255 /* Store Word Byte-Reverse Indexed */ \ | 1259 /* Store Word Byte-Reverse Indexed */ \ |
1256 V(stwbrx, STWBRX, 0x7C00052C) \ | 1260 V(stwbrx, STWBRX, 0x7C00052C) \ |
1257 /* Store Word Conditional Indexed & record CR0 */ \ | |
1258 V(stwcx, STWCX, 0x7C00012D) \ | |
1259 /* Synchronize */ \ | 1261 /* Synchronize */ \ |
1260 V(sync, SYNC, 0x7C0004AC) \ | 1262 V(sync, SYNC, 0x7C0004AC) \ |
1261 /* Trap Word */ \ | 1263 /* Trap Word */ \ |
1262 V(tw, TW, 0x7C000008) \ | 1264 V(tw, TW, 0x7C000008) \ |
1263 /* ExecuExecuted No Operation */ \ | 1265 /* ExecuExecuted No Operation */ \ |
1264 V(xnop, XNOP, 0x68000000) \ | 1266 V(xnop, XNOP, 0x68000000) \ |
1265 /* Convert Binary Coded Decimal To Declets */ \ | 1267 /* Convert Binary Coded Decimal To Declets */ \ |
1266 V(cbcdtd, CBCDTD, 0x7C000274) \ | 1268 V(cbcdtd, CBCDTD, 0x7C000274) \ |
1267 /* Convert Declets To Binary Coded Decimal */ \ | 1269 /* Convert Declets To Binary Coded Decimal */ \ |
1268 V(cdtbcd, CDTBCD, 0x7C000234) \ | 1270 V(cdtbcd, CDTBCD, 0x7C000234) \ |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1663 V(stvxl, STVXL, 0x7C0003CE) \ | 1665 V(stvxl, STVXL, 0x7C0003CE) \ |
1664 /* Vector Minimum Signed Doubleword */ \ | 1666 /* Vector Minimum Signed Doubleword */ \ |
1665 V(vminsd, VMINSD, 0x100003C2) \ | 1667 V(vminsd, VMINSD, 0x100003C2) \ |
1666 /* Floating Merge Even Word */ \ | 1668 /* Floating Merge Even Word */ \ |
1667 V(fmrgew, FMRGEW, 0xFC00078C) \ | 1669 V(fmrgew, FMRGEW, 0xFC00078C) \ |
1668 /* Floating Merge Odd Word */ \ | 1670 /* Floating Merge Odd Word */ \ |
1669 V(fmrgow, FMRGOW, 0xFC00068C) \ | 1671 V(fmrgow, FMRGOW, 0xFC00068C) \ |
1670 /* Wait for Interrupt */ \ | 1672 /* Wait for Interrupt */ \ |
1671 V(wait, WAIT, 0x7C00007C) | 1673 V(wait, WAIT, 0x7C00007C) |
1672 | 1674 |
1673 #define PPC_X_OPCODE_LIST(V) \ | 1675 #define PPC_X_OPCODE_LIST(V) \ |
1674 PPC_X_OPCODE_A_FORM_LIST(V) \ | 1676 PPC_X_OPCODE_A_FORM_LIST(V) \ |
1675 PPC_X_OPCODE_B_FORM_LIST(V) \ | 1677 PPC_X_OPCODE_B_FORM_LIST(V) \ |
1676 PPC_X_OPCODE_C_FORM_LIST(V) \ | 1678 PPC_X_OPCODE_C_FORM_LIST(V) \ |
1677 PPC_X_OPCODE_D_FORM_LIST(V) \ | 1679 PPC_X_OPCODE_D_FORM_LIST(V) \ |
1678 PPC_X_OPCODE_E_FORM_LIST(V) \ | 1680 PPC_X_OPCODE_E_FORM_LIST(V) \ |
1679 PPC_X_OPCODE_F_FORM_LIST(V) \ | 1681 PPC_X_OPCODE_F_FORM_LIST(V) \ |
| 1682 PPC_X_OPCODE_EH_L_FORM_LIST(V) \ |
1680 PPC_X_OPCODE_UNUSED_LIST(V) | 1683 PPC_X_OPCODE_UNUSED_LIST(V) |
1681 | 1684 |
1682 | |
1683 #define PPC_EVS_OPCODE_LIST(V) \ | 1685 #define PPC_EVS_OPCODE_LIST(V) \ |
1684 /* Vector Select */ \ | 1686 /* Vector Select */ \ |
1685 V(evsel, EVSEL, 0x10000278) | 1687 V(evsel, EVSEL, 0x10000278) |
1686 | 1688 |
1687 #define PPC_DS_OPCODE_LIST(V) \ | 1689 #define PPC_DS_OPCODE_LIST(V) \ |
1688 /* Load Doubleword */ \ | 1690 /* Load Doubleword */ \ |
1689 V(ld, LD, 0xE8000000) \ | 1691 V(ld, LD, 0xE8000000) \ |
1690 /* Load Doubleword with Update */ \ | 1692 /* Load Doubleword with Update */ \ |
1691 V(ldu, LDU, 0xE8000001) \ | 1693 V(ldu, LDU, 0xE8000001) \ |
1692 /* Load Word Algebraic */ \ | 1694 /* Load Word Algebraic */ \ |
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2500 V(rldicl, RLDICL, 0x78000000) \ | 2502 V(rldicl, RLDICL, 0x78000000) \ |
2501 /* Rotate Left Doubleword Immediate then Clear Right */ \ | 2503 /* Rotate Left Doubleword Immediate then Clear Right */ \ |
2502 V(rldicr, RLDICR, 0x78000004) \ | 2504 V(rldicr, RLDICR, 0x78000004) \ |
2503 /* Rotate Left Doubleword Immediate then Mask Insert */ \ | 2505 /* Rotate Left Doubleword Immediate then Mask Insert */ \ |
2504 V(rldimi, RLDIMI, 0x7800000C) | 2506 V(rldimi, RLDIMI, 0x7800000C) |
2505 | 2507 |
2506 #define PPC_SC_OPCODE_LIST(V) \ | 2508 #define PPC_SC_OPCODE_LIST(V) \ |
2507 /* System Call */ \ | 2509 /* System Call */ \ |
2508 V(sc, SC, 0x44000002) | 2510 V(sc, SC, 0x44000002) |
2509 | 2511 |
2510 | 2512 #define PPC_OPCODE_LIST(V) \ |
2511 #define PPC_OPCODE_LIST(V) \ | 2513 PPC_X_OPCODE_LIST(V) \ |
2512 PPC_X_OPCODE_LIST(V) \ | 2514 PPC_X_OPCODE_EH_S_FORM_LIST(V) \ |
2513 PPC_XO_OPCODE_LIST(V) \ | 2515 PPC_XO_OPCODE_LIST(V) \ |
2514 PPC_DS_OPCODE_LIST(V) \ | 2516 PPC_DS_OPCODE_LIST(V) \ |
2515 PPC_DQ_OPCODE_LIST(V) \ | 2517 PPC_DQ_OPCODE_LIST(V) \ |
2516 PPC_MDS_OPCODE_LIST(V) \ | 2518 PPC_MDS_OPCODE_LIST(V) \ |
2517 PPC_MD_OPCODE_LIST(V) \ | 2519 PPC_MD_OPCODE_LIST(V) \ |
2518 PPC_XS_OPCODE_LIST(V) \ | 2520 PPC_XS_OPCODE_LIST(V) \ |
2519 PPC_D_OPCODE_LIST(V) \ | 2521 PPC_D_OPCODE_LIST(V) \ |
2520 PPC_I_OPCODE_LIST(V) \ | 2522 PPC_I_OPCODE_LIST(V) \ |
2521 PPC_B_OPCODE_LIST(V) \ | 2523 PPC_B_OPCODE_LIST(V) \ |
2522 PPC_XL_OPCODE_LIST(V) \ | 2524 PPC_XL_OPCODE_LIST(V) \ |
2523 PPC_A_OPCODE_LIST(V) \ | 2525 PPC_A_OPCODE_LIST(V) \ |
2524 PPC_XFX_OPCODE_LIST(V) \ | 2526 PPC_XFX_OPCODE_LIST(V) \ |
2525 PPC_M_OPCODE_LIST(V) \ | 2527 PPC_M_OPCODE_LIST(V) \ |
2526 PPC_SC_OPCODE_LIST(V) \ | 2528 PPC_SC_OPCODE_LIST(V) \ |
2527 PPC_Z23_OPCODE_LIST(V) \ | 2529 PPC_Z23_OPCODE_LIST(V) \ |
2528 PPC_Z22_OPCODE_LIST(V) \ | 2530 PPC_Z22_OPCODE_LIST(V) \ |
2529 PPC_EVX_OPCODE_LIST(V) \ | 2531 PPC_EVX_OPCODE_LIST(V) \ |
2530 PPC_XFL_OPCODE_LIST(V) \ | 2532 PPC_XFL_OPCODE_LIST(V) \ |
2531 PPC_EVS_OPCODE_LIST(V) \ | 2533 PPC_EVS_OPCODE_LIST(V) \ |
2532 PPC_VX_OPCODE_LIST(V) \ | 2534 PPC_VX_OPCODE_LIST(V) \ |
2533 PPC_VA_OPCODE_LIST(V) \ | 2535 PPC_VA_OPCODE_LIST(V) \ |
2534 PPC_VC_OPCODE_LIST(V) \ | 2536 PPC_VC_OPCODE_LIST(V) \ |
2535 PPC_XX1_OPCODE_LIST(V) \ | 2537 PPC_XX1_OPCODE_LIST(V) \ |
2536 PPC_XX2_OPCODE_LIST(V) \ | 2538 PPC_XX2_OPCODE_LIST(V) \ |
2537 PPC_XX3_OPCODE_LIST(V) \ | 2539 PPC_XX3_OPCODE_LIST(V) \ |
2538 PPC_XX4_OPCODE_LIST(V) | 2540 PPC_XX4_OPCODE_LIST(V) |
2539 | 2541 |
2540 | |
2541 enum Opcode : uint32_t { | 2542 enum Opcode : uint32_t { |
2542 #define DECLARE_INSTRUCTION(name, opcode_name, opcode_value) \ | 2543 #define DECLARE_INSTRUCTION(name, opcode_name, opcode_value) \ |
2543 opcode_name = opcode_value, | 2544 opcode_name = opcode_value, |
2544 PPC_OPCODE_LIST(DECLARE_INSTRUCTION) | 2545 PPC_OPCODE_LIST(DECLARE_INSTRUCTION) |
2545 #undef DECLARE_INSTRUCTION | 2546 #undef DECLARE_INSTRUCTION |
2546 EXT1 = 0x4C000000, // Extended code set 1 | 2547 EXT1 = 0x4C000000, // Extended code set 1 |
2547 EXT2 = 0x7C000000, // Extended code set 2 | 2548 EXT2 = 0x7C000000, // Extended code set 2 |
2548 EXT3 = 0xEC000000, // Extended code set 3 | 2549 EXT3 = 0xEC000000, // Extended code set 3 |
2549 EXT4 = 0xFC000000, // Extended code set 4 | 2550 EXT4 = 0xFC000000, // Extended code set 4 |
2550 EXT5 = 0x78000000, // Extended code set 5 - 64bit only | 2551 EXT5 = 0x78000000, // Extended code set 5 - 64bit only |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2609 enum OEBit { | 2610 enum OEBit { |
2610 SetOE = 1 << 10, // Set overflow exception | 2611 SetOE = 1 << 10, // Set overflow exception |
2611 LeaveOE = 0 << 10 // No overflow exception | 2612 LeaveOE = 0 << 10 // No overflow exception |
2612 }; | 2613 }; |
2613 | 2614 |
2614 // Record bit | 2615 // Record bit |
2615 enum RCBit { // Bit 0 | 2616 enum RCBit { // Bit 0 |
2616 SetRC = 1, // LT,GT,EQ,SO | 2617 SetRC = 1, // LT,GT,EQ,SO |
2617 LeaveRC = 0 // None | 2618 LeaveRC = 0 // None |
2618 }; | 2619 }; |
| 2620 // Exclusive Access hint bit |
| 2621 enum EHBit { // Bit 0 |
| 2622 SetEH = 1, // Exclusive Access |
| 2623 LeaveEH = 0 // Atomic Update |
| 2624 }; |
2619 | 2625 |
2620 // Link bit | 2626 // Link bit |
2621 enum LKBit { // Bit 0 | 2627 enum LKBit { // Bit 0 |
2622 SetLK = 1, // Load effective address of next instruction | 2628 SetLK = 1, // Load effective address of next instruction |
2623 LeaveLK = 0 // No action | 2629 LeaveLK = 0 // No action |
2624 }; | 2630 }; |
2625 | 2631 |
2626 enum BOfield { // Bits 25-21 | 2632 enum BOfield { // Bits 25-21 |
2627 DCBNZF = 0 << 21, // Decrement CTR; branch if CTR != 0 and condition false | 2633 DCBNZF = 0 << 21, // Decrement CTR; branch if CTR != 0 and condition false |
2628 DCBEZF = 2 << 21, // Decrement CTR; branch if CTR == 0 and condition false | 2634 DCBEZF = 2 << 21, // Decrement CTR; branch if CTR == 0 and condition false |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2806 PPC_D_OPCODE_LIST(OPCODE_CASES) | 2812 PPC_D_OPCODE_LIST(OPCODE_CASES) |
2807 PPC_I_OPCODE_LIST(OPCODE_CASES) | 2813 PPC_I_OPCODE_LIST(OPCODE_CASES) |
2808 PPC_B_OPCODE_LIST(OPCODE_CASES) | 2814 PPC_B_OPCODE_LIST(OPCODE_CASES) |
2809 PPC_M_OPCODE_LIST(OPCODE_CASES) | 2815 PPC_M_OPCODE_LIST(OPCODE_CASES) |
2810 return static_cast<Opcode>(opcode); | 2816 return static_cast<Opcode>(opcode); |
2811 } | 2817 } |
2812 | 2818 |
2813 opcode = extcode | BitField(10, 0); | 2819 opcode = extcode | BitField(10, 0); |
2814 switch (opcode) { | 2820 switch (opcode) { |
2815 PPC_VX_OPCODE_LIST(OPCODE_CASES) | 2821 PPC_VX_OPCODE_LIST(OPCODE_CASES) |
2816 return static_cast<Opcode>(opcode); | 2822 PPC_X_OPCODE_EH_S_FORM_LIST(OPCODE_CASES) |
| 2823 return static_cast<Opcode>(opcode); |
2817 } | 2824 } |
2818 opcode = extcode | BitField(9, 0); | 2825 opcode = extcode | BitField(9, 0); |
2819 switch (opcode) { | 2826 switch (opcode) { |
2820 PPC_VC_OPCODE_LIST(OPCODE_CASES) | 2827 PPC_VC_OPCODE_LIST(OPCODE_CASES) |
2821 return static_cast<Opcode>(opcode); | 2828 return static_cast<Opcode>(opcode); |
2822 } | 2829 } |
2823 opcode = extcode | BitField(10, 1) | BitField(20, 20); | 2830 opcode = extcode | BitField(10, 1) | BitField(20, 20); |
2824 switch (opcode) { | 2831 switch (opcode) { |
2825 PPC_XFX_OPCODE_LIST(OPCODE_CASES) | 2832 PPC_XFX_OPCODE_LIST(OPCODE_CASES) |
2826 return static_cast<Opcode>(opcode); | 2833 return static_cast<Opcode>(opcode); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2939 // Lookup the register number for the name provided. | 2946 // Lookup the register number for the name provided. |
2940 static int Number(const char* name); | 2947 static int Number(const char* name); |
2941 | 2948 |
2942 private: | 2949 private: |
2943 static const char* names_[kNumDoubleRegisters]; | 2950 static const char* names_[kNumDoubleRegisters]; |
2944 }; | 2951 }; |
2945 } // namespace internal | 2952 } // namespace internal |
2946 } // namespace v8 | 2953 } // namespace v8 |
2947 | 2954 |
2948 #endif // V8_PPC_CONSTANTS_PPC_H_ | 2955 #endif // V8_PPC_CONSTANTS_PPC_H_ |
OLD | NEW |