xref: /llvm-project/llvm/test/Bindings/llvm-c/float_ops.ll (revision d5c95302b9736b4e785c77463d7f2026b772ba1b)
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
4;
5source_filename = "/test/Bindings/float_ops.ll"
6target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
7
8
9define float @float_ops_f32(float %a, float %b) {
10  %1 = fneg float %a
11
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
17
18  ret float %1
19}
20
21define double @float_ops_f64(double %a, double %b) {
22  %1 = fneg double %a
23
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
29
30  ret double %1
31}
32
33define 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
39
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
45
46  %11 = fcmp ord float %a, %b
47  %12 = fcmp false float %a, %b
48  %13 = fcmp true float %a, %b
49
50  ret void
51}
52
53define 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
59
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
65
66  %11 = fcmp ord double %a, %b
67  %12 = fcmp false double %a, %b
68  %13 = fcmp true double %a, %b
69
70  ret void
71}
72
73define 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
79
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
85
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
89
90  ret void
91}
92
93define 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
99
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
105
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
109
110  ret void
111}
112
113define float @float_ops_fast_f32(float %a, float %b) {
114  %1 = fneg nnan float %a
115
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
121
122  %7 = fadd reassoc float %a, %b
123  %8 = fadd reassoc float %7, %b
124
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
131
132  ret float %1
133}
134
135define double @float_ops_fast_f64(double %a, double %b) {
136  %1 = fneg nnan double %a
137
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
143
144  %7 = fadd reassoc double %a, %b
145  %8 = fadd reassoc double %7, %b
146
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
153
154  ret double %1
155}
156
157