|
8 | 8 | ; condition used by the vector select is a vector of constants.
|
9 | 9 |
|
10 | 10 | define <2 x i64> @masked_select_const(<2 x i64> %a, <2 x i64> %x, <2 x i64> %y) {
|
11 |
| -; SSE2-LABEL: masked_select_const: |
12 |
| -; SSE2: # %bb.0: |
13 |
| -; SSE2-NEXT: movdqa {{.*#+}} xmm3 = [4294967272,4294967272,4294967272,4294967272] |
14 |
| -; SSE2-NEXT: paddd %xmm0, %xmm3 |
15 |
| -; SSE2-NEXT: pcmpgtd %xmm2, %xmm1 |
16 |
| -; SSE2-NEXT: pand %xmm1, %xmm3 |
17 |
| -; SSE2-NEXT: pandn %xmm0, %xmm1 |
18 |
| -; SSE2-NEXT: por %xmm1, %xmm3 |
19 |
| -; SSE2-NEXT: movdqa %xmm3, %xmm0 |
20 |
| -; SSE2-NEXT: retq |
21 |
| -; |
22 |
| -; SSE41-LABEL: masked_select_const: |
23 |
| -; SSE41: # %bb.0: |
24 |
| -; SSE41-NEXT: movdqa %xmm0, %xmm3 |
25 |
| -; SSE41-NEXT: pmovsxbd {{.*#+}} xmm4 = [4294967272,4294967272,4294967272,4294967272] |
26 |
| -; SSE41-NEXT: paddd %xmm0, %xmm4 |
27 |
| -; SSE41-NEXT: pcmpgtd %xmm2, %xmm1 |
28 |
| -; SSE41-NEXT: movdqa %xmm1, %xmm0 |
29 |
| -; SSE41-NEXT: blendvps %xmm0, %xmm4, %xmm3 |
30 |
| -; SSE41-NEXT: movaps %xmm3, %xmm0 |
31 |
| -; SSE41-NEXT: retq |
| 11 | +; SSE-LABEL: masked_select_const: |
| 12 | +; SSE: # %bb.0: |
| 13 | +; SSE-NEXT: pcmpgtd %xmm2, %xmm1 |
| 14 | +; SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1 |
| 15 | +; SSE-NEXT: paddd %xmm1, %xmm0 |
| 16 | +; SSE-NEXT: retq |
32 | 17 | ;
|
33 | 18 | ; AVX1-LABEL: masked_select_const:
|
34 | 19 | ; AVX1: # %bb.0:
|
35 |
| -; AVX1-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm3 |
36 | 20 | ; AVX1-NEXT: vpcmpgtd %xmm2, %xmm1, %xmm1
|
37 |
| -; AVX1-NEXT: vblendvps %xmm1, %xmm3, %xmm0, %xmm0 |
| 21 | +; AVX1-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1 |
| 22 | +; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm0 |
38 | 23 | ; AVX1-NEXT: retq
|
39 | 24 | ;
|
40 | 25 | ; AVX2-LABEL: masked_select_const:
|
41 | 26 | ; AVX2: # %bb.0:
|
42 | 27 | ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm3 = [4294967272,4294967272,4294967272,4294967272]
|
43 |
| -; AVX2-NEXT: vpaddd %xmm3, %xmm0, %xmm3 |
44 | 28 | ; AVX2-NEXT: vpcmpgtd %xmm2, %xmm1, %xmm1
|
45 |
| -; AVX2-NEXT: vblendvps %xmm1, %xmm3, %xmm0, %xmm0 |
| 29 | +; AVX2-NEXT: vpand %xmm3, %xmm1, %xmm1 |
| 30 | +; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0 |
46 | 31 | ; AVX2-NEXT: retq
|
47 | 32 | %bit_a = bitcast <2 x i64> %a to <4 x i32>
|
48 | 33 | %sub.i = add <4 x i32> %bit_a, <i32 -24, i32 -24, i32 -24, i32 -24>
|
|
0 commit comments