mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[X86] Rename vy512mem->vy512xmem and vz256xmem->vz256mem.
The index size is represented by the letter after the 'v'. The number represents the memory size. If an 'x' appears after the number its means the index register can be from VR128X/VR256X instead of VR128/VR256. As vy512mem uses a VR256X index it should have an x. And vz256mem uses a VR512 index so it shouldn't have an x. I admit these names kind of suck and are confusing. llvm-svn: 334120
This commit is contained in:
parent
9dc554c963
commit
e36da260b7
@ -9116,7 +9116,7 @@ multiclass avx512_gather<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
|
||||
multiclass avx512_gather_q_pd<bits<8> dopc, bits<8> qopc,
|
||||
AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
|
||||
defm NAME##D##SUFF##Z: avx512_gather<dopc, OpcodeStr##"d", _.info512,
|
||||
vy512mem, mgatherv8i32>, EVEX_V512, VEX_W;
|
||||
vy512xmem, mgatherv8i32>, EVEX_V512, VEX_W;
|
||||
defm NAME##Q##SUFF##Z: avx512_gather<qopc, OpcodeStr##"q", _.info512,
|
||||
vz512mem, mgatherv8i64>, EVEX_V512, VEX_W;
|
||||
let Predicates = [HasVLX] in {
|
||||
@ -9135,7 +9135,7 @@ multiclass avx512_gather_d_ps<bits<8> dopc, bits<8> qopc,
|
||||
AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
|
||||
defm NAME##D##SUFF##Z: avx512_gather<dopc, OpcodeStr##"d", _.info512, vz512mem,
|
||||
mgatherv16i32>, EVEX_V512;
|
||||
defm NAME##Q##SUFF##Z: avx512_gather<qopc, OpcodeStr##"q", _.info256, vz256xmem,
|
||||
defm NAME##Q##SUFF##Z: avx512_gather<qopc, OpcodeStr##"q", _.info256, vz256mem,
|
||||
mgatherv8i64>, EVEX_V512;
|
||||
let Predicates = [HasVLX] in {
|
||||
defm NAME##D##SUFF##Z256: avx512_gather<dopc, OpcodeStr##"d", _.info256,
|
||||
@ -9176,7 +9176,7 @@ let mayStore = 1, Constraints = "$mask = $mask_wb", ExeDomain = _.ExeDomain in
|
||||
multiclass avx512_scatter_q_pd<bits<8> dopc, bits<8> qopc,
|
||||
AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
|
||||
defm NAME##D##SUFF##Z: avx512_scatter<dopc, OpcodeStr##"d", _.info512,
|
||||
vy512mem, mscatterv8i32>, EVEX_V512, VEX_W;
|
||||
vy512xmem, mscatterv8i32>, EVEX_V512, VEX_W;
|
||||
defm NAME##Q##SUFF##Z: avx512_scatter<qopc, OpcodeStr##"q", _.info512,
|
||||
vz512mem, mscatterv8i64>, EVEX_V512, VEX_W;
|
||||
let Predicates = [HasVLX] in {
|
||||
@ -9195,7 +9195,7 @@ multiclass avx512_scatter_d_ps<bits<8> dopc, bits<8> qopc,
|
||||
AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
|
||||
defm NAME##D##SUFF##Z: avx512_scatter<dopc, OpcodeStr##"d", _.info512, vz512mem,
|
||||
mscatterv16i32>, EVEX_V512;
|
||||
defm NAME##Q##SUFF##Z: avx512_scatter<qopc, OpcodeStr##"q", _.info256, vz256xmem,
|
||||
defm NAME##Q##SUFF##Z: avx512_scatter<qopc, OpcodeStr##"q", _.info256, vz256mem,
|
||||
mscatterv8i64>, EVEX_V512;
|
||||
let Predicates = [HasVLX] in {
|
||||
defm NAME##D##SUFF##Z256: avx512_scatter<dopc, OpcodeStr##"d", _.info256,
|
||||
@ -9229,10 +9229,10 @@ defm VGATHERPF0DPS: avx512_gather_scatter_prefetch<0xC6, MRM1m, "vgatherpf0dps",
|
||||
VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VGATHERPF0QPS: avx512_gather_scatter_prefetch<0xC7, MRM1m, "vgatherpf0qps",
|
||||
VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
VK8WM, vz256mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
|
||||
defm VGATHERPF0DPD: avx512_gather_scatter_prefetch<0xC6, MRM1m, "vgatherpf0dpd",
|
||||
VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
VK8WM, vy512xmem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VGATHERPF0QPD: avx512_gather_scatter_prefetch<0xC7, MRM1m, "vgatherpf0qpd",
|
||||
VK8WM, vz512mem>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VT1>;
|
||||
@ -9241,10 +9241,10 @@ defm VGATHERPF1DPS: avx512_gather_scatter_prefetch<0xC6, MRM2m, "vgatherpf1dps",
|
||||
VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VGATHERPF1QPS: avx512_gather_scatter_prefetch<0xC7, MRM2m, "vgatherpf1qps",
|
||||
VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
VK8WM, vz256mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
|
||||
defm VGATHERPF1DPD: avx512_gather_scatter_prefetch<0xC6, MRM2m, "vgatherpf1dpd",
|
||||
VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
VK8WM, vy512xmem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VGATHERPF1QPD: avx512_gather_scatter_prefetch<0xC7, MRM2m, "vgatherpf1qpd",
|
||||
VK8WM, vz512mem>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VT1>;
|
||||
@ -9253,10 +9253,10 @@ defm VSCATTERPF0DPS: avx512_gather_scatter_prefetch<0xC6, MRM5m, "vscatterpf0dps
|
||||
VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VSCATTERPF0QPS: avx512_gather_scatter_prefetch<0xC7, MRM5m, "vscatterpf0qps",
|
||||
VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
VK8WM, vz256mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
|
||||
defm VSCATTERPF0DPD: avx512_gather_scatter_prefetch<0xC6, MRM5m, "vscatterpf0dpd",
|
||||
VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
VK8WM, vy512xmem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VSCATTERPF0QPD: avx512_gather_scatter_prefetch<0xC7, MRM5m, "vscatterpf0qpd",
|
||||
VK8WM, vz512mem>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VT1>;
|
||||
@ -9265,10 +9265,10 @@ defm VSCATTERPF1DPS: avx512_gather_scatter_prefetch<0xC6, MRM6m, "vscatterpf1dps
|
||||
VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VSCATTERPF1QPS: avx512_gather_scatter_prefetch<0xC7, MRM6m, "vscatterpf1qps",
|
||||
VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
VK8WM, vz256mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
|
||||
|
||||
defm VSCATTERPF1DPD: avx512_gather_scatter_prefetch<0xC6, MRM6m, "vscatterpf1dpd",
|
||||
VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
VK8WM, vy512xmem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
|
||||
|
||||
defm VSCATTERPF1QPD: avx512_gather_scatter_prefetch<0xC7, MRM6m, "vscatterpf1qpd",
|
||||
VK8WM, vz512mem>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VT1>;
|
||||
|
@ -410,8 +410,8 @@ def vx128xmem : X86VMemOperand<VR128X, "printi128mem", X86Mem128_RC128XOperand>;
|
||||
def vx256xmem : X86VMemOperand<VR128X, "printi256mem", X86Mem256_RC128XOperand>;
|
||||
def vy128xmem : X86VMemOperand<VR256X, "printi128mem", X86Mem128_RC256XOperand>;
|
||||
def vy256xmem : X86VMemOperand<VR256X, "printi256mem", X86Mem256_RC256XOperand>;
|
||||
def vy512mem : X86VMemOperand<VR256X, "printi512mem", X86Mem512_RC256XOperand>;
|
||||
def vz256xmem : X86VMemOperand<VR512, "printi256mem", X86Mem256_RC512Operand>;
|
||||
def vy512xmem : X86VMemOperand<VR256X, "printi512mem", X86Mem512_RC256XOperand>;
|
||||
def vz256mem : X86VMemOperand<VR512, "printi256mem", X86Mem256_RC512Operand>;
|
||||
def vz512mem : X86VMemOperand<VR512, "printi512mem", X86Mem512_RC512Operand>;
|
||||
|
||||
// A version of i8mem for use on x86-64 and x32 that uses a NOREX GPR instead
|
||||
|
@ -904,8 +904,8 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
|
||||
TYPE("vx256xmem", TYPE_MVSIBX)
|
||||
TYPE("vy128xmem", TYPE_MVSIBY)
|
||||
TYPE("vy256xmem", TYPE_MVSIBY)
|
||||
TYPE("vy512mem", TYPE_MVSIBY)
|
||||
TYPE("vz256xmem", TYPE_MVSIBZ)
|
||||
TYPE("vy512xmem", TYPE_MVSIBY)
|
||||
TYPE("vz256mem", TYPE_MVSIBZ)
|
||||
TYPE("vz512mem", TYPE_MVSIBZ)
|
||||
TYPE("BNDR", TYPE_BNDR)
|
||||
errs() << "Unhandled type string " << s << "\n";
|
||||
@ -1097,8 +1097,8 @@ RecognizableInstr::memoryEncodingFromString(const std::string &s,
|
||||
ENCODING("vx256xmem", ENCODING_VSIB)
|
||||
ENCODING("vy128xmem", ENCODING_VSIB)
|
||||
ENCODING("vy256xmem", ENCODING_VSIB)
|
||||
ENCODING("vy512mem", ENCODING_VSIB)
|
||||
ENCODING("vz256xmem", ENCODING_VSIB)
|
||||
ENCODING("vy512xmem", ENCODING_VSIB)
|
||||
ENCODING("vz256mem", ENCODING_VSIB)
|
||||
ENCODING("vz512mem", ENCODING_VSIB)
|
||||
errs() << "Unhandled memory encoding " << s << "\n";
|
||||
llvm_unreachable("Unhandled memory encoding");
|
||||
|
Loading…
Reference in New Issue
Block a user