Skip to content

Commit 788b50a

Browse files
committed
[X86] Add test coverage for llvm#136368
1 parent 940108b commit 788b50a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

llvm/test/CodeGen/X86/combine-fcopysign.ll

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,41 @@ define <4 x float> @combine_vec_fcopysign_fptrunc_sgn(<4 x float> %x, <4 x doubl
248248
ret <4 x float> %2
249249
}
250250

251+
define double @PR136368(double %x) {
252+
; SSE-LABEL: PR136368:
253+
; SSE: # %bb.0:
254+
; SSE-NEXT: movapd {{.*#+}} xmm1 = [NaN,NaN]
255+
; SSE-NEXT: movapd %xmm0, %xmm2
256+
; SSE-NEXT: andpd %xmm1, %xmm2
257+
; SSE-NEXT: movsd {{.*#+}} xmm3 = [1.5707963267948966E+0,0.0E+0]
258+
; SSE-NEXT: movapd %xmm3, %xmm4
259+
; SSE-NEXT: cmpltsd %xmm2, %xmm4
260+
; SSE-NEXT: andpd %xmm3, %xmm4
261+
; SSE-NEXT: andpd %xmm1, %xmm4
262+
; SSE-NEXT: andnpd %xmm0, %xmm1
263+
; SSE-NEXT: orpd %xmm4, %xmm1
264+
; SSE-NEXT: movapd %xmm1, %xmm0
265+
; SSE-NEXT: retq
266+
;
267+
; AVX-LABEL: PR136368:
268+
; AVX: # %bb.0:
269+
; AVX-NEXT: vmovddup {{.*#+}} xmm1 = [NaN,NaN]
270+
; AVX-NEXT: # xmm1 = mem[0,0]
271+
; AVX-NEXT: vandpd %xmm1, %xmm0, %xmm2
272+
; AVX-NEXT: vmovsd {{.*#+}} xmm3 = [1.5707963267948966E+0,0.0E+0]
273+
; AVX-NEXT: vcmpltsd %xmm2, %xmm3, %xmm2
274+
; AVX-NEXT: vandpd %xmm3, %xmm2, %xmm2
275+
; AVX-NEXT: vandnpd %xmm0, %xmm1, %xmm0
276+
; AVX-NEXT: vandpd %xmm1, %xmm2, %xmm1
277+
; AVX-NEXT: vorpd %xmm0, %xmm1, %xmm0
278+
; AVX-NEXT: retq
279+
%fabs = tail call double @llvm.fabs.f64(double %x)
280+
%cmp = fcmp ogt double %fabs, 0x3FF921FB54442D18
281+
%cond = select i1 %cmp, double 0x3FF921FB54442D18, double 0.000000e+00
282+
%res = tail call double @llvm.copysign.f64(double %cond, double %x)
283+
ret double %res
284+
}
285+
251286
declare <4 x float> @llvm.fabs.v4f32(<4 x float> %p)
252287
declare <4 x float> @llvm.copysign.v4f32(<4 x float> %Mag, <4 x float> %Sgn)
253288
declare <4 x double> @llvm.copysign.v4f64(<4 x double> %Mag, <4 x double> %Sgn)

0 commit comments

Comments
 (0)