xref: /llvm-project/llvm/test/CodeGen/PowerPC/pr30663.ll (revision 5403c59c608c08c8ecd4303763f08eb046eb5e4d)
1; RUN: llc -O1 < %s | FileCheck %s
2target triple = "powerpc64le-linux-gnu"
3
4; The second xxspltw should be eliminated.
5; CHECK: xxspltw
6; CHECK-NOT: xxspltw
7define void @Test() {
8bb4:
9  %tmp = load <4 x i8>, ptr undef
10  %tmp8 = bitcast <4 x i8> %tmp to float
11  %tmp18 = fmul float %tmp8, undef
12  %tmp19 = fsub float 0.000000e+00, %tmp18
13  store float %tmp19, ptr undef
14  %tmp22 = shufflevector <4 x i8> %tmp, <4 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
15  %tmp23 = bitcast <16 x i8> %tmp22 to <4 x float>
16  %tmp25 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> undef, <4 x float> %tmp23, <4 x float> undef)
17  %tmp26 = fsub <4 x float> zeroinitializer, %tmp25
18  %tmp27 = bitcast <4 x float> %tmp26 to <4 x i32>
19  tail call void @llvm.ppc.altivec.stvx(<4 x i32> %tmp27, ptr undef)
20  ret void
21}
22
23declare void @llvm.ppc.altivec.stvx(<4 x i32>, ptr)
24declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)
25