[X86][AVX512] Add patterns that match the AVX512 floating point vbroadcast intrinsics.
authorQuentin Colombet <qcolombet@apple.com>
Fri, 25 Oct 2013 17:47:18 +0000 (17:47 +0000)
committerQuentin Colombet <qcolombet@apple.com>
Fri, 25 Oct 2013 17:47:18 +0000 (17:47 +0000)
Patch by Cameron McInally <cameron.mcinally@nyu.edu>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193421 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 1be6660e2586ddc6f25dbf0d7a798d1c54c1d2bf..79b9ae877969416e9c322a62b9191c0d982a76d7 100644 (file)
@@ -391,6 +391,11 @@ def : Pat<(v16f32 (X86VBroadcast (loadf32 addr:$src))),
 def : Pat<(v8f64 (X86VBroadcast (loadf64 addr:$src))),
           (VBROADCASTSDZrm addr:$src)>;
 
+def : Pat<(int_x86_avx512_vbroadcast_ss_512 addr:$src),
+          (VBROADCASTSSZrm addr:$src)>;
+def : Pat<(int_x86_avx512_vbroadcast_sd_512 addr:$src),
+          (VBROADCASTSDZrm addr:$src)>;
+
 multiclass avx512_int_broadcast_reg<bits<8> opc, string OpcodeStr,
                           RegisterClass SrcRC, RegisterClass KRC> {
   def Zrr : AVX5128I<opc, MRMSrcReg, (outs VR512:$dst), (ins SrcRC:$src),
index 5aeb070c9a63dc54817aa193d38b616e6119e853..01e7b698d9d8a0238b2721e0bd223032a841cc5a 100644 (file)
@@ -205,3 +205,17 @@ define <16 x i16> @test_x86_vcvtps2ph_256(<16 x float> %a0) {
   ret <16 x i16> %res
 }
 declare <16 x i16> @llvm.x86.avx512.vcvtps2ph.512(<16 x float>, i32) nounwind readonly
+
+define <16 x float> @test_x86_vbroadcast_ss_512(i8* %a0) {
+  ; CHECK: vbroadcastss
+  %res = call <16 x float> @llvm.x86.avx512.vbroadcast.ss.512(i8* %a0) ; <<16 x float>> [#uses=1]
+  ret <16 x float> %res
+}
+declare <16 x float> @llvm.x86.avx512.vbroadcast.ss.512(i8*) nounwind readonly
+
+define <8 x double> @test_x86_vbroadcast_sd_512(i8* %a0) {
+  ; CHECK: vbroadcastsd
+  %res = call <8 x double> @llvm.x86.avx512.vbroadcast.sd.512(i8* %a0) ; <<8 x double>> [#uses=1]
+  ret <8 x double> %res
+}
+declare <8 x double> @llvm.x86.avx512.vbroadcast.sd.512(i8*) nounwind readonly