llvm.org GIT mirror llvm / 0091533
[AVX-512] Correct memory operand size for VPGATHERQPS and VPGATHERQD with ZMM index. Similar for SCATTER and the prefetch gather and scatter instructions. Fixes PR31618. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@292088 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 3 years ago
5 changed file(s) with 89 addition(s) and 82 deletion(s). Raw diff Collapse all Expand all
269269 }
270270 bool isMem256_RC256X() const {
271271 return isMem256() && isMemIndexReg(X86::YMM0, X86::YMM31);
272 }
273 bool isMem256_RC512() const {
274 return isMem256() && isMemIndexReg(X86::ZMM0, X86::ZMM31);
272275 }
273276 bool isMem512_RC256X() const {
274277 return isMem512() && isMemIndexReg(X86::YMM0, X86::YMM31);
78367836 AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
78377837 defm NAME##D##SUFF##Z: avx512_gather
78387838 mgatherv16i32>, EVEX_V512;
7839 defm NAME##Q##SUFF##Z: avx512_gather512mem,
7839 defm NAME##Q##SUFF##Z: avx512_gather256xmem,
78407840 mgatherv8i64>, EVEX_V512;
78417841 let Predicates = [HasVLX] in {
78427842 defm NAME##D##SUFF##Z256: avx512_gather
78937893 AVX512VLVectorVTInfo _, string OpcodeStr, string SUFF> {
78947894 defm NAME##D##SUFF##Z: avx512_scatter
78957895 mscatterv16i32>, EVEX_V512;
7896 defm NAME##Q##SUFF##Z: avx512_scatter512mem,
7896 defm NAME##Q##SUFF##Z: avx512_scatter256xmem,
78977897 mscatterv8i64>, EVEX_V512;
78987898 let Predicates = [HasVLX] in {
78997899 defm NAME##D##SUFF##Z256: avx512_scatter
79267926 VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
79277927
79287928 defm VGATHERPF0QPS: avx512_gather_scatter_prefetch<0xC7, MRM1m, "vgatherpf0qps",
7929 VK8WM, vz512mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
7929 VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
79307930
79317931 defm VGATHERPF0DPD: avx512_gather_scatter_prefetch<0xC6, MRM1m, "vgatherpf0dpd",
79327932 VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
79387938 VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
79397939
79407940 defm VGATHERPF1QPS: avx512_gather_scatter_prefetch<0xC7, MRM2m, "vgatherpf1qps",
7941 VK8WM, vz512mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
7941 VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
79427942
79437943 defm VGATHERPF1DPD: avx512_gather_scatter_prefetch<0xC6, MRM2m, "vgatherpf1dpd",
79447944 VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
79507950 VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
79517951
79527952 defm VSCATTERPF0QPS: avx512_gather_scatter_prefetch<0xC7, MRM5m, "vscatterpf0qps",
7953 VK8WM, vz512mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
7953 VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
79547954
79557955 defm VSCATTERPF0DPD: avx512_gather_scatter_prefetch<0xC6, MRM5m, "vscatterpf0dpd",
79567956 VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
79627962 VK16WM, vz512mem>, EVEX_V512, EVEX_CD8<32, CD8VT1>;
79637963
79647964 defm VSCATTERPF1QPS: avx512_gather_scatter_prefetch<0xC7, MRM6m, "vscatterpf1qps",
7965 VK8WM, vz512mem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
7965 VK8WM, vz256xmem>, EVEX_V512, EVEX_CD8<64, CD8VT1>;
79667966
79677967 defm VSCATTERPF1DPD: avx512_gather_scatter_prefetch<0xC6, MRM6m, "vscatterpf1dpd",
79687968 VK8WM, vy512mem>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VT1>;
317317 def X86Mem128_RC256XOperand : AsmOperandClass { let Name = "Mem128_RC256X"; }
318318 def X86Mem256_RC256XOperand : AsmOperandClass { let Name = "Mem256_RC256X"; }
319319 def X86Mem512_RC256XOperand : AsmOperandClass { let Name = "Mem512_RC256X"; }
320 def X86Mem256_RC512Operand : AsmOperandClass { let Name = "Mem256_RC512"; }
320321 def X86Mem512_RC512Operand : AsmOperandClass { let Name = "Mem512_RC512"; }
321322 }
322323
376377 def vy128xmem : X86VMemOperand;
377378 def vy256xmem : X86VMemOperand;
378379 def vy512mem : X86VMemOperand;
380 def vz256xmem : X86VMemOperand;
379381 def vz512mem : X86VMemOperand;
380382
381383 // A version of i8mem for use on x86-64 and x32 that uses a NOREX GPR instead
3793537935 // CHECK: encoding: [0x62,0x62,0xfd,0x49,0x93,0xac,0x91,0x00,0x04,0x00,0x00]
3793637936 vgatherqpd zmm29{k1},ZMMWORD PTR [rcx+zmm2*4+0x400]
3793737937
37938 // CHECK: vgatherqps ymm18 {k1}, zmmword ptr [r14 + 8*zmm4 + 123]
37938 // CHECK: vgatherqps ymm18 {k1}, ymmword ptr [r14 + 8*zmm4 + 123]
3793937939 // CHECK: encoding: [0x62,0xc2,0x7d,0x49,0x93,0x94,0xe6,0x7b,0x00,0x00,0x00]
37940 vgatherqps ymm18{k1},ZMMWORD PTR [r14+zmm4*8+0x7b]
37941
37942 // CHECK: vgatherqps ymm18 {k1}, zmmword ptr [r9 + zmm4 + 256]
37940 vgatherqps ymm18{k1},YMMWORD PTR [r14+zmm4*8+0x7b]
37941
37942 // CHECK: vgatherqps ymm18 {k1}, ymmword ptr [r9 + zmm4 + 256]
3794337943 // CHECK: encoding: [0x62,0xc2,0x7d,0x49,0x93,0x54,0x21,0x40]
37944 vgatherqps ymm18{k1},ZMMWORD PTR [r9+zmm4*1+0x100]
37945
37946 // CHECK: vgatherqps ymm18 {k1}, zmmword ptr [rcx + 4*zmm4 + 1024]
37944 vgatherqps ymm18{k1},YMMWORD PTR [r9+zmm4*1+0x100]
37945
37946 // CHECK: vgatherqps ymm18 {k1}, ymmword ptr [rcx + 4*zmm4 + 1024]
3794737947 // CHECK: encoding: [0x62,0xe2,0x7d,0x49,0x93,0x94,0xa1,0x00,0x04,0x00,0x00]
37948 vgatherqps ymm18{k1},ZMMWORD PTR [rcx+zmm4*4+0x400]
37948 vgatherqps ymm18{k1},YMMWORD PTR [rcx+zmm4*4+0x400]
3794937949
3795037950 // CHECK: vpgatherdd zmm17 {k1}, zmmword ptr [r14 + 8*zmm11 + 123]
3795137951 // CHECK: encoding: [0x62,0x82,0x7d,0x49,0x90,0x8c,0xde,0x7b,0x00,0x00,0x00]
3797137971 // CHECK: encoding: [0x62,0x32,0xfd,0x49,0x90,0x84,0xb1,0x00,0x04,0x00,0x00]
3797237972 vpgatherdq zmm8{k1},ZMMWORD PTR [rcx+ymm14*4+0x400]
3797337973
37974 // CHECK: vpgatherqd ymm3 {k1}, zmmword ptr [r14 + 8*zmm17 + 123]
37974 // CHECK: vpgatherqd ymm3 {k1}, ymmword ptr [r14 + 8*zmm17 + 123]
3797537975 // CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x91,0x9c,0xce,0x7b,0x00,0x00,0x00]
37976 vpgatherqd ymm3{k1},ZMMWORD PTR [r14+zmm17*8+0x7b]
37977
37978 // CHECK: vpgatherqd ymm3 {k1}, zmmword ptr [r9 + zmm17 + 256]
37976 vpgatherqd ymm3{k1},YMMWORD PTR [r14+zmm17*8+0x7b]
37977
37978 // CHECK: vpgatherqd ymm3 {k1}, ymmword ptr [r9 + zmm17 + 256]
3797937979 // CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x91,0x5c,0x09,0x40]
37980 vpgatherqd ymm3{k1},ZMMWORD PTR [r9+zmm17*1+0x100]
37981
37982 // CHECK: vpgatherqd ymm3 {k1}, zmmword ptr [rcx + 4*zmm17 + 1024]
37980 vpgatherqd ymm3{k1},YMMWORD PTR [r9+zmm17*1+0x100]
37981
37982 // CHECK: vpgatherqd ymm3 {k1}, ymmword ptr [rcx + 4*zmm17 + 1024]
3798337983 // CHECK: encoding: [0x62,0xf2,0x7d,0x41,0x91,0x9c,0x89,0x00,0x04,0x00,0x00]
37984 vpgatherqd ymm3{k1},ZMMWORD PTR [rcx+zmm17*4+0x400]
37984 vpgatherqd ymm3{k1},YMMWORD PTR [rcx+zmm17*4+0x400]
3798537985
3798637986 // CHECK: vpgatherqq zmm17 {k1}, zmmword ptr [r14 + 8*zmm21 + 123]
3798737987 // CHECK: encoding: [0x62,0xc2,0xfd,0x41,0x91,0x8c,0xee,0x7b,0x00,0x00,0x00]
3802738027 // CHECK: encoding: [0x62,0xf2,0xfd,0x49,0xa0,0xac,0xb1,0x00,0x04,0x00,0x00]
3802838028 vpscatterdq ZMMWORD PTR [rcx+ymm6*4+0x400]{k1},zmm5
3802938029
38030 // CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm2 + 123] {k1}, ymm20
38030 // CHECK: vpscatterqd ymmword ptr [r14 + 8*zmm2 + 123] {k1}, ymm20
3803138031 // CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa1,0xa4,0xd6,0x7b,0x00,0x00,0x00]
38032 vpscatterqd ZMMWORD PTR [r14+zmm2*8+0x7b]{k1},ymm20
38033
38034 // CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm2 + 123] {k1}, ymm20
38032 vpscatterqd YMMWORD PTR [r14+zmm2*8+0x7b]{k1},ymm20
38033
38034 // CHECK: vpscatterqd ymmword ptr [r14 + 8*zmm2 + 123] {k1}, ymm20
3803538035 // CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa1,0xa4,0xd6,0x7b,0x00,0x00,0x00]
38036 vpscatterqd ZMMWORD PTR [r14+zmm2*8+0x7b]{k1},ymm20
38037
38038 // CHECK: vpscatterqd zmmword ptr [r9 + zmm2 + 256] {k1}, ymm20
38036 vpscatterqd YMMWORD PTR [r14+zmm2*8+0x7b]{k1},ymm20
38037
38038 // CHECK: vpscatterqd ymmword ptr [r9 + zmm2 + 256] {k1}, ymm20
3803938039 // CHECK: encoding: [0x62,0xc2,0x7d,0x49,0xa1,0x64,0x11,0x40]
38040 vpscatterqd ZMMWORD PTR [r9+zmm2*1+0x100]{k1},ymm20
38041
38042 // CHECK: vpscatterqd zmmword ptr [rcx + 4*zmm2 + 1024] {k1}, ymm20
38040 vpscatterqd YMMWORD PTR [r9+zmm2*1+0x100]{k1},ymm20
38041
38042 // CHECK: vpscatterqd ymmword ptr [rcx + 4*zmm2 + 1024] {k1}, ymm20
3804338043 // CHECK: encoding: [0x62,0xe2,0x7d,0x49,0xa1,0xa4,0x91,0x00,0x04,0x00,0x00]
38044 vpscatterqd ZMMWORD PTR [rcx+zmm2*4+0x400]{k1},ymm20
38044 vpscatterqd YMMWORD PTR [rcx+zmm2*4+0x400]{k1},ymm20
3804538045
3804638046 // CHECK: vpscatterqq zmmword ptr [r14 + 8*zmm20 + 123] {k1}, zmm14
3804738047 // CHECK: encoding: [0x62,0x52,0xfd,0x41,0xa1,0xb4,0xe6,0x7b,0x00,0x00,0x00]
3810738107 // CHECK: encoding: [0x62,0xa2,0xfd,0x41,0xa3,0xb4,0xa1,0x00,0x04,0x00,0x00]
3810838108 vscatterqpd ZMMWORD PTR [rcx+zmm28*4+0x400]{k1},zmm22
3810938109
38110 // CHECK: vscatterqps zmmword ptr [r14 + 8*zmm27 + 123] {k1}, ymm6
38110 // CHECK: vscatterqps ymmword ptr [r14 + 8*zmm27 + 123] {k1}, ymm6
3811138111 // CHECK: encoding: [0x62,0x92,0x7d,0x41,0xa3,0xb4,0xde,0x7b,0x00,0x00,0x00]
38112 vscatterqps ZMMWORD PTR [r14+zmm27*8+0x7b]{k1},ymm6
38113
38114 // CHECK: vscatterqps zmmword ptr [r14 + 8*zmm27 + 123] {k1}, ymm6
38112 vscatterqps YMMWORD PTR [r14+zmm27*8+0x7b]{k1},ymm6
38113
38114 // CHECK: vscatterqps ymmword ptr [r14 + 8*zmm27 + 123] {k1}, ymm6
3811538115 // CHECK: encoding: [0x62,0x92,0x7d,0x41,0xa3,0xb4,0xde,0x7b,0x00,0x00,0x00]
38116 vscatterqps ZMMWORD PTR [r14+zmm27*8+0x7b]{k1},ymm6
38117
38118 // CHECK: vscatterqps zmmword ptr [r9 + zmm27 + 256] {k1}, ymm6
38116 vscatterqps YMMWORD PTR [r14+zmm27*8+0x7b]{k1},ymm6
38117
38118 // CHECK: vscatterqps ymmword ptr [r9 + zmm27 + 256] {k1}, ymm6
3811938119 // CHECK: encoding: [0x62,0x92,0x7d,0x41,0xa3,0x74,0x19,0x40]
38120 vscatterqps ZMMWORD PTR [r9+zmm27*1+0x100]{k1},ymm6
38121
38122 // CHECK: vscatterqps zmmword ptr [rcx + 4*zmm27 + 1024] {k1}, ymm6
38120 vscatterqps YMMWORD PTR [r9+zmm27*1+0x100]{k1},ymm6
38121
38122 // CHECK: vscatterqps ymmword ptr [rcx + 4*zmm27 + 1024] {k1}, ymm6
3812338123 // CHECK: encoding: [0x62,0xb2,0x7d,0x41,0xa3,0xb4,0x99,0x00,0x04,0x00,0x00]
38124 vscatterqps ZMMWORD PTR [rcx+zmm27*4+0x400]{k1},ymm6
38124 vscatterqps YMMWORD PTR [rcx+zmm27*4+0x400]{k1},ymm6
3812538125
3812638126 // CHECK: vscatterdpd zmmword ptr [r14 + 8*ymm27 - 123] {k1}, zmm18
3812738127 // CHECK: encoding: [0x62,0x82,0xfd,0x41,0xa2,0x94,0xde,0x85,0xff,0xff,0xff]
3817138171 // CHECK: encoding: [0x62,0x32,0xfd,0x41,0xa3,0x84,0x89,0x00,0x04,0x00,0x00]
3817238172 vscatterqpd ZMMWORD PTR [rcx+zmm25*4+0x400]{k1},zmm8
3817338173
38174 // CHECK: vscatterqps zmmword ptr [r14 + 8*zmm10 - 123] {k1}, ymm13
38174 // CHECK: vscatterqps ymmword ptr [r14 + 8*zmm10 - 123] {k1}, ymm13
3817538175 // CHECK: encoding: [0x62,0x12,0x7d,0x49,0xa3,0xac,0xd6,0x85,0xff,0xff,0xff]
38176 vscatterqps ZMMWORD PTR [r14+zmm10*8-0x7b]{k1},ymm13
38177
38178 // CHECK: vscatterqps zmmword ptr [r14 + 8*zmm10 - 123] {k1}, ymm13
38176 vscatterqps YMMWORD PTR [r14+zmm10*8-0x7b]{k1},ymm13
38177
38178 // CHECK: vscatterqps ymmword ptr [r14 + 8*zmm10 - 123] {k1}, ymm13
3817938179 // CHECK: encoding: [0x62,0x12,0x7d,0x49,0xa3,0xac,0xd6,0x85,0xff,0xff,0xff]
38180 vscatterqps ZMMWORD PTR [r14+zmm10*8-0x7b]{k1},ymm13
38181
38182 // CHECK: vscatterqps zmmword ptr [r9 + zmm10 + 256] {k1}, ymm13
38180 vscatterqps YMMWORD PTR [r14+zmm10*8-0x7b]{k1},ymm13
38181
38182 // CHECK: vscatterqps ymmword ptr [r9 + zmm10 + 256] {k1}, ymm13
3818338183 // CHECK: encoding: [0x62,0x12,0x7d,0x49,0xa3,0x6c,0x11,0x40]
38184 vscatterqps ZMMWORD PTR [r9+zmm10*1+0x100]{k1},ymm13
38185
38186 // CHECK: vscatterqps zmmword ptr [rcx + 4*zmm10 + 1024] {k1}, ymm13
38184 vscatterqps YMMWORD PTR [r9+zmm10*1+0x100]{k1},ymm13
38185
38186 // CHECK: vscatterqps ymmword ptr [rcx + 4*zmm10 + 1024] {k1}, ymm13
3818738187 // CHECK: encoding: [0x62,0x32,0x7d,0x49,0xa3,0xac,0x91,0x00,0x04,0x00,0x00]
38188 vscatterqps ZMMWORD PTR [rcx+zmm10*4+0x400]{k1},ymm13
38188 vscatterqps YMMWORD PTR [rcx+zmm10*4+0x400]{k1},ymm13
3818938189
3819038190 // CHECK: vgatherdpd zmm30 {k1}, zmmword ptr [r14 + 8*ymm5 - 123]
3819138191 // CHECK: encoding: [0x62,0x42,0xfd,0x49,0x92,0xb4,0xee,0x85,0xff,0xff,0xff]
3822338223 // CHECK: encoding: [0x62,0x22,0xfd,0x49,0x93,0x9c,0xa9,0x00,0x04,0x00,0x00]
3822438224 vgatherqpd zmm27{k1},ZMMWORD PTR [rcx+zmm13*4+0x400]
3822538225
38226 // CHECK: vgatherqps ymm27 {k1}, zmmword ptr [r14 + 8*zmm14 - 123]
38226 // CHECK: vgatherqps ymm27 {k1}, ymmword ptr [r14 + 8*zmm14 - 123]
3822738227 // CHECK: encoding: [0x62,0x02,0x7d,0x49,0x93,0x9c,0xf6,0x85,0xff,0xff,0xff]
38228 vgatherqps ymm27{k1},ZMMWORD PTR [r14+zmm14*8-0x7b]
38229
38230 // CHECK: vgatherqps ymm27 {k1}, zmmword ptr [r9 + zmm14 + 256]
38228 vgatherqps ymm27{k1},YMMWORD PTR [r14+zmm14*8-0x7b]
38229
38230 // CHECK: vgatherqps ymm27 {k1}, ymmword ptr [r9 + zmm14 + 256]
3823138231 // CHECK: encoding: [0x62,0x02,0x7d,0x49,0x93,0x5c,0x31,0x40]
38232 vgatherqps ymm27{k1},ZMMWORD PTR [r9+zmm14*1+0x100]
38233
38234 // CHECK: vgatherqps ymm27 {k1}, zmmword ptr [rcx + 4*zmm14 + 1024]
38232 vgatherqps ymm27{k1},YMMWORD PTR [r9+zmm14*1+0x100]
38233
38234 // CHECK: vgatherqps ymm27 {k1}, ymmword ptr [rcx + 4*zmm14 + 1024]
3823538235 // CHECK: encoding: [0x62,0x22,0x7d,0x49,0x93,0x9c,0xb1,0x00,0x04,0x00,0x00]
38236 vgatherqps ymm27{k1},ZMMWORD PTR [rcx+zmm14*4+0x400]
38236 vgatherqps ymm27{k1},YMMWORD PTR [rcx+zmm14*4+0x400]
3823738237
3823838238 // CHECK: vpgatherdd zmm7 {k1}, zmmword ptr [r14 + 8*zmm16 - 123]
3823938239 // CHECK: encoding: [0x62,0xd2,0x7d,0x41,0x90,0xbc,0xc6,0x85,0xff,0xff,0xff]
3825938259 // CHECK: encoding: [0x62,0x62,0xfd,0x49,0x90,0x8c,0xb9,0x00,0x04,0x00,0x00]
3826038260 vpgatherdq zmm25{k1},ZMMWORD PTR [rcx+ymm7*4+0x400]
3826138261
38262 // CHECK: vpgatherqd ymm19 {k1}, zmmword ptr [r14 + 8*zmm17 - 123]
38262 // CHECK: vpgatherqd ymm19 {k1}, ymmword ptr [r14 + 8*zmm17 - 123]
3826338263 // CHECK: encoding: [0x62,0xc2,0x7d,0x41,0x91,0x9c,0xce,0x85,0xff,0xff,0xff]
38264 vpgatherqd ymm19{k1},ZMMWORD PTR [r14+zmm17*8-0x7b]
38265
38266 // CHECK: vpgatherqd ymm19 {k1}, zmmword ptr [r9 + zmm17 + 256]
38264 vpgatherqd ymm19{k1},YMMWORD PTR [r14+zmm17*8-0x7b]
38265
38266 // CHECK: vpgatherqd ymm19 {k1}, ymmword ptr [r9 + zmm17 + 256]
3826738267 // CHECK: encoding: [0x62,0xc2,0x7d,0x41,0x91,0x5c,0x09,0x40]
38268 vpgatherqd ymm19{k1},ZMMWORD PTR [r9+zmm17*1+0x100]
38269
38270 // CHECK: vpgatherqd ymm19 {k1}, zmmword ptr [rcx + 4*zmm17 + 1024]
38268 vpgatherqd ymm19{k1},YMMWORD PTR [r9+zmm17*1+0x100]
38269
38270 // CHECK: vpgatherqd ymm19 {k1}, ymmword ptr [rcx + 4*zmm17 + 1024]
3827138271 // CHECK: encoding: [0x62,0xe2,0x7d,0x41,0x91,0x9c,0x89,0x00,0x04,0x00,0x00]
38272 vpgatherqd ymm19{k1},ZMMWORD PTR [rcx+zmm17*4+0x400]
38272 vpgatherqd ymm19{k1},YMMWORD PTR [rcx+zmm17*4+0x400]
3827338273
3827438274 // CHECK: vpgatherqq zmm10 {k1}, zmmword ptr [r14 + 8*zmm13 - 123]
3827538275 // CHECK: encoding: [0x62,0x12,0xfd,0x49,0x91,0x94,0xee,0x85,0xff,0xff,0xff]
3831538315 // CHECK: encoding: [0x62,0xb2,0xfd,0x41,0xa0,0x8c,0x89,0x00,0x04,0x00,0x00]
3831638316 vpscatterdq ZMMWORD PTR [rcx+ymm25*4+0x400]{k1},zmm1
3831738317
38318 // CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm22 - 123] {k1}, ymm23
38318 // CHECK: vpscatterqd ymmword ptr [r14 + 8*zmm22 - 123] {k1}, ymm23
3831938319 // CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa1,0xbc,0xf6,0x85,0xff,0xff,0xff]
38320 vpscatterqd ZMMWORD PTR [r14+zmm22*8-0x7b]{k1},ymm23
38321
38322 // CHECK: vpscatterqd zmmword ptr [r14 + 8*zmm22 - 123] {k1}, ymm23
38320 vpscatterqd YMMWORD PTR [r14+zmm22*8-0x7b]{k1},ymm23
38321
38322 // CHECK: vpscatterqd ymmword ptr [r14 + 8*zmm22 - 123] {k1}, ymm23
3832338323 // CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa1,0xbc,0xf6,0x85,0xff,0xff,0xff]
38324 vpscatterqd ZMMWORD PTR [r14+zmm22*8-0x7b]{k1},ymm23
38325
38326 // CHECK: vpscatterqd zmmword ptr [r9 + zmm22 + 256] {k1}, ymm23
38324 vpscatterqd YMMWORD PTR [r14+zmm22*8-0x7b]{k1},ymm23
38325
38326 // CHECK: vpscatterqd ymmword ptr [r9 + zmm22 + 256] {k1}, ymm23
3832738327 // CHECK: encoding: [0x62,0xc2,0x7d,0x41,0xa1,0x7c,0x31,0x40]
38328 vpscatterqd ZMMWORD PTR [r9+zmm22*1+0x100]{k1},ymm23
38329
38330 // CHECK: vpscatterqd zmmword ptr [rcx + 4*zmm22 + 1024] {k1}, ymm23
38328 vpscatterqd YMMWORD PTR [r9+zmm22*1+0x100]{k1},ymm23
38329
38330 // CHECK: vpscatterqd ymmword ptr [rcx + 4*zmm22 + 1024] {k1}, ymm23
3833138331 // CHECK: encoding: [0x62,0xe2,0x7d,0x41,0xa1,0xbc,0xb1,0x00,0x04,0x00,0x00]
38332 vpscatterqd ZMMWORD PTR [rcx+zmm22*4+0x400]{k1},ymm23
38332 vpscatterqd YMMWORD PTR [rcx+zmm22*4+0x400]{k1},ymm23
3833338333
3833438334 // CHECK: vpscatterqq zmmword ptr [r14 + 8*zmm8 - 123] {k1}, zmm2
3833538335 // CHECK: encoding: [0x62,0x92,0xfd,0x49,0xa1,0x94,0xc6,0x85,0xff,0xff,0xff]
10571057 TYPE("vy128xmem", TYPE_M128)
10581058 TYPE("vy256xmem", TYPE_M256)
10591059 TYPE("vy512mem", TYPE_M512)
1060 TYPE("vz256xmem", TYPE_M256)
10601061 TYPE("vz512mem", TYPE_M512)
10611062 TYPE("BNDR", TYPE_BNDR)
10621063 errs() << "Unhandled type string " << s << "\n";
12521253 ENCODING("vy128xmem", ENCODING_RM)
12531254 ENCODING("vy256xmem", ENCODING_RM)
12541255 ENCODING("vy512mem", ENCODING_RM)
1256 ENCODING("vz256xmem", ENCODING_RM)
12551257 ENCODING("vz512mem", ENCODING_RM)
12561258 errs() << "Unhandled memory encoding " << s << "\n";
12571259 llvm_unreachable("Unhandled memory encoding");