@@ -210,14 +210,23 @@ define i64 @test_fptosi_i64(half* %p) #0 {
210
210
;
211
211
; CHECK-I686-LABEL: test_fptosi_i64:
212
212
; CHECK-I686: # %bb.0:
213
- ; CHECK-I686-NEXT: subl $12 , %esp
213
+ ; CHECK-I686-NEXT: subl $28 , %esp
214
214
; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %eax
215
215
; CHECK-I686-NEXT: movzwl (%eax), %eax
216
216
; CHECK-I686-NEXT: movl %eax, (%esp)
217
217
; CHECK-I686-NEXT: calll __gnu_h2f_ieee
218
- ; CHECK-I686-NEXT: fstps (%esp)
219
- ; CHECK-I686-NEXT: calll __fixsfdi
220
- ; CHECK-I686-NEXT: addl $12, %esp
218
+ ; CHECK-I686-NEXT: fstps {{[0-9]+}}(%esp)
219
+ ; CHECK-I686-NEXT: flds {{[0-9]+}}(%esp)
220
+ ; CHECK-I686-NEXT: fnstcw {{[0-9]+}}(%esp)
221
+ ; CHECK-I686-NEXT: movzwl {{[0-9]+}}(%esp), %eax
222
+ ; CHECK-I686-NEXT: orl $3072, %eax # imm = 0xC00
223
+ ; CHECK-I686-NEXT: movw %ax, {{[0-9]+}}(%esp)
224
+ ; CHECK-I686-NEXT: fldcw {{[0-9]+}}(%esp)
225
+ ; CHECK-I686-NEXT: fistpll {{[0-9]+}}(%esp)
226
+ ; CHECK-I686-NEXT: fldcw {{[0-9]+}}(%esp)
227
+ ; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %eax
228
+ ; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %edx
229
+ ; CHECK-I686-NEXT: addl $28, %esp
221
230
; CHECK-I686-NEXT: retl
222
231
%a = load half , half * %p , align 2
223
232
%r = fptosi half %a to i64
@@ -295,14 +304,35 @@ define i64 @test_fptoui_i64(half* %p) #0 {
295
304
;
296
305
; CHECK-I686-LABEL: test_fptoui_i64:
297
306
; CHECK-I686: # %bb.0:
298
- ; CHECK-I686-NEXT: subl $12 , %esp
307
+ ; CHECK-I686-NEXT: subl $28 , %esp
299
308
; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %eax
300
309
; CHECK-I686-NEXT: movzwl (%eax), %eax
301
310
; CHECK-I686-NEXT: movl %eax, (%esp)
302
311
; CHECK-I686-NEXT: calll __gnu_h2f_ieee
303
- ; CHECK-I686-NEXT: fstps (%esp)
304
- ; CHECK-I686-NEXT: calll __fixunssfdi
305
- ; CHECK-I686-NEXT: addl $12, %esp
312
+ ; CHECK-I686-NEXT: fstps {{[0-9]+}}(%esp)
313
+ ; CHECK-I686-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
314
+ ; CHECK-I686-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
315
+ ; CHECK-I686-NEXT: ucomiss %xmm1, %xmm0
316
+ ; CHECK-I686-NEXT: jae .LBB9_2
317
+ ; CHECK-I686-NEXT: # %bb.1:
318
+ ; CHECK-I686-NEXT: xorps %xmm1, %xmm1
319
+ ; CHECK-I686-NEXT: .LBB9_2:
320
+ ; CHECK-I686-NEXT: subss %xmm1, %xmm0
321
+ ; CHECK-I686-NEXT: movss %xmm0, {{[0-9]+}}(%esp)
322
+ ; CHECK-I686-NEXT: setae %al
323
+ ; CHECK-I686-NEXT: flds {{[0-9]+}}(%esp)
324
+ ; CHECK-I686-NEXT: fnstcw {{[0-9]+}}(%esp)
325
+ ; CHECK-I686-NEXT: movzwl {{[0-9]+}}(%esp), %ecx
326
+ ; CHECK-I686-NEXT: orl $3072, %ecx # imm = 0xC00
327
+ ; CHECK-I686-NEXT: movw %cx, {{[0-9]+}}(%esp)
328
+ ; CHECK-I686-NEXT: fldcw {{[0-9]+}}(%esp)
329
+ ; CHECK-I686-NEXT: fistpll {{[0-9]+}}(%esp)
330
+ ; CHECK-I686-NEXT: fldcw {{[0-9]+}}(%esp)
331
+ ; CHECK-I686-NEXT: movzbl %al, %edx
332
+ ; CHECK-I686-NEXT: shll $31, %edx
333
+ ; CHECK-I686-NEXT: xorl {{[0-9]+}}(%esp), %edx
334
+ ; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %eax
335
+ ; CHECK-I686-NEXT: addl $28, %esp
306
336
; CHECK-I686-NEXT: retl
307
337
%a = load half , half * %p , align 2
308
338
%r = fptoui half %a to i64
0 commit comments