| OLD | NEW |
| 1 //===- subzero/src/IceInstX8664.def - X-macros for x86-64 insts -*- C++ -*-===// | 1 //===- subzero/src/IceInstX8664.def - X-macros for x86-64 insts -*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // This file defines properties of lowered x86-64 instructions in the | 10 // This file defines properties of lowered x86-64 instructions in the |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 | 205 |
| 206 // Note: It would be more appropriate to list the xmm register aliases as | 206 // Note: It would be more appropriate to list the xmm register aliases as |
| 207 // REGLIST0(), but the corresponding empty initializer gives a syntax error, so | 207 // REGLIST0(), but the corresponding empty initializer gives a syntax error, so |
| 208 // we use REGLIST1() to redundantly assign the register itself as an alias. | 208 // we use REGLIST1() to redundantly assign the register itself as an alias. |
| 209 #define REGX8664_XMM_TABLE \ | 209 #define REGX8664_XMM_TABLE \ |
| 210 /* val, encode, name, base, scratch,preserved,stackptr,frameptr, \ | 210 /* val, encode, name, base, scratch,preserved,stackptr,frameptr, \ |
| 211 isGPR,is64,is32,is16,is8, isXmm, \ | 211 isGPR,is64,is32,is16,is8, isXmm, \ |
| 212 is64To8,is32To8,is16To8,isTrunc8Rcvr,isAhRcvr, aliases */ \ | 212 is64To8,is32To8,is16To8,isTrunc8Rcvr,isAhRcvr, aliases */ \ |
| 213 /* xmm registers */ \ | 213 /* xmm registers */ \ |
| 214 X(Reg_xmm0, 0, "xmm0", Reg_xmm0, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 214 X(Reg_xmm0, 0, "xmm0", Reg_xmm0, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 215 REGLIST1(RegX8664, xmm0)) \ | 215 NO_ALIASES()) \ |
| 216 X(Reg_xmm1, 1, "xmm1", Reg_xmm1, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 216 X(Reg_xmm1, 1, "xmm1", Reg_xmm1, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 217 REGLIST1(RegX8664, xmm1)) \ | 217 NO_ALIASES()) \ |
| 218 X(Reg_xmm2, 2, "xmm2", Reg_xmm2, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 218 X(Reg_xmm2, 2, "xmm2", Reg_xmm2, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 219 REGLIST1(RegX8664, xmm2)) \ | 219 NO_ALIASES()) \ |
| 220 X(Reg_xmm3, 3, "xmm3", Reg_xmm3, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 220 X(Reg_xmm3, 3, "xmm3", Reg_xmm3, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 221 REGLIST1(RegX8664, xmm3)) \ | 221 NO_ALIASES()) \ |
| 222 X(Reg_xmm4, 4, "xmm4", Reg_xmm4, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 222 X(Reg_xmm4, 4, "xmm4", Reg_xmm4, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 223 REGLIST1(RegX8664, xmm4)) \ | 223 NO_ALIASES()) \ |
| 224 X(Reg_xmm5, 5, "xmm5", Reg_xmm5, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 224 X(Reg_xmm5, 5, "xmm5", Reg_xmm5, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 225 REGLIST1(RegX8664, xmm5)) \ | 225 NO_ALIASES()) \ |
| 226 X(Reg_xmm6, 6, "xmm6", Reg_xmm6, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 226 X(Reg_xmm6, 6, "xmm6", Reg_xmm6, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 227 REGLIST1(RegX8664, xmm6)) \ | 227 NO_ALIASES()) \ |
| 228 X(Reg_xmm7, 7, "xmm7", Reg_xmm7, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 228 X(Reg_xmm7, 7, "xmm7", Reg_xmm7, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 229 REGLIST1(RegX8664, xmm7)) \ | 229 NO_ALIASES()) \ |
| 230 X(Reg_xmm8, 8, "xmm8", Reg_xmm8, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 230 X(Reg_xmm8, 8, "xmm8", Reg_xmm8, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 231 REGLIST1(RegX8664, xmm8)) \ | 231 NO_ALIASES()) \ |
| 232 X(Reg_xmm9, 9, "xmm9", Reg_xmm9, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 232 X(Reg_xmm9, 9, "xmm9", Reg_xmm9, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 233 REGLIST1(RegX8664, xmm9)) \ | 233 NO_ALIASES()) \ |
| 234 X(Reg_xmm10, 10, "xmm10", Reg_xmm10, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 234 X(Reg_xmm10, 10, "xmm10", Reg_xmm10, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 235 REGLIST1(RegX8664, xmm10)) \ | 235 NO_ALIASES()) \ |
| 236 X(Reg_xmm11, 11, "xmm11", Reg_xmm11, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 236 X(Reg_xmm11, 11, "xmm11", Reg_xmm11, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 237 REGLIST1(RegX8664, xmm11)) \ | 237 NO_ALIASES()) \ |
| 238 X(Reg_xmm12, 12, "xmm12", Reg_xmm12, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 238 X(Reg_xmm12, 12, "xmm12", Reg_xmm12, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 239 REGLIST1(RegX8664, xmm12)) \ | 239 NO_ALIASES()) \ |
| 240 X(Reg_xmm13, 13, "xmm13", Reg_xmm13, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 240 X(Reg_xmm13, 13, "xmm13", Reg_xmm13, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 241 REGLIST1(RegX8664, xmm13)) \ | 241 NO_ALIASES()) \ |
| 242 X(Reg_xmm14, 14, "xmm14", Reg_xmm14, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 242 X(Reg_xmm14, 14, "xmm14", Reg_xmm14, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 243 REGLIST1(RegX8664, xmm14)) \ | 243 NO_ALIASES()) \ |
| 244 X(Reg_xmm15, 15, "xmm15", Reg_xmm15, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ | 244 X(Reg_xmm15, 15, "xmm15", Reg_xmm15, 1,0,0,0, 0,0,0,0,0, 1, 0,0,0,0,0, \ |
| 245 REGLIST1(RegX8664, xmm15)) \ | 245 NO_ALIASES()) \ |
| 246 /* End of xmm register set */ | 246 /* End of xmm register set */ |
| 247 //#define X(val, encode, name, base, scratch, preserved, stackptr, frameptr, | 247 //#define X(val, encode, name, base, scratch, preserved, stackptr, frameptr, |
| 248 // isGPR, is64, is32, is16, is8, isXmm, is64To8, is32To8, is16To8, | 248 // isGPR, is64, is32, is16, is8, isXmm, is64To8, is32To8, is16To8, |
| 249 // isTrunc8Rcvr, isAhRcvr, aliases) | 249 // isTrunc8Rcvr, isAhRcvr, aliases) |
| 250 | 250 |
| 251 // We also provide a combined table, so that there is a namespace where | 251 // We also provide a combined table, so that there is a namespace where |
| 252 // all of the registers are considered and have distinct numberings. | 252 // all of the registers are considered and have distinct numberings. |
| 253 // This is in contrast to the above, where the "encode" is based on how | 253 // This is in contrast to the above, where the "encode" is based on how |
| 254 // the register numbers will be encoded in binaries and values can overlap. | 254 // the register numbers will be encoded in binaries and values can overlap. |
| 255 #define REGX8664_TABLE \ | 255 #define REGX8664_TABLE \ |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 X(v4i1, i32, "?", "", "", "", "d", "", "") \ | 304 X(v4i1, i32, "?", "", "", "", "d", "", "") \ |
| 305 X(v8i1, i16, "?", "", "", "", "w", "", "") \ | 305 X(v8i1, i16, "?", "", "", "", "w", "", "") \ |
| 306 X(v16i1, i8, "?", "", "", "", "b", "", "") \ | 306 X(v16i1, i8, "?", "", "", "", "b", "", "") \ |
| 307 X(v16i8, i8, "?", "", "", "", "b", "", "") \ | 307 X(v16i8, i8, "?", "", "", "", "b", "", "") \ |
| 308 X(v8i16, i16, "?", "", "", "", "w", "", "") \ | 308 X(v8i16, i16, "?", "", "", "", "w", "", "") \ |
| 309 X(v4i32, i32, "dq", "", "", "", "d", "", "") \ | 309 X(v4i32, i32, "dq", "", "", "", "d", "", "") \ |
| 310 X(v4f32, f32, "ps", "", "ps", "ps", "d", "", "") | 310 X(v4f32, f32, "ps", "", "ps", "ps", "d", "", "") |
| 311 //#define X(tag, elementty, cvt, sdss, pdps, pack, width, fld) | 311 //#define X(tag, elementty, cvt, sdss, pdps, pack, width, fld) |
| 312 | 312 |
| 313 #endif // SUBZERO_SRC_ICEINSTX8664_DEF | 313 #endif // SUBZERO_SRC_ICEINSTX8664_DEF |
| OLD | NEW |