[llvm] r196393 - Fix assembly syntax for AVX512 vector blend instructions.

Cameron McInally cameron.mcinally at nyu.edu
Wed Dec 4 10:05:36 PST 2013


Author: mcinally
Date: Wed Dec  4 12:05:36 2013
New Revision: 196393

URL: http://llvm.org/viewvc/llvm-project?rev=196393&view=rev
Log:
Fix assembly syntax for AVX512 vector blend instructions.

Modified:
    llvm/trunk/lib/Target/X86/X86InstrAVX512.td
    llvm/trunk/test/CodeGen/X86/avx512-intrinsics.ll

Modified: llvm/trunk/lib/Target/X86/X86InstrAVX512.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrAVX512.td?rev=196393&r1=196392&r2=196393&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrAVX512.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrAVX512.td Wed Dec  4 12:05:36 2013
@@ -627,14 +627,14 @@ multiclass avx512_blendmask<bits<8> opc,
     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;

Modified: llvm/trunk/test/CodeGen/X86/avx512-intrinsics.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/avx512-intrinsics.ll?rev=196393&r1=196392&r2=196393&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/avx512-intrinsics.ll (original)
+++ llvm/trunk/test/CodeGen/X86/avx512-intrinsics.ll Wed Dec  4 12:05:36 2013
@@ -355,6 +355,15 @@ define <8 x double> @test_x86_mskblend_p
   %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) {





More information about the llvm-commits mailing list