5
5
define float @frem2 (float %x ) {
6
6
; CHECK-SD-LABEL: frem2:
7
7
; CHECK-SD: // %bb.0: // %entry
8
- ; CHECK-SD-NEXT: fmov s1, #2.00000000
8
+ ; CHECK-SD-NEXT: fmov s1, #0.50000000
9
9
; CHECK-SD-NEXT: // kill: def $s0 killed $s0 def $q0
10
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
11
- ; CHECK-SD-NEXT: frintz s2, s2
12
- ; CHECK-SD-NEXT: fmsub s1, s2, s1, s0
10
+ ; CHECK-SD-NEXT: fmov s2, #-2.00000000
11
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
12
+ ; CHECK-SD-NEXT: frintz s1, s1
13
+ ; CHECK-SD-NEXT: fmadd s1, s1, s2, s0
13
14
; CHECK-SD-NEXT: mvni v2.4s, #128, lsl #24
14
15
; CHECK-SD-NEXT: bit v0.16b, v1.16b, v2.16b
15
16
; CHECK-SD-NEXT: // kill: def $s0 killed $s0 killed $q0
@@ -27,10 +28,11 @@ entry:
27
28
define float @frem2_nsz (float %x ) {
28
29
; CHECK-SD-LABEL: frem2_nsz:
29
30
; CHECK-SD: // %bb.0: // %entry
30
- ; CHECK-SD-NEXT: fmov s1, #2.00000000
31
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
32
- ; CHECK-SD-NEXT: frintz s2, s2
33
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
31
+ ; CHECK-SD-NEXT: fmov s1, #0.50000000
32
+ ; CHECK-SD-NEXT: fmov s2, #-2.00000000
33
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
34
+ ; CHECK-SD-NEXT: frintz s1, s1
35
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
34
36
; CHECK-SD-NEXT: ret
35
37
;
36
38
; CHECK-GI-LABEL: frem2_nsz:
@@ -65,10 +67,11 @@ define float @frem2_abs(float %x) {
65
67
; CHECK-SD-LABEL: frem2_abs:
66
68
; CHECK-SD: // %bb.0: // %entry
67
69
; CHECK-SD-NEXT: fabs s0, s0
68
- ; CHECK-SD-NEXT: fmov s1, #2.00000000
69
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
70
- ; CHECK-SD-NEXT: frintz s2, s2
71
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
70
+ ; CHECK-SD-NEXT: fmov s1, #0.50000000
71
+ ; CHECK-SD-NEXT: fmov s2, #-2.00000000
72
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
73
+ ; CHECK-SD-NEXT: frintz s1, s1
74
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
72
75
; CHECK-SD-NEXT: ret
73
76
;
74
77
; CHECK-GI-LABEL: frem2_abs:
85
88
define half @hrem2_nsz (half %x ) {
86
89
; CHECK-SD-LABEL: hrem2_nsz:
87
90
; CHECK-SD: // %bb.0: // %entry
88
- ; CHECK-SD-NEXT: fmov h1, #2.00000000
91
+ ; CHECK-SD-NEXT: fmov h1, #0.50000000
89
92
; CHECK-SD-NEXT: fmov h2, #-2.00000000
90
- ; CHECK-SD-NEXT: fdiv h1, h0, h1
93
+ ; CHECK-SD-NEXT: fmul h1, h0, h1
91
94
; CHECK-SD-NEXT: frintz h1, h1
92
95
; CHECK-SD-NEXT: fmadd h0, h1, h2, h0
93
96
; CHECK-SD-NEXT: ret
@@ -112,10 +115,11 @@ entry:
112
115
define double @drem2_nsz (double %x ) {
113
116
; CHECK-SD-LABEL: drem2_nsz:
114
117
; CHECK-SD: // %bb.0: // %entry
115
- ; CHECK-SD-NEXT: fmov d1, #2.00000000
116
- ; CHECK-SD-NEXT: fdiv d2, d0, d1
117
- ; CHECK-SD-NEXT: frintz d2, d2
118
- ; CHECK-SD-NEXT: fmsub d0, d2, d1, d0
118
+ ; CHECK-SD-NEXT: fmov d1, #0.50000000
119
+ ; CHECK-SD-NEXT: fmov d2, #-2.00000000
120
+ ; CHECK-SD-NEXT: fmul d1, d0, d1
121
+ ; CHECK-SD-NEXT: frintz d1, d1
122
+ ; CHECK-SD-NEXT: fmadd d0, d1, d2, d0
119
123
; CHECK-SD-NEXT: ret
120
124
;
121
125
; CHECK-GI-LABEL: drem2_nsz:
@@ -176,10 +180,11 @@ entry:
176
180
define float @fremm2_nsz (float %x ) {
177
181
; CHECK-SD-LABEL: fremm2_nsz:
178
182
; CHECK-SD: // %bb.0: // %entry
179
- ; CHECK-SD-NEXT: fmov s1, #-2.00000000
180
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
181
- ; CHECK-SD-NEXT: frintz s2, s2
182
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
183
+ ; CHECK-SD-NEXT: fmov s1, #-0.50000000
184
+ ; CHECK-SD-NEXT: fmov s2, #2.00000000
185
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
186
+ ; CHECK-SD-NEXT: frintz s1, s1
187
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
183
188
; CHECK-SD-NEXT: ret
184
189
;
185
190
; CHECK-GI-LABEL: fremm2_nsz:
@@ -195,10 +200,11 @@ define float @frem4_abs(float %x) {
195
200
; CHECK-SD-LABEL: frem4_abs:
196
201
; CHECK-SD: // %bb.0: // %entry
197
202
; CHECK-SD-NEXT: fabs s0, s0
198
- ; CHECK-SD-NEXT: fmov s1, #4.00000000
199
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
200
- ; CHECK-SD-NEXT: frintz s2, s2
201
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
203
+ ; CHECK-SD-NEXT: fmov s1, #0.25000000
204
+ ; CHECK-SD-NEXT: fmov s2, #-4.00000000
205
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
206
+ ; CHECK-SD-NEXT: frintz s1, s1
207
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
202
208
; CHECK-SD-NEXT: ret
203
209
;
204
210
; CHECK-GI-LABEL: frem4_abs:
@@ -216,10 +222,12 @@ define float @frem16_abs(float %x) {
216
222
; CHECK-SD-LABEL: frem16_abs:
217
223
; CHECK-SD: // %bb.0: // %entry
218
224
; CHECK-SD-NEXT: fabs s0, s0
219
- ; CHECK-SD-NEXT: fmov s1, #16.00000000
220
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
221
- ; CHECK-SD-NEXT: frintz s2, s2
222
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
225
+ ; CHECK-SD-NEXT: mov w8, #1031798784 // =0x3d800000
226
+ ; CHECK-SD-NEXT: fmov s2, #-16.00000000
227
+ ; CHECK-SD-NEXT: fmov s1, w8
228
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
229
+ ; CHECK-SD-NEXT: frintz s1, s1
230
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
223
231
; CHECK-SD-NEXT: ret
224
232
;
225
233
; CHECK-GI-LABEL: frem16_abs:
@@ -237,11 +245,13 @@ define float @frem4294967296_abs(float %x) {
237
245
; CHECK-SD-LABEL: frem4294967296_abs:
238
246
; CHECK-SD: // %bb.0: // %entry
239
247
; CHECK-SD-NEXT: fabs s0, s0
240
- ; CHECK-SD-NEXT: mov w8, #1333788672 // =0x4f800000
248
+ ; CHECK-SD-NEXT: mov w8, #796917760 // =0x2f800000
241
249
; CHECK-SD-NEXT: fmov s1, w8
242
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
243
- ; CHECK-SD-NEXT: frintz s2, s2
244
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
250
+ ; CHECK-SD-NEXT: mov w8, #-813694976 // =0xcf800000
251
+ ; CHECK-SD-NEXT: fmov s2, w8
252
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
253
+ ; CHECK-SD-NEXT: frintz s1, s1
254
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
245
255
; CHECK-SD-NEXT: ret
246
256
;
247
257
; CHECK-GI-LABEL: frem4294967296_abs:
@@ -260,11 +270,13 @@ define float @frem1152921504606846976_abs(float %x) {
260
270
; CHECK-SD-LABEL: frem1152921504606846976_abs:
261
271
; CHECK-SD: // %bb.0: // %entry
262
272
; CHECK-SD-NEXT: fabs s0, s0
263
- ; CHECK-SD-NEXT: mov w8, #1568669696 // =0x5d800000
273
+ ; CHECK-SD-NEXT: mov w8, #562036736 // =0x21800000
264
274
; CHECK-SD-NEXT: fmov s1, w8
265
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
266
- ; CHECK-SD-NEXT: frintz s2, s2
267
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
275
+ ; CHECK-SD-NEXT: mov w8, #-578813952 // =0xdd800000
276
+ ; CHECK-SD-NEXT: fmov s2, w8
277
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
278
+ ; CHECK-SD-NEXT: frintz s1, s1
279
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
268
280
; CHECK-SD-NEXT: ret
269
281
;
270
282
; CHECK-GI-LABEL: frem1152921504606846976_abs:
@@ -283,11 +295,13 @@ define float @frem4611686018427387904_abs(float %x) {
283
295
; CHECK-SD-LABEL: frem4611686018427387904_abs:
284
296
; CHECK-SD: // %bb.0: // %entry
285
297
; CHECK-SD-NEXT: fabs s0, s0
286
- ; CHECK-SD-NEXT: mov w8, #1585446912 // =0x5e800000
298
+ ; CHECK-SD-NEXT: mov w8, #545259520 // =0x20800000
287
299
; CHECK-SD-NEXT: fmov s1, w8
288
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
289
- ; CHECK-SD-NEXT: frintz s2, s2
290
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
300
+ ; CHECK-SD-NEXT: mov w8, #-562036736 // =0xde800000
301
+ ; CHECK-SD-NEXT: fmov s2, w8
302
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
303
+ ; CHECK-SD-NEXT: frintz s1, s1
304
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
291
305
; CHECK-SD-NEXT: ret
292
306
;
293
307
; CHECK-GI-LABEL: frem4611686018427387904_abs:
@@ -305,11 +319,12 @@ entry:
305
319
define float @frem9223372036854775808_abs (float %x ) {
306
320
; CHECK-SD-LABEL: frem9223372036854775808_abs:
307
321
; CHECK-SD: // %bb.0: // %entry
308
- ; CHECK-SD-NEXT: movi v1.2s, #95 , lsl #24
322
+ ; CHECK-SD-NEXT: movi v1.2s, #32 , lsl #24
309
323
; CHECK-SD-NEXT: fabs s0, s0
310
- ; CHECK-SD-NEXT: fdiv s2, s0, s1
311
- ; CHECK-SD-NEXT: frintz s2, s2
312
- ; CHECK-SD-NEXT: fmsub s0, s2, s1, s0
324
+ ; CHECK-SD-NEXT: movi v2.2s, #223, lsl #24
325
+ ; CHECK-SD-NEXT: fmul s1, s0, s1
326
+ ; CHECK-SD-NEXT: frintz s1, s1
327
+ ; CHECK-SD-NEXT: fmadd s0, s1, s2, s0
313
328
; CHECK-SD-NEXT: ret
314
329
;
315
330
; CHECK-GI-LABEL: frem9223372036854775808_abs:
0 commit comments