llvm.org GIT mirror llvm / release_80 test / CodeGen / PowerPC / pr30663.ll
release_80

Tree @release_80 (Download .tar.gz)

pr30663.ll @release_80raw · history · blame

; RUN: llc -O1 < %s | FileCheck %s
target triple = "powerpc64le-linux-gnu"

; The second xxspltw should be eliminated.
; CHECK: xxspltw
; CHECK-NOT: xxspltw
define void @Test() {
bb4:
  %tmp = load <4 x i8>, <4 x i8>* undef
  %tmp8 = bitcast <4 x i8> %tmp to float
  %tmp18 = fmul float %tmp8, undef
  %tmp19 = fsub float 0.000000e+00, %tmp18
  store float %tmp19, float* undef
  %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>
  %tmp23 = bitcast <16 x i8> %tmp22 to <4 x float>
  %tmp25 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> undef, <4 x float> %tmp23, <4 x float> undef)
  %tmp26 = fsub <4 x float> zeroinitializer, %tmp25
  %tmp27 = bitcast <4 x float> %tmp26 to <4 x i32>
  tail call void @llvm.ppc.altivec.stvx(<4 x i32> %tmp27, i8* undef)
  ret void
}

declare void @llvm.ppc.altivec.stvx(<4 x i32>, i8*)
declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)