xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/vector-idiv-sdiv-128.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE --check-prefix=SSE2
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefix=AVX --check-prefix=AVX1
5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefix=AVX --check-prefix=AVX2
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Worker;
8*9880d681SAndroid Build Coastguard Worker; sdiv by 7
9*9880d681SAndroid Build Coastguard Worker;
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_div7_2i64(<2 x i64> %a) nounwind {
12*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: test_div7_2i64:
13*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
14*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %xmm0, %rax
15*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movabsq $5270498306774157605, %rcx # imm = 0x4924924924924925
16*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    imulq %rcx
17*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rax
18*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $63, %rax
19*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq %rdx
20*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    addq %rax, %rdx
21*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rdx, %xmm1
22*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
23*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %xmm0, %rax
24*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    imulq %rcx
25*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rax
26*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $63, %rax
27*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq %rdx
28*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    addq %rax, %rdx
29*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rdx, %xmm0
30*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
31*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
32*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
33*9880d681SAndroid Build Coastguard Worker;
34*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: test_div7_2i64:
35*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
36*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pextrq $1, %xmm0, %rax
37*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movabsq $5270498306774157605, %rcx # imm = 0x4924924924924925
38*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    imulq %rcx
39*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rdx, %rax
40*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $63, %rax
41*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq %rdx
42*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    addq %rax, %rdx
43*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %rdx, %xmm1
44*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %xmm0, %rax
45*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    imulq %rcx
46*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rdx, %rax
47*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $63, %rax
48*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq %rdx
49*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    addq %rax, %rdx
50*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %rdx, %xmm0
51*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
52*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
53*9880d681SAndroid Build Coastguard Worker;
54*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_div7_2i64:
55*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
56*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpextrq $1, %xmm0, %rax
57*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movabsq $5270498306774157605, %rcx # imm = 0x4924924924924925
58*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    imulq %rcx
59*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movq %rdx, %rax
60*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    shrq $63, %rax
61*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sarq %rdx
62*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    addq %rax, %rdx
63*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq %rdx, %xmm1
64*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq %xmm0, %rax
65*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    imulq %rcx
66*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movq %rdx, %rax
67*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    shrq $63, %rax
68*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sarq %rdx
69*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    addq %rax, %rdx
70*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq %rdx, %xmm0
71*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
72*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
73*9880d681SAndroid Build Coastguard Worker  %res = sdiv <2 x i64> %a, <i64 7, i64 7>
74*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_div7_4i32(<4 x i32> %a) nounwind {
78*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: test_div7_4i32:
79*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
80*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
81*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
82*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
83*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm1, %xmm2
84*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm3
85*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmuludq %xmm1, %xmm3
86*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
87*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
88*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm0, %xmm1
89*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddd %xmm1, %xmm2
90*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[1,3,2,3]
91*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
92*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmuludq %xmm4, %xmm3
93*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,3,2,3]
94*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
95*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psubd %xmm2, %xmm1
96*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddd %xmm0, %xmm1
97*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
98*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrld $31, %xmm0
99*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $2, %xmm1
100*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddd %xmm0, %xmm1
101*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
102*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
103*9880d681SAndroid Build Coastguard Worker;
104*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: test_div7_4i32:
105*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
106*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
107*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
108*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
109*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmuldq %xmm2, %xmm3
110*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmuldq %xmm0, %xmm1
111*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
112*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
113*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddd %xmm0, %xmm1
114*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
115*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrld $31, %xmm0
116*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $2, %xmm1
117*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddd %xmm0, %xmm1
118*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
119*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
120*9880d681SAndroid Build Coastguard Worker;
121*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: test_div7_4i32:
122*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
123*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
124*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
125*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
126*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmuldq %xmm2, %xmm3, %xmm2
127*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmuldq %xmm1, %xmm0, %xmm1
128*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
129*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
130*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddd %xmm0, %xmm1, %xmm0
131*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $31, %xmm0, %xmm1
132*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrad $2, %xmm0, %xmm0
133*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddd %xmm1, %xmm0, %xmm0
134*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
135*9880d681SAndroid Build Coastguard Worker;
136*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_div7_4i32:
137*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
138*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastd {{.*}}(%rip), %xmm1
139*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
140*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
141*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmuldq %xmm2, %xmm3, %xmm2
142*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmuldq %xmm1, %xmm0, %xmm1
143*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
144*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]
145*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddd %xmm0, %xmm1, %xmm0
146*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrld $31, %xmm0, %xmm1
147*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrad $2, %xmm0, %xmm0
148*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddd %xmm1, %xmm0, %xmm0
149*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
150*9880d681SAndroid Build Coastguard Worker  %res = sdiv <4 x i32> %a, <i32 7, i32 7, i32 7, i32 7>
151*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
152*9880d681SAndroid Build Coastguard Worker}
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_div7_8i16(<8 x i16> %a) nounwind {
155*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_div7_8i16:
156*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
157*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmulhw {{.*}}(%rip), %xmm0
158*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movdqa %xmm0, %xmm1
159*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlw $15, %xmm1
160*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psraw $1, %xmm0
161*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    paddw %xmm1, %xmm0
162*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
163*9880d681SAndroid Build Coastguard Worker;
164*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_div7_8i16:
165*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
166*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmulhw {{.*}}(%rip), %xmm0, %xmm0
167*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlw $15, %xmm0, %xmm1
168*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsraw $1, %xmm0, %xmm0
169*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddw %xmm1, %xmm0, %xmm0
170*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
171*9880d681SAndroid Build Coastguard Worker  %res = sdiv <8 x i16> %a, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
172*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_div7_16i8(<16 x i8> %a) nounwind {
176*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: test_div7_16i8:
177*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
178*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147]
179*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm2
180*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm3
181*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
182*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm3
183*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmullw %xmm2, %xmm3
184*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $8, %xmm3
185*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
186*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
187*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm1
188*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmullw %xmm2, %xmm1
189*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $8, %xmm1
190*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    packuswb %xmm3, %xmm1
191*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddb %xmm0, %xmm1
192*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
193*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $2, %xmm0
194*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm0
195*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
196*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm2, %xmm0
197*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psubb %xmm2, %xmm0
198*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $7, %xmm1
199*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm1
200*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddb %xmm0, %xmm1
201*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
202*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
203*9880d681SAndroid Build Coastguard Worker;
204*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: test_div7_16i8:
205*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
206*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm0, %xmm1
207*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw {{.*}}(%rip), %xmm2
208*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmullw %xmm2, %xmm1
209*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $8, %xmm1
210*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
211*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm3, %xmm3
212*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmullw %xmm2, %xmm3
213*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $8, %xmm3
214*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    packuswb %xmm3, %xmm1
215*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddb %xmm0, %xmm1
216*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
217*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $2, %xmm0
218*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand {{.*}}(%rip), %xmm0
219*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa {{.*#+}} xmm2 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
220*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm2, %xmm0
221*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psubb %xmm2, %xmm0
222*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $7, %xmm1
223*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand {{.*}}(%rip), %xmm1
224*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddb %xmm0, %xmm1
225*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm0
226*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
227*9880d681SAndroid Build Coastguard Worker;
228*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: test_div7_16i8:
229*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
230*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm0, %xmm1
231*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw {{.*}}(%rip), %xmm2
232*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw %xmm2, %xmm1, %xmm1
233*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $8, %xmm1, %xmm1
234*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
235*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm3, %xmm3
236*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw %xmm2, %xmm3, %xmm2
237*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $8, %xmm2, %xmm2
238*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpackuswb %xmm2, %xmm1, %xmm1
239*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm0, %xmm1, %xmm0
240*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $2, %xmm0, %xmm1
241*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand {{.*}}(%rip), %xmm1, %xmm1
242*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm2 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
243*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm1
244*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsubb %xmm2, %xmm1, %xmm1
245*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $7, %xmm0, %xmm0
246*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
247*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm0, %xmm1, %xmm0
248*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
249*9880d681SAndroid Build Coastguard Worker;
250*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_div7_16i8:
251*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
252*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw %xmm0, %ymm1
253*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw {{.*}}(%rip), %ymm2
254*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmullw %ymm2, %ymm1, %ymm1
255*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlw $8, %ymm1, %ymm1
256*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
257*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpackuswb %xmm2, %xmm1, %xmm1
258*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %xmm0, %xmm1, %xmm0
259*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlw $2, %xmm0, %xmm1
260*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %xmm1, %xmm1
261*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm2 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
262*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm1
263*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsubb %xmm2, %xmm1, %xmm1
264*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlw $7, %xmm0, %xmm0
265*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %xmm0, %xmm0
266*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %xmm0, %xmm1, %xmm0
267*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vzeroupper
268*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
269*9880d681SAndroid Build Coastguard Worker  %res = sdiv <16 x i8> %a, <i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7>
270*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
271*9880d681SAndroid Build Coastguard Worker}
272*9880d681SAndroid Build Coastguard Worker
273*9880d681SAndroid Build Coastguard Worker;
274*9880d681SAndroid Build Coastguard Worker; srem by 7
275*9880d681SAndroid Build Coastguard Worker;
276*9880d681SAndroid Build Coastguard Worker
277*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_rem7_2i64(<2 x i64> %a) nounwind {
278*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: test_rem7_2i64:
279*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
280*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %xmm0, %rcx
281*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movabsq $5270498306774157605, %rsi # imm = 0x4924924924924925
282*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rcx, %rax
283*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    imulq %rsi
284*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rax
285*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $63, %rax
286*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq %rdx
287*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    addq %rax, %rdx
288*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    leaq (,%rdx,8), %rax
289*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    subq %rdx, %rax
290*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    subq %rax, %rcx
291*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rcx, %xmm1
292*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
293*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %xmm0, %rcx
294*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rcx, %rax
295*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    imulq %rsi
296*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movq %rdx, %rax
297*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    shrq $63, %rax
298*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    sarq %rdx
299*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    addq %rax, %rdx
300*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    leaq (,%rdx,8), %rax
301*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    subq %rdx, %rax
302*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    subq %rax, %rcx
303*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movd %rcx, %xmm0
304*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]
305*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm0
306*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
307*9880d681SAndroid Build Coastguard Worker;
308*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: test_rem7_2i64:
309*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
310*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pextrq $1, %xmm0, %rcx
311*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movabsq $5270498306774157605, %rsi # imm = 0x4924924924924925
312*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rcx, %rax
313*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    imulq %rsi
314*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rdx, %rax
315*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $63, %rax
316*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq %rdx
317*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    addq %rax, %rdx
318*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    leaq (,%rdx,8), %rax
319*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    subq %rdx, %rax
320*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    subq %rax, %rcx
321*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %rcx, %xmm1
322*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %xmm0, %rcx
323*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rcx, %rax
324*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    imulq %rsi
325*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movq %rdx, %rax
326*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    shrq $63, %rax
327*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    sarq %rdx
328*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    addq %rax, %rdx
329*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    leaq (,%rdx,8), %rax
330*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    subq %rdx, %rax
331*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    subq %rax, %rcx
332*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movd %rcx, %xmm0
333*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
334*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
335*9880d681SAndroid Build Coastguard Worker;
336*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_rem7_2i64:
337*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
338*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpextrq $1, %xmm0, %rcx
339*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movabsq $5270498306774157605, %rsi # imm = 0x4924924924924925
340*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movq %rcx, %rax
341*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    imulq %rsi
342*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movq %rdx, %rax
343*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    shrq $63, %rax
344*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sarq %rdx
345*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    addq %rax, %rdx
346*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    leaq (,%rdx,8), %rax
347*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    subq %rdx, %rax
348*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    subq %rax, %rcx
349*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq %rcx, %xmm1
350*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq %xmm0, %rcx
351*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movq %rcx, %rax
352*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    imulq %rsi
353*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    movq %rdx, %rax
354*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    shrq $63, %rax
355*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    sarq %rdx
356*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    addq %rax, %rdx
357*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    leaq (,%rdx,8), %rax
358*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    subq %rdx, %rax
359*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    subq %rax, %rcx
360*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vmovq %rcx, %xmm0
361*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
362*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
363*9880d681SAndroid Build Coastguard Worker  %res = srem <2 x i64> %a, <i64 7, i64 7>
364*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res
365*9880d681SAndroid Build Coastguard Worker}
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_rem7_4i32(<4 x i32> %a) nounwind {
368*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: test_rem7_4i32:
369*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
370*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
371*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm2
372*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm2
373*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm1, %xmm2
374*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm3
375*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmuludq %xmm1, %xmm3
376*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
377*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $31, %xmm1
378*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm0, %xmm1
379*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddd %xmm1, %xmm2
380*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[1,3,2,3]
381*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
382*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmuludq %xmm4, %xmm3
383*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,3,2,3]
384*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
385*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psubd %xmm2, %xmm1
386*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddd %xmm0, %xmm1
387*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
388*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrld $31, %xmm2
389*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrad $2, %xmm1
390*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddd %xmm2, %xmm1
391*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [7,7,7,7]
392*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[1,1,3,3]
393*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmuludq %xmm2, %xmm1
394*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
395*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmuludq %xmm2, %xmm3
396*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm3[0,2,2,3]
397*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
398*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psubd %xmm1, %xmm0
399*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
400*9880d681SAndroid Build Coastguard Worker;
401*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: test_rem7_4i32:
402*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
403*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
404*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
405*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
406*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmuldq %xmm2, %xmm3
407*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmuldq %xmm0, %xmm1
408*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
409*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
410*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddd %xmm0, %xmm1
411*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm2
412*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrld $31, %xmm2
413*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrad $2, %xmm1
414*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddd %xmm2, %xmm1
415*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmulld {{.*}}(%rip), %xmm1
416*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psubd %xmm1, %xmm0
417*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
418*9880d681SAndroid Build Coastguard Worker;
419*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: test_rem7_4i32:
420*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
421*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
422*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
423*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
424*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmuldq %xmm2, %xmm3, %xmm2
425*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmuldq %xmm1, %xmm0, %xmm1
426*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
427*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpblendw {{.*#+}} xmm1 = xmm1[0,1],xmm2[2,3],xmm1[4,5],xmm2[6,7]
428*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddd %xmm0, %xmm1, %xmm1
429*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrld $31, %xmm1, %xmm2
430*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrad $2, %xmm1, %xmm1
431*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddd %xmm2, %xmm1, %xmm1
432*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmulld {{.*}}(%rip), %xmm1, %xmm1
433*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsubd %xmm1, %xmm0, %xmm0
434*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
435*9880d681SAndroid Build Coastguard Worker;
436*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_rem7_4i32:
437*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
438*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastd {{.*}}(%rip), %xmm1
439*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
440*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
441*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmuldq %xmm2, %xmm3, %xmm2
442*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmuldq %xmm1, %xmm0, %xmm1
443*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
444*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpblendd {{.*#+}} xmm1 = xmm1[0],xmm2[1],xmm1[2],xmm2[3]
445*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddd %xmm0, %xmm1, %xmm1
446*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrld $31, %xmm1, %xmm2
447*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrad $2, %xmm1, %xmm1
448*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddd %xmm2, %xmm1, %xmm1
449*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpbroadcastd {{.*}}(%rip), %xmm2
450*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmulld %xmm2, %xmm1, %xmm1
451*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsubd %xmm1, %xmm0, %xmm0
452*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
453*9880d681SAndroid Build Coastguard Worker  %res = srem <4 x i32> %a, <i32 7, i32 7, i32 7, i32 7>
454*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Worker
457*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_rem7_8i16(<8 x i16> %a) nounwind {
458*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: test_rem7_8i16:
459*9880d681SAndroid Build Coastguard Worker; SSE:       # BB#0:
460*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movdqa {{.*#+}} xmm1 = [18725,18725,18725,18725,18725,18725,18725,18725]
461*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmulhw %xmm0, %xmm1
462*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    movdqa %xmm1, %xmm2
463*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psrlw $15, %xmm2
464*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psraw $1, %xmm1
465*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    paddw %xmm2, %xmm1
466*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    pmullw {{.*}}(%rip), %xmm1
467*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    psubw %xmm1, %xmm0
468*9880d681SAndroid Build Coastguard Worker; SSE-NEXT:    retq
469*9880d681SAndroid Build Coastguard Worker;
470*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: test_rem7_8i16:
471*9880d681SAndroid Build Coastguard Worker; AVX:       # BB#0:
472*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmulhw {{.*}}(%rip), %xmm0, %xmm1
473*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsrlw $15, %xmm1, %xmm2
474*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsraw $1, %xmm1, %xmm1
475*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpaddw %xmm2, %xmm1, %xmm1
476*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpmullw {{.*}}(%rip), %xmm1, %xmm1
477*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    vpsubw %xmm1, %xmm0, %xmm0
478*9880d681SAndroid Build Coastguard Worker; AVX-NEXT:    retq
479*9880d681SAndroid Build Coastguard Worker  %res = srem <8 x i16> %a, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
480*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
481*9880d681SAndroid Build Coastguard Worker}
482*9880d681SAndroid Build Coastguard Worker
483*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_rem7_16i8(<16 x i8> %a) nounwind {
484*9880d681SAndroid Build Coastguard Worker; SSE2-LABEL: test_rem7_16i8:
485*9880d681SAndroid Build Coastguard Worker; SSE2:       # BB#0:
486*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147]
487*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm2
488*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm3
489*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm3 = xmm3[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
490*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm3
491*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmullw %xmm2, %xmm3
492*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $8, %xmm3
493*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm0, %xmm1
494*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
495*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm1
496*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmullw %xmm2, %xmm1
497*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $8, %xmm1
498*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    packuswb %xmm3, %xmm1
499*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddb %xmm0, %xmm1
500*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
501*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $2, %xmm2
502*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm2
503*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
504*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pxor %xmm3, %xmm2
505*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psubb %xmm3, %xmm2
506*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psrlw $7, %xmm1
507*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand {{.*}}(%rip), %xmm1
508*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    paddb %xmm2, %xmm1
509*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa %xmm1, %xmm2
510*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpckhbw {{.*#+}} xmm2 = xmm2[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
511*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm2
512*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm3 = [7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]
513*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm3
514*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmullw %xmm3, %xmm2
515*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
516*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm4, %xmm2
517*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
518*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psraw $8, %xmm1
519*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pmullw %xmm3, %xmm1
520*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    pand %xmm4, %xmm1
521*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    packuswb %xmm2, %xmm1
522*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    psubb %xmm1, %xmm0
523*9880d681SAndroid Build Coastguard Worker; SSE2-NEXT:    retq
524*9880d681SAndroid Build Coastguard Worker;
525*9880d681SAndroid Build Coastguard Worker; SSE41-LABEL: test_rem7_16i8:
526*9880d681SAndroid Build Coastguard Worker; SSE41:       # BB#0:
527*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm0, %xmm1
528*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw {{.*}}(%rip), %xmm2
529*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmullw %xmm2, %xmm1
530*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $8, %xmm1
531*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
532*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm3, %xmm3
533*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmullw %xmm2, %xmm3
534*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $8, %xmm3
535*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    packuswb %xmm3, %xmm1
536*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddb %xmm0, %xmm1
537*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa %xmm1, %xmm2
538*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $2, %xmm2
539*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand {{.*}}(%rip), %xmm2
540*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa {{.*#+}} xmm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
541*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pxor %xmm3, %xmm2
542*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psubb %xmm3, %xmm2
543*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psrlw $7, %xmm1
544*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand {{.*}}(%rip), %xmm1
545*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    paddb %xmm2, %xmm1
546*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm1, %xmm2
547*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw {{.*}}(%rip), %xmm3
548*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmullw %xmm3, %xmm2
549*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
550*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand %xmm4, %xmm2
551*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
552*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmovsxbw %xmm1, %xmm1
553*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pmullw %xmm3, %xmm1
554*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    pand %xmm4, %xmm1
555*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    packuswb %xmm1, %xmm2
556*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    psubb %xmm2, %xmm0
557*9880d681SAndroid Build Coastguard Worker; SSE41-NEXT:    retq
558*9880d681SAndroid Build Coastguard Worker;
559*9880d681SAndroid Build Coastguard Worker; AVX1-LABEL: test_rem7_16i8:
560*9880d681SAndroid Build Coastguard Worker; AVX1:       # BB#0:
561*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm0, %xmm1
562*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw {{.*}}(%rip), %xmm2
563*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw %xmm2, %xmm1, %xmm1
564*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $8, %xmm1, %xmm1
565*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
566*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm3, %xmm3
567*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw %xmm2, %xmm3, %xmm2
568*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $8, %xmm2, %xmm2
569*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpackuswb %xmm2, %xmm1, %xmm1
570*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm0, %xmm1, %xmm1
571*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $2, %xmm1, %xmm2
572*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand {{.*}}(%rip), %xmm2, %xmm2
573*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
574*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm2
575*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsubb %xmm3, %xmm2, %xmm2
576*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsrlw $7, %xmm1, %xmm1
577*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand {{.*}}(%rip), %xmm1, %xmm1
578*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpaddb %xmm1, %xmm2, %xmm1
579*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm1, %xmm2
580*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw {{.*}}(%rip), %xmm3
581*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw %xmm3, %xmm2, %xmm2
582*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vmovdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
583*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm4, %xmm2, %xmm2
584*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
585*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmovsxbw %xmm1, %xmm1
586*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpmullw %xmm3, %xmm1, %xmm1
587*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpand %xmm4, %xmm1, %xmm1
588*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpackuswb %xmm1, %xmm2, %xmm1
589*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    vpsubb %xmm1, %xmm0, %xmm0
590*9880d681SAndroid Build Coastguard Worker; AVX1-NEXT:    retq
591*9880d681SAndroid Build Coastguard Worker;
592*9880d681SAndroid Build Coastguard Worker; AVX2-LABEL: test_rem7_16i8:
593*9880d681SAndroid Build Coastguard Worker; AVX2:       # BB#0:
594*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw %xmm0, %ymm1
595*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw {{.*}}(%rip), %ymm2
596*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmullw %ymm2, %ymm1, %ymm1
597*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlw $8, %ymm1, %ymm1
598*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
599*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpackuswb %xmm2, %xmm1, %xmm1
600*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %xmm0, %xmm1, %xmm1
601*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlw $2, %xmm1, %xmm2
602*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %xmm2, %xmm2
603*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
604*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpxor %xmm3, %xmm2, %xmm2
605*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsubb %xmm3, %xmm2, %xmm2
606*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsrlw $7, %xmm1, %xmm1
607*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpand {{.*}}(%rip), %xmm1, %xmm1
608*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpaddb %xmm1, %xmm2, %xmm1
609*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw %xmm1, %ymm1
610*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmovsxbw {{.*}}(%rip), %ymm2
611*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpmullw %ymm2, %ymm1, %ymm1
612*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vextracti128 $1, %ymm1, %xmm2
613*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vmovdqa {{.*#+}} xmm3 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u>
614*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm3, %xmm2, %xmm2
615*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpshufb %xmm3, %xmm1, %xmm1
616*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpunpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
617*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vpsubb %xmm1, %xmm0, %xmm0
618*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    vzeroupper
619*9880d681SAndroid Build Coastguard Worker; AVX2-NEXT:    retq
620*9880d681SAndroid Build Coastguard Worker  %res = srem <16 x i8> %a, <i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7,i8 7, i8 7, i8 7, i8 7>
621*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
622*9880d681SAndroid Build Coastguard Worker}
623