@@ -2116,24 +2116,19 @@ entry:
2116
2116
define i1 @is_plus_inf_or_nan_f (float %x ) {
2117
2117
; X86-LABEL: is_plus_inf_or_nan_f:
2118
2118
; X86: # %bb.0:
2119
- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
2120
- ; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2121
- ; X86-NEXT: sete %cl
2122
- ; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2123
- ; X86-NEXT: cmpl $2139095041, %eax # imm = 0x7F800001
2124
- ; X86-NEXT: setge %al
2125
- ; X86-NEXT: orb %cl, %al
2119
+ ; X86-NEXT: flds {{[0-9]+}}(%esp)
2120
+ ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
2121
+ ; X86-NEXT: fucompp
2122
+ ; X86-NEXT: fnstsw %ax
2123
+ ; X86-NEXT: # kill: def $ah killed $ah killed $ax
2124
+ ; X86-NEXT: sahf
2125
+ ; X86-NEXT: sete %al
2126
2126
; X86-NEXT: retl
2127
2127
;
2128
2128
; X64-LABEL: is_plus_inf_or_nan_f:
2129
2129
; X64: # %bb.0:
2130
- ; X64-NEXT: movd %xmm0, %eax
2131
- ; X64-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2132
- ; X64-NEXT: sete %cl
2133
- ; X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2134
- ; X64-NEXT: cmpl $2139095041, %eax # imm = 0x7F800001
2135
- ; X64-NEXT: setge %al
2136
- ; X64-NEXT: orb %cl, %al
2130
+ ; X64-NEXT: ucomiss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
2131
+ ; X64-NEXT: sete %al
2137
2132
; X64-NEXT: retq
2138
2133
%class = tail call i1 @llvm.is.fpclass.f32 (float %x , i32 515 ) ; 0x200|0x3 = "+inf|nan"
2139
2134
ret i1 %class
@@ -2142,24 +2137,19 @@ define i1 @is_plus_inf_or_nan_f(float %x) {
2142
2137
define i1 @is_minus_inf_or_nan_f (float %x ) {
2143
2138
; X86-LABEL: is_minus_inf_or_nan_f:
2144
2139
; X86: # %bb.0:
2145
- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
2146
- ; X86-NEXT: cmpl $-8388608, %eax # imm = 0xFF800000
2147
- ; X86-NEXT: sete %cl
2148
- ; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2149
- ; X86-NEXT: cmpl $2139095041, %eax # imm = 0x7F800001
2150
- ; X86-NEXT: setge %al
2151
- ; X86-NEXT: orb %cl, %al
2140
+ ; X86-NEXT: flds {{[0-9]+}}(%esp)
2141
+ ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
2142
+ ; X86-NEXT: fucompp
2143
+ ; X86-NEXT: fnstsw %ax
2144
+ ; X86-NEXT: # kill: def $ah killed $ah killed $ax
2145
+ ; X86-NEXT: sahf
2146
+ ; X86-NEXT: sete %al
2152
2147
; X86-NEXT: retl
2153
2148
;
2154
2149
; X64-LABEL: is_minus_inf_or_nan_f:
2155
2150
; X64: # %bb.0:
2156
- ; X64-NEXT: movd %xmm0, %eax
2157
- ; X64-NEXT: cmpl $-8388608, %eax # imm = 0xFF800000
2158
- ; X64-NEXT: sete %cl
2159
- ; X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2160
- ; X64-NEXT: cmpl $2139095041, %eax # imm = 0x7F800001
2161
- ; X64-NEXT: setge %al
2162
- ; X64-NEXT: orb %cl, %al
2151
+ ; X64-NEXT: ucomiss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
2152
+ ; X64-NEXT: sete %al
2163
2153
; X64-NEXT: retq
2164
2154
%class = tail call i1 @llvm.is.fpclass.f32 (float %x , i32 7 ) ; "-inf|nan"
2165
2155
ret i1 %class
@@ -2168,24 +2158,19 @@ define i1 @is_minus_inf_or_nan_f(float %x) {
2168
2158
define i1 @not_is_plus_inf_or_nan_f (float %x ) {
2169
2159
; X86-LABEL: not_is_plus_inf_or_nan_f:
2170
2160
; X86: # %bb.0:
2171
- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
2172
- ; X86-NEXT: cmpl $-8388608, %eax # imm = 0xFF800000
2173
- ; X86-NEXT: sete %cl
2174
- ; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2175
- ; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2176
- ; X86-NEXT: setl %al
2177
- ; X86-NEXT: orb %cl, %al
2161
+ ; X86-NEXT: flds {{[0-9]+}}(%esp)
2162
+ ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
2163
+ ; X86-NEXT: fucompp
2164
+ ; X86-NEXT: fnstsw %ax
2165
+ ; X86-NEXT: # kill: def $ah killed $ah killed $ax
2166
+ ; X86-NEXT: sahf
2167
+ ; X86-NEXT: setne %al
2178
2168
; X86-NEXT: retl
2179
2169
;
2180
2170
; X64-LABEL: not_is_plus_inf_or_nan_f:
2181
2171
; X64: # %bb.0:
2182
- ; X64-NEXT: movd %xmm0, %eax
2183
- ; X64-NEXT: cmpl $-8388608, %eax # imm = 0xFF800000
2184
- ; X64-NEXT: sete %cl
2185
- ; X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2186
- ; X64-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2187
- ; X64-NEXT: setl %al
2188
- ; X64-NEXT: orb %cl, %al
2172
+ ; X64-NEXT: ucomiss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
2173
+ ; X64-NEXT: setne %al
2189
2174
; X64-NEXT: retq
2190
2175
%class = tail call i1 @llvm.is.fpclass.f32 (float %x , i32 508 ) ; ~(0x200|0x3) = "~(+inf|nan)"
2191
2176
ret i1 %class
@@ -2194,24 +2179,19 @@ define i1 @not_is_plus_inf_or_nan_f(float %x) {
2194
2179
define i1 @not_is_minus_inf_or_nan_f (float %x ) {
2195
2180
; X86-LABEL: not_is_minus_inf_or_nan_f:
2196
2181
; X86: # %bb.0:
2197
- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
2198
- ; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2199
- ; X86-NEXT: sete %cl
2200
- ; X86-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2201
- ; X86-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2202
- ; X86-NEXT: setl %al
2203
- ; X86-NEXT: orb %cl, %al
2182
+ ; X86-NEXT: flds {{[0-9]+}}(%esp)
2183
+ ; X86-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
2184
+ ; X86-NEXT: fucompp
2185
+ ; X86-NEXT: fnstsw %ax
2186
+ ; X86-NEXT: # kill: def $ah killed $ah killed $ax
2187
+ ; X86-NEXT: sahf
2188
+ ; X86-NEXT: setne %al
2204
2189
; X86-NEXT: retl
2205
2190
;
2206
2191
; X64-LABEL: not_is_minus_inf_or_nan_f:
2207
2192
; X64: # %bb.0:
2208
- ; X64-NEXT: movd %xmm0, %eax
2209
- ; X64-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2210
- ; X64-NEXT: sete %cl
2211
- ; X64-NEXT: andl $2147483647, %eax # imm = 0x7FFFFFFF
2212
- ; X64-NEXT: cmpl $2139095040, %eax # imm = 0x7F800000
2213
- ; X64-NEXT: setl %al
2214
- ; X64-NEXT: orb %cl, %al
2193
+ ; X64-NEXT: ucomiss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
2194
+ ; X64-NEXT: setne %al
2215
2195
; X64-NEXT: retq
2216
2196
%class = tail call i1 @llvm.is.fpclass.f32 (float %x , i32 1016 ) ; "~(-inf|nan)"
2217
2197
ret i1 %class
0 commit comments