From 7d3b86db520ccd9407369f74cf37df50f160d358 Mon Sep 17 00:00:00 2001 From: Elena Demikhovsky Date: Mon, 18 May 2015 06:42:57 +0000 Subject: [PATCH] AVX-512: Added VBROADCASTF64X4, VBROADCASTF64X2, VBROADCASTI32X8, and other instructions from this set Added encoding tests. llvm-svn: 237557 --- lib/Target/X86/X86ISelLowering.h | 3 + lib/Target/X86/X86InstrAVX512.td | 67 ++++++++++--- lib/Target/X86/X86InstrFragmentsSIMD.td | 3 + test/MC/X86/avx512-encodings.s | 128 ++++++++++++++++++++++-- test/MC/X86/x86-64-avx512dq.s | 127 +++++++++++++++++++++++ test/MC/X86/x86-64-avx512dq_vl.s | 64 ++++++++++++ test/MC/X86/x86-64-avx512f_vl.s | 64 ++++++++++++ 7 files changed, 438 insertions(+), 18 deletions(-) diff --git a/lib/Target/X86/X86ISelLowering.h b/lib/Target/X86/X86ISelLowering.h index f342289a980..b589ca42e56 100644 --- a/lib/Target/X86/X86ISelLowering.h +++ b/lib/Target/X86/X86ISelLowering.h @@ -374,7 +374,10 @@ namespace llvm { VPERMIV3, VPERMI, VPERM2X128, + // Broadcast scalar to vector VBROADCAST, + // Broadcast subvector to vector + SUBV_BROADCAST, // Insert/Extract vector element VINSERT, VEXTRACT, diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 0470a5a7e39..812b13ab1ba 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -869,27 +869,70 @@ defm VPBROADCASTQZ : avx512_int_broadcast_rm<0x59, "vpbroadcastq", i64mem, loadi64, VR512, v8i64, v2i64, VK8WM>, EVEX_V512, VEX_W, EVEX_CD8<64, CD8VT1>; -multiclass avx512_int_subvec_broadcast_rm opc, string OpcodeStr, - X86MemOperand x86memop, PatFrag ld_frag, - RegisterClass KRC> { +multiclass avx512_subvec_broadcast_rm opc, string OpcodeStr, + X86VectorVTInfo _Dst, X86VectorVTInfo _Src> { let mayLoad = 1 in { - def rm : AVX5128I, EVEX; - def krm : AVX5128I, EVEX; + def rmk : AVX5128I, EVEX, EVEX_K; + def rmkz : AVX5128I, EVEX, EVEX_KZ; } } -defm VBROADCASTI32X4 : avx512_int_subvec_broadcast_rm<0x5a, "vbroadcasti32x4", - i128mem, loadv2i64, VK16WM>, +defm VBROADCASTI32X4 : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti32x4", + v16i32_info, v4i32x_info>, EVEX_V512, EVEX_CD8<32, CD8VT4>; -defm VBROADCASTI64X4 : avx512_int_subvec_broadcast_rm<0x5b, "vbroadcasti64x4", - i256mem, loadv4i64, VK16WM>, VEX_W, +defm VBROADCASTF32X4 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf32x4", + v16f32_info, v4f32x_info>, + EVEX_V512, EVEX_CD8<32, CD8VT4>; +defm VBROADCASTI64X4 : avx512_subvec_broadcast_rm<0x5b, "vbroadcasti64x4", + v8i64_info, v4i64x_info>, VEX_W, EVEX_V512, EVEX_CD8<64, CD8VT4>; +defm VBROADCASTF64X4 : avx512_subvec_broadcast_rm<0x1b, "vbroadcastf64x4", + v8f64_info, v4f64x_info>, VEX_W, + EVEX_V512, EVEX_CD8<64, CD8VT4>; + +let Predicates = [HasVLX] in { +defm VBROADCASTI32X4Z256 : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti32x4", + v8i32x_info, v4i32x_info>, + EVEX_V256, EVEX_CD8<32, CD8VT4>; +defm VBROADCASTF32X4Z256 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf32x4", + v8f32x_info, v4f32x_info>, + EVEX_V256, EVEX_CD8<32, CD8VT4>; +} +let Predicates = [HasVLX, HasDQI] in { +defm VBROADCASTI64X2Z128 : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti64x2", + v4i64x_info, v2i64x_info>, VEX_W, + EVEX_V256, EVEX_CD8<64, CD8VT2>; +defm VBROADCASTF64X2Z128 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf64x2", + v4f64x_info, v2f64x_info>, VEX_W, + EVEX_V256, EVEX_CD8<64, CD8VT2>; +} +let Predicates = [HasDQI] in { +defm VBROADCASTI64X2 : avx512_subvec_broadcast_rm<0x5a, "vbroadcasti64x2", + v8i64_info, v2i64x_info>, VEX_W, + EVEX_V512, EVEX_CD8<64, CD8VT2>; +defm VBROADCASTI32X8 : avx512_subvec_broadcast_rm<0x5b, "vbroadcasti32x8", + v16i32_info, v8i32x_info>, + EVEX_V512, EVEX_CD8<32, CD8VT8>; +defm VBROADCASTF64X2 : avx512_subvec_broadcast_rm<0x1a, "vbroadcastf64x2", + v8f64_info, v2f64x_info>, VEX_W, + EVEX_V512, EVEX_CD8<64, CD8VT2>; +defm VBROADCASTF32X8 : avx512_subvec_broadcast_rm<0x1b, "vbroadcastf32x8", + v16f32_info, v8f32x_info>, + EVEX_V512, EVEX_CD8<32, CD8VT8>; +} def : Pat<(v16i32 (int_x86_avx512_pbroadcastd_512 (v4i32 VR128X:$src))), (VPBROADCASTDZrr VR128X:$src)>; diff --git a/lib/Target/X86/X86InstrFragmentsSIMD.td b/lib/Target/X86/X86InstrFragmentsSIMD.td index d9eebc5ddfd..79d213c6e1a 100644 --- a/lib/Target/X86/X86InstrFragmentsSIMD.td +++ b/lib/Target/X86/X86InstrFragmentsSIMD.td @@ -279,6 +279,9 @@ def X86VPermiv3 : SDNode<"X86ISD::VPERMIV3", SDTShuff3Op>; def X86VPerm2x128 : SDNode<"X86ISD::VPERM2X128", SDTShuff3OpI>; +def X86SubVBroadcast : SDNode<"X86ISD::SUBV_BROADCAST", + SDTypeProfile<1, 1, [SDTCisVec<0>, SDTCisVec<1>, + SDTCisSubVecOfVec<1, 0>]>, []>; def X86VBroadcast : SDNode<"X86ISD::VBROADCAST", SDTVBroadcast>; def X86Vinsert : SDNode<"X86ISD::VINSERT", SDTypeProfile<1, 3, [SDTCisSameAs<0, 1>, SDTCisPtrTy<3>]>, []>; diff --git a/test/MC/X86/avx512-encodings.s b/test/MC/X86/avx512-encodings.s index 00d61e5e626..cb71a00381b 100644 --- a/test/MC/X86/avx512-encodings.s +++ b/test/MC/X86/avx512-encodings.s @@ -5840,13 +5840,129 @@ vpsrad 512(%rdi, %rsi, 4), %zmm12, %zmm25 // CHECK: encoding: [0x62,0xf2,0x7d,0xc9,0x58,0xc8] vpbroadcastd %xmm0, %zmm1 {%k1} {z} -// CHECK: vbroadcasti32x4 {{.*}} {%k7} {z} -// CHECK: encoding: [0x67,0x62,0xf2,0x7d,0xcf,0x5a,0x52,0x02] -vbroadcasti32x4 0x20(%edx), %zmm2 {%k7} {z} +// CHECK: vbroadcastf32x4 (%rcx), %zmm3 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x19] + vbroadcastf32x4 (%rcx), %zmm3 -// CHECK: vbroadcasti64x4 {{.*}} %zmm22 -// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5b,0x72,0x02] -vbroadcasti64x4 0x40(%rdx), %zmm22 +// CHECK: vbroadcastf32x4 (%rcx), %zmm3 {%k7} +// CHECK: encoding: [0x62,0xf2,0x7d,0x4f,0x1a,0x19] + vbroadcastf32x4 (%rcx), %zmm3 {%k7} + +// CHECK: vbroadcastf32x4 (%rcx), %zmm3 {%k7} {z} +// CHECK: encoding: [0x62,0xf2,0x7d,0xcf,0x1a,0x19] + vbroadcastf32x4 (%rcx), %zmm3 {%k7} {z} + +// CHECK: vbroadcastf32x4 291(%rax,%r14,8), %zmm3 +// CHECK: encoding: [0x62,0xb2,0x7d,0x48,0x1a,0x9c,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf32x4 291(%rax,%r14,8), %zmm3 + +// CHECK: vbroadcastf32x4 2032(%rdx), %zmm3 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x5a,0x7f] + vbroadcastf32x4 2032(%rdx), %zmm3 + +// CHECK: vbroadcastf32x4 2048(%rdx), %zmm3 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x9a,0x00,0x08,0x00,0x00] + vbroadcastf32x4 2048(%rdx), %zmm3 + +// CHECK: vbroadcastf32x4 -2048(%rdx), %zmm3 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x5a,0x80] + vbroadcastf32x4 -2048(%rdx), %zmm3 + +// CHECK: vbroadcastf32x4 -2064(%rdx), %zmm3 +// CHECK: encoding: [0x62,0xf2,0x7d,0x48,0x1a,0x9a,0xf0,0xf7,0xff,0xff] + vbroadcastf32x4 -2064(%rdx), %zmm3 + +// CHECK: vbroadcastf64x4 (%rcx), %zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x09] + vbroadcastf64x4 (%rcx), %zmm25 + +// CHECK: vbroadcastf64x4 (%rcx), %zmm25 {%k6} +// CHECK: encoding: [0x62,0x62,0xfd,0x4e,0x1b,0x09] + vbroadcastf64x4 (%rcx), %zmm25 {%k6} + +// CHECK: vbroadcastf64x4 (%rcx), %zmm25 {%k6} {z} +// CHECK: encoding: [0x62,0x62,0xfd,0xce,0x1b,0x09] + vbroadcastf64x4 (%rcx), %zmm25 {%k6} {z} + +// CHECK: vbroadcastf64x4 291(%rax,%r14,8), %zmm25 +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x1b,0x8c,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf64x4 291(%rax,%r14,8), %zmm25 + +// CHECK: vbroadcastf64x4 4064(%rdx), %zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x4a,0x7f] + vbroadcastf64x4 4064(%rdx), %zmm25 + +// CHECK: vbroadcastf64x4 4096(%rdx), %zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x8a,0x00,0x10,0x00,0x00] + vbroadcastf64x4 4096(%rdx), %zmm25 + +// CHECK: vbroadcastf64x4 -4096(%rdx), %zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x4a,0x80] + vbroadcastf64x4 -4096(%rdx), %zmm25 + +// CHECK: vbroadcastf64x4 -4128(%rdx), %zmm25 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1b,0x8a,0xe0,0xef,0xff,0xff] + vbroadcastf64x4 -4128(%rdx), %zmm25 + +// CHECK: vbroadcasti32x4 (%rcx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0x31] + vbroadcasti32x4 (%rcx), %zmm30 + +// CHECK: vbroadcasti32x4 (%rcx), %zmm30 {%k3} +// CHECK: encoding: [0x62,0x62,0x7d,0x4b,0x5a,0x31] + vbroadcasti32x4 (%rcx), %zmm30 {%k3} + +// CHECK: vbroadcasti32x4 (%rcx), %zmm30 {%k3} {z} +// CHECK: encoding: [0x62,0x62,0x7d,0xcb,0x5a,0x31] + vbroadcasti32x4 (%rcx), %zmm30 {%k3} {z} + +// CHECK: vbroadcasti32x4 291(%rax,%r14,8), %zmm30 +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x5a,0xb4,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti32x4 291(%rax,%r14,8), %zmm30 + +// CHECK: vbroadcasti32x4 2032(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0x72,0x7f] + vbroadcasti32x4 2032(%rdx), %zmm30 + +// CHECK: vbroadcasti32x4 2048(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0xb2,0x00,0x08,0x00,0x00] + vbroadcasti32x4 2048(%rdx), %zmm30 + +// CHECK: vbroadcasti32x4 -2048(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0x72,0x80] + vbroadcasti32x4 -2048(%rdx), %zmm30 + +// CHECK: vbroadcasti32x4 -2064(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5a,0xb2,0xf0,0xf7,0xff,0xff] + vbroadcasti32x4 -2064(%rdx), %zmm30 + +// CHECK: vbroadcasti64x4 (%rcx), %zmm13 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0x29] + vbroadcasti64x4 (%rcx), %zmm13 + +// CHECK: vbroadcasti64x4 (%rcx), %zmm13 {%k4} +// CHECK: encoding: [0x62,0x72,0xfd,0x4c,0x5b,0x29] + vbroadcasti64x4 (%rcx), %zmm13 {%k4} + +// CHECK: vbroadcasti64x4 (%rcx), %zmm13 {%k4} {z} +// CHECK: encoding: [0x62,0x72,0xfd,0xcc,0x5b,0x29] + vbroadcasti64x4 (%rcx), %zmm13 {%k4} {z} + +// CHECK: vbroadcasti64x4 291(%rax,%r14,8), %zmm13 +// CHECK: encoding: [0x62,0x32,0xfd,0x48,0x5b,0xac,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti64x4 291(%rax,%r14,8), %zmm13 + +// CHECK: vbroadcasti64x4 4064(%rdx), %zmm13 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0x6a,0x7f] + vbroadcasti64x4 4064(%rdx), %zmm13 + +// CHECK: vbroadcasti64x4 4096(%rdx), %zmm13 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0xaa,0x00,0x10,0x00,0x00] + vbroadcasti64x4 4096(%rdx), %zmm13 + +// CHECK: vbroadcasti64x4 -4096(%rdx), %zmm13 +// CHECK: encoding: [0x62,0x72,0xfd,0x48,0x5b,0x6a,0x80] + vbroadcasti64x4 -4096(%rdx), %zmm13 // CHECK: vmovdqu64 {{.*}} {%k3} // CHECK: encoding: [0x62,0xf1,0xfe,0x4b,0x7f,0x07] diff --git a/test/MC/X86/x86-64-avx512dq.s b/test/MC/X86/x86-64-avx512dq.s index ec9b393e5d9..7d33abd7deb 100644 --- a/test/MC/X86/x86-64-avx512dq.s +++ b/test/MC/X86/x86-64-avx512dq.s @@ -1031,3 +1031,130 @@ // CHECK: encoding: [0x62,0xf3,0xed,0x48,0x18,0x4f,0x10,0x01] vinsertf64x2 $1, 256(%rdi), %zmm2, %zmm1 +// CHECK: vbroadcastf32x8 (%rcx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x1b,0x31] + vbroadcastf32x8 (%rcx), %zmm30 + +// CHECK: vbroadcastf32x8 (%rcx), %zmm30 {%k3} +// CHECK: encoding: [0x62,0x62,0x7d,0x4b,0x1b,0x31] + vbroadcastf32x8 (%rcx), %zmm30 {%k3} + +// CHECK: vbroadcastf32x8 (%rcx), %zmm30 {%k3} {z} +// CHECK: encoding: [0x62,0x62,0x7d,0xcb,0x1b,0x31] + vbroadcastf32x8 (%rcx), %zmm30 {%k3} {z} + +// CHECK: vbroadcastf32x8 291(%rax,%r14,8), %zmm30 +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x1b,0xb4,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf32x8 291(%rax,%r14,8), %zmm30 + +// CHECK: vbroadcastf32x8 4064(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x1b,0x72,0x7f] + vbroadcastf32x8 4064(%rdx), %zmm30 + +// CHECK: vbroadcastf32x8 4096(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x1b,0xb2,0x00,0x10,0x00,0x00] + vbroadcastf32x8 4096(%rdx), %zmm30 + +// CHECK: vbroadcastf32x8 -4096(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x1b,0x72,0x80] + vbroadcastf32x8 -4096(%rdx), %zmm30 + +// CHECK: vbroadcastf32x8 -4128(%rdx), %zmm30 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x1b,0xb2,0xe0,0xef,0xff,0xff] + vbroadcastf32x8 -4128(%rdx), %zmm30 + +// CHECK: vbroadcastf64x2 (%rcx), %zmm28 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1a,0x21] + vbroadcastf64x2 (%rcx), %zmm28 + +// CHECK: vbroadcastf64x2 (%rcx), %zmm28 {%k4} +// CHECK: encoding: [0x62,0x62,0xfd,0x4c,0x1a,0x21] + vbroadcastf64x2 (%rcx), %zmm28 {%k4} + +// CHECK: vbroadcastf64x2 (%rcx), %zmm28 {%k4} {z} +// CHECK: encoding: [0x62,0x62,0xfd,0xcc,0x1a,0x21] + vbroadcastf64x2 (%rcx), %zmm28 {%k4} {z} + +// CHECK: vbroadcastf64x2 291(%rax,%r14,8), %zmm28 +// CHECK: encoding: [0x62,0x22,0xfd,0x48,0x1a,0xa4,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf64x2 291(%rax,%r14,8), %zmm28 + +// CHECK: vbroadcastf64x2 2032(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1a,0x62,0x7f] + vbroadcastf64x2 2032(%rdx), %zmm28 + +// CHECK: vbroadcastf64x2 2048(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1a,0xa2,0x00,0x08,0x00,0x00] + vbroadcastf64x2 2048(%rdx), %zmm28 + +// CHECK: vbroadcastf64x2 -2048(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1a,0x62,0x80] + vbroadcastf64x2 -2048(%rdx), %zmm28 + +// CHECK: vbroadcastf64x2 -2064(%rdx), %zmm28 +// CHECK: encoding: [0x62,0x62,0xfd,0x48,0x1a,0xa2,0xf0,0xf7,0xff,0xff] + vbroadcastf64x2 -2064(%rdx), %zmm28 + +// CHECK: vbroadcasti32x8 (%rcx), %zmm29 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5b,0x29] + vbroadcasti32x8 (%rcx), %zmm29 + +// CHECK: vbroadcasti32x8 (%rcx), %zmm29 {%k5} +// CHECK: encoding: [0x62,0x62,0x7d,0x4d,0x5b,0x29] + vbroadcasti32x8 (%rcx), %zmm29 {%k5} + +// CHECK: vbroadcasti32x8 (%rcx), %zmm29 {%k5} {z} +// CHECK: encoding: [0x62,0x62,0x7d,0xcd,0x5b,0x29] + vbroadcasti32x8 (%rcx), %zmm29 {%k5} {z} + +// CHECK: vbroadcasti32x8 291(%rax,%r14,8), %zmm29 +// CHECK: encoding: [0x62,0x22,0x7d,0x48,0x5b,0xac,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti32x8 291(%rax,%r14,8), %zmm29 + +// CHECK: vbroadcasti32x8 4064(%rdx), %zmm29 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5b,0x6a,0x7f] + vbroadcasti32x8 4064(%rdx), %zmm29 + +// CHECK: vbroadcasti32x8 4096(%rdx), %zmm29 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5b,0xaa,0x00,0x10,0x00,0x00] + vbroadcasti32x8 4096(%rdx), %zmm29 + +// CHECK: vbroadcasti32x8 -4096(%rdx), %zmm29 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5b,0x6a,0x80] + vbroadcasti32x8 -4096(%rdx), %zmm29 + +// CHECK: vbroadcasti32x8 -4128(%rdx), %zmm29 +// CHECK: encoding: [0x62,0x62,0x7d,0x48,0x5b,0xaa,0xe0,0xef,0xff,0xff] + vbroadcasti32x8 -4128(%rdx), %zmm29 + +// CHECK: vbroadcasti64x2 (%rcx), %zmm20 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5a,0x21] + vbroadcasti64x2 (%rcx), %zmm20 + +// CHECK: vbroadcasti64x2 (%rcx), %zmm20 {%k3} +// CHECK: encoding: [0x62,0xe2,0xfd,0x4b,0x5a,0x21] + vbroadcasti64x2 (%rcx), %zmm20 {%k3} + +// CHECK: vbroadcasti64x2 (%rcx), %zmm20 {%k3} {z} +// CHECK: encoding: [0x62,0xe2,0xfd,0xcb,0x5a,0x21] + vbroadcasti64x2 (%rcx), %zmm20 {%k3} {z} + +// CHECK: vbroadcasti64x2 291(%rax,%r14,8), %zmm20 +// CHECK: encoding: [0x62,0xa2,0xfd,0x48,0x5a,0xa4,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti64x2 291(%rax,%r14,8), %zmm20 + +// CHECK: vbroadcasti64x2 2032(%rdx), %zmm20 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5a,0x62,0x7f] + vbroadcasti64x2 2032(%rdx), %zmm20 + +// CHECK: vbroadcasti64x2 2048(%rdx), %zmm20 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5a,0xa2,0x00,0x08,0x00,0x00] + vbroadcasti64x2 2048(%rdx), %zmm20 + +// CHECK: vbroadcasti64x2 -2048(%rdx), %zmm20 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5a,0x62,0x80] + vbroadcasti64x2 -2048(%rdx), %zmm20 + +// CHECK: vbroadcasti64x2 -2064(%rdx), %zmm20 +// CHECK: encoding: [0x62,0xe2,0xfd,0x48,0x5a,0xa2,0xf0,0xf7,0xff,0xff] + vbroadcasti64x2 -2064(%rdx), %zmm20 diff --git a/test/MC/X86/x86-64-avx512dq_vl.s b/test/MC/X86/x86-64-avx512dq_vl.s index 81607ce1169..2de4564b5f5 100644 --- a/test/MC/X86/x86-64-avx512dq_vl.s +++ b/test/MC/X86/x86-64-avx512dq_vl.s @@ -1904,3 +1904,67 @@ // CHECK: encoding: [0x62,0x61,0x34,0x30,0x57,0xa2,0xfc,0xfd,0xff,0xff] vxorps -516(%rdx){1to8}, %ymm25, %ymm28 +// CHECK: vbroadcastf64x2 (%rcx), %ymm27 +// CHECK: encoding: [0x62,0x62,0xfd,0x28,0x1a,0x19] + vbroadcastf64x2 (%rcx), %ymm27 + +// CHECK: vbroadcastf64x2 (%rcx), %ymm27 {%k5} +// CHECK: encoding: [0x62,0x62,0xfd,0x2d,0x1a,0x19] + vbroadcastf64x2 (%rcx), %ymm27 {%k5} + +// CHECK: vbroadcastf64x2 (%rcx), %ymm27 {%k5} {z} +// CHECK: encoding: [0x62,0x62,0xfd,0xad,0x1a,0x19] + vbroadcastf64x2 (%rcx), %ymm27 {%k5} {z} + +// CHECK: vbroadcastf64x2 291(%rax,%r14,8), %ymm27 +// CHECK: encoding: [0x62,0x22,0xfd,0x28,0x1a,0x9c,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf64x2 291(%rax,%r14,8), %ymm27 + +// CHECK: vbroadcastf64x2 2032(%rdx), %ymm27 +// CHECK: encoding: [0x62,0x62,0xfd,0x28,0x1a,0x5a,0x7f] + vbroadcastf64x2 2032(%rdx), %ymm27 + +// CHECK: vbroadcastf64x2 2048(%rdx), %ymm27 +// CHECK: encoding: [0x62,0x62,0xfd,0x28,0x1a,0x9a,0x00,0x08,0x00,0x00] + vbroadcastf64x2 2048(%rdx), %ymm27 + +// CHECK: vbroadcastf64x2 -2048(%rdx), %ymm27 +// CHECK: encoding: [0x62,0x62,0xfd,0x28,0x1a,0x5a,0x80] + vbroadcastf64x2 -2048(%rdx), %ymm27 + +// CHECK: vbroadcastf64x2 -2064(%rdx), %ymm27 +// CHECK: encoding: [0x62,0x62,0xfd,0x28,0x1a,0x9a,0xf0,0xf7,0xff,0xff] + vbroadcastf64x2 -2064(%rdx), %ymm27 + +// CHECK: vbroadcasti64x2 (%rcx), %ymm18 +// CHECK: encoding: [0x62,0xe2,0xfd,0x28,0x5a,0x11] + vbroadcasti64x2 (%rcx), %ymm18 + +// CHECK: vbroadcasti64x2 (%rcx), %ymm18 {%k1} +// CHECK: encoding: [0x62,0xe2,0xfd,0x29,0x5a,0x11] + vbroadcasti64x2 (%rcx), %ymm18 {%k1} + +// CHECK: vbroadcasti64x2 (%rcx), %ymm18 {%k1} {z} +// CHECK: encoding: [0x62,0xe2,0xfd,0xa9,0x5a,0x11] + vbroadcasti64x2 (%rcx), %ymm18 {%k1} {z} + +// CHECK: vbroadcasti64x2 291(%rax,%r14,8), %ymm18 +// CHECK: encoding: [0x62,0xa2,0xfd,0x28,0x5a,0x94,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti64x2 291(%rax,%r14,8), %ymm18 + +// CHECK: vbroadcasti64x2 2032(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe2,0xfd,0x28,0x5a,0x52,0x7f] + vbroadcasti64x2 2032(%rdx), %ymm18 + +// CHECK: vbroadcasti64x2 2048(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe2,0xfd,0x28,0x5a,0x92,0x00,0x08,0x00,0x00] + vbroadcasti64x2 2048(%rdx), %ymm18 + +// CHECK: vbroadcasti64x2 -2048(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe2,0xfd,0x28,0x5a,0x52,0x80] + vbroadcasti64x2 -2048(%rdx), %ymm18 + +// CHECK: vbroadcasti64x2 -2064(%rdx), %ymm18 +// CHECK: encoding: [0x62,0xe2,0xfd,0x28,0x5a,0x92,0xf0,0xf7,0xff,0xff] + vbroadcasti64x2 -2064(%rdx), %ymm18 + diff --git a/test/MC/X86/x86-64-avx512f_vl.s b/test/MC/X86/x86-64-avx512f_vl.s index 7839f74d168..cf22322bf52 100644 --- a/test/MC/X86/x86-64-avx512f_vl.s +++ b/test/MC/X86/x86-64-avx512f_vl.s @@ -9404,6 +9404,70 @@ vaddpd {rz-sae}, %zmm2, %zmm1, %zmm1 // CHECK: encoding: [0x62,0xf1,0x64,0x30,0xc2,0xa2,0xfc,0xfd,0xff,0xff,0x7b] vcmpps $0x7b, -516(%rdx){1to8}, %ymm19, %k4 +// CHECK: vbroadcastf32x4 (%rcx), %ymm28 +// CHECK: encoding: [0x62,0x62,0x7d,0x28,0x1a,0x21] + vbroadcastf32x4 (%rcx), %ymm28 + +// CHECK: vbroadcastf32x4 (%rcx), %ymm28 {%k4} +// CHECK: encoding: [0x62,0x62,0x7d,0x2c,0x1a,0x21] + vbroadcastf32x4 (%rcx), %ymm28 {%k4} + +// CHECK: vbroadcastf32x4 (%rcx), %ymm28 {%k4} {z} +// CHECK: encoding: [0x62,0x62,0x7d,0xac,0x1a,0x21] + vbroadcastf32x4 (%rcx), %ymm28 {%k4} {z} + +// CHECK: vbroadcastf32x4 291(%rax,%r14,8), %ymm28 +// CHECK: encoding: [0x62,0x22,0x7d,0x28,0x1a,0xa4,0xf0,0x23,0x01,0x00,0x00] + vbroadcastf32x4 291(%rax,%r14,8), %ymm28 + +// CHECK: vbroadcastf32x4 2032(%rdx), %ymm28 +// CHECK: encoding: [0x62,0x62,0x7d,0x28,0x1a,0x62,0x7f] + vbroadcastf32x4 2032(%rdx), %ymm28 + +// CHECK: vbroadcastf32x4 2048(%rdx), %ymm28 +// CHECK: encoding: [0x62,0x62,0x7d,0x28,0x1a,0xa2,0x00,0x08,0x00,0x00] + vbroadcastf32x4 2048(%rdx), %ymm28 + +// CHECK: vbroadcastf32x4 -2048(%rdx), %ymm28 +// CHECK: encoding: [0x62,0x62,0x7d,0x28,0x1a,0x62,0x80] + vbroadcastf32x4 -2048(%rdx), %ymm28 + +// CHECK: vbroadcastf32x4 -2064(%rdx), %ymm28 +// CHECK: encoding: [0x62,0x62,0x7d,0x28,0x1a,0xa2,0xf0,0xf7,0xff,0xff] + vbroadcastf32x4 -2064(%rdx), %ymm28 + +// CHECK: vbroadcasti32x4 (%rcx), %ymm19 +// CHECK: encoding: [0x62,0xe2,0x7d,0x28,0x5a,0x19] + vbroadcasti32x4 (%rcx), %ymm19 + +// CHECK: vbroadcasti32x4 (%rcx), %ymm19 {%k5} +// CHECK: encoding: [0x62,0xe2,0x7d,0x2d,0x5a,0x19] + vbroadcasti32x4 (%rcx), %ymm19 {%k5} + +// CHECK: vbroadcasti32x4 (%rcx), %ymm19 {%k5} {z} +// CHECK: encoding: [0x62,0xe2,0x7d,0xad,0x5a,0x19] + vbroadcasti32x4 (%rcx), %ymm19 {%k5} {z} + +// CHECK: vbroadcasti32x4 291(%rax,%r14,8), %ymm19 +// CHECK: encoding: [0x62,0xa2,0x7d,0x28,0x5a,0x9c,0xf0,0x23,0x01,0x00,0x00] + vbroadcasti32x4 291(%rax,%r14,8), %ymm19 + +// CHECK: vbroadcasti32x4 2032(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe2,0x7d,0x28,0x5a,0x5a,0x7f] + vbroadcasti32x4 2032(%rdx), %ymm19 + +// CHECK: vbroadcasti32x4 2048(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe2,0x7d,0x28,0x5a,0x9a,0x00,0x08,0x00,0x00] + vbroadcasti32x4 2048(%rdx), %ymm19 + +// CHECK: vbroadcasti32x4 -2048(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe2,0x7d,0x28,0x5a,0x5a,0x80] + vbroadcasti32x4 -2048(%rdx), %ymm19 + +// CHECK: vbroadcasti32x4 -2064(%rdx), %ymm19 +// CHECK: encoding: [0x62,0xe2,0x7d,0x28,0x5a,0x9a,0xf0,0xf7,0xff,0xff] + vbroadcasti32x4 -2064(%rdx), %ymm19 +