[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