@@ -106,21 +106,141 @@ entry:
106106 ret i1 %cmpinf
107107}
108108
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+
109229define <4 x i1 > @abs_isinfv4f32 (<4 x float > %x ) {
110230; P8-LABEL: abs_isinfv4f32:
111231; P8: # %bb.0: # %entry
112- ; P8-NEXT: addis 3, 2, .LCPI3_0 @toc@ha
232+ ; P8-NEXT: addis 3, 2, .LCPI6_0 @toc@ha
113233; 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
115235; P8-NEXT: lxvd2x 1, 0, 3
116236; P8-NEXT: xvcmpeqsp 34, 0, 1
117237; P8-NEXT: blr
118238;
119239; P9-LABEL: abs_isinfv4f32:
120240; P9: # %bb.0: # %entry
121- ; P9-NEXT: addis 3, 2, .LCPI3_0 @toc@ha
241+ ; P9-NEXT: addis 3, 2, .LCPI6_0 @toc@ha
122242; 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
124244; P9-NEXT: lxv 1, 0(3)
125245; P9-NEXT: xvcmpeqsp 34, 0, 1
126246; P9-NEXT: blr
@@ -133,18 +253,18 @@ entry:
133253define <2 x i1 > @abs_isinfv2f64 (<2 x double > %x ) {
134254; P8-LABEL: abs_isinfv2f64:
135255; P8: # %bb.0: # %entry
136- ; P8-NEXT: addis 3, 2, .LCPI4_0 @toc@ha
256+ ; P8-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
137257; 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
139259; P8-NEXT: lxvd2x 1, 0, 3
140260; P8-NEXT: xvcmpeqdp 34, 0, 1
141261; P8-NEXT: blr
142262;
143263; P9-LABEL: abs_isinfv2f64:
144264; P9: # %bb.0: # %entry
145- ; P9-NEXT: addis 3, 2, .LCPI4_0 @toc@ha
265+ ; P9-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
146266; 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
148268; P9-NEXT: lxv 1, 0(3)
149269; P9-NEXT: xvcmpeqdp 34, 0, 1
150270; P9-NEXT: blr
@@ -208,8 +328,8 @@ define zeroext i1 @iszeroq(fp128 %x) {
208328; P8-NEXT: std 0, 48(1)
209329; P8-NEXT: .cfi_def_cfa_offset 32
210330; 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
213333; P8-NEXT: lxvd2x 0, 0, 3
214334; P8-NEXT: xxswapd 35, 0
215335; P8-NEXT: bl __eqkf2
@@ -223,9 +343,9 @@ define zeroext i1 @iszeroq(fp128 %x) {
223343;
224344; P9-LABEL: iszeroq:
225345; P9: # %bb.0: # %entry
226- ; P9-NEXT: addis 3, 2, .LCPI7_0 @toc@ha
346+ ; P9-NEXT: addis 3, 2, .LCPI10_0 @toc@ha
227347; 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
229349; P9-NEXT: lxv 35, 0(3)
230350; P9-NEXT: li 3, 0
231351; P9-NEXT: xscmpuqp 0, 2, 3
0 commit comments