diff options
| -rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 17 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 42 | ||||
| -rw-r--r-- | llvm/test/MC/X86/AVX512F_SCALAR-64.s | 176 | 
3 files changed, 115 insertions, 120 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 6786d69f9fe..fa079242e75 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -3013,6 +3013,23 @@ unsigned X86AsmParser::checkTargetMatchPredicate(MCInst &Inst) {        (MCID.TSFlags & X86II::EncodingMask) != X86II::VEX)      return Match_Unsupported; +  // These instructions match ambiguously with their VEX encoded counterparts +  // and appear first in the matching table. Reject them unless we're forcing +  // EVEX encoding. +  // FIXME: We really need a way to break the ambiguity. +  switch (Opc) { +  case X86::VCVTSD2SIZrm_Int: +  case X86::VCVTSD2SI64Zrm_Int: +  case X86::VCVTSS2SIZrm_Int: +  case X86::VCVTSS2SI64Zrm_Int: +  case X86::VCVTTSD2SIZrm:   case X86::VCVTTSD2SIZrm_Int: +  case X86::VCVTTSD2SI64Zrm: case X86::VCVTTSD2SI64Zrm_Int: +  case X86::VCVTTSS2SIZrm:   case X86::VCVTTSS2SIZrm_Int: +  case X86::VCVTTSS2SI64Zrm: case X86::VCVTTSS2SI64Zrm_Int: +    if (ForcedVEXEncoding != VEXEncoding_EVEX) +      return Match_Unsupported; +  } +    return Match_Success;  } diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index 28661b56bdf..a8158448151 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -7442,8 +7442,7 @@ multiclass avx512_cvt_s_int_round<bits<8> opc, X86VectorVTInfo SrcVT,                                    X86VectorVTInfo DstVT, SDNode OpNode,                                    SDNode OpNodeRnd,                                    X86FoldableSchedWrite sched, string asm, -                                  string aliasStr, -                                  bit CodeGenOnly = 1> { +                                  string aliasStr> {    let Predicates = [HasAVX512] in {      def rr_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst), (ins SrcVT.RC:$src),                  !strconcat(asm,"\t{$src, $dst|$dst, $src}"), @@ -7454,7 +7453,6 @@ multiclass avx512_cvt_s_int_round<bits<8> opc, X86VectorVTInfo SrcVT,                   [(set DstVT.RC:$dst, (OpNodeRnd (SrcVT.VT SrcVT.RC:$src),(i32 timm:$rc)))]>,                   EVEX, VEX_LIG, EVEX_B, EVEX_RC,                   Sched<[sched]>; -    let isCodeGenOnly = CodeGenOnly, ForceDisassemble = CodeGenOnly in      def rm_Int : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst), (ins SrcVT.IntScalarMemOp:$src),                  !strconcat(asm,"\t{$src, $dst|$dst, $src}"),                  [(set DstVT.RC:$dst, (OpNode @@ -7466,14 +7464,6 @@ multiclass avx512_cvt_s_int_round<bits<8> opc, X86VectorVTInfo SrcVT,            (!cast<Instruction>(NAME # "rr_Int") DstVT.RC:$dst, SrcVT.RC:$src), 0, "att">;    def : InstAlias<"v" # asm # aliasStr # "\t{$rc, $src, $dst|$dst, $src, $rc}",            (!cast<Instruction>(NAME # "rrb_Int") DstVT.RC:$dst, SrcVT.RC:$src, AVX512RC:$rc), 0, "att">; -} - -multiclass avx512_cvt_s_int_round_aliases<bits<8> opc, X86VectorVTInfo SrcVT, -                                          X86VectorVTInfo DstVT, SDNode OpNode, -                                          SDNode OpNodeRnd, -                                          X86FoldableSchedWrite sched, string asm, -                                          string aliasStr> : -  avx512_cvt_s_int_round<opc, SrcVT, DstVT, OpNode, OpNodeRnd, sched, asm, aliasStr, 0> {    def : InstAlias<"v" # asm # aliasStr # "\t{$src, $dst|$dst, $src}",            (!cast<Instruction>(NAME # "rm_Int") DstVT.RC:$dst,                                            SrcVT.IntScalarMemOp:$src), 0, "att">; @@ -7486,10 +7476,10 @@ defm VCVTSS2SIZ: avx512_cvt_s_int_round<0x2D, f32x_info, i32x_info,X86cvts2si,  defm VCVTSS2SI64Z: avx512_cvt_s_int_round<0x2D, f32x_info, i64x_info, X86cvts2si,                                     X86cvts2siRnd, WriteCvtSS2I, "cvtss2si", "{q}">,                                     XS, VEX_W, EVEX_CD8<32, CD8VT1>; -defm VCVTSS2USIZ: avx512_cvt_s_int_round_aliases<0x79, f32x_info, i32x_info, X86cvts2usi, +defm VCVTSS2USIZ: avx512_cvt_s_int_round<0x79, f32x_info, i32x_info, X86cvts2usi,                                     X86cvts2usiRnd, WriteCvtSS2I, "cvtss2usi", "{l}">,                                     XS, EVEX_CD8<32, CD8VT1>; -defm VCVTSS2USI64Z: avx512_cvt_s_int_round_aliases<0x79, f32x_info, i64x_info, X86cvts2usi, +defm VCVTSS2USI64Z: avx512_cvt_s_int_round<0x79, f32x_info, i64x_info, X86cvts2usi,                                     X86cvts2usiRnd, WriteCvtSS2I, "cvtss2usi", "{q}">,                                     XS, VEX_W, EVEX_CD8<32, CD8VT1>;  defm VCVTSD2SIZ: avx512_cvt_s_int_round<0x2D, f64x_info, i32x_info, X86cvts2si, @@ -7498,10 +7488,10 @@ defm VCVTSD2SIZ: avx512_cvt_s_int_round<0x2D, f64x_info, i32x_info, X86cvts2si,  defm VCVTSD2SI64Z: avx512_cvt_s_int_round<0x2D, f64x_info, i64x_info, X86cvts2si,                                     X86cvts2siRnd, WriteCvtSD2I, "cvtsd2si", "{q}">,                                     XD, VEX_W, EVEX_CD8<64, CD8VT1>; -defm VCVTSD2USIZ:   avx512_cvt_s_int_round_aliases<0x79, f64x_info, i32x_info, X86cvts2usi, +defm VCVTSD2USIZ:   avx512_cvt_s_int_round<0x79, f64x_info, i32x_info, X86cvts2usi,                                     X86cvts2usiRnd, WriteCvtSD2I, "cvtsd2usi", "{l}">,                                     XD, EVEX_CD8<64, CD8VT1>; -defm VCVTSD2USI64Z: avx512_cvt_s_int_round_aliases<0x79, f64x_info, i64x_info, X86cvts2usi, +defm VCVTSD2USI64Z: avx512_cvt_s_int_round<0x79, f64x_info, i64x_info, X86cvts2usi,                                     X86cvts2usiRnd, WriteCvtSD2I, "cvtsd2usi", "{q}">,                                     XD, VEX_W, EVEX_CD8<64, CD8VT1>; @@ -7593,8 +7583,7 @@ def : Pat<(v2f64 (X86Movsd  multiclass avx512_cvt_s_all<bits<8> opc, string asm, X86VectorVTInfo _SrcRC,                              X86VectorVTInfo _DstRC, SDNode OpNode,                              SDNode OpNodeInt, SDNode OpNodeSAE, -                            X86FoldableSchedWrite sched, string aliasStr, -                            bit CodeGenOnly = 1>{ +                            X86FoldableSchedWrite sched, string aliasStr>{  let Predicates = [HasAVX512] in {    let isCodeGenOnly = 1 in {    def rr : AVX512<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.FRC:$src), @@ -7615,7 +7604,6 @@ let Predicates = [HasAVX512] in {              !strconcat(asm,"\t{{sae}, $src, $dst|$dst, $src, {sae}}"),              [(set _DstRC.RC:$dst, (OpNodeSAE (_SrcRC.VT _SrcRC.RC:$src)))]>,                                    EVEX, VEX_LIG, EVEX_B, Sched<[sched]>; -  let isCodeGenOnly = CodeGenOnly, ForceDisassemble = CodeGenOnly in    def rm_Int : AVX512<opc, MRMSrcMem, (outs _DstRC.RC:$dst),                (ins _SrcRC.IntScalarMemOp:$src),                !strconcat(asm,"\t{$src, $dst|$dst, $src}"), @@ -7628,16 +7616,6 @@ let Predicates = [HasAVX512] in {            (!cast<Instruction>(NAME # "rr_Int") _DstRC.RC:$dst, _SrcRC.RC:$src), 0, "att">;    def : InstAlias<asm # aliasStr # "\t{{sae}, $src, $dst|$dst, $src, {sae}}",            (!cast<Instruction>(NAME # "rrb_Int") _DstRC.RC:$dst, _SrcRC.RC:$src), 0, "att">; -} - -multiclass avx512_cvt_s_all_unsigned<bits<8> opc, string asm, -                                     X86VectorVTInfo _SrcRC, -                                     X86VectorVTInfo _DstRC, SDNode OpNode, -                                     SDNode OpNodeInt, SDNode OpNodeSAE, -                                     X86FoldableSchedWrite sched, -                                     string aliasStr> : -  avx512_cvt_s_all<opc, asm, _SrcRC, _DstRC, OpNode, OpNodeInt, OpNodeSAE, sched, -                   aliasStr, 0> {    def : InstAlias<asm # aliasStr # "\t{$src, $dst|$dst, $src}",            (!cast<Instruction>(NAME # "rm_Int") _DstRC.RC:$dst,                                            _SrcRC.IntScalarMemOp:$src), 0, "att">; @@ -7656,16 +7634,16 @@ defm VCVTTSD2SI64Z: avx512_cvt_s_all<0x2C, "vcvttsd2si", f64x_info, i64x_info,                          fp_to_sint, X86cvtts2Int, X86cvtts2IntSAE, WriteCvtSD2I,                          "{q}">, VEX_W, XD, EVEX_CD8<64, CD8VT1>; -defm VCVTTSS2USIZ: avx512_cvt_s_all_unsigned<0x78, "vcvttss2usi", f32x_info, i32x_info, +defm VCVTTSS2USIZ: avx512_cvt_s_all<0x78, "vcvttss2usi", f32x_info, i32x_info,                          fp_to_uint, X86cvtts2UInt, X86cvtts2UIntSAE, WriteCvtSS2I,                          "{l}">, XS, EVEX_CD8<32, CD8VT1>; -defm VCVTTSS2USI64Z: avx512_cvt_s_all_unsigned<0x78, "vcvttss2usi", f32x_info, i64x_info, +defm VCVTTSS2USI64Z: avx512_cvt_s_all<0x78, "vcvttss2usi", f32x_info, i64x_info,                          fp_to_uint, X86cvtts2UInt, X86cvtts2UIntSAE, WriteCvtSS2I,                          "{q}">, XS,VEX_W, EVEX_CD8<32, CD8VT1>; -defm VCVTTSD2USIZ: avx512_cvt_s_all_unsigned<0x78, "vcvttsd2usi", f64x_info, i32x_info, +defm VCVTTSD2USIZ: avx512_cvt_s_all<0x78, "vcvttsd2usi", f64x_info, i32x_info,                          fp_to_uint, X86cvtts2UInt, X86cvtts2UIntSAE, WriteCvtSD2I,                          "{l}">, XD, EVEX_CD8<64, CD8VT1>; -defm VCVTTSD2USI64Z: avx512_cvt_s_all_unsigned<0x78, "vcvttsd2usi", f64x_info, i64x_info, +defm VCVTTSD2USI64Z: avx512_cvt_s_all<0x78, "vcvttsd2usi", f64x_info, i64x_info,                          fp_to_uint, X86cvtts2UInt, X86cvtts2UIntSAE, WriteCvtSD2I,                          "{q}">, XD, VEX_W, EVEX_CD8<64, CD8VT1>; diff --git a/llvm/test/MC/X86/AVX512F_SCALAR-64.s b/llvm/test/MC/X86/AVX512F_SCALAR-64.s index b0b1fe5eb21..0b543539e7e 100644 --- a/llvm/test/MC/X86/AVX512F_SCALAR-64.s +++ b/llvm/test/MC/X86/AVX512F_SCALAR-64.s @@ -913,44 +913,44 @@ vcomiss %xmm15, %xmm15  vcomiss %xmm1, %xmm1  // CHECK: vcvtsd2si 485498096, %r13d -// CHECK: encoding: [0xc5,0x7b,0x2d,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvtsd2si 485498096, %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2d,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvtsd2si 485498096, %r13d  // CHECK: vcvtsd2si 485498096, %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2d,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvtsd2si 485498096, %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2d,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvtsd2si 485498096, %r15  // CHECK: vcvtsd2si 512(%rdx), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2d,0xaa,0x00,0x02,0x00,0x00] -vcvtsd2si 512(%rdx), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2d,0x6a,0x40] +{evex} vcvtsd2si 512(%rdx), %r13d  // CHECK: vcvtsd2si 512(%rdx), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2d,0xba,0x00,0x02,0x00,0x00] -vcvtsd2si 512(%rdx), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2d,0x7a,0x40] +{evex} vcvtsd2si 512(%rdx), %r15  // CHECK: vcvtsd2si 512(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2d,0xac,0x82,0x00,0x02,0x00,0x00] -vcvtsd2si 512(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2d,0x6c,0x82,0x40] +{evex} vcvtsd2si 512(%rdx,%rax,4), %r13d  // CHECK: vcvtsd2si -512(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2d,0xac,0x82,0x00,0xfe,0xff,0xff] -vcvtsd2si -512(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2d,0x6c,0x82,0xc0] +{evex} vcvtsd2si -512(%rdx,%rax,4), %r13d  // CHECK: vcvtsd2si 512(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2d,0xbc,0x82,0x00,0x02,0x00,0x00] -vcvtsd2si 512(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2d,0x7c,0x82,0x40] +{evex} vcvtsd2si 512(%rdx,%rax,4), %r15  // CHECK: vcvtsd2si -512(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2d,0xbc,0x82,0x00,0xfe,0xff,0xff] -vcvtsd2si -512(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2d,0x7c,0x82,0xc0] +{evex} vcvtsd2si -512(%rdx,%rax,4), %r15  // CHECK: vcvtsd2si 512(%rdx,%rax), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2d,0xac,0x02,0x00,0x02,0x00,0x00] -vcvtsd2si 512(%rdx,%rax), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2d,0x6c,0x02,0x40] +{evex} vcvtsd2si 512(%rdx,%rax), %r13d  // CHECK: vcvtsd2si 512(%rdx,%rax), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2d,0xbc,0x02,0x00,0x02,0x00,0x00] -vcvtsd2si 512(%rdx,%rax), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2d,0x7c,0x02,0x40] +{evex} vcvtsd2si 512(%rdx,%rax), %r15  // CHECK: vcvtsd2si {rd-sae}, %xmm15, %r13d  // CHECK: encoding: [0x62,0x51,0x7f,0x38,0x2d,0xef] @@ -1945,44 +1945,44 @@ vcvtss2sd %xmm1, %xmm1, %xmm1 {%k2}  vcvtss2sd %xmm1, %xmm1, %xmm1 {%k2} {z}  // CHECK: vcvtss2si 256(%rdx), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2d,0xaa,0x00,0x01,0x00,0x00] -vcvtss2si 256(%rdx), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2d,0x6a,0x40] +{evex} {evex} vcvtss2si 256(%rdx), %r13d  // CHECK: vcvtss2si 256(%rdx), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2d,0xba,0x00,0x01,0x00,0x00] -vcvtss2si 256(%rdx), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2d,0x7a,0x40] +{evex} vcvtss2si 256(%rdx), %r15  // CHECK: vcvtss2si 256(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2d,0xac,0x82,0x00,0x01,0x00,0x00] -vcvtss2si 256(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2d,0x6c,0x82,0x40] +{evex} vcvtss2si 256(%rdx,%rax,4), %r13d  // CHECK: vcvtss2si -256(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2d,0xac,0x82,0x00,0xff,0xff,0xff] -vcvtss2si -256(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2d,0x6c,0x82,0xc0] +{evex} vcvtss2si -256(%rdx,%rax,4), %r13d  // CHECK: vcvtss2si 256(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2d,0xbc,0x82,0x00,0x01,0x00,0x00] -vcvtss2si 256(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2d,0x7c,0x82,0x40] +{evex} vcvtss2si 256(%rdx,%rax,4), %r15  // CHECK: vcvtss2si -256(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2d,0xbc,0x82,0x00,0xff,0xff,0xff] -vcvtss2si -256(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2d,0x7c,0x82,0xc0] +{evex} vcvtss2si -256(%rdx,%rax,4), %r15  // CHECK: vcvtss2si 256(%rdx,%rax), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2d,0xac,0x02,0x00,0x01,0x00,0x00] -vcvtss2si 256(%rdx,%rax), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2d,0x6c,0x02,0x40] +{evex} vcvtss2si 256(%rdx,%rax), %r13d  // CHECK: vcvtss2si 256(%rdx,%rax), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2d,0xbc,0x02,0x00,0x01,0x00,0x00] -vcvtss2si 256(%rdx,%rax), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2d,0x7c,0x02,0x40] +{evex} vcvtss2si 256(%rdx,%rax), %r15  // CHECK: vcvtss2si 485498096, %r13d -// CHECK: encoding: [0xc5,0x7a,0x2d,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvtss2si 485498096, %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2d,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvtss2si 485498096, %r13d  // CHECK: vcvtss2si 485498096, %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2d,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvtss2si 485498096, %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2d,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvtss2si 485498096, %r15  // CHECK: vcvtss2si {rd-sae}, %xmm15, %r13d  // CHECK: encoding: [0x62,0x51,0x7e,0x38,0x2d,0xef] @@ -2201,52 +2201,52 @@ vcvtss2usi %xmm1, %r13d  vcvtss2usi %xmm1, %r15  // CHECK: vcvttsd2si 485498096, %r13d -// CHECK: encoding: [0xc5,0x7b,0x2c,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvttsd2si 485498096, %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2c,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvttsd2si 485498096, %r13d  // CHECK: vcvttsd2si 485498096, %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2c,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvttsd2si 485498096, %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2c,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvttsd2si 485498096, %r15  // CHECK: vcvttsd2si 512(%rdx), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2c,0xaa,0x00,0x02,0x00,0x00] -vcvttsd2si 512(%rdx), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2c,0x6a,0x40] +{evex} vcvttsd2si 512(%rdx), %r13d  // CHECK: vcvttsd2si 512(%rdx), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2c,0xba,0x00,0x02,0x00,0x00] -vcvttsd2si 512(%rdx), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2c,0x7a,0x40] +{evex} vcvttsd2si 512(%rdx), %r15  // CHECK: vcvttsd2si 512(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2c,0xac,0x82,0x00,0x02,0x00,0x00] -vcvttsd2si 512(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2c,0x6c,0x82,0x40] +{evex} vcvttsd2si 512(%rdx,%rax,4), %r13d  // CHECK: vcvttsd2si -512(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2c,0xac,0x82,0x00,0xfe,0xff,0xff] -vcvttsd2si -512(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2c,0x6c,0x82,0xc0] +{evex} vcvttsd2si -512(%rdx,%rax,4), %r13d  // CHECK: vcvttsd2si 512(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2c,0xbc,0x82,0x00,0x02,0x00,0x00] -vcvttsd2si 512(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2c,0x7c,0x82,0x40] +{evex} vcvttsd2si 512(%rdx,%rax,4), %r15  // CHECK: vcvttsd2si -512(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2c,0xbc,0x82,0x00,0xfe,0xff,0xff] -vcvttsd2si -512(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2c,0x7c,0x82,0xc0] +{evex} vcvttsd2si -512(%rdx,%rax,4), %r15  // CHECK: vcvttsd2si 512(%rdx,%rax), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2c,0xac,0x02,0x00,0x02,0x00,0x00] -vcvttsd2si 512(%rdx,%rax), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2c,0x6c,0x02,0x40] +{evex} vcvttsd2si 512(%rdx,%rax), %r13d  // CHECK: vcvttsd2si 512(%rdx,%rax), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2c,0xbc,0x02,0x00,0x02,0x00,0x00] -vcvttsd2si 512(%rdx,%rax), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2c,0x7c,0x02,0x40] +{evex} vcvttsd2si 512(%rdx,%rax), %r15  // CHECK: vcvttsd2si (%rdx), %r13d -// CHECK: encoding: [0xc5,0x7b,0x2c,0x2a] -vcvttsd2si (%rdx), %r13d +// CHECK: encoding: [0x62,0x71,0x7f,0x08,0x2c,0x2a] +{evex} vcvttsd2si (%rdx), %r13d  // CHECK: vcvttsd2si (%rdx), %r15 -// CHECK: encoding: [0xc4,0x61,0xfb,0x2c,0x3a] -vcvttsd2si (%rdx), %r15 +// CHECK: encoding: [0x62,0x71,0xff,0x08,0x2c,0x3a] +{evex} vcvttsd2si (%rdx), %r15  // CHECK: vcvttsd2si {sae}, %xmm15, %r13d  // CHECK: encoding: [0x62,0x51,0x7f,0x18,0x2c,0xef] @@ -2361,52 +2361,52 @@ vcvttsd2usi %xmm1, %r13d  vcvttsd2usi %xmm1, %r15  // CHECK: vcvttss2si 256(%rdx), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2c,0xaa,0x00,0x01,0x00,0x00] -vcvttss2si 256(%rdx), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2c,0x6a,0x40] +{evex} vcvttss2si 256(%rdx), %r13d  // CHECK: vcvttss2si 256(%rdx), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2c,0xba,0x00,0x01,0x00,0x00] -vcvttss2si 256(%rdx), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2c,0x7a,0x40] +{evex} vcvttss2si 256(%rdx), %r15  // CHECK: vcvttss2si 256(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2c,0xac,0x82,0x00,0x01,0x00,0x00] -vcvttss2si 256(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2c,0x6c,0x82,0x40] +{evex} vcvttss2si 256(%rdx,%rax,4), %r13d  // CHECK: vcvttss2si -256(%rdx,%rax,4), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2c,0xac,0x82,0x00,0xff,0xff,0xff] -vcvttss2si -256(%rdx,%rax,4), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2c,0x6c,0x82,0xc0] +{evex} vcvttss2si -256(%rdx,%rax,4), %r13d  // CHECK: vcvttss2si 256(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2c,0xbc,0x82,0x00,0x01,0x00,0x00] -vcvttss2si 256(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2c,0x7c,0x82,0x40] +{evex} vcvttss2si 256(%rdx,%rax,4), %r15  // CHECK: vcvttss2si -256(%rdx,%rax,4), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2c,0xbc,0x82,0x00,0xff,0xff,0xff] -vcvttss2si -256(%rdx,%rax,4), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2c,0x7c,0x82,0xc0] +{evex} vcvttss2si -256(%rdx,%rax,4), %r15  // CHECK: vcvttss2si 256(%rdx,%rax), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2c,0xac,0x02,0x00,0x01,0x00,0x00] -vcvttss2si 256(%rdx,%rax), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2c,0x6c,0x02,0x40] +{evex} vcvttss2si 256(%rdx,%rax), %r13d  // CHECK: vcvttss2si 256(%rdx,%rax), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2c,0xbc,0x02,0x00,0x01,0x00,0x00] -vcvttss2si 256(%rdx,%rax), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2c,0x7c,0x02,0x40] +{evex} vcvttss2si 256(%rdx,%rax), %r15  // CHECK: vcvttss2si 485498096, %r13d -// CHECK: encoding: [0xc5,0x7a,0x2c,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvttss2si 485498096, %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2c,0x2c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvttss2si 485498096, %r13d  // CHECK: vcvttss2si 485498096, %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2c,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] -vcvttss2si 485498096, %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2c,0x3c,0x25,0xf0,0x1c,0xf0,0x1c] +{evex} vcvttss2si 485498096, %r15  // CHECK: vcvttss2si (%rdx), %r13d -// CHECK: encoding: [0xc5,0x7a,0x2c,0x2a] -vcvttss2si (%rdx), %r13d +// CHECK: encoding: [0x62,0x71,0x7e,0x08,0x2c,0x2a] +{evex} vcvttss2si (%rdx), %r13d  // CHECK: vcvttss2si (%rdx), %r15 -// CHECK: encoding: [0xc4,0x61,0xfa,0x2c,0x3a] -vcvttss2si (%rdx), %r15 +// CHECK: encoding: [0x62,0x71,0xfe,0x08,0x2c,0x3a] +{evex} vcvttss2si (%rdx), %r15  // CHECK: vcvttss2si {sae}, %xmm15, %r13d  // CHECK: encoding: [0x62,0x51,0x7e,0x18,0x2c,0xef]  | 

