Teach instcombine to transform a bitcast/(zext|trunc)/bitcast sequence
[oota-llvm.git] / test / CodeGen / CellSPU / sp_farith.ll
index 473e9a3ecec90824b68b0b46aa489bc02c5b497d..80bf47ccf5d9d7def35099b992e1325b18dad0c2 100644 (file)
@@ -1,9 +1,9 @@
-; RUN: llvm-as -o - %s | llc -march=cellspu > %t1.s
-; RUN: grep fa %t1.s | count 2 &&
-; RUN: grep fs %t1.s | count 2 &&
-; RUN: grep fm %t1.s | count 6 &&
-; RUN: grep fma %t1.s | count 2 &&
-; RUN: grep fms %t1.s | count 2 &&
+; RUN: llc < %s -march=cellspu -enable-unsafe-fp-math > %t1.s
+; RUN: grep fa %t1.s | count 2
+; RUN: grep fs %t1.s | count 2
+; RUN: grep fm %t1.s | count 6
+; RUN: grep fma %t1.s | count 2
+; RUN: grep fms %t1.s | count 2
 ; RUN: grep fnms %t1.s | count 3
 ;
 ; This file includes standard floating point arithmetic instructions
@@ -12,79 +12,79 @@ target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i
 target triple = "spu"
 
 define float @fp_add(float %arg1, float %arg2) {
-       %A = add float %arg1, %arg2     ; <float> [#uses=1]
-       ret float %A
+        %A = fadd float %arg1, %arg2     ; <float> [#uses=1]
+        ret float %A
 }
 
 define <4 x float> @fp_add_vec(<4 x float> %arg1, <4 x float> %arg2) {
-       %A = add <4 x float> %arg1, %arg2       ; <<4 x float>> [#uses=1]
-       ret <4 x float> %A
+        %A = fadd <4 x float> %arg1, %arg2       ; <<4 x float>> [#uses=1]
+        ret <4 x float> %A
 }
 
 define float @fp_sub(float %arg1, float %arg2) {
-       %A = sub float %arg1,  %arg2    ; <float> [#uses=1]
-       ret float %A
+        %A = fsub float %arg1,  %arg2    ; <float> [#uses=1]
+        ret float %A
 }
 
 define <4 x float> @fp_sub_vec(<4 x float> %arg1, <4 x float> %arg2) {
-       %A = sub <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
-       ret <4 x float> %A
+        %A = fsub <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
+        ret <4 x float> %A
 }
 
 define float @fp_mul(float %arg1, float %arg2) {
-       %A = mul float %arg1,  %arg2    ; <float> [#uses=1]
-       ret float %A
+        %A = fmul float %arg1,  %arg2    ; <float> [#uses=1]
+        ret float %A
 }
 
 define <4 x float> @fp_mul_vec(<4 x float> %arg1, <4 x float> %arg2) {
-       %A = mul <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
-       ret <4 x float> %A
+        %A = fmul <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
+        ret <4 x float> %A
 }
 
 define float @fp_mul_add(float %arg1, float %arg2, float %arg3) {
-       %A = mul float %arg1,  %arg2    ; <float> [#uses=1]
-       %B = add float %A, %arg3        ; <float> [#uses=1]
-       ret float %B
+        %A = fmul float %arg1,  %arg2    ; <float> [#uses=1]
+        %B = fadd float %A, %arg3        ; <float> [#uses=1]
+        ret float %B
 }
 
 define <4 x float> @fp_mul_add_vec(<4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3) {
-       %A = mul <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
-       %B = add <4 x float> %A, %arg3  ; <<4 x float>> [#uses=1]
-       ret <4 x float> %B
+        %A = fmul <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
+        %B = fadd <4 x float> %A, %arg3  ; <<4 x float>> [#uses=1]
+        ret <4 x float> %B
 }
 
 define float @fp_mul_sub(float %arg1, float %arg2, float %arg3) {
-       %A = mul float %arg1,  %arg2    ; <float> [#uses=1]
-       %B = sub float %A, %arg3        ; <float> [#uses=1]
-       ret float %B
+        %A = fmul float %arg1,  %arg2    ; <float> [#uses=1]
+        %B = fsub float %A, %arg3        ; <float> [#uses=1]
+        ret float %B
 }
 
 define <4 x float> @fp_mul_sub_vec(<4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3) {
-       %A = mul <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
-       %B = sub <4 x float> %A, %arg3  ; <<4 x float>> [#uses=1]
-       ret <4 x float> %B
+        %A = fmul <4 x float> %arg1,  %arg2      ; <<4 x float>> [#uses=1]
+        %B = fsub <4 x float> %A, %arg3  ; <<4 x float>> [#uses=1]
+        ret <4 x float> %B
 }
 
 ; Test the straightforward way of getting fnms
 ; c - a * b
 define float @fp_neg_mul_sub_1(float %arg1, float %arg2, float %arg3) {
-       %A = mul float %arg1,  %arg2
-       %B = sub float %arg3, %A
-       ret float %B
+        %A = fmul float %arg1,  %arg2
+        %B = fsub float %arg3, %A
+        ret float %B
 }
 
 ; Test another way of getting fnms
 ; - ( a *b -c ) = c - a * b
 define float @fp_neg_mul_sub_2(float %arg1, float %arg2, float %arg3) {
-       %A = mul float %arg1,  %arg2
-       %B = sub float %A, %arg3 
-       %C = sub float -0.0, %B
-       ret float %C
+        %A = fmul float %arg1,  %arg2
+        %B = fsub float %A, %arg3
+        %C = fsub float -0.0, %B
+        ret float %C
 }
 
 define <4 x float> @fp_neg_mul_sub_vec(<4 x float> %arg1, <4 x float> %arg2, <4 x float> %arg3) {
-       %A = mul <4 x float> %arg1,  %arg2
-       %B = sub <4 x float> %A, %arg3
-       %D = sub <4 x float> < float -0.0, float -0.0, float -0.0, float -0.0 >, %B
-       ret <4 x float> %D
+        %A = fmul <4 x float> %arg1,  %arg2
+        %B = fsub <4 x float> %A, %arg3
+        %D = fsub <4 x float> < float -0.0, float -0.0, float -0.0, float -0.0 >, %B
+        ret <4 x float> %D
 }