; RUN: llvm-as -o - %s | llc -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
; NOTE fdiv is tested separately since it is a compound operation
target datalayout = "E-p:32:32:128-f64:64:128-f32:32:128-i64:32:128-i32:32:128-i16:16:128-i8:8:128-i1:8:128-a0:0:128-v128:128:128-s0:128:128"
target triple = "spu"

define float @fp_add(float %arg1, float %arg2) {
        %A = add 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
}

define float @fp_sub(float %arg1, float %arg2) {
        %A = sub 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
}

define float @fp_mul(float %arg1, float %arg2) {
        %A = mul 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
}

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
}

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
}

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
}

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
}

; 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
}

; 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
}

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
}
