[AArch64] Add fpext and fpround costs (#119292)
[llvm-project.git] / llvm / test / Bindings / llvm-c / float_ops.ll
blob80475c3d53f1335c7577a4dcdbe07492cc3d52df
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) {
10   %1 = fneg float %a
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
18   ret float %1
21 define double @float_ops_f64(double %a, double %b) {
22   %1 = fneg double %a
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
30   ret double %1
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
50   ret void
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
70   ret void
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
90   ret void
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
110   ret void
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
132   ret float %1
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
154   ret double %1