25 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			LLVM
		
	
	
	
; 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>)
 |