Skip to content

Commit 30ccb60

Browse files
authored
[X86] Add test coverage for #162812 (#162878)
1 parent 8aa4997 commit 30ccb60

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

llvm/test/CodeGen/X86/pr162812.ll

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2+
; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64 | FileCheck %s --check-prefixes=SSE2
3+
; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v2 | FileCheck %s --check-prefixes=SSE42
4+
; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v3 | FileCheck %s --check-prefixes=AVX2
5+
; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v4 | FileCheck %s --check-prefixes=AVX512
6+
7+
define <32 x i8> @PR162812(<32 x i8> %a, <32 x i8> %mask) {
8+
; SSE2-LABEL: PR162812:
9+
; SSE2: # %bb.0:
10+
; SSE2-NEXT: psrlw $2, %xmm2
11+
; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [8224,8224,8224,8224,8224,8224,8224,8224]
12+
; SSE2-NEXT: pand %xmm4, %xmm2
13+
; SSE2-NEXT: paddb %xmm2, %xmm2
14+
; SSE2-NEXT: paddb %xmm2, %xmm2
15+
; SSE2-NEXT: pxor %xmm5, %xmm5
16+
; SSE2-NEXT: pxor %xmm6, %xmm6
17+
; SSE2-NEXT: pcmpgtb %xmm2, %xmm6
18+
; SSE2-NEXT: movdqa %xmm6, %xmm2
19+
; SSE2-NEXT: pandn %xmm0, %xmm2
20+
; SSE2-NEXT: paddb %xmm0, %xmm0
21+
; SSE2-NEXT: pand %xmm6, %xmm0
22+
; SSE2-NEXT: por %xmm2, %xmm0
23+
; SSE2-NEXT: psrlw $2, %xmm3
24+
; SSE2-NEXT: pand %xmm4, %xmm3
25+
; SSE2-NEXT: paddb %xmm3, %xmm3
26+
; SSE2-NEXT: paddb %xmm3, %xmm3
27+
; SSE2-NEXT: pcmpgtb %xmm3, %xmm5
28+
; SSE2-NEXT: movdqa %xmm5, %xmm2
29+
; SSE2-NEXT: pandn %xmm1, %xmm2
30+
; SSE2-NEXT: paddb %xmm1, %xmm1
31+
; SSE2-NEXT: pand %xmm5, %xmm1
32+
; SSE2-NEXT: por %xmm2, %xmm1
33+
; SSE2-NEXT: retq
34+
;
35+
; SSE42-LABEL: PR162812:
36+
; SSE42: # %bb.0:
37+
; SSE42-NEXT: movdqa %xmm2, %xmm5
38+
; SSE42-NEXT: movdqa %xmm0, %xmm2
39+
; SSE42-NEXT: movdqa %xmm0, %xmm6
40+
; SSE42-NEXT: psllw $2, %xmm6
41+
; SSE42-NEXT: movdqa {{.*#+}} xmm7 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
42+
; SSE42-NEXT: pand %xmm7, %xmm6
43+
; SSE42-NEXT: psrlw $2, %xmm5
44+
; SSE42-NEXT: movdqa {{.*#+}} xmm4 = [8224,8224,8224,8224,8224,8224,8224,8224]
45+
; SSE42-NEXT: pand %xmm4, %xmm5
46+
; SSE42-NEXT: paddb %xmm5, %xmm5
47+
; SSE42-NEXT: movdqa %xmm5, %xmm0
48+
; SSE42-NEXT: pblendvb %xmm0, %xmm6, %xmm2
49+
; SSE42-NEXT: movdqa %xmm2, %xmm6
50+
; SSE42-NEXT: paddb %xmm2, %xmm6
51+
; SSE42-NEXT: paddb %xmm5, %xmm5
52+
; SSE42-NEXT: movdqa %xmm5, %xmm0
53+
; SSE42-NEXT: pblendvb %xmm0, %xmm6, %xmm2
54+
; SSE42-NEXT: movdqa %xmm1, %xmm5
55+
; SSE42-NEXT: psllw $2, %xmm5
56+
; SSE42-NEXT: pand %xmm7, %xmm5
57+
; SSE42-NEXT: psrlw $2, %xmm3
58+
; SSE42-NEXT: pand %xmm3, %xmm4
59+
; SSE42-NEXT: paddb %xmm4, %xmm4
60+
; SSE42-NEXT: movdqa %xmm4, %xmm0
61+
; SSE42-NEXT: pblendvb %xmm0, %xmm5, %xmm1
62+
; SSE42-NEXT: movdqa %xmm1, %xmm3
63+
; SSE42-NEXT: paddb %xmm1, %xmm3
64+
; SSE42-NEXT: paddb %xmm4, %xmm4
65+
; SSE42-NEXT: movdqa %xmm4, %xmm0
66+
; SSE42-NEXT: pblendvb %xmm0, %xmm3, %xmm1
67+
; SSE42-NEXT: movdqa %xmm2, %xmm0
68+
; SSE42-NEXT: retq
69+
;
70+
; AVX2-LABEL: PR162812:
71+
; AVX2: # %bb.0:
72+
; AVX2-NEXT: vpsllw $2, %ymm0, %ymm2
73+
; AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm2
74+
; AVX2-NEXT: vpsrlw $2, %ymm1, %ymm1
75+
; AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
76+
; AVX2-NEXT: vpaddb %ymm1, %ymm1, %ymm1
77+
; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
78+
; AVX2-NEXT: vpaddb %ymm0, %ymm0, %ymm2
79+
; AVX2-NEXT: vpaddb %ymm1, %ymm1, %ymm1
80+
; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
81+
; AVX2-NEXT: retq
82+
;
83+
; AVX512-LABEL: PR162812:
84+
; AVX512: # %bb.0:
85+
; AVX512-NEXT: vpsllw $2, %ymm0, %ymm2
86+
; AVX512-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, %ymm2
87+
; AVX512-NEXT: vpsrlw $2, %ymm1, %ymm1
88+
; AVX512-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, %ymm1
89+
; AVX512-NEXT: vpaddb %ymm1, %ymm1, %ymm1
90+
; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
91+
; AVX512-NEXT: vpaddb %ymm0, %ymm0, %ymm2
92+
; AVX512-NEXT: vpaddb %ymm1, %ymm1, %ymm1
93+
; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
94+
; AVX512-NEXT: retq
95+
%1 = lshr <32 x i8> %mask, splat (i8 7)
96+
%ret = shl <32 x i8> %a, %1
97+
ret <32 x i8> %ret
98+
}

0 commit comments

Comments
 (0)