@@ -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
@@ -298,14 +307,35 @@ define i64 @test_fptoui_i64(half* %p) #0 {
298
307
;
299
308
; CHECK-I686-LABEL: test_fptoui_i64:
300
309
; CHECK-I686: # %bb.0:
301
- ; CHECK-I686-NEXT: subl $12 , %esp
310
+ ; CHECK-I686-NEXT: subl $28 , %esp
302
311
; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %eax
303
312
; CHECK-I686-NEXT: movzwl (%eax), %eax
304
313
; CHECK-I686-NEXT: movl %eax, (%esp)
305
314
; CHECK-I686-NEXT: calll __gnu_h2f_ieee
306
- ; CHECK-I686-NEXT: fstps (%esp)
307
- ; CHECK-I686-NEXT: calll __fixunssfdi
308
- ; CHECK-I686-NEXT: addl $12, %esp
315
+ ; CHECK-I686-NEXT: fstps {{[0-9]+}}(%esp)
316
+ ; CHECK-I686-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
317
+ ; CHECK-I686-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
318
+ ; CHECK-I686-NEXT: ucomiss %xmm1, %xmm0
319
+ ; CHECK-I686-NEXT: jae .LBB9_2
320
+ ; CHECK-I686-NEXT: # %bb.1:
321
+ ; CHECK-I686-NEXT: xorps %xmm1, %xmm1
322
+ ; CHECK-I686-NEXT: .LBB9_2:
323
+ ; CHECK-I686-NEXT: subss %xmm1, %xmm0
324
+ ; CHECK-I686-NEXT: movss %xmm0, {{[0-9]+}}(%esp)
325
+ ; CHECK-I686-NEXT: setae %al
326
+ ; CHECK-I686-NEXT: flds {{[0-9]+}}(%esp)
327
+ ; CHECK-I686-NEXT: fnstcw {{[0-9]+}}(%esp)
328
+ ; CHECK-I686-NEXT: movzwl {{[0-9]+}}(%esp), %ecx
329
+ ; CHECK-I686-NEXT: orl $3072, %ecx # imm = 0xC00
330
+ ; CHECK-I686-NEXT: movw %cx, {{[0-9]+}}(%esp)
331
+ ; CHECK-I686-NEXT: fldcw {{[0-9]+}}(%esp)
332
+ ; CHECK-I686-NEXT: fistpll {{[0-9]+}}(%esp)
333
+ ; CHECK-I686-NEXT: fldcw {{[0-9]+}}(%esp)
334
+ ; CHECK-I686-NEXT: movzbl %al, %edx
335
+ ; CHECK-I686-NEXT: shll $31, %edx
336
+ ; CHECK-I686-NEXT: xorl {{[0-9]+}}(%esp), %edx
337
+ ; CHECK-I686-NEXT: movl {{[0-9]+}}(%esp), %eax
338
+ ; CHECK-I686-NEXT: addl $28, %esp
309
339
; CHECK-I686-NEXT: retl
310
340
%a = load half , half * %p , align 2
311
341
%r = fptoui half %a to i64
0 commit comments