@@ -265,23 +265,24 @@ entry:
265265define i1 @is_posinf_f80 (x86_fp80 %x ) nounwind {
266266; X86-LABEL: is_posinf_f80:
267267; 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
275276; X86-NEXT: retl
276277;
277278; X64-LABEL: is_posinf_f80:
278279; 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
285286; X64-NEXT: retq
286287entry:
287288 %0 = tail call i1 @llvm.is.fpclass.f80 (x86_fp80 %x , i32 512 ) ; 0x200 = "+inf"
@@ -291,23 +292,22 @@ entry:
291292define i1 @is_neginf_f80 (x86_fp80 %x ) nounwind {
292293; X86-LABEL: is_neginf_f80:
293294; 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
301302; X86-NEXT: retl
302303;
303304; X64-LABEL: is_neginf_f80:
304305; 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
311311; X64-NEXT: retq
312312entry:
313313 %0 = tail call i1 @llvm.is.fpclass.f80 (x86_fp80 %x , i32 4 ) ; "-inf"
0 commit comments