@@ -240,22 +240,18 @@ entry:
240
240
define i1 @isfinite_f (float %x ) {
241
241
; X86-LABEL: isfinite_f:
242
242
; X86: # %bb.0: # %entry
243
- ; X86-NEXT: flds {{[0-9]+}}(%esp)
244
- ; X86-NEXT: fabs
245
- ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
246
- ; X86-NEXT: fxch %st(1)
247
- ; X86-NEXT: fucompp
248
- ; X86-NEXT: fnstsw %ax
249
- ; X86-NEXT: # kill: def $ah killed $ah killed $ax
250
- ; X86-NEXT: sahf
251
- ; X86-NEXT: setne %al
243
+ ; X86-NEXT: movl $2147483647, %eax # imm = 0x7FFFFFFF
244
+ ; X86-NEXT: andl {{[0-9]+}}(%esp), %eax
245
+ ; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
246
+ ; X86-NEXT: setl %al
252
247
; X86-NEXT: retl
253
248
;
254
249
; X64-LABEL: isfinite_f:
255
250
; X64: # %bb.0: # %entry
256
- ; X64-NEXT: andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
257
- ; X64-NEXT: ucomiss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
258
- ; X64-NEXT: setne %al
251
+ ; X64-NEXT: movd %xmm0, %eax
252
+ ; X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
253
+ ; X64-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
254
+ ; X64-NEXT: setl %al
259
255
; X64-NEXT: retq
260
256
entry:
261
257
%0 = tail call i1 @llvm.is.fpclass.f32 (float %x , i32 504 ) ; 0x1f8 = "finite"
@@ -1154,23 +1150,31 @@ entry:
1154
1150
define i1 @isfinite_d (double %x ) {
1155
1151
; X86-LABEL: isfinite_d:
1156
1152
; X86: # %bb.0: # %entry
1157
- ; X86-NEXT: fldl {{[0-9]+}}(%esp)
1158
- ; X86-NEXT: fabs
1159
- ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
1160
- ; X86-NEXT: fxch %st(1)
1161
- ; X86-NEXT: fucompp
1162
- ; X86-NEXT: fnstsw %ax
1163
- ; X86-NEXT: # kill: def $ah killed $ah killed $ax
1164
- ; X86-NEXT: sahf
1165
- ; X86-NEXT: setne %al
1153
+ ; X86-NEXT: movl $2147483647, %eax # imm = 0x7FFFFFFF
1154
+ ; X86-NEXT: andl {{[0-9]+}}(%esp), %eax
1155
+ ; X86-NEXT: cmpl $2146435072, %eax # imm = 0x7FF00000
1156
+ ; X86-NEXT: setl %al
1166
1157
; X86-NEXT: retl
1167
1158
;
1168
- ; X64-LABEL: isfinite_d:
1169
- ; X64: # %bb.0: # %entry
1170
- ; X64-NEXT: andpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1171
- ; X64-NEXT: ucomisd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1172
- ; X64-NEXT: setne %al
1173
- ; X64-NEXT: retq
1159
+ ; X64-GENERIC-LABEL: isfinite_d:
1160
+ ; X64-GENERIC: # %bb.0: # %entry
1161
+ ; X64-GENERIC-NEXT: movq %xmm0, %rax
1162
+ ; X64-GENERIC-NEXT: movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
1163
+ ; X64-GENERIC-NEXT: andq %rax, %rcx
1164
+ ; X64-GENERIC-NEXT: movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
1165
+ ; X64-GENERIC-NEXT: cmpq %rax, %rcx
1166
+ ; X64-GENERIC-NEXT: setl %al
1167
+ ; X64-GENERIC-NEXT: retq
1168
+ ;
1169
+ ; X64-NDD-LABEL: isfinite_d:
1170
+ ; X64-NDD: # %bb.0: # %entry
1171
+ ; X64-NDD-NEXT: movq %xmm0, %rax
1172
+ ; X64-NDD-NEXT: movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
1173
+ ; X64-NDD-NEXT: andq %rcx, %rax
1174
+ ; X64-NDD-NEXT: movabsq $9218868437227405312, %rcx # imm = 0x7FF0000000000000
1175
+ ; X64-NDD-NEXT: cmpq %rcx, %rax
1176
+ ; X64-NDD-NEXT: setl %al
1177
+ ; X64-NDD-NEXT: retq
1174
1178
entry:
1175
1179
%0 = tail call i1 @llvm.is.fpclass.f64 (double %x , i32 504 ) ; 0x1f8 = "finite"
1176
1180
ret i1 %0
@@ -2049,22 +2053,18 @@ entry:
2049
2053
define i1 @not_isinf_or_nan_f (float %x ) {
2050
2054
; X86-LABEL: not_isinf_or_nan_f:
2051
2055
; X86: # %bb.0: # %entry
2052
- ; X86-NEXT: flds {{[0-9]+}}(%esp)
2053
- ; X86-NEXT: fabs
2054
- ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
2055
- ; X86-NEXT: fxch %st(1)
2056
- ; X86-NEXT: fucompp
2057
- ; X86-NEXT: fnstsw %ax
2058
- ; X86-NEXT: # kill: def $ah killed $ah killed $ax
2059
- ; X86-NEXT: sahf
2060
- ; X86-NEXT: setne %al
2056
+ ; X86-NEXT: movl $2147483647, %eax # imm = 0x7FFFFFFF
2057
+ ; X86-NEXT: andl {{[0-9]+}}(%esp), %eax
2058
+ ; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2059
+ ; X86-NEXT: setl %al
2061
2060
; X86-NEXT: retl
2062
2061
;
2063
2062
; X64-LABEL: not_isinf_or_nan_f:
2064
2063
; X64: # %bb.0: # %entry
2065
- ; X64-NEXT: andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
2066
- ; X64-NEXT: ucomiss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
2067
- ; X64-NEXT: setne %al
2064
+ ; X64-NEXT: movd %xmm0, %eax
2065
+ ; X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2066
+ ; X64-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2067
+ ; X64-NEXT: setl %al
2068
2068
; X64-NEXT: retq
2069
2069
entry:
2070
2070
%0 = tail call i1 @llvm.is.fpclass.f32 (float %x , i32 504 ) ; ~(0x204|0x3) = "~(inf|nan)"
0 commit comments