forked from OSchip/llvm-project
				
			AVX-512: Added VBROADCASTF64X4, VBROADCASTF64X2, VBROADCASTI32X8, and other instructions from this set
Added encoding tests. llvm-svn: 237557
This commit is contained in:
		
							parent
							
								
									8340de142c
								
							
						
					
					
						commit
						ad9c396838
					
				| 
						 | 
				
			
			@ -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,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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<bits<8> opc, string OpcodeStr,
 | 
			
		||||
                          X86MemOperand x86memop, PatFrag ld_frag,
 | 
			
		||||
                          RegisterClass KRC> {
 | 
			
		||||
multiclass avx512_subvec_broadcast_rm<bits<8> opc, string OpcodeStr,
 | 
			
		||||
                          X86VectorVTInfo _Dst, X86VectorVTInfo _Src> {
 | 
			
		||||
  let mayLoad = 1 in {
 | 
			
		||||
  def rm : AVX5128I<opc, MRMSrcMem, (outs VR512:$dst), (ins x86memop:$src),
 | 
			
		||||
  def rm : AVX5128I<opc, MRMSrcMem, (outs _Dst.RC:$dst), (ins _Src.MemOp:$src),
 | 
			
		||||
                  !strconcat(OpcodeStr, "\t{$src, $dst|$dst, $src}"),
 | 
			
		||||
                  []>, EVEX;
 | 
			
		||||
  def krm : AVX5128I<opc, MRMSrcMem, (outs VR512:$dst), (ins KRC:$mask,
 | 
			
		||||
                                                         x86memop:$src),
 | 
			
		||||
                  [(set _Dst.RC:$dst, 
 | 
			
		||||
                    (_Dst.VT (X86SubVBroadcast 
 | 
			
		||||
                    (_Src.VT (bitconvert (_Src.LdFrag addr:$src))))))]>, EVEX;
 | 
			
		||||
  def rmk : AVX5128I<opc, MRMSrcMem, (outs _Dst.RC:$dst), (ins _Dst.KRCWM:$mask,
 | 
			
		||||
                                                         _Src.MemOp:$src),
 | 
			
		||||
                  !strconcat(OpcodeStr,
 | 
			
		||||
                      "\t{$src, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src}"),
 | 
			
		||||
                      "\t{$src, ${dst} {${mask}}|${dst} {${mask}}, $src}"),
 | 
			
		||||
                  []>, EVEX, EVEX_K;
 | 
			
		||||
  def rmkz : AVX5128I<opc, MRMSrcMem, (outs _Dst.RC:$dst), (ins _Dst.KRCWM:$mask,
 | 
			
		||||
                                                         _Src.MemOp:$src),
 | 
			
		||||
                  !strconcat(OpcodeStr,
 | 
			
		||||
                    "\t{$src, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src}"),
 | 
			
		||||
                  []>, 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)>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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>]>, []>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue