@@ -106,21 +106,141 @@ entry:
106
106
ret i1 %cmpinf
107
107
}
108
108
109
+ define zeroext i1 @abs_isinfornanf (float %x ) {
110
+ ; P8-LABEL: abs_isinfornanf:
111
+ ; P8: # %bb.0: # %entry
112
+ ; P8-NEXT: addis 3, 2, .LCPI3_0@toc@ha
113
+ ; P8-NEXT: xsabsdp 0, 1
114
+ ; P8-NEXT: lfs 1, .LCPI3_0@toc@l(3)
115
+ ; P8-NEXT: li 3, 1
116
+ ; P8-NEXT: fcmpu 0, 0, 1
117
+ ; P8-NEXT: isellt 3, 0, 3
118
+ ; P8-NEXT: blr
119
+ ;
120
+ ; P9-LABEL: abs_isinfornanf:
121
+ ; P9: # %bb.0: # %entry
122
+ ; P9-NEXT: addis 3, 2, .LCPI3_0@toc@ha
123
+ ; P9-NEXT: xsabsdp 0, 1
124
+ ; P9-NEXT: lfs 1, .LCPI3_0@toc@l(3)
125
+ ; P9-NEXT: li 3, 1
126
+ ; P9-NEXT: fcmpu 0, 0, 1
127
+ ; P9-NEXT: isellt 3, 0, 3
128
+ ; P9-NEXT: blr
129
+ entry:
130
+ %0 = tail call float @llvm.fabs.f32 (float %x )
131
+ %cmpinf = fcmp ueq float %0 , 0x7FF0000000000000
132
+ ret i1 %cmpinf
133
+ }
134
+
135
+ define zeroext i1 @abs_isinfornan (double %x ) {
136
+ ; P8-LABEL: abs_isinfornan:
137
+ ; P8: # %bb.0: # %entry
138
+ ; P8-NEXT: addis 3, 2, .LCPI4_0@toc@ha
139
+ ; P8-NEXT: xsabsdp 0, 1
140
+ ; P8-NEXT: lfs 1, .LCPI4_0@toc@l(3)
141
+ ; P8-NEXT: li 3, 1
142
+ ; P8-NEXT: fcmpu 0, 0, 1
143
+ ; P8-NEXT: isellt 3, 0, 3
144
+ ; P8-NEXT: blr
145
+ ;
146
+ ; P9-LABEL: abs_isinfornan:
147
+ ; P9: # %bb.0: # %entry
148
+ ; P9-NEXT: addis 3, 2, .LCPI4_0@toc@ha
149
+ ; P9-NEXT: xsabsdp 0, 1
150
+ ; P9-NEXT: lfs 1, .LCPI4_0@toc@l(3)
151
+ ; P9-NEXT: li 3, 1
152
+ ; P9-NEXT: fcmpu 0, 0, 1
153
+ ; P9-NEXT: isellt 3, 0, 3
154
+ ; P9-NEXT: blr
155
+ entry:
156
+ %0 = tail call double @llvm.fabs.f64 (double %x )
157
+ %cmpinf = fcmp ueq double %0 , 0x7FF0000000000000
158
+ ret i1 %cmpinf
159
+ }
160
+
161
+ define zeroext i1 @abs_isinfornanq (fp128 %x ) {
162
+ ; P8-LABEL: abs_isinfornanq:
163
+ ; P8: # %bb.0: # %entry
164
+ ; P8-NEXT: mflr 0
165
+ ; P8-NEXT: stdu 1, -112(1)
166
+ ; P8-NEXT: std 0, 128(1)
167
+ ; P8-NEXT: .cfi_def_cfa_offset 112
168
+ ; P8-NEXT: .cfi_offset lr, 16
169
+ ; P8-NEXT: .cfi_offset r30, -16
170
+ ; P8-NEXT: .cfi_offset v30, -48
171
+ ; P8-NEXT: .cfi_offset v31, -32
172
+ ; P8-NEXT: li 3, 64
173
+ ; P8-NEXT: xxswapd 0, 34
174
+ ; P8-NEXT: std 30, 96(1) # 8-byte Folded Spill
175
+ ; P8-NEXT: stvx 30, 1, 3 # 16-byte Folded Spill
176
+ ; P8-NEXT: li 3, 80
177
+ ; P8-NEXT: stvx 31, 1, 3 # 16-byte Folded Spill
178
+ ; P8-NEXT: addi 3, 1, 48
179
+ ; P8-NEXT: stxvd2x 0, 0, 3
180
+ ; P8-NEXT: lbz 4, 63(1)
181
+ ; P8-NEXT: clrlwi 4, 4, 25
182
+ ; P8-NEXT: stb 4, 63(1)
183
+ ; P8-NEXT: lxvd2x 0, 0, 3
184
+ ; P8-NEXT: addis 3, 2, .LCPI5_0@toc@ha
185
+ ; P8-NEXT: addi 3, 3, .LCPI5_0@toc@l
186
+ ; P8-NEXT: xxswapd 63, 0
187
+ ; P8-NEXT: lxvd2x 0, 0, 3
188
+ ; P8-NEXT: vmr 2, 31
189
+ ; P8-NEXT: xxswapd 62, 0
190
+ ; P8-NEXT: vmr 3, 30
191
+ ; P8-NEXT: bl __eqkf2
192
+ ; P8-NEXT: nop
193
+ ; P8-NEXT: cntlzw 3, 3
194
+ ; P8-NEXT: vmr 2, 31
195
+ ; P8-NEXT: vmr 3, 30
196
+ ; P8-NEXT: srwi 30, 3, 5
197
+ ; P8-NEXT: bl __unordkf2
198
+ ; P8-NEXT: nop
199
+ ; P8-NEXT: cntlzw 3, 3
200
+ ; P8-NEXT: li 4, 80
201
+ ; P8-NEXT: lvx 31, 1, 4 # 16-byte Folded Reload
202
+ ; P8-NEXT: li 4, 64
203
+ ; P8-NEXT: srwi 3, 3, 5
204
+ ; P8-NEXT: lvx 30, 1, 4 # 16-byte Folded Reload
205
+ ; P8-NEXT: xori 3, 3, 1
206
+ ; P8-NEXT: or 3, 3, 30
207
+ ; P8-NEXT: ld 30, 96(1) # 8-byte Folded Reload
208
+ ; P8-NEXT: addi 1, 1, 112
209
+ ; P8-NEXT: ld 0, 16(1)
210
+ ; P8-NEXT: mtlr 0
211
+ ; P8-NEXT: blr
212
+ ;
213
+ ; P9-LABEL: abs_isinfornanq:
214
+ ; P9: # %bb.0: # %entry
215
+ ; P9-NEXT: addis 3, 2, .LCPI5_0@toc@ha
216
+ ; P9-NEXT: xsabsqp 2, 2
217
+ ; P9-NEXT: addi 3, 3, .LCPI5_0@toc@l
218
+ ; P9-NEXT: lxv 35, 0(3)
219
+ ; P9-NEXT: li 3, 1
220
+ ; P9-NEXT: xscmpuqp 0, 2, 3
221
+ ; P9-NEXT: isellt 3, 0, 3
222
+ ; P9-NEXT: blr
223
+ entry:
224
+ %0 = tail call fp128 @llvm.fabs.f128 (fp128 %x )
225
+ %cmpinf = fcmp ueq fp128 %0 , 0xL00000000000000007FFF000000000000
226
+ ret i1 %cmpinf
227
+ }
228
+
109
229
define <4 x i1 > @abs_isinfv4f32 (<4 x float > %x ) {
110
230
; P8-LABEL: abs_isinfv4f32:
111
231
; P8: # %bb.0: # %entry
112
- ; P8-NEXT: addis 3, 2, .LCPI3_0 @toc@ha
232
+ ; P8-NEXT: addis 3, 2, .LCPI6_0 @toc@ha
113
233
; P8-NEXT: xvabssp 0, 34
114
- ; P8-NEXT: addi 3, 3, .LCPI3_0 @toc@l
234
+ ; P8-NEXT: addi 3, 3, .LCPI6_0 @toc@l
115
235
; P8-NEXT: lxvd2x 1, 0, 3
116
236
; P8-NEXT: xvcmpeqsp 34, 0, 1
117
237
; P8-NEXT: blr
118
238
;
119
239
; P9-LABEL: abs_isinfv4f32:
120
240
; P9: # %bb.0: # %entry
121
- ; P9-NEXT: addis 3, 2, .LCPI3_0 @toc@ha
241
+ ; P9-NEXT: addis 3, 2, .LCPI6_0 @toc@ha
122
242
; P9-NEXT: xvabssp 0, 34
123
- ; P9-NEXT: addi 3, 3, .LCPI3_0 @toc@l
243
+ ; P9-NEXT: addi 3, 3, .LCPI6_0 @toc@l
124
244
; P9-NEXT: lxv 1, 0(3)
125
245
; P9-NEXT: xvcmpeqsp 34, 0, 1
126
246
; P9-NEXT: blr
@@ -133,18 +253,18 @@ entry:
133
253
define <2 x i1 > @abs_isinfv2f64 (<2 x double > %x ) {
134
254
; P8-LABEL: abs_isinfv2f64:
135
255
; P8: # %bb.0: # %entry
136
- ; P8-NEXT: addis 3, 2, .LCPI4_0 @toc@ha
256
+ ; P8-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
137
257
; P8-NEXT: xvabsdp 0, 34
138
- ; P8-NEXT: addi 3, 3, .LCPI4_0 @toc@l
258
+ ; P8-NEXT: addi 3, 3, .LCPI7_0 @toc@l
139
259
; P8-NEXT: lxvd2x 1, 0, 3
140
260
; P8-NEXT: xvcmpeqdp 34, 0, 1
141
261
; P8-NEXT: blr
142
262
;
143
263
; P9-LABEL: abs_isinfv2f64:
144
264
; P9: # %bb.0: # %entry
145
- ; P9-NEXT: addis 3, 2, .LCPI4_0 @toc@ha
265
+ ; P9-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
146
266
; P9-NEXT: xvabsdp 0, 34
147
- ; P9-NEXT: addi 3, 3, .LCPI4_0 @toc@l
267
+ ; P9-NEXT: addi 3, 3, .LCPI7_0 @toc@l
148
268
; P9-NEXT: lxv 1, 0(3)
149
269
; P9-NEXT: xvcmpeqdp 34, 0, 1
150
270
; P9-NEXT: blr
@@ -208,8 +328,8 @@ define zeroext i1 @iszeroq(fp128 %x) {
208
328
; P8-NEXT: std 0, 48(1)
209
329
; P8-NEXT: .cfi_def_cfa_offset 32
210
330
; P8-NEXT: .cfi_offset lr, 16
211
- ; P8-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
212
- ; P8-NEXT: addi 3, 3, .LCPI7_0 @toc@l
331
+ ; P8-NEXT: addis 3, 2, .LCPI10_0 @toc@ha
332
+ ; P8-NEXT: addi 3, 3, .LCPI10_0 @toc@l
213
333
; P8-NEXT: lxvd2x 0, 0, 3
214
334
; P8-NEXT: xxswapd 35, 0
215
335
; P8-NEXT: bl __eqkf2
@@ -223,9 +343,9 @@ define zeroext i1 @iszeroq(fp128 %x) {
223
343
;
224
344
; P9-LABEL: iszeroq:
225
345
; P9: # %bb.0: # %entry
226
- ; P9-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
346
+ ; P9-NEXT: addis 3, 2, .LCPI10_0 @toc@ha
227
347
; P9-NEXT: li 4, 1
228
- ; P9-NEXT: addi 3, 3, .LCPI7_0 @toc@l
348
+ ; P9-NEXT: addi 3, 3, .LCPI10_0 @toc@l
229
349
; P9-NEXT: lxv 35, 0(3)
230
350
; P9-NEXT: li 3, 0
231
351
; P9-NEXT: xscmpuqp 0, 2, 3
0 commit comments