From 9371efbcdbbc35debb067c67336f33adc67e9c53 Mon Sep 17 00:00:00 2001 From: Robert Khasanov Date: Tue, 28 Oct 2014 18:15:20 +0000 Subject: [PATCH 1/1] [AVX512] Extended avx512_sqrt_packed (sqrt instructions) to VL subset. Refactored through AVX512_maskable git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220806 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86InstrAVX512.td | 72 +++++--- test/MC/X86/avx512-encodings.s | 112 ++++++++++++ test/MC/X86/x86-64-avx512f_vl.s | 224 +++++++++++++++++++++++ utils/TableGen/X86DisassemblerTables.cpp | 5 + 4 files changed, 385 insertions(+), 28 deletions(-) diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 04dc681432a..3fd18de6537 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -4273,32 +4273,24 @@ def : Pat <(v8f64 (int_x86_avx512_rcp28_pd (v8f64 VR512:$src), (bc_v8f64 (v16i32 immAllZerosV)), (i8 -1), FROUND_NO_EXC)), (VRCP28PDZrb VR512:$src)>; -multiclass avx512_sqrt_packed opc, string OpcodeStr, SDNode OpNode, - OpndItins itins_s, OpndItins itins_d> { - def PSZrr :AVX512PSI, - EVEX, EVEX_V512; - - let mayLoad = 1 in - def PSZrm : AVX512PSI, EVEX, EVEX_V512, EVEX_CD8<32, CD8VF>; - - def PDZrr : AVX512PDI, - EVEX, EVEX_V512; - - let mayLoad = 1 in - def PDZrm : AVX512PDI, EVEX, EVEX_V512, EVEX_CD8<64, CD8VF>; +multiclass avx512_sqrt_packed opc, string OpcodeStr, + SDNode OpNode, X86VectorVTInfo _>{ + defm rr: AVX512_maskable, EVEX; + let mayLoad = 1 in { + defm rm: AVX512_maskable, EVEX; + defm rmb: AVX512_maskable, + EVEX, EVEX_B; + } } multiclass avx512_sqrt_scalar opc, string OpcodeStr, @@ -4362,12 +4354,36 @@ multiclass avx512_sqrt_scalar opc, string OpcodeStr, } } +multiclass avx512_sqrt_packed_all opc, string OpcodeStr, + SDNode OpNode> { + defm PSZ : avx512_sqrt_packed, + EVEX_V512, PS, EVEX_CD8<32, CD8VF>; + defm PDZ : avx512_sqrt_packed, + EVEX_V512, VEX_W, PD, EVEX_CD8<64, CD8VF>; + // Define only if AVX512VL feature is present. + let Predicates = [HasVLX] in { + defm PSZ128 : avx512_sqrt_packed, + EVEX_V128, PS, EVEX_CD8<32, CD8VF>; + defm PSZ256 : avx512_sqrt_packed, + EVEX_V256, PS, EVEX_CD8<32, CD8VF>; + defm PDZ128 : avx512_sqrt_packed, + EVEX_V128, VEX_W, PD, EVEX_CD8<64, CD8VF>; + defm PDZ256 : avx512_sqrt_packed, + EVEX_V256, VEX_W, PD, EVEX_CD8<64, CD8VF>; + } +} + +defm VSQRT : avx512_sqrt_packed_all<0x51, "vsqrt", fsqrt>; defm VSQRT : avx512_sqrt_scalar<0x51, "sqrt", int_x86_avx512_sqrt_ss, int_x86_avx512_sqrt_sd, - SSE_SQRTSS, SSE_SQRTSD>, - avx512_sqrt_packed<0x51, "vsqrt", fsqrt, - SSE_SQRTPS, SSE_SQRTPD>; + SSE_SQRTSS, SSE_SQRTSD>; let Predicates = [HasAVX512] in { def : Pat<(v16f32 (int_x86_avx512_sqrt_ps_512 (v16f32 VR512:$src1), diff --git a/test/MC/X86/avx512-encodings.s b/test/MC/X86/avx512-encodings.s index 64e615377b1..231226f347e 100644 --- a/test/MC/X86/avx512-encodings.s +++ b/test/MC/X86/avx512-encodings.s @@ -3417,6 +3417,118 @@ // CHECK: encoding: [0x62,0xe2,0x7d,0x58,0x4e,0x82,0xfc,0xfd,0xff,0xff] vrsqrt14ps -516(%rdx){1to16}, %zmm16 +// CHECK: vsqrtpd %zmm19, %zmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x51,0xdb] + vsqrtpd %zmm19, %zmm19 + +// CHECK: vsqrtpd %zmm19, %zmm19 {%k5} +// CHECK: encoding: [0x62,0xa1,0xfd,0x4d,0x51,0xdb] + vsqrtpd %zmm19, %zmm19 {%k5} + +// CHECK: vsqrtpd %zmm19, %zmm19 {%k5} {z} +// CHECK: encoding: [0x62,0xa1,0xfd,0xcd,0x51,0xdb] + vsqrtpd %zmm19, %zmm19 {%k5} {z} + +// CHECK: vsqrtpd (%rcx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x19] + vsqrtpd (%rcx), %zmm19 + +// CHECK: vsqrtpd 291(%rax,%r14,8), %zmm19 +// CHECK: encoding: [0x62,0xa1,0xfd,0x48,0x51,0x9c,0xf0,0x23,0x01,0x00,0x00] + vsqrtpd 291(%rax,%r14,8), %zmm19 + +// CHECK: vsqrtpd (%rcx){1to8}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x19] + vsqrtpd (%rcx){1to8}, %zmm19 + +// CHECK: vsqrtpd 8128(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x5a,0x7f] + vsqrtpd 8128(%rdx), %zmm19 + +// CHECK: vsqrtpd 8192(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x9a,0x00,0x20,0x00,0x00] + vsqrtpd 8192(%rdx), %zmm19 + +// CHECK: vsqrtpd -8192(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x5a,0x80] + vsqrtpd -8192(%rdx), %zmm19 + +// CHECK: vsqrtpd -8256(%rdx), %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x48,0x51,0x9a,0xc0,0xdf,0xff,0xff] + vsqrtpd -8256(%rdx), %zmm19 + +// CHECK: vsqrtpd 1016(%rdx){1to8}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x5a,0x7f] + vsqrtpd 1016(%rdx){1to8}, %zmm19 + +// CHECK: vsqrtpd 1024(%rdx){1to8}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x9a,0x00,0x04,0x00,0x00] + vsqrtpd 1024(%rdx){1to8}, %zmm19 + +// CHECK: vsqrtpd -1024(%rdx){1to8}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x5a,0x80] + vsqrtpd -1024(%rdx){1to8}, %zmm19 + +// CHECK: vsqrtpd -1032(%rdx){1to8}, %zmm19 +// CHECK: encoding: [0x62,0xe1,0xfd,0x58,0x51,0x9a,0xf8,0xfb,0xff,0xff] + vsqrtpd -1032(%rdx){1to8}, %zmm19 + +// CHECK: vsqrtps %zmm29, %zmm28 +// CHECK: encoding: [0x62,0x01,0x7c,0x48,0x51,0xe5] + vsqrtps %zmm29, %zmm28 + +// CHECK: vsqrtps %zmm29, %zmm28 {%k3} +// CHECK: encoding: [0x62,0x01,0x7c,0x4b,0x51,0xe5] + vsqrtps %zmm29, %zmm28 {%k3} + +// CHECK: vsqrtps %zmm29, %zmm28 {%k3} {z} +// CHECK: encoding: [0x62,0x01,0x7c,0xcb,0x51,0xe5] + vsqrtps %zmm29, %zmm28 {%k3} {z} + +// CHECK: vsqrtps (%rcx), %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0x21] + vsqrtps (%rcx), %zmm28 + +// CHECK: vsqrtps 291(%rax,%r14,8), %zmm28 +// CHECK: encoding: [0x62,0x21,0x7c,0x48,0x51,0xa4,0xf0,0x23,0x01,0x00,0x00] + vsqrtps 291(%rax,%r14,8), %zmm28 + +// CHECK: vsqrtps (%rcx){1to16}, %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0x21] + vsqrtps (%rcx){1to16}, %zmm28 + +// CHECK: vsqrtps 8128(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0x62,0x7f] + vsqrtps 8128(%rdx), %zmm28 + +// CHECK: vsqrtps 8192(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0xa2,0x00,0x20,0x00,0x00] + vsqrtps 8192(%rdx), %zmm28 + +// CHECK: vsqrtps -8192(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0x62,0x80] + vsqrtps -8192(%rdx), %zmm28 + +// CHECK: vsqrtps -8256(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x48,0x51,0xa2,0xc0,0xdf,0xff,0xff] + vsqrtps -8256(%rdx), %zmm28 + +// CHECK: vsqrtps 508(%rdx){1to16}, %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0x62,0x7f] + vsqrtps 508(%rdx){1to16}, %zmm28 + +// CHECK: vsqrtps 512(%rdx){1to16}, %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0xa2,0x00,0x02,0x00,0x00] + vsqrtps 512(%rdx){1to16}, %zmm28 + +// CHECK: vsqrtps -512(%rdx){1to16}, %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0x62,0x80] + vsqrtps -512(%rdx){1to16}, %zmm28 + +// CHECK: vsqrtps -516(%rdx){1to16}, %zmm28 +// CHECK: encoding: [0x62,0x61,0x7c,0x58,0x51,0xa2,0xfc,0xfd,0xff,0xff] + vsqrtps -516(%rdx){1to16}, %zmm28 + // CHECK: vsubpd %zmm9, %zmm12, %zmm9 // CHECK: encoding: [0x62,0x51,0x9d,0x48,0x5c,0xc9] vsubpd %zmm9, %zmm12, %zmm9 diff --git a/test/MC/X86/x86-64-avx512f_vl.s b/test/MC/X86/x86-64-avx512f_vl.s index 039b4afab55..1d5c4c4e9c0 100644 --- a/test/MC/X86/x86-64-avx512f_vl.s +++ b/test/MC/X86/x86-64-avx512f_vl.s @@ -4432,6 +4432,230 @@ // CHECK: encoding: [0x62,0x62,0x7d,0x38,0x4e,0x9a,0xfc,0xfd,0xff,0xff] vrsqrt14ps -516(%rdx){1to8}, %ymm27 +// CHECK: vsqrtpd %xmm26, %xmm29 +// CHECK: encoding: [0x62,0x01,0xfd,0x08,0x51,0xea] + vsqrtpd %xmm26, %xmm29 + +// CHECK: vsqrtpd %xmm26, %xmm29 {%k3} +// CHECK: encoding: [0x62,0x01,0xfd,0x0b,0x51,0xea] + vsqrtpd %xmm26, %xmm29 {%k3} + +// CHECK: vsqrtpd %xmm26, %xmm29 {%k3} {z} +// CHECK: encoding: [0x62,0x01,0xfd,0x8b,0x51,0xea] + vsqrtpd %xmm26, %xmm29 {%k3} {z} + +// CHECK: vsqrtpd (%rcx), %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x51,0x29] + vsqrtpd (%rcx), %xmm29 + +// CHECK: vsqrtpd 291(%rax,%r14,8), %xmm29 +// CHECK: encoding: [0x62,0x21,0xfd,0x08,0x51,0xac,0xf0,0x23,0x01,0x00,0x00] + vsqrtpd 291(%rax,%r14,8), %xmm29 + +// CHECK: vsqrtpd (%rcx){1to2}, %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x18,0x51,0x29] + vsqrtpd (%rcx){1to2}, %xmm29 + +// CHECK: vsqrtpd 2032(%rdx), %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x51,0x6a,0x7f] + vsqrtpd 2032(%rdx), %xmm29 + +// CHECK: vsqrtpd 2048(%rdx), %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x51,0xaa,0x00,0x08,0x00,0x00] + vsqrtpd 2048(%rdx), %xmm29 + +// CHECK: vsqrtpd -2048(%rdx), %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x51,0x6a,0x80] + vsqrtpd -2048(%rdx), %xmm29 + +// CHECK: vsqrtpd -2064(%rdx), %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x08,0x51,0xaa,0xf0,0xf7,0xff,0xff] + vsqrtpd -2064(%rdx), %xmm29 + +// CHECK: vsqrtpd 1016(%rdx){1to2}, %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x18,0x51,0x6a,0x7f] + vsqrtpd 1016(%rdx){1to2}, %xmm29 + +// CHECK: vsqrtpd 1024(%rdx){1to2}, %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x18,0x51,0xaa,0x00,0x04,0x00,0x00] + vsqrtpd 1024(%rdx){1to2}, %xmm29 + +// CHECK: vsqrtpd -1024(%rdx){1to2}, %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x18,0x51,0x6a,0x80] + vsqrtpd -1024(%rdx){1to2}, %xmm29 + +// CHECK: vsqrtpd -1032(%rdx){1to2}, %xmm29 +// CHECK: encoding: [0x62,0x61,0xfd,0x18,0x51,0xaa,0xf8,0xfb,0xff,0xff] + vsqrtpd -1032(%rdx){1to2}, %xmm29 + +// CHECK: vsqrtpd %ymm20, %ymm18 +// CHECK: encoding: [0x62,0xa1,0xfd,0x28,0x51,0xd4] + vsqrtpd %ymm20, %ymm18 + +// CHECK: vsqrtpd %ymm20, %ymm18 {%k3} +// CHECK: encoding: [0x62,0xa1,0xfd,0x2b,0x51,0xd4] + vsqrtpd %ymm20, %ymm18 {%k3} + +// CHECK: vsqrtpd %ymm20, %ymm18 {%k3} {z} +// CHECK: encoding: [0x62,0xa1,0xfd,0xab,0x51,0xd4] + vsqrtpd %ymm20, %ymm18 {%k3} {z} + +// CHECK: vsqrtpd (%rcx), %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x28,0x51,0x11] + vsqrtpd (%rcx), %ymm18 + +// CHECK: vsqrtpd 291(%rax,%r14,8), %ymm18 +// CHECK: encoding: [0x62,0xa1,0xfd,0x28,0x51,0x94,0xf0,0x23,0x01,0x00,0x00] + vsqrtpd 291(%rax,%r14,8), %ymm18 + +// CHECK: vsqrtpd (%rcx){1to4}, %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x38,0x51,0x11] + vsqrtpd (%rcx){1to4}, %ymm18 + +// CHECK: vsqrtpd 4064(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x28,0x51,0x52,0x7f] + vsqrtpd 4064(%rdx), %ymm18 + +// CHECK: vsqrtpd 4096(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x28,0x51,0x92,0x00,0x10,0x00,0x00] + vsqrtpd 4096(%rdx), %ymm18 + +// CHECK: vsqrtpd -4096(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x28,0x51,0x52,0x80] + vsqrtpd -4096(%rdx), %ymm18 + +// CHECK: vsqrtpd -4128(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x28,0x51,0x92,0xe0,0xef,0xff,0xff] + vsqrtpd -4128(%rdx), %ymm18 + +// CHECK: vsqrtpd 1016(%rdx){1to4}, %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x38,0x51,0x52,0x7f] + vsqrtpd 1016(%rdx){1to4}, %ymm18 + +// CHECK: vsqrtpd 1024(%rdx){1to4}, %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x38,0x51,0x92,0x00,0x04,0x00,0x00] + vsqrtpd 1024(%rdx){1to4}, %ymm18 + +// CHECK: vsqrtpd -1024(%rdx){1to4}, %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x38,0x51,0x52,0x80] + vsqrtpd -1024(%rdx){1to4}, %ymm18 + +// CHECK: vsqrtpd -1032(%rdx){1to4}, %ymm18 +// CHECK: encoding: [0x62,0xe1,0xfd,0x38,0x51,0x92,0xf8,0xfb,0xff,0xff] + vsqrtpd -1032(%rdx){1to4}, %ymm18 + +// CHECK: vsqrtps %xmm28, %xmm19 +// CHECK: encoding: [0x62,0x81,0x7c,0x08,0x51,0xdc] + vsqrtps %xmm28, %xmm19 + +// CHECK: vsqrtps %xmm28, %xmm19 {%k7} +// CHECK: encoding: [0x62,0x81,0x7c,0x0f,0x51,0xdc] + vsqrtps %xmm28, %xmm19 {%k7} + +// CHECK: vsqrtps %xmm28, %xmm19 {%k7} {z} +// CHECK: encoding: [0x62,0x81,0x7c,0x8f,0x51,0xdc] + vsqrtps %xmm28, %xmm19 {%k7} {z} + +// CHECK: vsqrtps (%rcx), %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x51,0x19] + vsqrtps (%rcx), %xmm19 + +// CHECK: vsqrtps 291(%rax,%r14,8), %xmm19 +// CHECK: encoding: [0x62,0xa1,0x7c,0x08,0x51,0x9c,0xf0,0x23,0x01,0x00,0x00] + vsqrtps 291(%rax,%r14,8), %xmm19 + +// CHECK: vsqrtps (%rcx){1to4}, %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x18,0x51,0x19] + vsqrtps (%rcx){1to4}, %xmm19 + +// CHECK: vsqrtps 2032(%rdx), %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x51,0x5a,0x7f] + vsqrtps 2032(%rdx), %xmm19 + +// CHECK: vsqrtps 2048(%rdx), %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x51,0x9a,0x00,0x08,0x00,0x00] + vsqrtps 2048(%rdx), %xmm19 + +// CHECK: vsqrtps -2048(%rdx), %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x51,0x5a,0x80] + vsqrtps -2048(%rdx), %xmm19 + +// CHECK: vsqrtps -2064(%rdx), %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x08,0x51,0x9a,0xf0,0xf7,0xff,0xff] + vsqrtps -2064(%rdx), %xmm19 + +// CHECK: vsqrtps 508(%rdx){1to4}, %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x18,0x51,0x5a,0x7f] + vsqrtps 508(%rdx){1to4}, %xmm19 + +// CHECK: vsqrtps 512(%rdx){1to4}, %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x18,0x51,0x9a,0x00,0x02,0x00,0x00] + vsqrtps 512(%rdx){1to4}, %xmm19 + +// CHECK: vsqrtps -512(%rdx){1to4}, %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x18,0x51,0x5a,0x80] + vsqrtps -512(%rdx){1to4}, %xmm19 + +// CHECK: vsqrtps -516(%rdx){1to4}, %xmm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x18,0x51,0x9a,0xfc,0xfd,0xff,0xff] + vsqrtps -516(%rdx){1to4}, %xmm19 + +// CHECK: vsqrtps %ymm25, %ymm19 +// CHECK: encoding: [0x62,0x81,0x7c,0x28,0x51,0xd9] + vsqrtps %ymm25, %ymm19 + +// CHECK: vsqrtps %ymm25, %ymm19 {%k2} +// CHECK: encoding: [0x62,0x81,0x7c,0x2a,0x51,0xd9] + vsqrtps %ymm25, %ymm19 {%k2} + +// CHECK: vsqrtps %ymm25, %ymm19 {%k2} {z} +// CHECK: encoding: [0x62,0x81,0x7c,0xaa,0x51,0xd9] + vsqrtps %ymm25, %ymm19 {%k2} {z} + +// CHECK: vsqrtps (%rcx), %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x28,0x51,0x19] + vsqrtps (%rcx), %ymm19 + +// CHECK: vsqrtps 291(%rax,%r14,8), %ymm19 +// CHECK: encoding: [0x62,0xa1,0x7c,0x28,0x51,0x9c,0xf0,0x23,0x01,0x00,0x00] + vsqrtps 291(%rax,%r14,8), %ymm19 + +// CHECK: vsqrtps (%rcx){1to8}, %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x38,0x51,0x19] + vsqrtps (%rcx){1to8}, %ymm19 + +// CHECK: vsqrtps 4064(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x28,0x51,0x5a,0x7f] + vsqrtps 4064(%rdx), %ymm19 + +// CHECK: vsqrtps 4096(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x28,0x51,0x9a,0x00,0x10,0x00,0x00] + vsqrtps 4096(%rdx), %ymm19 + +// CHECK: vsqrtps -4096(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x28,0x51,0x5a,0x80] + vsqrtps -4096(%rdx), %ymm19 + +// CHECK: vsqrtps -4128(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x28,0x51,0x9a,0xe0,0xef,0xff,0xff] + vsqrtps -4128(%rdx), %ymm19 + +// CHECK: vsqrtps 508(%rdx){1to8}, %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x38,0x51,0x5a,0x7f] + vsqrtps 508(%rdx){1to8}, %ymm19 + +// CHECK: vsqrtps 512(%rdx){1to8}, %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x38,0x51,0x9a,0x00,0x02,0x00,0x00] + vsqrtps 512(%rdx){1to8}, %ymm19 + +// CHECK: vsqrtps -512(%rdx){1to8}, %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x38,0x51,0x5a,0x80] + vsqrtps -512(%rdx){1to8}, %ymm19 + +// CHECK: vsqrtps -516(%rdx){1to8}, %ymm19 +// CHECK: encoding: [0x62,0xe1,0x7c,0x38,0x51,0x9a,0xfc,0xfd,0xff,0xff] + vsqrtps -516(%rdx){1to8}, %ymm19 + // CHECK: vmovapd %xmm22, (%rcx) // CHECK: encoding: [0x62,0xe1,0xfd,0x08,0x29,0x31] vmovapd %xmm22, (%rcx) diff --git a/utils/TableGen/X86DisassemblerTables.cpp b/utils/TableGen/X86DisassemblerTables.cpp index dc1764cdbb1..d7e981c8fdf 100644 --- a/utils/TableGen/X86DisassemblerTables.cpp +++ b/utils/TableGen/X86DisassemblerTables.cpp @@ -171,12 +171,17 @@ static inline bool inheritsFrom(InstructionContext child, case IC_EVEX_OPSIZE: return inheritsFrom(child, IC_EVEX_W_OPSIZE) || inheritsFrom(child, IC_EVEX_L_W_OPSIZE); + case IC_EVEX_B: + return false; case IC_EVEX_W: case IC_EVEX_W_XS: case IC_EVEX_W_XD: case IC_EVEX_W_OPSIZE: return false; case IC_EVEX_L: + case IC_EVEX_L_K_B: + case IC_EVEX_L_KZ_B: + case IC_EVEX_L_B: case IC_EVEX_L_XS: case IC_EVEX_L_XD: case IC_EVEX_L_OPSIZE: -- 2.34.1