[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / floatdp_1source.ll
blob1c37f7045342fb8963c05eaeac5fa2e7e40c5fe9
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -verify-machineinstrs -o - %s -mtriple=arm64-apple-ios7.0 | FileCheck %s
4 declare float @fabsf(float) readonly
5 declare double @fabs(double) readonly
7 declare float @llvm.sqrt.f32(float %Val)
8 declare double @llvm.sqrt.f64(double %Val)
10 declare float @ceilf(float) readonly
11 declare double @ceil(double) readonly
13 declare float @floorf(float) readonly
14 declare double @floor(double) readonly
16 declare float @truncf(float) readonly
17 declare double @trunc(double) readonly
19 declare float @rintf(float) readonly
20 declare double @rint(double) readonly
22 declare float @nearbyintf(float) readonly
23 declare double @nearbyint(double) readonly
25 define float @fabs_f(float %v) {
26 ; CHECK-LABEL: fabs_f:
27 ; CHECK:       ; %bb.0:
28 ; CHECK-NEXT:    fabs s0, s0
29 ; CHECK-NEXT:    ret
30   %r = call float @fabsf(float %v)
31   ret float %r
34 define float @fsub_f(float %v) {
35 ; CHECK-LABEL: fsub_f:
36 ; CHECK:       ; %bb.0:
37 ; CHECK-NEXT:    fneg s0, s0
38 ; CHECK-NEXT:    ret
39   %r = fsub float -0.0, %v
40   ret float %r
43 define float @sqrt_f(float %v) {
44 ; CHECK-LABEL: sqrt_f:
45 ; CHECK:       ; %bb.0:
46 ; CHECK-NEXT:    fsqrt s0, s0
47 ; CHECK-NEXT:    ret
48   %r = call float @llvm.sqrt.f32(float %v)
49   ret float %r
52 define float @ceil_f(float %v) {
53 ; CHECK-LABEL: ceil_f:
54 ; CHECK:       ; %bb.0:
55 ; CHECK-NEXT:    frintp s0, s0
56 ; CHECK-NEXT:    ret
57   %r = call float @ceilf(float %v)
58   ret float %r
61 define float @floor_f(float %v) {
62 ; CHECK-LABEL: floor_f:
63 ; CHECK:       ; %bb.0:
64 ; CHECK-NEXT:    frintm s0, s0
65 ; CHECK-NEXT:    ret
66   %r = call float @floorf(float %v)
67   ret float %r
70 define float @trunc_f(float %v) {
71 ; CHECK-LABEL: trunc_f:
72 ; CHECK:       ; %bb.0:
73 ; CHECK-NEXT:    frintz s0, s0
74 ; CHECK-NEXT:    ret
75   %r = call float @truncf(float %v)
76   ret float %r
79 define float @rint_f(float %v) {
80 ; CHECK-LABEL: rint_f:
81 ; CHECK:       ; %bb.0:
82 ; CHECK-NEXT:    frintx s0, s0
83 ; CHECK-NEXT:    ret
84   %r = call float @rintf(float %v)
85   ret float %r
88 define float @nearbyint_f(float %v) {
89 ; CHECK-LABEL: nearbyint_f:
90 ; CHECK:       ; %bb.0:
91 ; CHECK-NEXT:    frinti s0, s0
92 ; CHECK-NEXT:    ret
93   %r = call float @nearbyintf(float %v)
94   ret float %r
97 define double @fabs_d(double %v) {
98 ; CHECK-LABEL: fabs_d:
99 ; CHECK:       ; %bb.0:
100 ; CHECK-NEXT:    fabs d0, d0
101 ; CHECK-NEXT:    ret
102   %r = call double @fabs(double %v)
103   ret double %r
106 define double @fsub_d(double %v) {
107 ; CHECK-LABEL: fsub_d:
108 ; CHECK:       ; %bb.0:
109 ; CHECK-NEXT:    fneg d0, d0
110 ; CHECK-NEXT:    ret
111   %r = fsub double -0.0, %v
112   ret double %r
115 define double @sqrt_d(double %v) {
116 ; CHECK-LABEL: sqrt_d:
117 ; CHECK:       ; %bb.0:
118 ; CHECK-NEXT:    fsqrt d0, d0
119 ; CHECK-NEXT:    ret
120   %r = call double @llvm.sqrt.f64(double %v)
121   ret double %r
124 define double @ceil_d(double %v) {
125 ; CHECK-LABEL: ceil_d:
126 ; CHECK:       ; %bb.0:
127 ; CHECK-NEXT:    frintp d0, d0
128 ; CHECK-NEXT:    ret
129   %r = call double @ceil(double %v)
130   ret double %r
133 define double @floor_d(double %v) {
134 ; CHECK-LABEL: floor_d:
135 ; CHECK:       ; %bb.0:
136 ; CHECK-NEXT:    frintm d0, d0
137 ; CHECK-NEXT:    ret
138   %r = call double @floor(double %v)
139   ret double %r
142 define double @trunc_d(double %v) {
143 ; CHECK-LABEL: trunc_d:
144 ; CHECK:       ; %bb.0:
145 ; CHECK-NEXT:    frintz d0, d0
146 ; CHECK-NEXT:    ret
147   %r = call double @trunc(double %v)
148   ret double %r
151 define double @rint_d(double %v) {
152 ; CHECK-LABEL: rint_d:
153 ; CHECK:       ; %bb.0:
154 ; CHECK-NEXT:    frintx d0, d0
155 ; CHECK-NEXT:    ret
156   %r = call double @rint(double %v)
157   ret double %r
160 define double @nearbyint_d(double %v) {
161 ; CHECK-LABEL: nearbyint_d:
162 ; CHECK:       ; %bb.0:
163 ; CHECK-NEXT:    frinti d0, d0
164 ; CHECK-NEXT:    ret
165   %r = call double @nearbyint(double %v)
166   ret double %r
169 define float @conv_h_f(half %v) {
170 ; CHECK-LABEL: conv_h_f:
171 ; CHECK:       ; %bb.0:
172 ; CHECK-NEXT:    fcvt s0, h0
173 ; CHECK-NEXT:    ret
174   %r = fpext half %v to float
175   ret float %r
178 define double @conv_h_d(half %v) {
179 ; CHECK-LABEL: conv_h_d:
180 ; CHECK:       ; %bb.0:
181 ; CHECK-NEXT:    fcvt d0, h0
182 ; CHECK-NEXT:    ret
183   %r = fpext half %v to double
184   ret double %r
187 define half @conv_f_h(float %v) {
188 ; CHECK-LABEL: conv_f_h:
189 ; CHECK:       ; %bb.0:
190 ; CHECK-NEXT:    fcvt h0, s0
191 ; CHECK-NEXT:    ret
192   %r = fptrunc float %v to half
193   ret half %r
196 define double @conv_f_d(float %v) {
197 ; CHECK-LABEL: conv_f_d:
198 ; CHECK:       ; %bb.0:
199 ; CHECK-NEXT:    fcvt d0, s0
200 ; CHECK-NEXT:    ret
201   %r = fpext float %v to double
202   ret double %r
205 define half @conv_d_h(double %v) {
206 ; CHECK-LABEL: conv_d_h:
207 ; CHECK:       ; %bb.0:
208 ; CHECK-NEXT:    fcvt h0, d0
209 ; CHECK-NEXT:    ret
210   %r = fptrunc double %v to half
211   ret half %r
214 define float @conv_d_f(double %v) {
215 ; CHECK-LABEL: conv_d_f:
216 ; CHECK:       ; %bb.0:
217 ; CHECK-NEXT:    fcvt s0, d0
218 ; CHECK-NEXT:    ret
219   %r = fptrunc double %v to float
220   ret float %r