@@ -265,23 +265,24 @@ entry:
265
265
define i1 @is_posinf_f80 (x86_fp80 %x ) nounwind {
266
266
; X86-LABEL: is_posinf_f80:
267
267
; X86: # %bb.0: # %entry
268
- ; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
269
- ; X86-NEXT: movl $-2147483648, %ecx # imm = 0x80000000
270
- ; X86-NEXT: xorl {{[0-9]+}}(%esp), %ecx
271
- ; X86-NEXT: xorl $32767, %eax # imm = 0x7FFF
272
- ; X86-NEXT: orl {{[0-9]+}}(%esp), %eax
273
- ; X86-NEXT: orl %ecx, %eax
274
- ; X86-NEXT: sete %al
268
+ ; X86-NEXT: fldt {{[0-9]+}}(%esp)
269
+ ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
270
+ ; X86-NEXT: fxch %st(1)
271
+ ; X86-NEXT: fucompp
272
+ ; X86-NEXT: fnstsw %ax
273
+ ; X86-NEXT: # kill: def $ah killed $ah killed $ax
274
+ ; X86-NEXT: sahf
275
+ ; X86-NEXT: setae %al
275
276
; X86-NEXT: retl
276
277
;
277
278
; X64-LABEL: is_posinf_f80:
278
279
; X64: # %bb.0: # %entry
279
- ; X64-NEXT: movzwl {{[0-9]+}}(%rsp), %eax
280
- ; X64-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000
281
- ; X64-NEXT: xorq {{[0-9]+}}(%rsp), %rcx
282
- ; X64-NEXT: xorq $32767 , %rax # imm = 0x7FFF
283
- ; X64-NEXT: orq %rcx, %rax
284
- ; X64-NEXT: sete %al
280
+ ; X64-NEXT: fldt {{[0-9]+}}(%rsp)
281
+ ; X64-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)
282
+ ; X64-NEXT: fxch %st(1)
283
+ ; X64-NEXT: fucompi %st(1) , %st
284
+ ; X64-NEXT: fstp %st(0)
285
+ ; X64-NEXT: setae %al
285
286
; X64-NEXT: retq
286
287
entry:
287
288
%0 = tail call i1 @llvm.is.fpclass.f80 (x86_fp80 %x , i32 512 ) ; 0x200 = "+inf"
@@ -291,23 +292,22 @@ entry:
291
292
define i1 @is_neginf_f80 (x86_fp80 %x ) nounwind {
292
293
; X86-LABEL: is_neginf_f80:
293
294
; X86: # %bb.0: # %entry
294
- ; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax
295
- ; X86-NEXT: xorl $65535, %eax # imm = 0xFFFF
296
- ; X86-NEXT: movl $-2147483648, %ecx # imm = 0x80000000
297
- ; X86-NEXT: xorl {{[0-9]+}}(%esp), %ecx
298
- ; X86-NEXT: orl {{[0-9]+}}(%esp), %eax
299
- ; X86-NEXT: orl %ecx, %eax
300
- ; X86-NEXT: sete %al
295
+ ; X86-NEXT: fldt {{[0-9]+}}(%esp)
296
+ ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
297
+ ; X86-NEXT: fucompp
298
+ ; X86-NEXT: fnstsw %ax
299
+ ; X86-NEXT: # kill: def $ah killed $ah killed $ax
300
+ ; X86-NEXT: sahf
301
+ ; X86-NEXT: setae %al
301
302
; X86-NEXT: retl
302
303
;
303
304
; X64-LABEL: is_neginf_f80:
304
305
; X64: # %bb.0: # %entry
305
- ; X64-NEXT: movzwl {{[0-9]+}}(%rsp), %eax
306
- ; X64-NEXT: xorq $65535, %rax # imm = 0xFFFF
307
- ; X64-NEXT: movabsq $-9223372036854775808, %rcx # imm = 0x8000000000000000
308
- ; X64-NEXT: xorq {{[0-9]+}}(%rsp), %rcx
309
- ; X64-NEXT: orq %rax, %rcx
310
- ; X64-NEXT: sete %al
306
+ ; X64-NEXT: fldt {{[0-9]+}}(%rsp)
307
+ ; X64-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)
308
+ ; X64-NEXT: fucompi %st(1), %st
309
+ ; X64-NEXT: fstp %st(0)
310
+ ; X64-NEXT: setae %al
311
311
; X64-NEXT: retq
312
312
entry:
313
313
%0 = tail call i1 @llvm.is.fpclass.f80 (x86_fp80 %x , i32 4 ) ; "-inf"
0 commit comments