[SKX] avx512_icmp_packed multiclass extension

Extended avx512_icmp_packed multiclass by masking versions.
Added avx512_icmp_packed_rmb multiclass for embedded broadcast versions.
Added corresponding _vl multiclasses.
Added encoding tests for CPCMP{EQ|GT}* instructions.
Add more fields for X86VectorVTInfo.
Added AVX512VLVectorVTInfo that include X86VectorVTInfo for 512/256/128-bit versions

Differential Revision: http://reviews.llvm.org/D5024


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216383 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Robert Khasanov 2014-08-25 14:49:34 +00:00
parent f2a082a54c
commit cc4b123a47
7 changed files with 1189 additions and 27 deletions

View File

@ -22,34 +22,83 @@ class X86VectorVTInfo<int NumElts, ValueType EltVT, RegisterClass rc,
// Suffix used in the instruction mnemonic.
string Suffix = suffix;
string VTName = "v" # NumElts # EltVT;
// The vector VT.
ValueType VT = !cast<ValueType>("v" # NumElts # EltVT);
ValueType VT = !cast<ValueType>(VTName);
string EltTypeName = !cast<string>(EltVT);
// Size of the element type in bits, e.g. 32 for v16i32.
string EltSize = !subst("i", "", !subst("f", "", EltTypeName));
string EltSizeName = !subst("i", "", !subst("f", "", EltTypeName));
int EltSize = EltVT.Size;
// "i" for integer types and "f" for floating-point types
string TypeVariantName = !subst(EltSize, "", EltTypeName);
string TypeVariantName = !subst(EltSizeName, "", EltTypeName);
// Size of RC in bits, e.g. 512 for VR512.
int Size = VT.Size;
// The corresponding memory operand, e.g. i512mem for VR512.
X86MemOperand MemOp = !cast<X86MemOperand>(TypeVariantName # Size # "mem");
X86MemOperand ScalarMemOp = !cast<X86MemOperand>(EltVT # "mem");
// Load patterns
// Note: For 128/256-bit integer VT we choose loadv2i64/loadv4i64
// due to load promotion during legalization
PatFrag LdFrag = !cast<PatFrag>("load" #
!if (!eq (TypeVariantName, "i"),
!if (!eq (Size, 128), "v2i64",
!if (!eq (Size, 256), "v4i64",
VTName)), VTName));
PatFrag ScalarLdFrag = !cast<PatFrag>("load" # EltVT);
// The corresponding float type, e.g. v16f32 for v16i32
ValueType FloatVT = !if (!eq(TypeVariantName, "i"),
!cast<ValueType>("v" # NumElts # "f" # EltSize),
VT);
// Note: For EltSize < 32, FloatVT is illegal and TableGen
// fails to compile, so we choose FloatVT = VT
ValueType FloatVT = !cast<ValueType>(
!if (!eq (!srl(EltSize,5),0),
VTName,
!if (!eq(TypeVariantName, "i"),
"v" # NumElts # "f" # EltSize,
VTName)));
// The string to specify embedded broadcast in assembly.
string BroadcastStr = "{1to" # NumElts # "}";
}
def v64i8_info : X86VectorVTInfo<64, i8, VR512, "b">;
def v32i16_info : X86VectorVTInfo<32, i16, VR512, "w">;
def v16i32_info : X86VectorVTInfo<16, i32, VR512, "d">;
def v8i64_info : X86VectorVTInfo<8, i64, VR512, "q">;
// "x" in v32i8x_info means RC = VR256X
def v32i8x_info : X86VectorVTInfo<32, i8, VR256X, "b">;
def v16i16x_info : X86VectorVTInfo<16, i16, VR256X, "w">;
def v8i32x_info : X86VectorVTInfo<8, i32, VR256X, "d">;
def v4i64x_info : X86VectorVTInfo<4, i64, VR256X, "q">;
def v16i8x_info : X86VectorVTInfo<16, i8, VR128X, "b">;
def v8i16x_info : X86VectorVTInfo<8, i16, VR128X, "w">;
def v4i32x_info : X86VectorVTInfo<4, i32, VR128X, "d">;
def v2i64x_info : X86VectorVTInfo<2, i64, VR128X, "q">;
class AVX512VLVectorVTInfo<X86VectorVTInfo i512, X86VectorVTInfo i256,
X86VectorVTInfo i128> {
X86VectorVTInfo info512 = i512;
X86VectorVTInfo info256 = i256;
X86VectorVTInfo info128 = i128;
}
def avx512vl_i8_info : AVX512VLVectorVTInfo<v64i8_info, v32i8x_info,
v16i8x_info>;
def avx512vl_i16_info : AVX512VLVectorVTInfo<v32i16_info, v16i16x_info,
v8i16x_info>;
def avx512vl_i32_info : AVX512VLVectorVTInfo<v16i32_info, v8i32x_info,
v4i32x_info>;
def avx512vl_i64_info : AVX512VLVectorVTInfo<v8i64_info, v4i64x_info,
v2i64x_info>;
// Common base class of AVX512_masking and AVX512_masking_3src.
multiclass AVX512_masking_common<bits<8> O, Format F, dag Outs, dag Ins,
dag MaskingIns, dag ZeroMaskingIns,
@ -971,34 +1020,131 @@ defm VCMPSDZ : avx512_cmp_scalar<FR64X, f64mem, AVXCC, X86cmpms, f64, loadf64,
XD, VEX_W;
}
multiclass avx512_icmp_packed<bits<8> opc, string OpcodeStr, RegisterClass KRC,
RegisterClass RC, X86MemOperand x86memop, PatFrag memop_frag,
SDNode OpNode, ValueType vt> {
multiclass avx512_icmp_packed<bits<8> opc, string OpcodeStr, SDNode OpNode,
X86VectorVTInfo _> {
def rr : AVX512BI<opc, MRMSrcReg,
(outs KRC:$dst), (ins RC:$src1, RC:$src2),
!strconcat(OpcodeStr, " \t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set KRC:$dst, (OpNode (vt RC:$src1), (vt RC:$src2)))],
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2)))],
IIC_SSE_ALU_F32P_RR>, EVEX_4V;
let mayLoad = 1 in
def rm : AVX512BI<opc, MRMSrcMem,
(outs KRC:$dst), (ins RC:$src1, x86memop:$src2),
!strconcat(OpcodeStr, " \t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set KRC:$dst, (OpNode (vt RC:$src1), (memop_frag addr:$src2)))],
(outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
(_.VT (bitconvert (_.LdFrag addr:$src2)))))],
IIC_SSE_ALU_F32P_RM>, EVEX_4V;
def rrk : AVX512BI<opc, MRMSrcReg,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
"$dst {${mask}}, $src1, $src2}"),
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))))],
IIC_SSE_ALU_F32P_RR>, EVEX_4V, EVEX_K;
let mayLoad = 1 in
def rmk : AVX512BI<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
!strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
"$dst {${mask}}, $src1, $src2}"),
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
(_.VT (bitconvert
(_.LdFrag addr:$src2))))))],
IIC_SSE_ALU_F32P_RM>, EVEX_4V, EVEX_K;
}
defm VPCMPEQDZ : avx512_icmp_packed<0x76, "vpcmpeqd", VK16, VR512, i512mem,
memopv16i32, X86pcmpeqm, v16i32>, EVEX_V512,
EVEX_CD8<32, CD8VF>;
defm VPCMPEQQZ : avx512_icmp_packed<0x29, "vpcmpeqq", VK8, VR512, i512mem,
memopv8i64, X86pcmpeqm, v8i64>, T8PD, EVEX_V512,
VEX_W, EVEX_CD8<64, CD8VF>;
multiclass avx512_icmp_packed_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
X86VectorVTInfo _> {
let mayLoad = 1 in {
def rmb : AVX512BI<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.RC:$src1, _.ScalarMemOp:$src2),
!strconcat(OpcodeStr, "\t{${src2}", _.BroadcastStr, ", $src1, $dst",
"|$dst, $src1, ${src2}", _.BroadcastStr, "}"),
[(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
(X86VBroadcast (_.ScalarLdFrag addr:$src2))))],
IIC_SSE_ALU_F32P_RM>, EVEX_4V, EVEX_B;
def rmbk : AVX512BI<opc, MRMSrcMem,
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
_.ScalarMemOp:$src2),
!strconcat(OpcodeStr,
"\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
"$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, "}"),
[(set _.KRC:$dst, (and _.KRCWM:$mask,
(OpNode (_.VT _.RC:$src1),
(X86VBroadcast
(_.ScalarLdFrag addr:$src2)))))],
IIC_SSE_ALU_F32P_RM>, EVEX_4V, EVEX_K, EVEX_B;
}
}
defm VPCMPGTDZ : avx512_icmp_packed<0x66, "vpcmpgtd", VK16, VR512, i512mem,
memopv16i32, X86pcmpgtm, v16i32>, EVEX_V512,
EVEX_CD8<32, CD8VF>;
defm VPCMPGTQZ : avx512_icmp_packed<0x37, "vpcmpgtq", VK8, VR512, i512mem,
memopv8i64, X86pcmpgtm, v8i64>, T8PD, EVEX_V512,
VEX_W, EVEX_CD8<64, CD8VF>;
multiclass avx512_icmp_packed_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
AVX512VLVectorVTInfo VTInfo, Predicate prd> {
let Predicates = [prd] in
defm Z : avx512_icmp_packed<opc, OpcodeStr, OpNode, VTInfo.info512>,
EVEX_V512;
let Predicates = [prd, HasVLX] in {
defm Z256 : avx512_icmp_packed<opc, OpcodeStr, OpNode, VTInfo.info256>,
EVEX_V256;
defm Z128 : avx512_icmp_packed<opc, OpcodeStr, OpNode, VTInfo.info128>,
EVEX_V128;
}
}
multiclass avx512_icmp_packed_rmb_vl<bits<8> opc, string OpcodeStr,
SDNode OpNode, AVX512VLVectorVTInfo VTInfo,
Predicate prd> {
let Predicates = [prd] in
defm Z : avx512_icmp_packed_rmb<opc, OpcodeStr, OpNode, VTInfo.info512>,
EVEX_V512;
let Predicates = [prd, HasVLX] in {
defm Z256 : avx512_icmp_packed_rmb<opc, OpcodeStr, OpNode, VTInfo.info256>,
EVEX_V256;
defm Z128 : avx512_icmp_packed_rmb<opc, OpcodeStr, OpNode, VTInfo.info128>,
EVEX_V128;
}
}
defm VPCMPEQB : avx512_icmp_packed_vl<0x74, "vpcmpeqb", X86pcmpeqm,
avx512vl_i8_info, HasBWI>,
EVEX_CD8<8, CD8VF>;
defm VPCMPEQW : avx512_icmp_packed_vl<0x75, "vpcmpeqw", X86pcmpeqm,
avx512vl_i16_info, HasBWI>,
EVEX_CD8<16, CD8VF>;
defm VPCMPEQD : avx512_icmp_packed_vl<0x76, "vpcmpeqd", X86pcmpeqm,
avx512vl_i32_info, HasAVX512>,
avx512_icmp_packed_rmb_vl<0x76, "vpcmpeqd", X86pcmpeqm,
avx512vl_i32_info, HasAVX512>,
EVEX_CD8<32, CD8VF>;
defm VPCMPEQQ : avx512_icmp_packed_vl<0x29, "vpcmpeqq", X86pcmpeqm,
avx512vl_i64_info, HasAVX512>,
avx512_icmp_packed_rmb_vl<0x29, "vpcmpeqq", X86pcmpeqm,
avx512vl_i64_info, HasAVX512>,
T8PD, VEX_W, EVEX_CD8<64, CD8VF>;
defm VPCMPGTB : avx512_icmp_packed_vl<0x64, "vpcmpgtb", X86pcmpgtm,
avx512vl_i8_info, HasBWI>,
EVEX_CD8<8, CD8VF>;
defm VPCMPGTW : avx512_icmp_packed_vl<0x65, "vpcmpgtw", X86pcmpgtm,
avx512vl_i16_info, HasBWI>,
EVEX_CD8<16, CD8VF>;
defm VPCMPGTD : avx512_icmp_packed_vl<0x66, "vpcmpgtd", X86pcmpgtm,
avx512vl_i32_info, HasAVX512>,
avx512_icmp_packed_rmb_vl<0x66, "vpcmpgtd", X86pcmpgtm,
avx512vl_i32_info, HasAVX512>,
EVEX_CD8<32, CD8VF>;
defm VPCMPGTQ : avx512_icmp_packed_vl<0x37, "vpcmpgtq", X86pcmpgtm,
avx512vl_i64_info, HasAVX512>,
avx512_icmp_packed_rmb_vl<0x37, "vpcmpgtq", X86pcmpgtm,
avx512vl_i64_info, HasAVX512>,
T8PD, VEX_W, EVEX_CD8<64, CD8VF>;
def : Pat<(v8i1 (X86pcmpgtm (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
(COPY_TO_REGCLASS (VPCMPGTDZrr

View File

@ -1425,6 +1425,214 @@
// CHECK: encoding: [0x62,0xe1,0xdd,0x58,0xdb,0x8a,0xf8,0xfb,0xff,0xff]
vpandq -1032(%rdx){1to8}, %zmm4, %zmm17
// CHECK: vpcmpeqd %zmm10, %zmm2, %k5
// CHECK: encoding: [0x62,0xd1,0x6d,0x48,0x76,0xea]
vpcmpeqd %zmm10, %zmm2, %k5
// CHECK: vpcmpeqd %zmm10, %zmm2, %k5 {%k7}
// CHECK: encoding: [0x62,0xd1,0x6d,0x4f,0x76,0xea]
vpcmpeqd %zmm10, %zmm2, %k5 {%k7}
// CHECK: vpcmpeqd (%rcx), %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0x29]
vpcmpeqd (%rcx), %zmm2, %k5
// CHECK: vpcmpeqd 291(%rax,%r14,8), %zmm2, %k5
// CHECK: encoding: [0x62,0xb1,0x6d,0x48,0x76,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqd 291(%rax,%r14,8), %zmm2, %k5
// CHECK: vpcmpeqd (%rcx){1to16}, %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0x29]
vpcmpeqd (%rcx){1to16}, %zmm2, %k5
// CHECK: vpcmpeqd 8128(%rdx), %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0x6a,0x7f]
vpcmpeqd 8128(%rdx), %zmm2, %k5
// CHECK: vpcmpeqd 8192(%rdx), %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0xaa,0x00,0x20,0x00,0x00]
vpcmpeqd 8192(%rdx), %zmm2, %k5
// CHECK: vpcmpeqd -8192(%rdx), %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0x6a,0x80]
vpcmpeqd -8192(%rdx), %zmm2, %k5
// CHECK: vpcmpeqd -8256(%rdx), %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x48,0x76,0xaa,0xc0,0xdf,0xff,0xff]
vpcmpeqd -8256(%rdx), %zmm2, %k5
// CHECK: vpcmpeqd 508(%rdx){1to16}, %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0x6a,0x7f]
vpcmpeqd 508(%rdx){1to16}, %zmm2, %k5
// CHECK: vpcmpeqd 512(%rdx){1to16}, %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0xaa,0x00,0x02,0x00,0x00]
vpcmpeqd 512(%rdx){1to16}, %zmm2, %k5
// CHECK: vpcmpeqd -512(%rdx){1to16}, %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0x6a,0x80]
vpcmpeqd -512(%rdx){1to16}, %zmm2, %k5
// CHECK: vpcmpeqd -516(%rdx){1to16}, %zmm2, %k5
// CHECK: encoding: [0x62,0xf1,0x6d,0x58,0x76,0xaa,0xfc,0xfd,0xff,0xff]
vpcmpeqd -516(%rdx){1to16}, %zmm2, %k5
// CHECK: vpcmpeqq %zmm2, %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0xda]
vpcmpeqq %zmm2, %zmm22, %k3
// CHECK: vpcmpeqq %zmm2, %zmm22, %k3 {%k6}
// CHECK: encoding: [0x62,0xf2,0xcd,0x46,0x29,0xda]
vpcmpeqq %zmm2, %zmm22, %k3 {%k6}
// CHECK: vpcmpeqq (%rcx), %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x19]
vpcmpeqq (%rcx), %zmm22, %k3
// CHECK: vpcmpeqq 291(%rax,%r14,8), %zmm22, %k3
// CHECK: encoding: [0x62,0xb2,0xcd,0x40,0x29,0x9c,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqq 291(%rax,%r14,8), %zmm22, %k3
// CHECK: vpcmpeqq (%rcx){1to8}, %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x19]
vpcmpeqq (%rcx){1to8}, %zmm22, %k3
// CHECK: vpcmpeqq 8128(%rdx), %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x5a,0x7f]
vpcmpeqq 8128(%rdx), %zmm22, %k3
// CHECK: vpcmpeqq 8192(%rdx), %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x9a,0x00,0x20,0x00,0x00]
vpcmpeqq 8192(%rdx), %zmm22, %k3
// CHECK: vpcmpeqq -8192(%rdx), %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x5a,0x80]
vpcmpeqq -8192(%rdx), %zmm22, %k3
// CHECK: vpcmpeqq -8256(%rdx), %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x40,0x29,0x9a,0xc0,0xdf,0xff,0xff]
vpcmpeqq -8256(%rdx), %zmm22, %k3
// CHECK: vpcmpeqq 1016(%rdx){1to8}, %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x5a,0x7f]
vpcmpeqq 1016(%rdx){1to8}, %zmm22, %k3
// CHECK: vpcmpeqq 1024(%rdx){1to8}, %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x9a,0x00,0x04,0x00,0x00]
vpcmpeqq 1024(%rdx){1to8}, %zmm22, %k3
// CHECK: vpcmpeqq -1024(%rdx){1to8}, %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x5a,0x80]
vpcmpeqq -1024(%rdx){1to8}, %zmm22, %k3
// CHECK: vpcmpeqq -1032(%rdx){1to8}, %zmm22, %k3
// CHECK: encoding: [0x62,0xf2,0xcd,0x50,0x29,0x9a,0xf8,0xfb,0xff,0xff]
vpcmpeqq -1032(%rdx){1to8}, %zmm22, %k3
// CHECK: vpcmpgtd %zmm8, %zmm21, %k5
// CHECK: encoding: [0x62,0xd1,0x55,0x40,0x66,0xe8]
vpcmpgtd %zmm8, %zmm21, %k5
// CHECK: vpcmpgtd %zmm8, %zmm21, %k5 {%k5}
// CHECK: encoding: [0x62,0xd1,0x55,0x45,0x66,0xe8]
vpcmpgtd %zmm8, %zmm21, %k5 {%k5}
// CHECK: vpcmpgtd (%rcx), %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0x29]
vpcmpgtd (%rcx), %zmm21, %k5
// CHECK: vpcmpgtd 291(%rax,%r14,8), %zmm21, %k5
// CHECK: encoding: [0x62,0xb1,0x55,0x40,0x66,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtd 291(%rax,%r14,8), %zmm21, %k5
// CHECK: vpcmpgtd (%rcx){1to16}, %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0x29]
vpcmpgtd (%rcx){1to16}, %zmm21, %k5
// CHECK: vpcmpgtd 8128(%rdx), %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0x6a,0x7f]
vpcmpgtd 8128(%rdx), %zmm21, %k5
// CHECK: vpcmpgtd 8192(%rdx), %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0xaa,0x00,0x20,0x00,0x00]
vpcmpgtd 8192(%rdx), %zmm21, %k5
// CHECK: vpcmpgtd -8192(%rdx), %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0x6a,0x80]
vpcmpgtd -8192(%rdx), %zmm21, %k5
// CHECK: vpcmpgtd -8256(%rdx), %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x40,0x66,0xaa,0xc0,0xdf,0xff,0xff]
vpcmpgtd -8256(%rdx), %zmm21, %k5
// CHECK: vpcmpgtd 508(%rdx){1to16}, %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0x6a,0x7f]
vpcmpgtd 508(%rdx){1to16}, %zmm21, %k5
// CHECK: vpcmpgtd 512(%rdx){1to16}, %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0xaa,0x00,0x02,0x00,0x00]
vpcmpgtd 512(%rdx){1to16}, %zmm21, %k5
// CHECK: vpcmpgtd -512(%rdx){1to16}, %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0x6a,0x80]
vpcmpgtd -512(%rdx){1to16}, %zmm21, %k5
// CHECK: vpcmpgtd -516(%rdx){1to16}, %zmm21, %k5
// CHECK: encoding: [0x62,0xf1,0x55,0x50,0x66,0xaa,0xfc,0xfd,0xff,0xff]
vpcmpgtd -516(%rdx){1to16}, %zmm21, %k5
// CHECK: vpcmpgtq %zmm17, %zmm20, %k2
// CHECK: encoding: [0x62,0xb2,0xdd,0x40,0x37,0xd1]
vpcmpgtq %zmm17, %zmm20, %k2
// CHECK: vpcmpgtq %zmm17, %zmm20, %k2 {%k3}
// CHECK: encoding: [0x62,0xb2,0xdd,0x43,0x37,0xd1]
vpcmpgtq %zmm17, %zmm20, %k2 {%k3}
// CHECK: vpcmpgtq (%rcx), %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x11]
vpcmpgtq (%rcx), %zmm20, %k2
// CHECK: vpcmpgtq 291(%rax,%r14,8), %zmm20, %k2
// CHECK: encoding: [0x62,0xb2,0xdd,0x40,0x37,0x94,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtq 291(%rax,%r14,8), %zmm20, %k2
// CHECK: vpcmpgtq (%rcx){1to8}, %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x11]
vpcmpgtq (%rcx){1to8}, %zmm20, %k2
// CHECK: vpcmpgtq 8128(%rdx), %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x52,0x7f]
vpcmpgtq 8128(%rdx), %zmm20, %k2
// CHECK: vpcmpgtq 8192(%rdx), %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x92,0x00,0x20,0x00,0x00]
vpcmpgtq 8192(%rdx), %zmm20, %k2
// CHECK: vpcmpgtq -8192(%rdx), %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x52,0x80]
vpcmpgtq -8192(%rdx), %zmm20, %k2
// CHECK: vpcmpgtq -8256(%rdx), %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x40,0x37,0x92,0xc0,0xdf,0xff,0xff]
vpcmpgtq -8256(%rdx), %zmm20, %k2
// CHECK: vpcmpgtq 1016(%rdx){1to8}, %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x52,0x7f]
vpcmpgtq 1016(%rdx){1to8}, %zmm20, %k2
// CHECK: vpcmpgtq 1024(%rdx){1to8}, %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x92,0x00,0x04,0x00,0x00]
vpcmpgtq 1024(%rdx){1to8}, %zmm20, %k2
// CHECK: vpcmpgtq -1024(%rdx){1to8}, %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x52,0x80]
vpcmpgtq -1024(%rdx){1to8}, %zmm20, %k2
// CHECK: vpcmpgtq -1032(%rdx){1to8}, %zmm20, %k2
// CHECK: encoding: [0x62,0xf2,0xdd,0x50,0x37,0x92,0xf8,0xfb,0xff,0xff]
vpcmpgtq -1032(%rdx){1to8}, %zmm20, %k2
// CHECK: vpmaxsd %zmm16, %zmm8, %zmm6
// CHECK: encoding: [0x62,0xb2,0x3d,0x48,0x3d,0xf0]
vpmaxsd %zmm16, %zmm8, %zmm6

View File

@ -1,5 +1,133 @@
// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=skx --show-encoding %s | FileCheck %s
// CHECK: vpcmpeqb %zmm26, %zmm26, %k4
// CHECK: encoding: [0x62,0x91,0x2d,0x40,0x74,0xe2]
vpcmpeqb %zmm26, %zmm26, %k4
// CHECK: vpcmpeqb %zmm26, %zmm26, %k4 {%k6}
// CHECK: encoding: [0x62,0x91,0x2d,0x46,0x74,0xe2]
vpcmpeqb %zmm26, %zmm26, %k4 {%k6}
// CHECK: vpcmpeqb (%rcx), %zmm26, %k4
// CHECK: encoding: [0x62,0xf1,0x2d,0x40,0x74,0x21]
vpcmpeqb (%rcx), %zmm26, %k4
// CHECK: vpcmpeqb 291(%rax,%r14,8), %zmm26, %k4
// CHECK: encoding: [0x62,0xb1,0x2d,0x40,0x74,0xa4,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqb 291(%rax,%r14,8), %zmm26, %k4
// CHECK: vpcmpeqb 8128(%rdx), %zmm26, %k4
// CHECK: encoding: [0x62,0xf1,0x2d,0x40,0x74,0x62,0x7f]
vpcmpeqb 8128(%rdx), %zmm26, %k4
// CHECK: vpcmpeqb 8192(%rdx), %zmm26, %k4
// CHECK: encoding: [0x62,0xf1,0x2d,0x40,0x74,0xa2,0x00,0x20,0x00,0x00]
vpcmpeqb 8192(%rdx), %zmm26, %k4
// CHECK: vpcmpeqb -8192(%rdx), %zmm26, %k4
// CHECK: encoding: [0x62,0xf1,0x2d,0x40,0x74,0x62,0x80]
vpcmpeqb -8192(%rdx), %zmm26, %k4
// CHECK: vpcmpeqb -8256(%rdx), %zmm26, %k4
// CHECK: encoding: [0x62,0xf1,0x2d,0x40,0x74,0xa2,0xc0,0xdf,0xff,0xff]
vpcmpeqb -8256(%rdx), %zmm26, %k4
// CHECK: vpcmpeqw %zmm19, %zmm23, %k5
// CHECK: encoding: [0x62,0xb1,0x45,0x40,0x75,0xeb]
vpcmpeqw %zmm19, %zmm23, %k5
// CHECK: vpcmpeqw %zmm19, %zmm23, %k5 {%k7}
// CHECK: encoding: [0x62,0xb1,0x45,0x47,0x75,0xeb]
vpcmpeqw %zmm19, %zmm23, %k5 {%k7}
// CHECK: vpcmpeqw (%rcx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x75,0x29]
vpcmpeqw (%rcx), %zmm23, %k5
// CHECK: vpcmpeqw 291(%rax,%r14,8), %zmm23, %k5
// CHECK: encoding: [0x62,0xb1,0x45,0x40,0x75,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqw 291(%rax,%r14,8), %zmm23, %k5
// CHECK: vpcmpeqw 8128(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x75,0x6a,0x7f]
vpcmpeqw 8128(%rdx), %zmm23, %k5
// CHECK: vpcmpeqw 8192(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x75,0xaa,0x00,0x20,0x00,0x00]
vpcmpeqw 8192(%rdx), %zmm23, %k5
// CHECK: vpcmpeqw -8192(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x75,0x6a,0x80]
vpcmpeqw -8192(%rdx), %zmm23, %k5
// CHECK: vpcmpeqw -8256(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x75,0xaa,0xc0,0xdf,0xff,0xff]
vpcmpeqw -8256(%rdx), %zmm23, %k5
// CHECK: vpcmpgtb %zmm20, %zmm30, %k4
// CHECK: encoding: [0x62,0xb1,0x0d,0x40,0x64,0xe4]
vpcmpgtb %zmm20, %zmm30, %k4
// CHECK: vpcmpgtb %zmm20, %zmm30, %k4 {%k1}
// CHECK: encoding: [0x62,0xb1,0x0d,0x41,0x64,0xe4]
vpcmpgtb %zmm20, %zmm30, %k4 {%k1}
// CHECK: vpcmpgtb (%rcx), %zmm30, %k4
// CHECK: encoding: [0x62,0xf1,0x0d,0x40,0x64,0x21]
vpcmpgtb (%rcx), %zmm30, %k4
// CHECK: vpcmpgtb 291(%rax,%r14,8), %zmm30, %k4
// CHECK: encoding: [0x62,0xb1,0x0d,0x40,0x64,0xa4,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtb 291(%rax,%r14,8), %zmm30, %k4
// CHECK: vpcmpgtb 8128(%rdx), %zmm30, %k4
// CHECK: encoding: [0x62,0xf1,0x0d,0x40,0x64,0x62,0x7f]
vpcmpgtb 8128(%rdx), %zmm30, %k4
// CHECK: vpcmpgtb 8192(%rdx), %zmm30, %k4
// CHECK: encoding: [0x62,0xf1,0x0d,0x40,0x64,0xa2,0x00,0x20,0x00,0x00]
vpcmpgtb 8192(%rdx), %zmm30, %k4
// CHECK: vpcmpgtb -8192(%rdx), %zmm30, %k4
// CHECK: encoding: [0x62,0xf1,0x0d,0x40,0x64,0x62,0x80]
vpcmpgtb -8192(%rdx), %zmm30, %k4
// CHECK: vpcmpgtb -8256(%rdx), %zmm30, %k4
// CHECK: encoding: [0x62,0xf1,0x0d,0x40,0x64,0xa2,0xc0,0xdf,0xff,0xff]
vpcmpgtb -8256(%rdx), %zmm30, %k4
// CHECK: vpcmpgtw %zmm21, %zmm23, %k5
// CHECK: encoding: [0x62,0xb1,0x45,0x40,0x65,0xed]
vpcmpgtw %zmm21, %zmm23, %k5
// CHECK: vpcmpgtw %zmm21, %zmm23, %k5 {%k7}
// CHECK: encoding: [0x62,0xb1,0x45,0x47,0x65,0xed]
vpcmpgtw %zmm21, %zmm23, %k5 {%k7}
// CHECK: vpcmpgtw (%rcx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x65,0x29]
vpcmpgtw (%rcx), %zmm23, %k5
// CHECK: vpcmpgtw 291(%rax,%r14,8), %zmm23, %k5
// CHECK: encoding: [0x62,0xb1,0x45,0x40,0x65,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtw 291(%rax,%r14,8), %zmm23, %k5
// CHECK: vpcmpgtw 8128(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x65,0x6a,0x7f]
vpcmpgtw 8128(%rdx), %zmm23, %k5
// CHECK: vpcmpgtw 8192(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x65,0xaa,0x00,0x20,0x00,0x00]
vpcmpgtw 8192(%rdx), %zmm23, %k5
// CHECK: vpcmpgtw -8192(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x65,0x6a,0x80]
vpcmpgtw -8192(%rdx), %zmm23, %k5
// CHECK: vpcmpgtw -8256(%rdx), %zmm23, %k5
// CHECK: encoding: [0x62,0xf1,0x45,0x40,0x65,0xaa,0xc0,0xdf,0xff,0xff]
vpcmpgtw -8256(%rdx), %zmm23, %k5
// CHECK: vmovdqu8 %zmm19, %zmm29
// CHECK: encoding: [0x62,0x21,0x7f,0x48,0x6f,0xeb]
vmovdqu8 %zmm19, %zmm29

View File

@ -1,5 +1,261 @@
// RUN: llvm-mc -triple x86_64-unknown-unknown -mcpu=skx --show-encoding %s | FileCheck %s
// CHECK: vpcmpeqb %xmm21, %xmm21, %k4
// CHECK: encoding: [0x62,0xb1,0x55,0x00,0x74,0xe5]
vpcmpeqb %xmm21, %xmm21, %k4
// CHECK: vpcmpeqb %xmm21, %xmm21, %k4 {%k3}
// CHECK: encoding: [0x62,0xb1,0x55,0x03,0x74,0xe5]
vpcmpeqb %xmm21, %xmm21, %k4 {%k3}
// CHECK: vpcmpeqb (%rcx), %xmm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x00,0x74,0x21]
vpcmpeqb (%rcx), %xmm21, %k4
// CHECK: vpcmpeqb 291(%rax,%r14,8), %xmm21, %k4
// CHECK: encoding: [0x62,0xb1,0x55,0x00,0x74,0xa4,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqb 291(%rax,%r14,8), %xmm21, %k4
// CHECK: vpcmpeqb 2032(%rdx), %xmm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x00,0x74,0x62,0x7f]
vpcmpeqb 2032(%rdx), %xmm21, %k4
// CHECK: vpcmpeqb 2048(%rdx), %xmm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x00,0x74,0xa2,0x00,0x08,0x00,0x00]
vpcmpeqb 2048(%rdx), %xmm21, %k4
// CHECK: vpcmpeqb -2048(%rdx), %xmm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x00,0x74,0x62,0x80]
vpcmpeqb -2048(%rdx), %xmm21, %k4
// CHECK: vpcmpeqb -2064(%rdx), %xmm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x00,0x74,0xa2,0xf0,0xf7,0xff,0xff]
vpcmpeqb -2064(%rdx), %xmm21, %k4
// CHECK: vpcmpeqb %ymm18, %ymm21, %k4
// CHECK: encoding: [0x62,0xb1,0x55,0x20,0x74,0xe2]
vpcmpeqb %ymm18, %ymm21, %k4
// CHECK: vpcmpeqb %ymm18, %ymm21, %k4 {%k1}
// CHECK: encoding: [0x62,0xb1,0x55,0x21,0x74,0xe2]
vpcmpeqb %ymm18, %ymm21, %k4 {%k1}
// CHECK: vpcmpeqb (%rcx), %ymm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x20,0x74,0x21]
vpcmpeqb (%rcx), %ymm21, %k4
// CHECK: vpcmpeqb 291(%rax,%r14,8), %ymm21, %k4
// CHECK: encoding: [0x62,0xb1,0x55,0x20,0x74,0xa4,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqb 291(%rax,%r14,8), %ymm21, %k4
// CHECK: vpcmpeqb 4064(%rdx), %ymm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x20,0x74,0x62,0x7f]
vpcmpeqb 4064(%rdx), %ymm21, %k4
// CHECK: vpcmpeqb 4096(%rdx), %ymm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x20,0x74,0xa2,0x00,0x10,0x00,0x00]
vpcmpeqb 4096(%rdx), %ymm21, %k4
// CHECK: vpcmpeqb -4096(%rdx), %ymm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x20,0x74,0x62,0x80]
vpcmpeqb -4096(%rdx), %ymm21, %k4
// CHECK: vpcmpeqb -4128(%rdx), %ymm21, %k4
// CHECK: encoding: [0x62,0xf1,0x55,0x20,0x74,0xa2,0xe0,0xef,0xff,0xff]
vpcmpeqb -4128(%rdx), %ymm21, %k4
// CHECK: vpcmpeqw %xmm27, %xmm30, %k3
// CHECK: encoding: [0x62,0x91,0x0d,0x00,0x75,0xdb]
vpcmpeqw %xmm27, %xmm30, %k3
// CHECK: vpcmpeqw %xmm27, %xmm30, %k3 {%k1}
// CHECK: encoding: [0x62,0x91,0x0d,0x01,0x75,0xdb]
vpcmpeqw %xmm27, %xmm30, %k3 {%k1}
// CHECK: vpcmpeqw (%rcx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x75,0x19]
vpcmpeqw (%rcx), %xmm30, %k3
// CHECK: vpcmpeqw 291(%rax,%r14,8), %xmm30, %k3
// CHECK: encoding: [0x62,0xb1,0x0d,0x00,0x75,0x9c,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqw 291(%rax,%r14,8), %xmm30, %k3
// CHECK: vpcmpeqw 2032(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x75,0x5a,0x7f]
vpcmpeqw 2032(%rdx), %xmm30, %k3
// CHECK: vpcmpeqw 2048(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x75,0x9a,0x00,0x08,0x00,0x00]
vpcmpeqw 2048(%rdx), %xmm30, %k3
// CHECK: vpcmpeqw -2048(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x75,0x5a,0x80]
vpcmpeqw -2048(%rdx), %xmm30, %k3
// CHECK: vpcmpeqw -2064(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x75,0x9a,0xf0,0xf7,0xff,0xff]
vpcmpeqw -2064(%rdx), %xmm30, %k3
// CHECK: vpcmpeqw %ymm29, %ymm20, %k2
// CHECK: encoding: [0x62,0x91,0x5d,0x20,0x75,0xd5]
vpcmpeqw %ymm29, %ymm20, %k2
// CHECK: vpcmpeqw %ymm29, %ymm20, %k2 {%k5}
// CHECK: encoding: [0x62,0x91,0x5d,0x25,0x75,0xd5]
vpcmpeqw %ymm29, %ymm20, %k2 {%k5}
// CHECK: vpcmpeqw (%rcx), %ymm20, %k2
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x75,0x11]
vpcmpeqw (%rcx), %ymm20, %k2
// CHECK: vpcmpeqw 291(%rax,%r14,8), %ymm20, %k2
// CHECK: encoding: [0x62,0xb1,0x5d,0x20,0x75,0x94,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqw 291(%rax,%r14,8), %ymm20, %k2
// CHECK: vpcmpeqw 4064(%rdx), %ymm20, %k2
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x75,0x52,0x7f]
vpcmpeqw 4064(%rdx), %ymm20, %k2
// CHECK: vpcmpeqw 4096(%rdx), %ymm20, %k2
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x75,0x92,0x00,0x10,0x00,0x00]
vpcmpeqw 4096(%rdx), %ymm20, %k2
// CHECK: vpcmpeqw -4096(%rdx), %ymm20, %k2
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x75,0x52,0x80]
vpcmpeqw -4096(%rdx), %ymm20, %k2
// CHECK: vpcmpeqw -4128(%rdx), %ymm20, %k2
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x75,0x92,0xe0,0xef,0xff,0xff]
vpcmpeqw -4128(%rdx), %ymm20, %k2
// CHECK: vpcmpgtb %xmm17, %xmm30, %k3
// CHECK: encoding: [0x62,0xb1,0x0d,0x00,0x64,0xd9]
vpcmpgtb %xmm17, %xmm30, %k3
// CHECK: vpcmpgtb %xmm17, %xmm30, %k3 {%k7}
// CHECK: encoding: [0x62,0xb1,0x0d,0x07,0x64,0xd9]
vpcmpgtb %xmm17, %xmm30, %k3 {%k7}
// CHECK: vpcmpgtb (%rcx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x64,0x19]
vpcmpgtb (%rcx), %xmm30, %k3
// CHECK: vpcmpgtb 291(%rax,%r14,8), %xmm30, %k3
// CHECK: encoding: [0x62,0xb1,0x0d,0x00,0x64,0x9c,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtb 291(%rax,%r14,8), %xmm30, %k3
// CHECK: vpcmpgtb 2032(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x64,0x5a,0x7f]
vpcmpgtb 2032(%rdx), %xmm30, %k3
// CHECK: vpcmpgtb 2048(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x64,0x9a,0x00,0x08,0x00,0x00]
vpcmpgtb 2048(%rdx), %xmm30, %k3
// CHECK: vpcmpgtb -2048(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x64,0x5a,0x80]
vpcmpgtb -2048(%rdx), %xmm30, %k3
// CHECK: vpcmpgtb -2064(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf1,0x0d,0x00,0x64,0x9a,0xf0,0xf7,0xff,0xff]
vpcmpgtb -2064(%rdx), %xmm30, %k3
// CHECK: vpcmpgtb %ymm17, %ymm17, %k2
// CHECK: encoding: [0x62,0xb1,0x75,0x20,0x64,0xd1]
vpcmpgtb %ymm17, %ymm17, %k2
// CHECK: vpcmpgtb %ymm17, %ymm17, %k2 {%k4}
// CHECK: encoding: [0x62,0xb1,0x75,0x24,0x64,0xd1]
vpcmpgtb %ymm17, %ymm17, %k2 {%k4}
// CHECK: vpcmpgtb (%rcx), %ymm17, %k2
// CHECK: encoding: [0x62,0xf1,0x75,0x20,0x64,0x11]
vpcmpgtb (%rcx), %ymm17, %k2
// CHECK: vpcmpgtb 291(%rax,%r14,8), %ymm17, %k2
// CHECK: encoding: [0x62,0xb1,0x75,0x20,0x64,0x94,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtb 291(%rax,%r14,8), %ymm17, %k2
// CHECK: vpcmpgtb 4064(%rdx), %ymm17, %k2
// CHECK: encoding: [0x62,0xf1,0x75,0x20,0x64,0x52,0x7f]
vpcmpgtb 4064(%rdx), %ymm17, %k2
// CHECK: vpcmpgtb 4096(%rdx), %ymm17, %k2
// CHECK: encoding: [0x62,0xf1,0x75,0x20,0x64,0x92,0x00,0x10,0x00,0x00]
vpcmpgtb 4096(%rdx), %ymm17, %k2
// CHECK: vpcmpgtb -4096(%rdx), %ymm17, %k2
// CHECK: encoding: [0x62,0xf1,0x75,0x20,0x64,0x52,0x80]
vpcmpgtb -4096(%rdx), %ymm17, %k2
// CHECK: vpcmpgtb -4128(%rdx), %ymm17, %k2
// CHECK: encoding: [0x62,0xf1,0x75,0x20,0x64,0x92,0xe0,0xef,0xff,0xff]
vpcmpgtb -4128(%rdx), %ymm17, %k2
// CHECK: vpcmpgtw %xmm22, %xmm28, %k2
// CHECK: encoding: [0x62,0xb1,0x1d,0x00,0x65,0xd6]
vpcmpgtw %xmm22, %xmm28, %k2
// CHECK: vpcmpgtw %xmm22, %xmm28, %k2 {%k7}
// CHECK: encoding: [0x62,0xb1,0x1d,0x07,0x65,0xd6]
vpcmpgtw %xmm22, %xmm28, %k2 {%k7}
// CHECK: vpcmpgtw (%rcx), %xmm28, %k2
// CHECK: encoding: [0x62,0xf1,0x1d,0x00,0x65,0x11]
vpcmpgtw (%rcx), %xmm28, %k2
// CHECK: vpcmpgtw 291(%rax,%r14,8), %xmm28, %k2
// CHECK: encoding: [0x62,0xb1,0x1d,0x00,0x65,0x94,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtw 291(%rax,%r14,8), %xmm28, %k2
// CHECK: vpcmpgtw 2032(%rdx), %xmm28, %k2
// CHECK: encoding: [0x62,0xf1,0x1d,0x00,0x65,0x52,0x7f]
vpcmpgtw 2032(%rdx), %xmm28, %k2
// CHECK: vpcmpgtw 2048(%rdx), %xmm28, %k2
// CHECK: encoding: [0x62,0xf1,0x1d,0x00,0x65,0x92,0x00,0x08,0x00,0x00]
vpcmpgtw 2048(%rdx), %xmm28, %k2
// CHECK: vpcmpgtw -2048(%rdx), %xmm28, %k2
// CHECK: encoding: [0x62,0xf1,0x1d,0x00,0x65,0x52,0x80]
vpcmpgtw -2048(%rdx), %xmm28, %k2
// CHECK: vpcmpgtw -2064(%rdx), %xmm28, %k2
// CHECK: encoding: [0x62,0xf1,0x1d,0x00,0x65,0x92,0xf0,0xf7,0xff,0xff]
vpcmpgtw -2064(%rdx), %xmm28, %k2
// CHECK: vpcmpgtw %ymm26, %ymm20, %k5
// CHECK: encoding: [0x62,0x91,0x5d,0x20,0x65,0xea]
vpcmpgtw %ymm26, %ymm20, %k5
// CHECK: vpcmpgtw %ymm26, %ymm20, %k5 {%k2}
// CHECK: encoding: [0x62,0x91,0x5d,0x22,0x65,0xea]
vpcmpgtw %ymm26, %ymm20, %k5 {%k2}
// CHECK: vpcmpgtw (%rcx), %ymm20, %k5
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x65,0x29]
vpcmpgtw (%rcx), %ymm20, %k5
// CHECK: vpcmpgtw 291(%rax,%r14,8), %ymm20, %k5
// CHECK: encoding: [0x62,0xb1,0x5d,0x20,0x65,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtw 291(%rax,%r14,8), %ymm20, %k5
// CHECK: vpcmpgtw 4064(%rdx), %ymm20, %k5
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x65,0x6a,0x7f]
vpcmpgtw 4064(%rdx), %ymm20, %k5
// CHECK: vpcmpgtw 4096(%rdx), %ymm20, %k5
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x65,0xaa,0x00,0x10,0x00,0x00]
vpcmpgtw 4096(%rdx), %ymm20, %k5
// CHECK: vpcmpgtw -4096(%rdx), %ymm20, %k5
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x65,0x6a,0x80]
vpcmpgtw -4096(%rdx), %ymm20, %k5
// CHECK: vpcmpgtw -4128(%rdx), %ymm20, %k5
// CHECK: encoding: [0x62,0xf1,0x5d,0x20,0x65,0xaa,0xe0,0xef,0xff,0xff]
vpcmpgtw -4128(%rdx), %ymm20, %k5
// CHECK: vmovdqu8 %xmm23, %xmm26
// CHECK: encoding: [0x62,0x21,0x7f,0x08,0x6f,0xd7]
vmovdqu8 %xmm23, %xmm26

View File

@ -768,6 +768,422 @@
// CHECK: encoding: [0x62,0xe1,0x7c,0x28,0x10,0xaa,0xe0,0xef,0xff,0xff]
vmovups -4128(%rdx), %ymm21
// CHECK: vpcmpeqd %xmm24, %xmm29, %k3
// CHECK: encoding: [0x62,0x91,0x15,0x00,0x76,0xd8]
vpcmpeqd %xmm24, %xmm29, %k3
// CHECK: vpcmpeqd %xmm24, %xmm29, %k3 {%k5}
// CHECK: encoding: [0x62,0x91,0x15,0x05,0x76,0xd8]
vpcmpeqd %xmm24, %xmm29, %k3 {%k5}
// CHECK: vpcmpeqd (%rcx), %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x76,0x19]
vpcmpeqd (%rcx), %xmm29, %k3
// CHECK: vpcmpeqd 291(%rax,%r14,8), %xmm29, %k3
// CHECK: encoding: [0x62,0xb1,0x15,0x00,0x76,0x9c,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqd 291(%rax,%r14,8), %xmm29, %k3
// CHECK: vpcmpeqd (%rcx){1to4}, %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x76,0x19]
vpcmpeqd (%rcx){1to4}, %xmm29, %k3
// CHECK: vpcmpeqd 2032(%rdx), %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x76,0x5a,0x7f]
vpcmpeqd 2032(%rdx), %xmm29, %k3
// CHECK: vpcmpeqd 2048(%rdx), %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x76,0x9a,0x00,0x08,0x00,0x00]
vpcmpeqd 2048(%rdx), %xmm29, %k3
// CHECK: vpcmpeqd -2048(%rdx), %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x76,0x5a,0x80]
vpcmpeqd -2048(%rdx), %xmm29, %k3
// CHECK: vpcmpeqd -2064(%rdx), %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x76,0x9a,0xf0,0xf7,0xff,0xff]
vpcmpeqd -2064(%rdx), %xmm29, %k3
// CHECK: vpcmpeqd 508(%rdx){1to4}, %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x76,0x5a,0x7f]
vpcmpeqd 508(%rdx){1to4}, %xmm29, %k3
// CHECK: vpcmpeqd 512(%rdx){1to4}, %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x76,0x9a,0x00,0x02,0x00,0x00]
vpcmpeqd 512(%rdx){1to4}, %xmm29, %k3
// CHECK: vpcmpeqd -512(%rdx){1to4}, %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x76,0x5a,0x80]
vpcmpeqd -512(%rdx){1to4}, %xmm29, %k3
// CHECK: vpcmpeqd -516(%rdx){1to4}, %xmm29, %k3
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x76,0x9a,0xfc,0xfd,0xff,0xff]
vpcmpeqd -516(%rdx){1to4}, %xmm29, %k3
// CHECK: vpcmpeqd %ymm20, %ymm26, %k5
// CHECK: encoding: [0x62,0xb1,0x2d,0x20,0x76,0xec]
vpcmpeqd %ymm20, %ymm26, %k5
// CHECK: vpcmpeqd %ymm20, %ymm26, %k5 {%k5}
// CHECK: encoding: [0x62,0xb1,0x2d,0x25,0x76,0xec]
vpcmpeqd %ymm20, %ymm26, %k5 {%k5}
// CHECK: vpcmpeqd (%rcx), %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x20,0x76,0x29]
vpcmpeqd (%rcx), %ymm26, %k5
// CHECK: vpcmpeqd 291(%rax,%r14,8), %ymm26, %k5
// CHECK: encoding: [0x62,0xb1,0x2d,0x20,0x76,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqd 291(%rax,%r14,8), %ymm26, %k5
// CHECK: vpcmpeqd (%rcx){1to8}, %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x30,0x76,0x29]
vpcmpeqd (%rcx){1to8}, %ymm26, %k5
// CHECK: vpcmpeqd 4064(%rdx), %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x20,0x76,0x6a,0x7f]
vpcmpeqd 4064(%rdx), %ymm26, %k5
// CHECK: vpcmpeqd 4096(%rdx), %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x20,0x76,0xaa,0x00,0x10,0x00,0x00]
vpcmpeqd 4096(%rdx), %ymm26, %k5
// CHECK: vpcmpeqd -4096(%rdx), %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x20,0x76,0x6a,0x80]
vpcmpeqd -4096(%rdx), %ymm26, %k5
// CHECK: vpcmpeqd -4128(%rdx), %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x20,0x76,0xaa,0xe0,0xef,0xff,0xff]
vpcmpeqd -4128(%rdx), %ymm26, %k5
// CHECK: vpcmpeqd 508(%rdx){1to8}, %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x30,0x76,0x6a,0x7f]
vpcmpeqd 508(%rdx){1to8}, %ymm26, %k5
// CHECK: vpcmpeqd 512(%rdx){1to8}, %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x30,0x76,0xaa,0x00,0x02,0x00,0x00]
vpcmpeqd 512(%rdx){1to8}, %ymm26, %k5
// CHECK: vpcmpeqd -512(%rdx){1to8}, %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x30,0x76,0x6a,0x80]
vpcmpeqd -512(%rdx){1to8}, %ymm26, %k5
// CHECK: vpcmpeqd -516(%rdx){1to8}, %ymm26, %k5
// CHECK: encoding: [0x62,0xf1,0x2d,0x30,0x76,0xaa,0xfc,0xfd,0xff,0xff]
vpcmpeqd -516(%rdx){1to8}, %ymm26, %k5
// CHECK: vpcmpeqq %xmm29, %xmm20, %k3
// CHECK: encoding: [0x62,0x92,0xdd,0x00,0x29,0xdd]
vpcmpeqq %xmm29, %xmm20, %k3
// CHECK: vpcmpeqq %xmm29, %xmm20, %k3 {%k3}
// CHECK: encoding: [0x62,0x92,0xdd,0x03,0x29,0xdd]
vpcmpeqq %xmm29, %xmm20, %k3 {%k3}
// CHECK: vpcmpeqq (%rcx), %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0x29,0x19]
vpcmpeqq (%rcx), %xmm20, %k3
// CHECK: vpcmpeqq 291(%rax,%r14,8), %xmm20, %k3
// CHECK: encoding: [0x62,0xb2,0xdd,0x00,0x29,0x9c,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqq 291(%rax,%r14,8), %xmm20, %k3
// CHECK: vpcmpeqq (%rcx){1to2}, %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x10,0x29,0x19]
vpcmpeqq (%rcx){1to2}, %xmm20, %k3
// CHECK: vpcmpeqq 2032(%rdx), %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0x29,0x5a,0x7f]
vpcmpeqq 2032(%rdx), %xmm20, %k3
// CHECK: vpcmpeqq 2048(%rdx), %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0x29,0x9a,0x00,0x08,0x00,0x00]
vpcmpeqq 2048(%rdx), %xmm20, %k3
// CHECK: vpcmpeqq -2048(%rdx), %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0x29,0x5a,0x80]
vpcmpeqq -2048(%rdx), %xmm20, %k3
// CHECK: vpcmpeqq -2064(%rdx), %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x00,0x29,0x9a,0xf0,0xf7,0xff,0xff]
vpcmpeqq -2064(%rdx), %xmm20, %k3
// CHECK: vpcmpeqq 1016(%rdx){1to2}, %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x10,0x29,0x5a,0x7f]
vpcmpeqq 1016(%rdx){1to2}, %xmm20, %k3
// CHECK: vpcmpeqq 1024(%rdx){1to2}, %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x10,0x29,0x9a,0x00,0x04,0x00,0x00]
vpcmpeqq 1024(%rdx){1to2}, %xmm20, %k3
// CHECK: vpcmpeqq -1024(%rdx){1to2}, %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x10,0x29,0x5a,0x80]
vpcmpeqq -1024(%rdx){1to2}, %xmm20, %k3
// CHECK: vpcmpeqq -1032(%rdx){1to2}, %xmm20, %k3
// CHECK: encoding: [0x62,0xf2,0xdd,0x10,0x29,0x9a,0xf8,0xfb,0xff,0xff]
vpcmpeqq -1032(%rdx){1to2}, %xmm20, %k3
// CHECK: vpcmpeqq %ymm23, %ymm30, %k5
// CHECK: encoding: [0x62,0xb2,0x8d,0x20,0x29,0xef]
vpcmpeqq %ymm23, %ymm30, %k5
// CHECK: vpcmpeqq %ymm23, %ymm30, %k5 {%k6}
// CHECK: encoding: [0x62,0xb2,0x8d,0x26,0x29,0xef]
vpcmpeqq %ymm23, %ymm30, %k5 {%k6}
// CHECK: vpcmpeqq (%rcx), %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x20,0x29,0x29]
vpcmpeqq (%rcx), %ymm30, %k5
// CHECK: vpcmpeqq 291(%rax,%r14,8), %ymm30, %k5
// CHECK: encoding: [0x62,0xb2,0x8d,0x20,0x29,0xac,0xf0,0x23,0x01,0x00,0x00]
vpcmpeqq 291(%rax,%r14,8), %ymm30, %k5
// CHECK: vpcmpeqq (%rcx){1to4}, %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x30,0x29,0x29]
vpcmpeqq (%rcx){1to4}, %ymm30, %k5
// CHECK: vpcmpeqq 4064(%rdx), %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x20,0x29,0x6a,0x7f]
vpcmpeqq 4064(%rdx), %ymm30, %k5
// CHECK: vpcmpeqq 4096(%rdx), %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x20,0x29,0xaa,0x00,0x10,0x00,0x00]
vpcmpeqq 4096(%rdx), %ymm30, %k5
// CHECK: vpcmpeqq -4096(%rdx), %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x20,0x29,0x6a,0x80]
vpcmpeqq -4096(%rdx), %ymm30, %k5
// CHECK: vpcmpeqq -4128(%rdx), %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x20,0x29,0xaa,0xe0,0xef,0xff,0xff]
vpcmpeqq -4128(%rdx), %ymm30, %k5
// CHECK: vpcmpeqq 1016(%rdx){1to4}, %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x30,0x29,0x6a,0x7f]
vpcmpeqq 1016(%rdx){1to4}, %ymm30, %k5
// CHECK: vpcmpeqq 1024(%rdx){1to4}, %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x30,0x29,0xaa,0x00,0x04,0x00,0x00]
vpcmpeqq 1024(%rdx){1to4}, %ymm30, %k5
// CHECK: vpcmpeqq -1024(%rdx){1to4}, %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x30,0x29,0x6a,0x80]
vpcmpeqq -1024(%rdx){1to4}, %ymm30, %k5
// CHECK: vpcmpeqq -1032(%rdx){1to4}, %ymm30, %k5
// CHECK: encoding: [0x62,0xf2,0x8d,0x30,0x29,0xaa,0xf8,0xfb,0xff,0xff]
vpcmpeqq -1032(%rdx){1to4}, %ymm30, %k5
// CHECK: vpcmpgtd %xmm20, %xmm29, %k4
// CHECK: encoding: [0x62,0xb1,0x15,0x00,0x66,0xe4]
vpcmpgtd %xmm20, %xmm29, %k4
// CHECK: vpcmpgtd %xmm20, %xmm29, %k4 {%k2}
// CHECK: encoding: [0x62,0xb1,0x15,0x02,0x66,0xe4]
vpcmpgtd %xmm20, %xmm29, %k4 {%k2}
// CHECK: vpcmpgtd (%rcx), %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x66,0x21]
vpcmpgtd (%rcx), %xmm29, %k4
// CHECK: vpcmpgtd 291(%rax,%r14,8), %xmm29, %k4
// CHECK: encoding: [0x62,0xb1,0x15,0x00,0x66,0xa4,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtd 291(%rax,%r14,8), %xmm29, %k4
// CHECK: vpcmpgtd (%rcx){1to4}, %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x66,0x21]
vpcmpgtd (%rcx){1to4}, %xmm29, %k4
// CHECK: vpcmpgtd 2032(%rdx), %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x66,0x62,0x7f]
vpcmpgtd 2032(%rdx), %xmm29, %k4
// CHECK: vpcmpgtd 2048(%rdx), %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x66,0xa2,0x00,0x08,0x00,0x00]
vpcmpgtd 2048(%rdx), %xmm29, %k4
// CHECK: vpcmpgtd -2048(%rdx), %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x66,0x62,0x80]
vpcmpgtd -2048(%rdx), %xmm29, %k4
// CHECK: vpcmpgtd -2064(%rdx), %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x00,0x66,0xa2,0xf0,0xf7,0xff,0xff]
vpcmpgtd -2064(%rdx), %xmm29, %k4
// CHECK: vpcmpgtd 508(%rdx){1to4}, %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x66,0x62,0x7f]
vpcmpgtd 508(%rdx){1to4}, %xmm29, %k4
// CHECK: vpcmpgtd 512(%rdx){1to4}, %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x66,0xa2,0x00,0x02,0x00,0x00]
vpcmpgtd 512(%rdx){1to4}, %xmm29, %k4
// CHECK: vpcmpgtd -512(%rdx){1to4}, %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x66,0x62,0x80]
vpcmpgtd -512(%rdx){1to4}, %xmm29, %k4
// CHECK: vpcmpgtd -516(%rdx){1to4}, %xmm29, %k4
// CHECK: encoding: [0x62,0xf1,0x15,0x10,0x66,0xa2,0xfc,0xfd,0xff,0xff]
vpcmpgtd -516(%rdx){1to4}, %xmm29, %k4
// CHECK: vpcmpgtd %ymm17, %ymm22, %k2
// CHECK: encoding: [0x62,0xb1,0x4d,0x20,0x66,0xd1]
vpcmpgtd %ymm17, %ymm22, %k2
// CHECK: vpcmpgtd %ymm17, %ymm22, %k2 {%k1}
// CHECK: encoding: [0x62,0xb1,0x4d,0x21,0x66,0xd1]
vpcmpgtd %ymm17, %ymm22, %k2 {%k1}
// CHECK: vpcmpgtd (%rcx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x20,0x66,0x11]
vpcmpgtd (%rcx), %ymm22, %k2
// CHECK: vpcmpgtd 291(%rax,%r14,8), %ymm22, %k2
// CHECK: encoding: [0x62,0xb1,0x4d,0x20,0x66,0x94,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtd 291(%rax,%r14,8), %ymm22, %k2
// CHECK: vpcmpgtd (%rcx){1to8}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x30,0x66,0x11]
vpcmpgtd (%rcx){1to8}, %ymm22, %k2
// CHECK: vpcmpgtd 4064(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x20,0x66,0x52,0x7f]
vpcmpgtd 4064(%rdx), %ymm22, %k2
// CHECK: vpcmpgtd 4096(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x20,0x66,0x92,0x00,0x10,0x00,0x00]
vpcmpgtd 4096(%rdx), %ymm22, %k2
// CHECK: vpcmpgtd -4096(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x20,0x66,0x52,0x80]
vpcmpgtd -4096(%rdx), %ymm22, %k2
// CHECK: vpcmpgtd -4128(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x20,0x66,0x92,0xe0,0xef,0xff,0xff]
vpcmpgtd -4128(%rdx), %ymm22, %k2
// CHECK: vpcmpgtd 508(%rdx){1to8}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x30,0x66,0x52,0x7f]
vpcmpgtd 508(%rdx){1to8}, %ymm22, %k2
// CHECK: vpcmpgtd 512(%rdx){1to8}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x30,0x66,0x92,0x00,0x02,0x00,0x00]
vpcmpgtd 512(%rdx){1to8}, %ymm22, %k2
// CHECK: vpcmpgtd -512(%rdx){1to8}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x30,0x66,0x52,0x80]
vpcmpgtd -512(%rdx){1to8}, %ymm22, %k2
// CHECK: vpcmpgtd -516(%rdx){1to8}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf1,0x4d,0x30,0x66,0x92,0xfc,0xfd,0xff,0xff]
vpcmpgtd -516(%rdx){1to8}, %ymm22, %k2
// CHECK: vpcmpgtq %xmm25, %xmm30, %k3
// CHECK: encoding: [0x62,0x92,0x8d,0x00,0x37,0xd9]
vpcmpgtq %xmm25, %xmm30, %k3
// CHECK: vpcmpgtq %xmm25, %xmm30, %k3 {%k6}
// CHECK: encoding: [0x62,0x92,0x8d,0x06,0x37,0xd9]
vpcmpgtq %xmm25, %xmm30, %k3 {%k6}
// CHECK: vpcmpgtq (%rcx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x00,0x37,0x19]
vpcmpgtq (%rcx), %xmm30, %k3
// CHECK: vpcmpgtq 291(%rax,%r14,8), %xmm30, %k3
// CHECK: encoding: [0x62,0xb2,0x8d,0x00,0x37,0x9c,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtq 291(%rax,%r14,8), %xmm30, %k3
// CHECK: vpcmpgtq (%rcx){1to2}, %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x10,0x37,0x19]
vpcmpgtq (%rcx){1to2}, %xmm30, %k3
// CHECK: vpcmpgtq 2032(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x00,0x37,0x5a,0x7f]
vpcmpgtq 2032(%rdx), %xmm30, %k3
// CHECK: vpcmpgtq 2048(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x00,0x37,0x9a,0x00,0x08,0x00,0x00]
vpcmpgtq 2048(%rdx), %xmm30, %k3
// CHECK: vpcmpgtq -2048(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x00,0x37,0x5a,0x80]
vpcmpgtq -2048(%rdx), %xmm30, %k3
// CHECK: vpcmpgtq -2064(%rdx), %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x00,0x37,0x9a,0xf0,0xf7,0xff,0xff]
vpcmpgtq -2064(%rdx), %xmm30, %k3
// CHECK: vpcmpgtq 1016(%rdx){1to2}, %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x10,0x37,0x5a,0x7f]
vpcmpgtq 1016(%rdx){1to2}, %xmm30, %k3
// CHECK: vpcmpgtq 1024(%rdx){1to2}, %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x10,0x37,0x9a,0x00,0x04,0x00,0x00]
vpcmpgtq 1024(%rdx){1to2}, %xmm30, %k3
// CHECK: vpcmpgtq -1024(%rdx){1to2}, %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x10,0x37,0x5a,0x80]
vpcmpgtq -1024(%rdx){1to2}, %xmm30, %k3
// CHECK: vpcmpgtq -1032(%rdx){1to2}, %xmm30, %k3
// CHECK: encoding: [0x62,0xf2,0x8d,0x10,0x37,0x9a,0xf8,0xfb,0xff,0xff]
vpcmpgtq -1032(%rdx){1to2}, %xmm30, %k3
// CHECK: vpcmpgtq %ymm20, %ymm22, %k2
// CHECK: encoding: [0x62,0xb2,0xcd,0x20,0x37,0xd4]
vpcmpgtq %ymm20, %ymm22, %k2
// CHECK: vpcmpgtq %ymm20, %ymm22, %k2 {%k1}
// CHECK: encoding: [0x62,0xb2,0xcd,0x21,0x37,0xd4]
vpcmpgtq %ymm20, %ymm22, %k2 {%k1}
// CHECK: vpcmpgtq (%rcx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x20,0x37,0x11]
vpcmpgtq (%rcx), %ymm22, %k2
// CHECK: vpcmpgtq 291(%rax,%r14,8), %ymm22, %k2
// CHECK: encoding: [0x62,0xb2,0xcd,0x20,0x37,0x94,0xf0,0x23,0x01,0x00,0x00]
vpcmpgtq 291(%rax,%r14,8), %ymm22, %k2
// CHECK: vpcmpgtq (%rcx){1to4}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x30,0x37,0x11]
vpcmpgtq (%rcx){1to4}, %ymm22, %k2
// CHECK: vpcmpgtq 4064(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x20,0x37,0x52,0x7f]
vpcmpgtq 4064(%rdx), %ymm22, %k2
// CHECK: vpcmpgtq 4096(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x20,0x37,0x92,0x00,0x10,0x00,0x00]
vpcmpgtq 4096(%rdx), %ymm22, %k2
// CHECK: vpcmpgtq -4096(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x20,0x37,0x52,0x80]
vpcmpgtq -4096(%rdx), %ymm22, %k2
// CHECK: vpcmpgtq -4128(%rdx), %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x20,0x37,0x92,0xe0,0xef,0xff,0xff]
vpcmpgtq -4128(%rdx), %ymm22, %k2
// CHECK: vpcmpgtq 1016(%rdx){1to4}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x30,0x37,0x52,0x7f]
vpcmpgtq 1016(%rdx){1to4}, %ymm22, %k2
// CHECK: vpcmpgtq 1024(%rdx){1to4}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x30,0x37,0x92,0x00,0x04,0x00,0x00]
vpcmpgtq 1024(%rdx){1to4}, %ymm22, %k2
// CHECK: vpcmpgtq -1024(%rdx){1to4}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x30,0x37,0x52,0x80]
vpcmpgtq -1024(%rdx){1to4}, %ymm22, %k2
// CHECK: vpcmpgtq -1032(%rdx){1to4}, %ymm22, %k2
// CHECK: encoding: [0x62,0xf2,0xcd,0x30,0x37,0x92,0xf8,0xfb,0xff,0xff]
vpcmpgtq -1032(%rdx){1to4}, %ymm22, %k2
// CHECK: vmovapd %xmm22, (%rcx)
// CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x29,0x31]
vmovapd %xmm22, (%rcx)

View File

@ -217,6 +217,7 @@ static inline bool inheritsFrom(InstructionContext child,
case IC_EVEX_KZ_B:
case IC_EVEX_OPSIZE_K:
case IC_EVEX_OPSIZE_B:
case IC_EVEX_OPSIZE_K_B:
case IC_EVEX_OPSIZE_KZ:
return false;
case IC_EVEX_W_K:
@ -224,11 +225,14 @@ static inline bool inheritsFrom(InstructionContext child,
case IC_EVEX_W_XD_K:
case IC_EVEX_W_OPSIZE_K:
case IC_EVEX_W_OPSIZE_B:
case IC_EVEX_W_OPSIZE_K_B:
return false;
case IC_EVEX_L_K:
case IC_EVEX_L_XS_K:
case IC_EVEX_L_XD_K:
case IC_EVEX_L_OPSIZE_K:
case IC_EVEX_L_OPSIZE_B:
case IC_EVEX_L_OPSIZE_K_B:
return false;
case IC_EVEX_W_KZ:
case IC_EVEX_W_XS_KZ:
@ -244,6 +248,8 @@ static inline bool inheritsFrom(InstructionContext child,
case IC_EVEX_L_W_XS_K:
case IC_EVEX_L_W_XD_K:
case IC_EVEX_L_W_OPSIZE_K:
case IC_EVEX_L_W_OPSIZE_B:
case IC_EVEX_L_W_OPSIZE_K_B:
case IC_EVEX_L_W_KZ:
case IC_EVEX_L_W_XS_KZ:
case IC_EVEX_L_W_XD_KZ:

View File

@ -1090,6 +1090,8 @@ RecognizableInstr::roRegisterEncodingFromString(const std::string &s,
ENCODING("FR32X", ENCODING_REG)
ENCODING("VR512", ENCODING_REG)
ENCODING("VK1", ENCODING_REG)
ENCODING("VK2", ENCODING_REG)
ENCODING("VK4", ENCODING_REG)
ENCODING("VK8", ENCODING_REG)
ENCODING("VK16", ENCODING_REG)
ENCODING("VK32", ENCODING_REG)