diff options
author | Quentin Colombet <qcolombet@apple.com> | 2013-10-25 17:47:18 +0000 |
---|---|---|
committer | Quentin Colombet <qcolombet@apple.com> | 2013-10-25 17:47:18 +0000 |
commit | 52d4822f71a76ef113be24afdce4e8ccfba2c3c1 (patch) | |
tree | 89d6675e45ee2861a86d619a6682916b1fd98d95 | |
parent | 69f4280b5451071285700eb5bb5c38beb4336048 (diff) | |
download | external_llvm-52d4822f71a76ef113be24afdce4e8ccfba2c3c1.zip external_llvm-52d4822f71a76ef113be24afdce4e8ccfba2c3c1.tar.gz external_llvm-52d4822f71a76ef113be24afdce4e8ccfba2c3c1.tar.bz2 |
[X86][AVX512] Add patterns that match the AVX512 floating point vbroadcast intrinsics.
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
-rw-r--r-- | lib/Target/X86/X86InstrAVX512.td | 5 | ||||
-rw-r--r-- | test/CodeGen/X86/avx512-intrinsics.ll | 14 |
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/Target/X86/X86InstrAVX512.td b/lib/Target/X86/X86InstrAVX512.td index 1be6660..79b9ae8 100644 --- a/lib/Target/X86/X86InstrAVX512.td +++ b/lib/Target/X86/X86InstrAVX512.td @@ -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), diff --git a/test/CodeGen/X86/avx512-intrinsics.ll b/test/CodeGen/X86/avx512-intrinsics.ll index 5aeb070..01e7b69 100644 --- a/test/CodeGen/X86/avx512-intrinsics.ll +++ b/test/CodeGen/X86/avx512-intrinsics.ll @@ -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 |