Fix assembly syntax for AVX512 vector blend instructions.
authorCameron McInally <cameron.mcinally@nyu.edu>
Wed, 4 Dec 2013 18:05:36 +0000 (18:05 +0000)
committerCameron McInally <cameron.mcinally@nyu.edu>
Wed, 4 Dec 2013 18:05:36 +0000 (18:05 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196393 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrAVX512.td
test/CodeGen/X86/avx512-intrinsics.ll

index cb19fbd5638e0f4a78f1385f06fabec34615e3d6..012934140ff9f981d2dce888a7a13e7c16099cc6 100644 (file)
@@ -627,14 +627,14 @@ multiclass avx512_blendmask<bits<8> opc, string OpcodeStr, Intrinsic Int,
     def rm : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
                  (ins KRC:$mask, RC:$src1, x86memop:$src2),
                  !strconcat(OpcodeStr,
-                  "\t{$src2, $src1, $mask, $dst|$dst, $mask, $src1, $src2}"),
+                 "\t{$src2, $src1, ${dst} {${mask}}|${dst} {${mask}}, $src1, $src2}"),
                  []>, 
                  EVEX_4V, EVEX_K;
 
     def rm_Int : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
                  (ins KRC:$mask, RC:$src1, x86memop:$src2),
                  !strconcat(OpcodeStr,
-                  "\t{$src2, $src1, $mask, $dst|$dst, $mask, $src1, $src2}"),
+                 "\t{$src2, $src1, ${dst} {${mask}}|${dst} {${mask}}, $src1, $src2}"),
                  [(set RC:$dst, (Int KRC:$mask, (vt RC:$src1),
                    (mem_frag addr:$src2)))]>,
                  EVEX_4V, EVEX_K;
index 5bdabf2349909be8330629cdf07038063cea6ba3..fb9d68cf4d7767fe0aa8522b42dbfa3348838a9c 100644 (file)
@@ -355,6 +355,15 @@ define <8 x double> @test_x86_mskblend_pd_512(i8 %a0, <8 x double> %a1, <8 x dou
   %res = call <8 x double> @llvm.x86.avx512.mskblend.pd.512(<8 x i1> %m0, <8 x double> %a1, <8 x double> %a2) ; <<8 x double>> [#uses=1]
   ret <8 x double> %res
 }
+
+define <8 x double> @test_x86_mskblend_pd_512_memop(<8 x double> %a, <8 x double>* %ptr, i8 %mask) {
+  ; CHECK-LABEL: test_x86_mskblend_pd_512_memop
+  ; CHECK: vblendmpd {{.*}}, {{%zmm[0-9]}}, {{%zmm[0-9]}} {%k1}
+  %vmask = bitcast i8 %mask to <8 x i1>
+  %b = load <8 x double>* %ptr
+  %res = call <8 x double> @llvm.x86.avx512.mskblend.pd.512(<8 x i1> %vmask, <8 x double> %a, <8 x double> %b) ; <<8 x double>> [#uses=1]
+  ret <8 x double> %res
+}
 declare <8 x double> @llvm.x86.avx512.mskblend.pd.512(<8 x i1> %a0, <8 x double> %a1, <8 x double> %a2) nounwind readonly
 
 define <16 x i32> @test_x86_mskblend_d_512(i16 %a0, <16 x i32> %a1, <16 x i32> %a2) {