[llvm] r235383 - AVX-512: Added VPTESTM and VPTESTNM instructions for SKX
Elena Demikhovsky
elena.demikhovsky at intel.com
Tue Apr 21 06:13:47 PDT 2015
Author: delena
Date: Tue Apr 21 08:13:46 2015
New Revision: 235383
URL: http://llvm.org/viewvc/llvm-project?rev=235383&view=rev
Log:
AVX-512: Added VPTESTM and VPTESTNM instructions for SKX
Modified:
llvm/trunk/lib/Target/X86/X86InstrAVX512.td
llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td
llvm/trunk/test/MC/X86/avx512bw-encoding.s
llvm/trunk/test/MC/X86/avx512vl-encoding.s
llvm/trunk/utils/TableGen/X86DisassemblerTables.cpp
Modified: llvm/trunk/lib/Target/X86/X86InstrAVX512.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrAVX512.td?rev=235383&r1=235382&r2=235383&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrAVX512.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrAVX512.td Tue Apr 21 08:13:46 2015
@@ -287,6 +287,54 @@ multiclass AVX512_maskable_in_asm<bits<8
OpcodeStr, AttSrcAsm, IntelSrcAsm, Pattern, [], [], "",
"$src0 = $dst">;
+
+// Instruction with mask that puts result in mask register,
+// like "compare" and "vptest"
+multiclass AVX512_maskable_custom_cmp<bits<8> O, Format F,
+ dag Outs,
+ dag Ins, dag MaskingIns,
+ string OpcodeStr,
+ string AttSrcAsm, string IntelSrcAsm,
+ list<dag> Pattern,
+ list<dag> MaskingPattern,
+ string Round = "",
+ InstrItinClass itin = NoItinerary> {
+ def NAME: AVX512<O, F, Outs, Ins,
+ OpcodeStr#"\t{"#AttSrcAsm#", $dst "#Round#"|"#
+ "$dst "#Round#", "#IntelSrcAsm#"}",
+ Pattern, itin>;
+
+ def NAME#k: AVX512<O, F, Outs, MaskingIns,
+ OpcodeStr#"\t{"#AttSrcAsm#", $dst {${mask}}"#Round#"|"#
+ "$dst {${mask}}"#Round#", "#IntelSrcAsm#"}",
+ MaskingPattern, itin>, EVEX_K;
+}
+
+multiclass AVX512_maskable_common_cmp<bits<8> O, Format F, X86VectorVTInfo _,
+ dag Outs,
+ dag Ins, dag MaskingIns,
+ string OpcodeStr,
+ string AttSrcAsm, string IntelSrcAsm,
+ dag RHS, dag MaskingRHS,
+ string Round = "",
+ InstrItinClass itin = NoItinerary> :
+ AVX512_maskable_custom_cmp<O, F, Outs, Ins, MaskingIns, OpcodeStr,
+ AttSrcAsm, IntelSrcAsm,
+ [(set _.KRC:$dst, RHS)],
+ [(set _.KRC:$dst, MaskingRHS)],
+ Round, NoItinerary>;
+
+multiclass AVX512_maskable_cmp<bits<8> O, Format F, X86VectorVTInfo _,
+ dag Outs, dag Ins, string OpcodeStr,
+ string AttSrcAsm, string IntelSrcAsm,
+ dag RHS, string Round = "",
+ InstrItinClass itin = NoItinerary> :
+ AVX512_maskable_common_cmp<O, F, _, Outs, Ins,
+ !con((ins _.KRCWM:$mask), Ins),
+ OpcodeStr, AttSrcAsm, IntelSrcAsm, RHS,
+ (and _.KRCWM:$mask, RHS),
+ Round, itin>;
+
// Bitcasts between 512-bit vector types. Return the original type since
// no instruction is needed for the conversion
let Predicates = [HasAVX512] in {
@@ -3383,37 +3431,84 @@ def : Pat<(v8f64 (int_x86_avx512_mask_mi
// AVX-512 VPTESTM instructions
//===----------------------------------------------------------------------===//
-multiclass avx512_vptest<bits<8> opc, string OpcodeStr, RegisterClass KRC,
- RegisterClass RC, X86MemOperand x86memop, PatFrag memop_frag,
- SDNode OpNode, ValueType vt> {
- def rr : AVX512PI<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)))],
- SSEPackedInt>, EVEX_4V;
- def rm : AVX512PI<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),
- (bitconvert (memop_frag addr:$src2))))], SSEPackedInt>, EVEX_4V;
+multiclass avx512_vptest<bits<8> opc, string OpcodeStr, SDNode OpNode,
+ X86VectorVTInfo _> {
+ defm rr : AVX512_maskable_cmp<opc, MRMSrcReg, _, (outs _.KRC:$dst),
+ (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
+ "$src2, $src1", "$src1, $src2",
+ (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
+ EVEX_4V;
+ let mayLoad = 1 in
+ defm rm : AVX512_maskable_cmp<opc, MRMSrcMem, _, (outs _.KRC:$dst),
+ (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
+ "$src2, $src1", "$src1, $src2",
+ (OpNode (_.VT _.RC:$src1),
+ (_.VT (bitconvert (_.LdFrag addr:$src2))))>,
+ EVEX_4V,
+ EVEX_CD8<_.EltSize, CD8VF>;
}
-defm VPTESTMDZ : avx512_vptest<0x27, "vptestmd", VK16, VR512, f512mem,
- loadv16i32, X86testm, v16i32>, T8PD, EVEX_V512,
- EVEX_CD8<32, CD8VF>;
-defm VPTESTMQZ : avx512_vptest<0x27, "vptestmq", VK8, VR512, f512mem,
- loadv8i64, X86testm, v8i64>, T8PD, EVEX_V512, VEX_W,
- EVEX_CD8<64, CD8VF>;
+multiclass avx512_vptest_mb<bits<8> opc, string OpcodeStr, SDNode OpNode,
+ X86VectorVTInfo _> {
+ let mayLoad = 1 in
+ defm rmb : AVX512_maskable_cmp<opc, MRMSrcMem, _, (outs _.KRC:$dst),
+ (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
+ "${src2}"##_.BroadcastStr##", $src1",
+ "$src1, ${src2}"##_.BroadcastStr,
+ (OpNode (_.VT _.RC:$src1), (_.VT (X86VBroadcast
+ (_.ScalarLdFrag addr:$src2))))>,
+ EVEX_B, EVEX_4V, EVEX_CD8<_.EltSize, CD8VF>;
+}
+multiclass avx512_vptest_dq_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
+ AVX512VLVectorVTInfo _> {
+ let Predicates = [HasAVX512] in
+ defm Z : avx512_vptest<opc, OpcodeStr, OpNode, _.info512>,
+ avx512_vptest_mb<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
-let Predicates = [HasCDI] in {
-defm VPTESTNMDZ : avx512_vptest<0x27, "vptestnmd", VK16, VR512, f512mem,
- loadv16i32, X86testnm, v16i32>, T8XS, EVEX_V512,
- EVEX_CD8<32, CD8VF>;
-defm VPTESTNMQZ : avx512_vptest<0x27, "vptestnmq", VK8, VR512, f512mem,
- loadv8i64, X86testnm, v8i64>, T8XS, EVEX_V512, VEX_W,
- EVEX_CD8<64, CD8VF>;
+ let Predicates = [HasAVX512, HasVLX] in {
+ defm Z256 : avx512_vptest<opc, OpcodeStr, OpNode, _.info256>,
+ avx512_vptest_mb<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
+ defm Z128 : avx512_vptest<opc, OpcodeStr, OpNode, _.info128>,
+ avx512_vptest_mb<opc, OpcodeStr, OpNode, _.info128>, EVEX_V128;
+ }
+}
+
+multiclass avx512_vptest_dq<bits<8> opc, string OpcodeStr, SDNode OpNode> {
+ defm D : avx512_vptest_dq_sizes<opc, OpcodeStr#"d", OpNode,
+ avx512vl_i32_info>;
+ defm Q : avx512_vptest_dq_sizes<opc, OpcodeStr#"q", OpNode,
+ avx512vl_i64_info>, VEX_W;
}
+multiclass avx512_vptest_wb<bits<8> opc, string OpcodeStr,
+ SDNode OpNode> {
+ let Predicates = [HasBWI] in {
+ defm WZ: avx512_vptest<opc, OpcodeStr#"w", OpNode, v32i16_info>,
+ EVEX_V512, VEX_W;
+ defm BZ: avx512_vptest<opc, OpcodeStr#"b", OpNode, v64i8_info>,
+ EVEX_V512;
+ }
+ let Predicates = [HasVLX, HasBWI] in {
+
+ defm WZ256: avx512_vptest<opc, OpcodeStr#"w", OpNode, v16i16x_info>,
+ EVEX_V256, VEX_W;
+ defm WZ128: avx512_vptest<opc, OpcodeStr#"w", OpNode, v8i16x_info>,
+ EVEX_V128, VEX_W;
+ defm BZ256: avx512_vptest<opc, OpcodeStr#"b", OpNode, v32i8x_info>,
+ EVEX_V256;
+ defm BZ128: avx512_vptest<opc, OpcodeStr#"b", OpNode, v16i8x_info>,
+ EVEX_V128;
+ }
+}
+
+multiclass avx512_vptest_all_forms<bits<8> opc_wb, bits<8> opc_dq, string OpcodeStr,
+ SDNode OpNode> :
+ avx512_vptest_wb <opc_wb, OpcodeStr, OpNode>,
+ avx512_vptest_dq<opc_dq, OpcodeStr, OpNode>;
+
+defm VPTESTM : avx512_vptest_all_forms<0x26, 0x27, "vptestm", X86testm>, T8PD;
+defm VPTESTNM : avx512_vptest_all_forms<0x26, 0x27, "vptestnm", X86testnm>, T8XS;
+
def : Pat <(i16 (int_x86_avx512_mask_ptestm_d_512 (v16i32 VR512:$src1),
(v16i32 VR512:$src2), (i16 -1))),
(COPY_TO_REGCLASS (VPTESTMDZrr VR512:$src1, VR512:$src2), GR16)>;
Modified: llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td?rev=235383&r1=235382&r2=235383&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td Tue Apr 21 08:13:46 2015
@@ -178,11 +178,13 @@ def X86ptest : SDNode<"X86ISD::PTEST",
def X86testp : SDNode<"X86ISD::TESTP", SDTX86CmpPTest>;
def X86kortest : SDNode<"X86ISD::KORTEST", SDTX86CmpPTest>;
def X86testm : SDNode<"X86ISD::TESTM", SDTypeProfile<1, 2, [SDTCisVec<0>,
- SDTCisVec<1>,
- SDTCisSameAs<2, 1>]>>;
+ SDTCisVec<1>, SDTCisSameAs<2, 1>,
+ SDTCVecEltisVT<0, i1>,
+ SDTCisSameNumEltsAs<0, 1>]>>;
def X86testnm : SDNode<"X86ISD::TESTNM", SDTypeProfile<1, 2, [SDTCisVec<0>,
- SDTCisVec<1>,
- SDTCisSameAs<2, 1>]>>;
+ SDTCisVec<1>, SDTCisSameAs<2, 1>,
+ SDTCVecEltisVT<0, i1>,
+ SDTCisSameNumEltsAs<0, 1>]>>;
def X86select : SDNode<"X86ISD::SELECT" , SDTSelect>;
def X86pmuludq : SDNode<"X86ISD::PMULUDQ",
Modified: llvm/trunk/test/MC/X86/avx512bw-encoding.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/avx512bw-encoding.s?rev=235383&r1=235382&r2=235383&view=diff
==============================================================================
--- llvm/trunk/test/MC/X86/avx512bw-encoding.s (original)
+++ llvm/trunk/test/MC/X86/avx512bw-encoding.s Tue Apr 21 08:13:46 2015
@@ -71,3 +71,195 @@
// CHECK: vpblendmw -8256(%rdx), %zmm20, %zmm26
// CHECK: encoding: [0x62,0x62,0xdd,0x40,0x66,0x92,0xc0,0xdf,0xff,0xff]
vpblendmw -8256(%rdx), %zmm20, %zmm26
+
+// CHECK: vptestmb %zmm19, %zmm17, %k5
+// CHECK: encoding: [0x62,0xb2,0x75,0x40,0x26,0xeb]
+ vptestmb %zmm19, %zmm17, %k5
+
+// CHECK: vptestmb %zmm19, %zmm17, %k5 {%k3}
+// CHECK: encoding: [0x62,0xb2,0x75,0x43,0x26,0xeb]
+ vptestmb %zmm19, %zmm17, %k5 {%k3}
+
+// CHECK: vptestmb (%rcx), %zmm17, %k5
+// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0x29]
+ vptestmb (%rcx), %zmm17, %k5
+
+// CHECK: vptestmb 291(%rax,%r14,8), %zmm17, %k5
+// CHECK: encoding: [0x62,0xb2,0x75,0x40,0x26,0xac,0xf0,0x23,0x01,0x00,0x00]
+ vptestmb 291(%rax,%r14,8), %zmm17, %k5
+
+// CHECK: vptestmb 8128(%rdx), %zmm17, %k5
+// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0x6a,0x7f]
+ vptestmb 8128(%rdx), %zmm17, %k5
+
+// CHECK: vptestmb 8192(%rdx), %zmm17, %k5
+// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0xaa,0x00,0x20,0x00,0x00]
+ vptestmb 8192(%rdx), %zmm17, %k5
+
+// CHECK: vptestmb -8192(%rdx), %zmm17, %k5
+// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0x6a,0x80]
+ vptestmb -8192(%rdx), %zmm17, %k5
+
+// CHECK: vptestmb -8256(%rdx), %zmm17, %k5
+// CHECK: encoding: [0x62,0xf2,0x75,0x40,0x26,0xaa,0xc0,0xdf,0xff,0xff]
+ vptestmb -8256(%rdx), %zmm17, %k5
+
+// CHECK: vptestmw %zmm19, %zmm29, %k4
+// CHECK: encoding: [0x62,0xb2,0x95,0x40,0x26,0xe3]
+ vptestmw %zmm19, %zmm29, %k4
+
+// CHECK: vptestmw %zmm19, %zmm29, %k4 {%k2}
+// CHECK: encoding: [0x62,0xb2,0x95,0x42,0x26,0xe3]
+ vptestmw %zmm19, %zmm29, %k4 {%k2}
+
+// CHECK: vptestmw (%rcx), %zmm29, %k4
+// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0x21]
+ vptestmw (%rcx), %zmm29, %k4
+
+// CHECK: vptestmw 291(%rax,%r14,8), %zmm29, %k4
+// CHECK: encoding: [0x62,0xb2,0x95,0x40,0x26,0xa4,0xf0,0x23,0x01,0x00,0x00]
+ vptestmw 291(%rax,%r14,8), %zmm29, %k4
+
+// CHECK: vptestmw 8128(%rdx), %zmm29, %k4
+// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0x62,0x7f]
+ vptestmw 8128(%rdx), %zmm29, %k4
+
+// CHECK: vptestmw 8192(%rdx), %zmm29, %k4
+// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0xa2,0x00,0x20,0x00,0x00]
+ vptestmw 8192(%rdx), %zmm29, %k4
+
+// CHECK: vptestmw -8192(%rdx), %zmm29, %k4
+// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0x62,0x80]
+ vptestmw -8192(%rdx), %zmm29, %k4
+
+// CHECK: vptestmw -8256(%rdx), %zmm29, %k4
+// CHECK: encoding: [0x62,0xf2,0x95,0x40,0x26,0xa2,0xc0,0xdf,0xff,0xff]
+ vptestmw -8256(%rdx), %zmm29, %k4
+
+// CHECK: vptestnmb %zmm23, %zmm24, %k2
+// CHECK: encoding: [0x62,0xb2,0x3e,0x40,0x26,0xd7]
+ vptestnmb %zmm23, %zmm24, %k2
+
+// CHECK: vptestnmb %zmm23, %zmm24, %k2 {%k7}
+// CHECK: encoding: [0x62,0xb2,0x3e,0x47,0x26,0xd7]
+ vptestnmb %zmm23, %zmm24, %k2 {%k7}
+
+// CHECK: vptestnmb (%rcx), %zmm24, %k2
+// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x11]
+ vptestnmb (%rcx), %zmm24, %k2
+
+// CHECK: vptestnmb 291(%rax,%r14,8), %zmm24, %k2
+// CHECK: encoding: [0x62,0xb2,0x3e,0x40,0x26,0x94,0xf0,0x23,0x01,0x00,0x00]
+ vptestnmb 291(%rax,%r14,8), %zmm24, %k2
+
+// CHECK: vptestnmb 8128(%rdx), %zmm24, %k2
+// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x52,0x7f]
+ vptestnmb 8128(%rdx), %zmm24, %k2
+
+// CHECK: vptestnmb 8192(%rdx), %zmm24, %k2
+// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x92,0x00,0x20,0x00,0x00]
+ vptestnmb 8192(%rdx), %zmm24, %k2
+
+// CHECK: vptestnmb -8192(%rdx), %zmm24, %k2
+// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x52,0x80]
+ vptestnmb -8192(%rdx), %zmm24, %k2
+
+// CHECK: vptestnmb -8256(%rdx), %zmm24, %k2
+// CHECK: encoding: [0x62,0xf2,0x3e,0x40,0x26,0x92,0xc0,0xdf,0xff,0xff]
+ vptestnmb -8256(%rdx), %zmm24, %k2
+
+// CHECK: vptestnmw %zmm27, %zmm18, %k4
+// CHECK: encoding: [0x62,0x92,0xee,0x40,0x26,0xe3]
+ vptestnmw %zmm27, %zmm18, %k4
+
+// CHECK: vptestnmw %zmm27, %zmm18, %k4 {%k5}
+// CHECK: encoding: [0x62,0x92,0xee,0x45,0x26,0xe3]
+ vptestnmw %zmm27, %zmm18, %k4 {%k5}
+
+// CHECK: vptestnmw (%rcx), %zmm18, %k4
+// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0x21]
+ vptestnmw (%rcx), %zmm18, %k4
+
+// CHECK: vptestnmw 291(%rax,%r14,8), %zmm18, %k4
+// CHECK: encoding: [0x62,0xb2,0xee,0x40,0x26,0xa4,0xf0,0x23,0x01,0x00,0x00]
+ vptestnmw 291(%rax,%r14,8), %zmm18, %k4
+
+// CHECK: vptestnmw 8128(%rdx), %zmm18, %k4
+// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0x62,0x7f]
+ vptestnmw 8128(%rdx), %zmm18, %k4
+
+// CHECK: vptestnmw 8192(%rdx), %zmm18, %k4
+// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0xa2,0x00,0x20,0x00,0x00]
+ vptestnmw 8192(%rdx), %zmm18, %k4
+
+// CHECK: vptestnmw -8192(%rdx), %zmm18, %k4
+// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0x62,0x80]
+ vptestnmw -8192(%rdx), %zmm18, %k4
+
+// CHECK: vptestnmw -8256(%rdx), %zmm18, %k4
+// CHECK: encoding: [0x62,0xf2,0xee,0x40,0x26,0xa2,0xc0,0xdf,0xff,0xff]
+ vptestnmw -8256(%rdx), %zmm18, %k4
+
+// CHECK: vptestnmb %zmm19, %zmm27, %k3
+// CHECK: encoding: [0x62,0xb2,0x26,0x40,0x26,0xdb]
+ vptestnmb %zmm19, %zmm27, %k3
+
+// CHECK: vptestnmb %zmm19, %zmm27, %k3 {%k2}
+// CHECK: encoding: [0x62,0xb2,0x26,0x42,0x26,0xdb]
+ vptestnmb %zmm19, %zmm27, %k3 {%k2}
+
+// CHECK: vptestnmb (%rcx), %zmm27, %k3
+// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x19]
+ vptestnmb (%rcx), %zmm27, %k3
+
+// CHECK: vptestnmb 4660(%rax,%r14,8), %zmm27, %k3
+// CHECK: encoding: [0x62,0xb2,0x26,0x40,0x26,0x9c,0xf0,0x34,0x12,0x00,0x00]
+ vptestnmb 4660(%rax,%r14,8), %zmm27, %k3
+
+// CHECK: vptestnmb 8128(%rdx), %zmm27, %k3
+// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x5a,0x7f]
+ vptestnmb 8128(%rdx), %zmm27, %k3
+
+// CHECK: vptestnmb 8192(%rdx), %zmm27, %k3
+// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x9a,0x00,0x20,0x00,0x00]
+ vptestnmb 8192(%rdx), %zmm27, %k3
+
+// CHECK: vptestnmb -8192(%rdx), %zmm27, %k3
+// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x5a,0x80]
+ vptestnmb -8192(%rdx), %zmm27, %k3
+
+// CHECK: vptestnmb -8256(%rdx), %zmm27, %k3
+// CHECK: encoding: [0x62,0xf2,0x26,0x40,0x26,0x9a,0xc0,0xdf,0xff,0xff]
+ vptestnmb -8256(%rdx), %zmm27, %k3
+
+// CHECK: vptestnmw %zmm21, %zmm17, %k2
+// CHECK: encoding: [0x62,0xb2,0xf6,0x40,0x26,0xd5]
+ vptestnmw %zmm21, %zmm17, %k2
+
+// CHECK: vptestnmw %zmm21, %zmm17, %k2 {%k4}
+// CHECK: encoding: [0x62,0xb2,0xf6,0x44,0x26,0xd5]
+ vptestnmw %zmm21, %zmm17, %k2 {%k4}
+
+// CHECK: vptestnmw (%rcx), %zmm17, %k2
+// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x11]
+ vptestnmw (%rcx), %zmm17, %k2
+
+// CHECK: vptestnmw 4660(%rax,%r14,8), %zmm17, %k2
+// CHECK: encoding: [0x62,0xb2,0xf6,0x40,0x26,0x94,0xf0,0x34,0x12,0x00,0x00]
+ vptestnmw 4660(%rax,%r14,8), %zmm17, %k2
+
+// CHECK: vptestnmw 8128(%rdx), %zmm17, %k2
+// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x52,0x7f]
+ vptestnmw 8128(%rdx), %zmm17, %k2
+
+// CHECK: vptestnmw 8192(%rdx), %zmm17, %k2
+// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x92,0x00,0x20,0x00,0x00]
+ vptestnmw 8192(%rdx), %zmm17, %k2
+
+// CHECK: vptestnmw -8192(%rdx), %zmm17, %k2
+// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x52,0x80]
+ vptestnmw -8192(%rdx), %zmm17, %k2
+
+// CHECK: vptestnmw -8256(%rdx), %zmm17, %k2
+// CHECK: encoding: [0x62,0xf2,0xf6,0x40,0x26,0x92,0xc0,0xdf,0xff,0xff]
+ vptestnmw -8256(%rdx), %zmm17, %k2
Modified: llvm/trunk/test/MC/X86/avx512vl-encoding.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/X86/avx512vl-encoding.s?rev=235383&r1=235382&r2=235383&view=diff
==============================================================================
--- llvm/trunk/test/MC/X86/avx512vl-encoding.s (original)
+++ llvm/trunk/test/MC/X86/avx512vl-encoding.s Tue Apr 21 08:13:46 2015
@@ -447,3 +447,415 @@
// CHECK: vpblendmq -1032(%rdx){1to4}, %ymm23, %ymm21
// CHECK: encoding: [0x62,0xe2,0xc5,0x30,0x64,0xaa,0xf8,0xfb,0xff,0xff]
vpblendmq -1032(%rdx){1to4}, %ymm23, %ymm21
+
+// CHECK: vptestmd %xmm20, %xmm20, %k2
+// CHECK: encoding: [0x62,0xb2,0x5d,0x00,0x27,0xd4]
+ vptestmd %xmm20, %xmm20, %k2
+
+// CHECK: vptestmd %xmm20, %xmm20, %k2 {%k7}
+// CHECK: encoding: [0x62,0xb2,0x5d,0x07,0x27,0xd4]
+ vptestmd %xmm20, %xmm20, %k2 {%k7}
+
+// CHECK: vptestmd (%rcx), %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x00,0x27,0x11]
+ vptestmd (%rcx), %xmm20, %k2
+
+// CHECK: vptestmd 291(%rax,%r14,8), %xmm20, %k2
+// CHECK: encoding: [0x62,0xb2,0x5d,0x00,0x27,0x94,0xf0,0x23,0x01,0x00,0x00]
+ vptestmd 291(%rax,%r14,8), %xmm20, %k2
+
+// CHECK: vptestmd (%rcx){1to4}, %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x10,0x27,0x11]
+ vptestmd (%rcx){1to4}, %xmm20, %k2
+
+// CHECK: vptestmd 2032(%rdx), %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x00,0x27,0x52,0x7f]
+ vptestmd 2032(%rdx), %xmm20, %k2
+
+// CHECK: vptestmd 2048(%rdx), %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x00,0x27,0x92,0x00,0x08,0x00,0x00]
+ vptestmd 2048(%rdx), %xmm20, %k2
+
+// CHECK: vptestmd -2048(%rdx), %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x00,0x27,0x52,0x80]
+ vptestmd -2048(%rdx), %xmm20, %k2
+
+// CHECK: vptestmd -2064(%rdx), %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x00,0x27,0x92,0xf0,0xf7,0xff,0xff]
+ vptestmd -2064(%rdx), %xmm20, %k2
+
+// CHECK: vptestmd 508(%rdx){1to4}, %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x10,0x27,0x52,0x7f]
+ vptestmd 508(%rdx){1to4}, %xmm20, %k2
+
+// CHECK: vptestmd 512(%rdx){1to4}, %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x10,0x27,0x92,0x00,0x02,0x00,0x00]
+ vptestmd 512(%rdx){1to4}, %xmm20, %k2
+
+// CHECK: vptestmd -512(%rdx){1to4}, %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x10,0x27,0x52,0x80]
+ vptestmd -512(%rdx){1to4}, %xmm20, %k2
+
+// CHECK: vptestmd -516(%rdx){1to4}, %xmm20, %k2
+// CHECK: encoding: [0x62,0xf2,0x5d,0x10,0x27,0x92,0xfc,0xfd,0xff,0xff]
+ vptestmd -516(%rdx){1to4}, %xmm20, %k2
+
+// CHECK: vptestmd %ymm17, %ymm20, %k3
+// CHECK: encoding: [0x62,0xb2,0x5d,0x20,0x27,0xd9]
+ vptestmd %ymm17, %ymm20, %k3
+
+// CHECK: vptestmd %ymm17, %ymm20, %k3 {%k5}
+// CHECK: encoding: [0x62,0xb2,0x5d,0x25,0x27,0xd9]
+ vptestmd %ymm17, %ymm20, %k3 {%k5}
+
+// CHECK: vptestmd (%rcx), %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x20,0x27,0x19]
+ vptestmd (%rcx), %ymm20, %k3
+
+// CHECK: vptestmd 291(%rax,%r14,8), %ymm20, %k3
+// CHECK: encoding: [0x62,0xb2,0x5d,0x20,0x27,0x9c,0xf0,0x23,0x01,0x00,0x00]
+ vptestmd 291(%rax,%r14,8), %ymm20, %k3
+
+// CHECK: vptestmd (%rcx){1to8}, %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x30,0x27,0x19]
+ vptestmd (%rcx){1to8}, %ymm20, %k3
+
+// CHECK: vptestmd 4064(%rdx), %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x20,0x27,0x5a,0x7f]
+ vptestmd 4064(%rdx), %ymm20, %k3
+
+// CHECK: vptestmd 4096(%rdx), %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x20,0x27,0x9a,0x00,0x10,0x00,0x00]
+ vptestmd 4096(%rdx), %ymm20, %k3
+
+// CHECK: vptestmd -4096(%rdx), %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x20,0x27,0x5a,0x80]
+ vptestmd -4096(%rdx), %ymm20, %k3
+
+// CHECK: vptestmd -4128(%rdx), %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x20,0x27,0x9a,0xe0,0xef,0xff,0xff]
+ vptestmd -4128(%rdx), %ymm20, %k3
+
+// CHECK: vptestmd 508(%rdx){1to8}, %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x30,0x27,0x5a,0x7f]
+ vptestmd 508(%rdx){1to8}, %ymm20, %k3
+
+// CHECK: vptestmd 512(%rdx){1to8}, %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x30,0x27,0x9a,0x00,0x02,0x00,0x00]
+ vptestmd 512(%rdx){1to8}, %ymm20, %k3
+
+// CHECK: vptestmd -512(%rdx){1to8}, %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x30,0x27,0x5a,0x80]
+ vptestmd -512(%rdx){1to8}, %ymm20, %k3
+
+// CHECK: vptestmd -516(%rdx){1to8}, %ymm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5d,0x30,0x27,0x9a,0xfc,0xfd,0xff,0xff]
+ vptestmd -516(%rdx){1to8}, %ymm20, %k3
+
+// CHECK: vptestmq %xmm28, %xmm22, %k4
+// CHECK: encoding: [0x62,0x92,0xcd,0x00,0x27,0xe4]
+ vptestmq %xmm28, %xmm22, %k4
+
+// CHECK: vptestmq %xmm28, %xmm22, %k4 {%k3}
+// CHECK: encoding: [0x62,0x92,0xcd,0x03,0x27,0xe4]
+ vptestmq %xmm28, %xmm22, %k4 {%k3}
+
+// CHECK: vptestmq (%rcx), %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x00,0x27,0x21]
+ vptestmq (%rcx), %xmm22, %k4
+
+// CHECK: vptestmq 291(%rax,%r14,8), %xmm22, %k4
+// CHECK: encoding: [0x62,0xb2,0xcd,0x00,0x27,0xa4,0xf0,0x23,0x01,0x00,0x00]
+ vptestmq 291(%rax,%r14,8), %xmm22, %k4
+
+// CHECK: vptestmq (%rcx){1to2}, %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x10,0x27,0x21]
+ vptestmq (%rcx){1to2}, %xmm22, %k4
+
+// CHECK: vptestmq 2032(%rdx), %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x00,0x27,0x62,0x7f]
+ vptestmq 2032(%rdx), %xmm22, %k4
+
+// CHECK: vptestmq 2048(%rdx), %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x00,0x27,0xa2,0x00,0x08,0x00,0x00]
+ vptestmq 2048(%rdx), %xmm22, %k4
+
+// CHECK: vptestmq -2048(%rdx), %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x00,0x27,0x62,0x80]
+ vptestmq -2048(%rdx), %xmm22, %k4
+
+// CHECK: vptestmq -2064(%rdx), %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x00,0x27,0xa2,0xf0,0xf7,0xff,0xff]
+ vptestmq -2064(%rdx), %xmm22, %k4
+
+// CHECK: vptestmq 1016(%rdx){1to2}, %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x10,0x27,0x62,0x7f]
+ vptestmq 1016(%rdx){1to2}, %xmm22, %k4
+
+// CHECK: vptestmq 1024(%rdx){1to2}, %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x10,0x27,0xa2,0x00,0x04,0x00,0x00]
+ vptestmq 1024(%rdx){1to2}, %xmm22, %k4
+
+// CHECK: vptestmq -1024(%rdx){1to2}, %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x10,0x27,0x62,0x80]
+ vptestmq -1024(%rdx){1to2}, %xmm22, %k4
+
+// CHECK: vptestmq -1032(%rdx){1to2}, %xmm22, %k4
+// CHECK: encoding: [0x62,0xf2,0xcd,0x10,0x27,0xa2,0xf8,0xfb,0xff,0xff]
+ vptestmq -1032(%rdx){1to2}, %xmm22, %k4
+
+// CHECK: vptestmq %ymm20, %ymm21, %k3
+// CHECK: encoding: [0x62,0xb2,0xd5,0x20,0x27,0xdc]
+ vptestmq %ymm20, %ymm21, %k3
+
+// CHECK: vptestmq %ymm20, %ymm21, %k3 {%k7}
+// CHECK: encoding: [0x62,0xb2,0xd5,0x27,0x27,0xdc]
+ vptestmq %ymm20, %ymm21, %k3 {%k7}
+
+// CHECK: vptestmq (%rcx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x20,0x27,0x19]
+ vptestmq (%rcx), %ymm21, %k3
+
+// CHECK: vptestmq 291(%rax,%r14,8), %ymm21, %k3
+// CHECK: encoding: [0x62,0xb2,0xd5,0x20,0x27,0x9c,0xf0,0x23,0x01,0x00,0x00]
+ vptestmq 291(%rax,%r14,8), %ymm21, %k3
+
+// CHECK: vptestmq (%rcx){1to4}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x30,0x27,0x19]
+ vptestmq (%rcx){1to4}, %ymm21, %k3
+
+// CHECK: vptestmq 4064(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x20,0x27,0x5a,0x7f]
+ vptestmq 4064(%rdx), %ymm21, %k3
+
+// CHECK: vptestmq 4096(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x20,0x27,0x9a,0x00,0x10,0x00,0x00]
+ vptestmq 4096(%rdx), %ymm21, %k3
+
+// CHECK: vptestmq -4096(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x20,0x27,0x5a,0x80]
+ vptestmq -4096(%rdx), %ymm21, %k3
+
+// CHECK: vptestmq -4128(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x20,0x27,0x9a,0xe0,0xef,0xff,0xff]
+ vptestmq -4128(%rdx), %ymm21, %k3
+
+// CHECK: vptestmq 1016(%rdx){1to4}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x30,0x27,0x5a,0x7f]
+ vptestmq 1016(%rdx){1to4}, %ymm21, %k3
+
+// CHECK: vptestmq 1024(%rdx){1to4}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x30,0x27,0x9a,0x00,0x04,0x00,0x00]
+ vptestmq 1024(%rdx){1to4}, %ymm21, %k3
+
+// CHECK: vptestmq -1024(%rdx){1to4}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0xd5,0x30,0x27,0x5a,0x80]
+ vptestmq -1024(%rdx){1to4}, %ymm21, %k3
+
+// CHECK: vptestnmd %xmm22, %xmm20, %k3
+// CHECK: encoding: [0x62,0xb2,0x5e,0x00,0x27,0xde]
+ vptestnmd %xmm22, %xmm20, %k3
+
+// CHECK: vptestnmd %xmm22, %xmm20, %k3 {%k7}
+// CHECK: encoding: [0x62,0xb2,0x5e,0x07,0x27,0xde]
+ vptestnmd %xmm22, %xmm20, %k3 {%k7}
+
+// CHECK: vptestnmd (%rcx), %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x00,0x27,0x19]
+ vptestnmd (%rcx), %xmm20, %k3
+
+// CHECK: vptestnmd 291(%rax,%r14,8), %xmm20, %k3
+// CHECK: encoding: [0x62,0xb2,0x5e,0x00,0x27,0x9c,0xf0,0x23,0x01,0x00,0x00]
+ vptestnmd 291(%rax,%r14,8), %xmm20, %k3
+
+// CHECK: vptestnmd (%rcx){1to4}, %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x10,0x27,0x19]
+ vptestnmd (%rcx){1to4}, %xmm20, %k3
+
+// CHECK: vptestnmd 2032(%rdx), %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x00,0x27,0x5a,0x7f]
+ vptestnmd 2032(%rdx), %xmm20, %k3
+
+// CHECK: vptestnmd 2048(%rdx), %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x00,0x27,0x9a,0x00,0x08,0x00,0x00]
+ vptestnmd 2048(%rdx), %xmm20, %k3
+
+// CHECK: vptestnmd -2048(%rdx), %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x00,0x27,0x5a,0x80]
+ vptestnmd -2048(%rdx), %xmm20, %k3
+
+// CHECK: vptestnmd -2064(%rdx), %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x00,0x27,0x9a,0xf0,0xf7,0xff,0xff]
+ vptestnmd -2064(%rdx), %xmm20, %k3
+
+// CHECK: vptestnmd 508(%rdx){1to4}, %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x10,0x27,0x5a,0x7f]
+ vptestnmd 508(%rdx){1to4}, %xmm20, %k3
+
+// CHECK: vptestnmd 512(%rdx){1to4}, %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x10,0x27,0x9a,0x00,0x02,0x00,0x00]
+ vptestnmd 512(%rdx){1to4}, %xmm20, %k3
+
+// CHECK: vptestnmd -512(%rdx){1to4}, %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x10,0x27,0x5a,0x80]
+ vptestnmd -512(%rdx){1to4}, %xmm20, %k3
+
+// CHECK: vptestnmd -516(%rdx){1to4}, %xmm20, %k3
+// CHECK: encoding: [0x62,0xf2,0x5e,0x10,0x27,0x9a,0xfc,0xfd,0xff,0xff]
+ vptestnmd -516(%rdx){1to4}, %xmm20, %k3
+
+// CHECK: vptestnmd %ymm23, %ymm21, %k3
+// CHECK: encoding: [0x62,0xb2,0x56,0x20,0x27,0xdf]
+ vptestnmd %ymm23, %ymm21, %k3
+
+// CHECK: vptestnmd %ymm23, %ymm21, %k3 {%k7}
+// CHECK: encoding: [0x62,0xb2,0x56,0x27,0x27,0xdf]
+ vptestnmd %ymm23, %ymm21, %k3 {%k7}
+
+// CHECK: vptestnmd (%rcx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x20,0x27,0x19]
+ vptestnmd (%rcx), %ymm21, %k3
+
+// CHECK: vptestnmd 291(%rax,%r14,8), %ymm21, %k3
+// CHECK: encoding: [0x62,0xb2,0x56,0x20,0x27,0x9c,0xf0,0x23,0x01,0x00,0x00]
+ vptestnmd 291(%rax,%r14,8), %ymm21, %k3
+
+// CHECK: vptestnmd (%rcx){1to8}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x30,0x27,0x19]
+ vptestnmd (%rcx){1to8}, %ymm21, %k3
+
+// CHECK: vptestnmd 4064(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x20,0x27,0x5a,0x7f]
+ vptestnmd 4064(%rdx), %ymm21, %k3
+
+// CHECK: vptestnmd 4096(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x20,0x27,0x9a,0x00,0x10,0x00,0x00]
+ vptestnmd 4096(%rdx), %ymm21, %k3
+
+// CHECK: vptestnmd -4096(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x20,0x27,0x5a,0x80]
+ vptestnmd -4096(%rdx), %ymm21, %k3
+
+// CHECK: vptestnmd -4128(%rdx), %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x20,0x27,0x9a,0xe0,0xef,0xff,0xff]
+ vptestnmd -4128(%rdx), %ymm21, %k3
+
+// CHECK: vptestnmd 508(%rdx){1to8}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x30,0x27,0x5a,0x7f]
+ vptestnmd 508(%rdx){1to8}, %ymm21, %k3
+
+// CHECK: vptestnmd 512(%rdx){1to8}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x30,0x27,0x9a,0x00,0x02,0x00,0x00]
+ vptestnmd 512(%rdx){1to8}, %ymm21, %k3
+
+// CHECK: vptestnmd -512(%rdx){1to8}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x30,0x27,0x5a,0x80]
+ vptestnmd -512(%rdx){1to8}, %ymm21, %k3
+
+// CHECK: vptestnmd -516(%rdx){1to8}, %ymm21, %k3
+// CHECK: encoding: [0x62,0xf2,0x56,0x30,0x27,0x9a,0xfc,0xfd,0xff,0xff]
+ vptestnmd -516(%rdx){1to8}, %ymm21, %k3
+
+// CHECK: vptestnmq %xmm21, %xmm20, %k5
+// CHECK: encoding: [0x62,0xb2,0xde,0x00,0x27,0xed]
+ vptestnmq %xmm21, %xmm20, %k5
+
+// CHECK: vptestnmq %xmm21, %xmm20, %k5 {%k5}
+// CHECK: encoding: [0x62,0xb2,0xde,0x05,0x27,0xed]
+ vptestnmq %xmm21, %xmm20, %k5 {%k5}
+
+// CHECK: vptestnmq (%rcx), %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x00,0x27,0x29]
+ vptestnmq (%rcx), %xmm20, %k5
+
+// CHECK: vptestnmq 291(%rax,%r14,8), %xmm20, %k5
+// CHECK: encoding: [0x62,0xb2,0xde,0x00,0x27,0xac,0xf0,0x23,0x01,0x00,0x00]
+ vptestnmq 291(%rax,%r14,8), %xmm20, %k5
+
+// CHECK: vptestnmq (%rcx){1to2}, %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x10,0x27,0x29]
+ vptestnmq (%rcx){1to2}, %xmm20, %k5
+
+// CHECK: vptestnmq 2032(%rdx), %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x00,0x27,0x6a,0x7f]
+ vptestnmq 2032(%rdx), %xmm20, %k5
+
+// CHECK: vptestnmq 2048(%rdx), %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x00,0x27,0xaa,0x00,0x08,0x00,0x00]
+ vptestnmq 2048(%rdx), %xmm20, %k5
+
+// CHECK: vptestnmq -2048(%rdx), %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x00,0x27,0x6a,0x80]
+ vptestnmq -2048(%rdx), %xmm20, %k5
+
+// CHECK: vptestnmq -2064(%rdx), %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x00,0x27,0xaa,0xf0,0xf7,0xff,0xff]
+ vptestnmq -2064(%rdx), %xmm20, %k5
+
+// CHECK: vptestnmq 1016(%rdx){1to2}, %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x10,0x27,0x6a,0x7f]
+ vptestnmq 1016(%rdx){1to2}, %xmm20, %k5
+
+// CHECK: vptestnmq 1024(%rdx){1to2}, %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x10,0x27,0xaa,0x00,0x04,0x00,0x00]
+ vptestnmq 1024(%rdx){1to2}, %xmm20, %k5
+
+// CHECK: vptestnmq -1024(%rdx){1to2}, %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x10,0x27,0x6a,0x80]
+ vptestnmq -1024(%rdx){1to2}, %xmm20, %k5
+
+// CHECK: vptestnmq -1032(%rdx){1to2}, %xmm20, %k5
+// CHECK: encoding: [0x62,0xf2,0xde,0x10,0x27,0xaa,0xf8,0xfb,0xff,0xff]
+ vptestnmq -1032(%rdx){1to2}, %xmm20, %k5
+
+// CHECK: vptestnmq %ymm21, %ymm24, %k4
+// CHECK: encoding: [0x62,0xb2,0xbe,0x20,0x27,0xe5]
+ vptestnmq %ymm21, %ymm24, %k4
+
+// CHECK: vptestnmq %ymm21, %ymm24, %k4 {%k3}
+// CHECK: encoding: [0x62,0xb2,0xbe,0x23,0x27,0xe5]
+ vptestnmq %ymm21, %ymm24, %k4 {%k3}
+
+// CHECK: vptestnmq (%rcx), %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x20,0x27,0x21]
+ vptestnmq (%rcx), %ymm24, %k4
+
+// CHECK: vptestnmq 291(%rax,%r14,8), %ymm24, %k4
+// CHECK: encoding: [0x62,0xb2,0xbe,0x20,0x27,0xa4,0xf0,0x23,0x01,0x00,0x00]
+ vptestnmq 291(%rax,%r14,8), %ymm24, %k4
+
+// CHECK: vptestnmq (%rcx){1to4}, %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x30,0x27,0x21]
+ vptestnmq (%rcx){1to4}, %ymm24, %k4
+
+// CHECK: vptestnmq 4064(%rdx), %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x20,0x27,0x62,0x7f]
+ vptestnmq 4064(%rdx), %ymm24, %k4
+
+// CHECK: vptestnmq 4096(%rdx), %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x20,0x27,0xa2,0x00,0x10,0x00,0x00]
+ vptestnmq 4096(%rdx), %ymm24, %k4
+
+// CHECK: vptestnmq -4096(%rdx), %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x20,0x27,0x62,0x80]
+ vptestnmq -4096(%rdx), %ymm24, %k4
+
+// CHECK: vptestnmq -4128(%rdx), %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x20,0x27,0xa2,0xe0,0xef,0xff,0xff]
+ vptestnmq -4128(%rdx), %ymm24, %k4
+
+// CHECK: vptestnmq 1016(%rdx){1to4}, %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x30,0x27,0x62,0x7f]
+ vptestnmq 1016(%rdx){1to4}, %ymm24, %k4
+
+// CHECK: vptestnmq 1024(%rdx){1to4}, %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x30,0x27,0xa2,0x00,0x04,0x00,0x00]
+ vptestnmq 1024(%rdx){1to4}, %ymm24, %k4
+
+// CHECK: vptestnmq -1024(%rdx){1to4}, %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x30,0x27,0x62,0x80]
+ vptestnmq -1024(%rdx){1to4}, %ymm24, %k4
+
+// CHECK: vptestnmq -1032(%rdx){1to4}, %ymm24, %k4
+// CHECK: encoding: [0x62,0xf2,0xbe,0x30,0x27,0xa2,0xf8,0xfb,0xff,0xff]
+ vptestnmq -1032(%rdx){1to4}, %ymm24, %k4
Modified: llvm/trunk/utils/TableGen/X86DisassemblerTables.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/X86DisassemblerTables.cpp?rev=235383&r1=235382&r2=235383&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/X86DisassemblerTables.cpp (original)
+++ llvm/trunk/utils/TableGen/X86DisassemblerTables.cpp Tue Apr 21 08:13:46 2015
@@ -270,12 +270,16 @@ static inline bool inheritsFrom(Instruct
return false;
case IC_EVEX_L_KZ:
case IC_EVEX_L_XS_KZ:
+ case IC_EVEX_L_XS_B:
+ case IC_EVEX_L_XS_K_B:
case IC_EVEX_L_XD_KZ:
case IC_EVEX_L_OPSIZE_KZ:
case IC_EVEX_L_OPSIZE_KZ_B:
return false;
case IC_EVEX_L_W_K:
case IC_EVEX_L_W_XS_K:
+ case IC_EVEX_L_W_XS_B:
+ case IC_EVEX_L_W_XS_K_B:
case IC_EVEX_L_W_XD_K:
case IC_EVEX_L_W_OPSIZE_K:
case IC_EVEX_L_W_OPSIZE_B:
@@ -291,6 +295,7 @@ static inline bool inheritsFrom(Instruct
case IC_EVEX_L2_K_B:
case IC_EVEX_L2_KZ_B:
case IC_EVEX_L2_XS_K:
+ case IC_EVEX_L2_XS_K_B:
case IC_EVEX_L2_XS_B:
case IC_EVEX_L2_XD_B:
case IC_EVEX_L2_XD_K:
@@ -306,6 +311,8 @@ static inline bool inheritsFrom(Instruct
case IC_EVEX_L2_W_K:
case IC_EVEX_L2_W_B:
case IC_EVEX_L2_W_XS_K:
+ case IC_EVEX_L2_W_XS_B:
+ case IC_EVEX_L2_W_XS_K_B:
case IC_EVEX_L2_W_XD_K:
case IC_EVEX_L2_W_XD_B:
case IC_EVEX_L2_W_OPSIZE_K:
More information about the llvm-commits
mailing list