Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit 940eac6

Browse files
committed
[x86] add tests for select-of-FP-constants; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@347406 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 7effc71 commit 940eac6

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

test/CodeGen/X86/vselect-zero.ll

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,56 @@ define double @fsel_nonzero_true_val(double %x, double %y, double %z) {
117117
ret double %r
118118
}
119119

120+
define double @fsel_nonzero_constants(double %x, double %y) {
121+
; SSE-LABEL: fsel_nonzero_constants:
122+
; SSE: # %bb.0:
123+
; SSE-NEXT: cmpeqsd %xmm1, %xmm0
124+
; SSE-NEXT: movq %xmm0, %rax
125+
; SSE-NEXT: andl $1, %eax
126+
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
127+
; SSE-NEXT: retq
128+
;
129+
; AVX-LABEL: fsel_nonzero_constants:
130+
; AVX: # %bb.0:
131+
; AVX-NEXT: vcmpeqsd %xmm1, %xmm0, %xmm0
132+
; AVX-NEXT: vmovq %xmm0, %rax
133+
; AVX-NEXT: andl $1, %eax
134+
; AVX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
135+
; AVX-NEXT: retq
136+
%cond = fcmp oeq double %x, %y
137+
%r = select i1 %cond, double 12.0, double 42.0
138+
ret double %r
139+
}
140+
141+
define <2 x double> @vsel_nonzero_constants(<2 x double> %x, <2 x double> %y) {
142+
; SSE2-LABEL: vsel_nonzero_constants:
143+
; SSE2: # %bb.0:
144+
; SSE2-NEXT: cmplepd %xmm0, %xmm1
145+
; SSE2-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
146+
; SSE2-NEXT: movapd %xmm1, %xmm2
147+
; SSE2-NEXT: andnpd %xmm0, %xmm2
148+
; SSE2-NEXT: andpd {{.*}}(%rip), %xmm1
149+
; SSE2-NEXT: orpd %xmm2, %xmm1
150+
; SSE2-NEXT: movapd %xmm1, %xmm0
151+
; SSE2-NEXT: retq
152+
;
153+
; SSE42-LABEL: vsel_nonzero_constants:
154+
; SSE42: # %bb.0:
155+
; SSE42-NEXT: cmplepd %xmm0, %xmm1
156+
; SSE42-NEXT: movsd {{.*#+}} xmm2 = mem[0],zero
157+
; SSE42-NEXT: movapd %xmm1, %xmm0
158+
; SSE42-NEXT: blendvpd %xmm0, {{.*}}(%rip), %xmm2
159+
; SSE42-NEXT: movapd %xmm2, %xmm0
160+
; SSE42-NEXT: retq
161+
;
162+
; AVX-LABEL: vsel_nonzero_constants:
163+
; AVX: # %bb.0:
164+
; AVX-NEXT: vcmplepd %xmm0, %xmm1, %xmm0
165+
; AVX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
166+
; AVX-NEXT: vblendvpd %xmm0, {{.*}}(%rip), %xmm1, %xmm0
167+
; AVX-NEXT: retq
168+
%cond = fcmp oge <2 x double> %x, %y
169+
%r = select <2 x i1> %cond, <2 x double> <double 12.0, double -1.0>, <2 x double> <double 42.0, double 0.0>
170+
ret <2 x double> %r
171+
}
172+

0 commit comments

Comments
 (0)