6768ed6690263f8c4eb15438a11b4415158c80c2
[oota-llvm.git] / test / CodeGen / Mips / fmadd1.ll
1 ; RUN: llc < %s -march=mipsel -mcpu=mips32r2 -enable-no-nans-fp-math | FileCheck %s -check-prefix=32R2 -check-prefix=CHECK
2 ; RUN: llc < %s -march=mips64el -mcpu=mips64r2 -mattr=n64 -enable-no-nans-fp-math | FileCheck %s -check-prefix=64R2 -check-prefix=CHECK
3 ; RUN: llc < %s -march=mipsel -mcpu=mips32r2 | FileCheck %s -check-prefix=32R2NAN -check-prefix=CHECK
4 ; RUN: llc < %s -march=mips64el -mcpu=mips64r2 -mattr=n64 | FileCheck %s -check-prefix=64R2NAN -check-prefix=CHECK
5
6 define float @FOO0float(float %a, float %b, float %c) nounwind readnone {
7 entry:
8 ; CHECK: madd.s 
9   %mul = fmul float %a, %b
10   %add = fadd float %mul, %c
11   %add1 = fadd float %add, 0.000000e+00
12   ret float %add1
13 }
14
15 define float @FOO1float(float %a, float %b, float %c) nounwind readnone {
16 entry:
17 ; CHECK: msub.s 
18   %mul = fmul float %a, %b
19   %sub = fsub float %mul, %c
20   %add = fadd float %sub, 0.000000e+00
21   ret float %add
22 }
23
24 define float @FOO2float(float %a, float %b, float %c) nounwind readnone {
25 entry:
26 ; 32R2: nmadd.s 
27 ; 64R2: nmadd.s 
28 ; 32R2NAN: madd.s 
29 ; 64R2NAN: madd.s 
30   %mul = fmul float %a, %b
31   %add = fadd float %mul, %c
32   %sub = fsub float 0.000000e+00, %add
33   ret float %sub
34 }
35
36 define float @FOO3float(float %a, float %b, float %c) nounwind readnone {
37 entry:
38 ; 32R2: nmsub.s 
39 ; 64R2: nmsub.s 
40 ; 32R2NAN: msub.s 
41 ; 64R2NAN: msub.s 
42   %mul = fmul float %a, %b
43   %sub = fsub float %mul, %c
44   %sub1 = fsub float 0.000000e+00, %sub
45   ret float %sub1
46 }
47
48 define double @FOO10double(double %a, double %b, double %c) nounwind readnone {
49 entry:
50 ; CHECK: madd.d
51   %mul = fmul double %a, %b
52   %add = fadd double %mul, %c
53   %add1 = fadd double %add, 0.000000e+00
54   ret double %add1
55 }
56
57 define double @FOO11double(double %a, double %b, double %c) nounwind readnone {
58 entry:
59 ; CHECK: msub.d
60   %mul = fmul double %a, %b
61   %sub = fsub double %mul, %c
62   %add = fadd double %sub, 0.000000e+00
63   ret double %add
64 }
65
66 define double @FOO12double(double %a, double %b, double %c) nounwind readnone {
67 entry:
68 ; 32R2: nmadd.d 
69 ; 64R2: nmadd.d 
70 ; 32R2NAN: madd.d 
71 ; 64R2NAN: madd.d 
72   %mul = fmul double %a, %b
73   %add = fadd double %mul, %c
74   %sub = fsub double 0.000000e+00, %add
75   ret double %sub
76 }
77
78 define double @FOO13double(double %a, double %b, double %c) nounwind readnone {
79 entry:
80 ; 32R2: nmsub.d 
81 ; 64R2: nmsub.d 
82 ; 32R2NAN: msub.d 
83 ; 64R2NAN: msub.d 
84   %mul = fmul double %a, %b
85   %sub = fsub double %mul, %c
86   %sub1 = fsub double 0.000000e+00, %sub
87   ret double %sub1
88 }