1 ; RUN: llvm-as < %s | llvm-dis > %t.orig
2 ; RUN: llvm-as < %s | llvm-c-test --echo > %t.echo
3 ; RUN: diff -w %t.orig %t.echo
5 source_filename = "/test/Bindings/float_ops.ll"
6 target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
9 define float @float_ops_f32(float %a, float %b) {
12 %2 = fadd float %a, %b
13 %3 = fsub float %a, %b
14 %4 = fmul float %a, %b
15 %5 = fdiv float %a, %b
16 %6 = frem float %a, %b
21 define double @float_ops_f64(double %a, double %b) {
24 %2 = fadd double %a, %b
25 %3 = fsub double %a, %b
26 %4 = fmul double %a, %b
27 %5 = fdiv double %a, %b
28 %6 = frem double %a, %b
33 define void @float_cmp_f32(float %a, float %b) {
34 %1 = fcmp oeq float %a, %b
35 %2 = fcmp ogt float %a, %b
36 %3 = fcmp olt float %a, %b
37 %4 = fcmp ole float %a, %b
38 %5 = fcmp one float %a, %b
40 %6 = fcmp ueq float %a, %b
41 %7 = fcmp ugt float %a, %b
42 %8 = fcmp ult float %a, %b
43 %9 = fcmp ule float %a, %b
44 %10 = fcmp une float %a, %b
46 %11 = fcmp ord float %a, %b
47 %12 = fcmp false float %a, %b
48 %13 = fcmp true float %a, %b
53 define void @float_cmp_f64(double %a, double %b) {
54 %1 = fcmp oeq double %a, %b
55 %2 = fcmp ogt double %a, %b
56 %3 = fcmp olt double %a, %b
57 %4 = fcmp ole double %a, %b
58 %5 = fcmp one double %a, %b
60 %6 = fcmp ueq double %a, %b
61 %7 = fcmp ugt double %a, %b
62 %8 = fcmp ult double %a, %b
63 %9 = fcmp ule double %a, %b
64 %10 = fcmp une double %a, %b
66 %11 = fcmp ord double %a, %b
67 %12 = fcmp false double %a, %b
68 %13 = fcmp true double %a, %b
73 define void @float_cmp_fast_f32(float %a, float %b) {
74 %1 = fcmp fast oeq float %a, %b
75 %2 = fcmp nsz ogt float %a, %b
76 %3 = fcmp nsz nnan olt float %a, %b
77 %4 = fcmp contract ole float %a, %b
78 %5 = fcmp nnan one float %a, %b
80 %6 = fcmp nnan ninf nsz ueq float %a, %b
81 %7 = fcmp arcp ugt float %a, %b
82 %8 = fcmp fast ult float %a, %b
83 %9 = fcmp fast ule float %a, %b
84 %10 = fcmp fast une float %a, %b
86 %11 = fcmp fast ord float %a, %b
87 %12 = fcmp nnan ninf false float %a, %b
88 %13 = fcmp nnan ninf true float %a, %b
93 define void @float_cmp_fast_f64(double %a, double %b) {
94 %1 = fcmp fast oeq double %a, %b
95 %2 = fcmp nsz ogt double %a, %b
96 %3 = fcmp nsz nnan olt double %a, %b
97 %4 = fcmp contract ole double %a, %b
98 %5 = fcmp nnan one double %a, %b
100 %6 = fcmp nnan ninf nsz ueq double %a, %b
101 %7 = fcmp arcp ugt double %a, %b
102 %8 = fcmp fast ult double %a, %b
103 %9 = fcmp fast ule double %a, %b
104 %10 = fcmp fast une double %a, %b
106 %11 = fcmp fast ord double %a, %b
107 %12 = fcmp nnan ninf false double %a, %b
108 %13 = fcmp nnan ninf true double %a, %b
113 define float @float_ops_fast_f32(float %a, float %b) {
114 %1 = fneg nnan float %a
116 %2 = fadd ninf float %a, %b
117 %3 = fsub nsz float %a, %b
118 %4 = fmul arcp float %a, %b
119 %5 = fdiv contract float %a, %b
120 %6 = frem afn float %a, %b
122 %7 = fadd reassoc float %a, %b
123 %8 = fadd reassoc float %7, %b
125 %9 = fadd fast float %a, %b
126 %10 = fadd nnan nsz float %a, %b
127 %11 = frem nnan nsz float %a, %b
128 %12 = fdiv nnan nsz arcp float %a, %b
129 %13 = fmul nnan nsz ninf contract float %a, %b
130 %14 = fmul nnan nsz ninf arcp contract afn reassoc float %a, %b
135 define double @float_ops_fast_f64(double %a, double %b) {
136 %1 = fneg nnan double %a
138 %2 = fadd ninf double %a, %b
139 %3 = fsub nsz double %a, %b
140 %4 = fmul arcp double %a, %b
141 %5 = fdiv contract double %a, %b
142 %6 = frem afn double %a, %b
144 %7 = fadd reassoc double %a, %b
145 %8 = fadd reassoc double %7, %b
147 %9 = fadd fast double %a, %b
148 %10 = fadd nnan nsz double %a, %b
149 %11 = frem nnan nsz double %a, %b
150 %12 = fdiv nnan nsz arcp double %a, %b
151 %13 = fmul nnan nsz ninf contract double %a, %b
152 %14 = fmul nnan nsz ninf arcp contract afn reassoc double %a, %b