xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512bw-intrinsics.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-apple-darwin -mcpu=knl -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512BW
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i386-unknown-linux-gnu -mcpu=knl -mattr=+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=AVX512F-32
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerdefine i64 @test_cmp_b_512(<64 x i8> %a0, <64 x i8> %a1) {
6*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_cmp_b_512:
7*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
8*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpeqb %zmm1, %zmm0, %k0
9*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
10*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltb %zmm1, %zmm0, %k0
11*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
12*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
13*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpleb %zmm1, %zmm0, %k0
14*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
15*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
16*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunordb %zmm1, %zmm0, %k0
17*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
18*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
19*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpneqb %zmm1, %zmm0, %k0
20*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
21*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
22*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltb %zmm1, %zmm0, %k0
23*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
24*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
25*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnleb %zmm1, %zmm0, %k0
26*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rdx
27*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rdx
28*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpordb %zmm1, %zmm0, %k0
29*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
30*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rdx, %rax
31*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
32*9880d681SAndroid Build Coastguard Worker;
33*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_cmp_b_512:
34*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
35*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $68, %esp
36*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp0:
37*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 72
38*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpeqb %zmm1, %zmm0, %k0
39*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
40*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
41*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
42*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltb %zmm1, %zmm0, %k0
43*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
44*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
45*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
46*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpleb %zmm1, %zmm0, %k0
47*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
48*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
49*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
50*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunordb %zmm1, %zmm0, %k0
51*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
52*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
53*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
54*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpneqb %zmm1, %zmm0, %k0
55*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
56*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
57*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
58*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltb %zmm1, %zmm0, %k0
59*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
60*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
61*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
62*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnleb %zmm1, %zmm0, %k0
63*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
64*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
65*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
66*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpordb %zmm1, %zmm0, %k0
67*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
68*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl (%esp), %eax
69*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
70*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $68, %esp
71*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
72*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 -1)
73*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 -1)
74*9880d681SAndroid Build Coastguard Worker  %ret1 = add i64 %res0, %res1
75*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 -1)
76*9880d681SAndroid Build Coastguard Worker  %ret2 = add i64 %ret1, %res2
77*9880d681SAndroid Build Coastguard Worker  %res3 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 -1)
78*9880d681SAndroid Build Coastguard Worker  %ret3 = add i64 %ret2, %res3
79*9880d681SAndroid Build Coastguard Worker  %res4 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 -1)
80*9880d681SAndroid Build Coastguard Worker  %ret4 = add i64 %ret3, %res4
81*9880d681SAndroid Build Coastguard Worker  %res5 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 -1)
82*9880d681SAndroid Build Coastguard Worker  %ret5 = add i64 %ret4, %res5
83*9880d681SAndroid Build Coastguard Worker  %res6 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 -1)
84*9880d681SAndroid Build Coastguard Worker  %ret6 = add i64 %ret5, %res6
85*9880d681SAndroid Build Coastguard Worker  %res7 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 -1)
86*9880d681SAndroid Build Coastguard Worker  %ret7 = add i64 %ret6, %res7
87*9880d681SAndroid Build Coastguard Worker  ret i64 %ret7
88*9880d681SAndroid Build Coastguard Worker}
89*9880d681SAndroid Build Coastguard Worker
90*9880d681SAndroid Build Coastguard Workerdefine i64 @test_mask_cmp_b_512(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {
91*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_cmp_b_512:
92*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
93*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
94*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpeqb %zmm1, %zmm0, %k0 {%k1}
95*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
96*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltb %zmm1, %zmm0, %k0 {%k1}
97*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
98*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
99*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpleb %zmm1, %zmm0, %k0 {%k1}
100*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
101*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
102*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunordb %zmm1, %zmm0, %k0 {%k1}
103*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
104*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
105*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpneqb %zmm1, %zmm0, %k0 {%k1}
106*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
107*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
108*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltb %zmm1, %zmm0, %k0 {%k1}
109*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
110*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
111*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnleb %zmm1, %zmm0, %k0 {%k1}
112*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rdx
113*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rdx
114*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpordb %zmm1, %zmm0, %k0 {%k1}
115*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
116*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rdx, %rax
117*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
118*9880d681SAndroid Build Coastguard Worker;
119*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_cmp_b_512:
120*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
121*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $68, %esp
122*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp1:
123*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 72
124*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
125*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
126*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
127*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpeqb %zmm1, %zmm0, %k0 {%k1}
128*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
129*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl (%esp), %eax
130*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
131*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltb %zmm1, %zmm0, %k0 {%k1}
132*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
133*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
134*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
135*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpleb %zmm1, %zmm0, %k0 {%k1}
136*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
137*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
138*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
139*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunordb %zmm1, %zmm0, %k0 {%k1}
140*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
141*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
142*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
143*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpneqb %zmm1, %zmm0, %k0 {%k1}
144*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
145*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
146*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
147*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltb %zmm1, %zmm0, %k0 {%k1}
148*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
149*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
150*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
151*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnleb %zmm1, %zmm0, %k0 {%k1}
152*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
153*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
154*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
155*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpordb %zmm1, %zmm0, %k0 {%k1}
156*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
157*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
158*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
159*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $68, %esp
160*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
161*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 %mask)
162*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 %mask)
163*9880d681SAndroid Build Coastguard Worker  %ret1 = add i64 %res0, %res1
164*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 %mask)
165*9880d681SAndroid Build Coastguard Worker  %ret2 = add i64 %ret1, %res2
166*9880d681SAndroid Build Coastguard Worker  %res3 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 %mask)
167*9880d681SAndroid Build Coastguard Worker  %ret3 = add i64 %ret2, %res3
168*9880d681SAndroid Build Coastguard Worker  %res4 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 %mask)
169*9880d681SAndroid Build Coastguard Worker  %ret4 = add i64 %ret3, %res4
170*9880d681SAndroid Build Coastguard Worker  %res5 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 %mask)
171*9880d681SAndroid Build Coastguard Worker  %ret5 = add i64 %ret4, %res5
172*9880d681SAndroid Build Coastguard Worker  %res6 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 %mask)
173*9880d681SAndroid Build Coastguard Worker  %ret6 = add i64 %ret5, %res6
174*9880d681SAndroid Build Coastguard Worker  %res7 = call i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 %mask)
175*9880d681SAndroid Build Coastguard Worker  %ret7 = add i64 %ret6, %res7
176*9880d681SAndroid Build Coastguard Worker  ret i64 %ret7
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.mask.cmp.b.512(<64 x i8>, <64 x i8>, i32, i64) nounwind readnone
180*9880d681SAndroid Build Coastguard Worker
181*9880d681SAndroid Build Coastguard Workerdefine i64 @test_ucmp_b_512(<64 x i8> %a0, <64 x i8> %a1) {
182*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_ucmp_b_512:
183*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
184*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpequb %zmm1, %zmm0, %k0
185*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
186*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltub %zmm1, %zmm0, %k0
187*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
188*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
189*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpleub %zmm1, %zmm0, %k0
190*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
191*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
192*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunordub %zmm1, %zmm0, %k0
193*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
194*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
195*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnequb %zmm1, %zmm0, %k0
196*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
197*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
198*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltub %zmm1, %zmm0, %k0
199*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
200*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
201*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnleub %zmm1, %zmm0, %k0
202*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rdx
203*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rdx
204*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpordub %zmm1, %zmm0, %k0
205*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
206*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rdx, %rax
207*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
208*9880d681SAndroid Build Coastguard Worker;
209*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_ucmp_b_512:
210*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
211*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $68, %esp
212*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp2:
213*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 72
214*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpequb %zmm1, %zmm0, %k0
215*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
216*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
217*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
218*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltub %zmm1, %zmm0, %k0
219*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
220*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
221*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
222*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpleub %zmm1, %zmm0, %k0
223*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
224*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
225*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
226*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunordub %zmm1, %zmm0, %k0
227*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
228*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
229*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
230*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnequb %zmm1, %zmm0, %k0
231*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
232*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
233*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
234*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltub %zmm1, %zmm0, %k0
235*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
236*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
237*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
238*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnleub %zmm1, %zmm0, %k0
239*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
240*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
241*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
242*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpordub %zmm1, %zmm0, %k0
243*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
244*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl (%esp), %eax
245*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
246*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $68, %esp
247*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
248*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 -1)
249*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 -1)
250*9880d681SAndroid Build Coastguard Worker  %ret1 = add i64 %res0, %res1
251*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 -1)
252*9880d681SAndroid Build Coastguard Worker  %ret2 = add i64 %ret1, %res2
253*9880d681SAndroid Build Coastguard Worker  %res3 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 -1)
254*9880d681SAndroid Build Coastguard Worker  %ret3 = add i64 %ret2, %res3
255*9880d681SAndroid Build Coastguard Worker  %res4 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 -1)
256*9880d681SAndroid Build Coastguard Worker  %ret4 = add i64 %ret3, %res4
257*9880d681SAndroid Build Coastguard Worker  %res5 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 -1)
258*9880d681SAndroid Build Coastguard Worker  %ret5 = add i64 %ret4, %res5
259*9880d681SAndroid Build Coastguard Worker  %res6 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 -1)
260*9880d681SAndroid Build Coastguard Worker  %ret6 = add i64 %ret5, %res6
261*9880d681SAndroid Build Coastguard Worker  %res7 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 -1)
262*9880d681SAndroid Build Coastguard Worker  %ret7 = add i64 %ret6, %res7
263*9880d681SAndroid Build Coastguard Worker  ret i64 %ret7
264*9880d681SAndroid Build Coastguard Worker}
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdefine i64 @test_mask_x86_avx512_ucmp_b_512(<64 x i8> %a0, <64 x i8> %a1, i64 %mask) {
267*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_x86_avx512_ucmp_b_512:
268*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
269*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
270*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpequb %zmm1, %zmm0, %k0 {%k1}
271*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
272*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltub %zmm1, %zmm0, %k0 {%k1}
273*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
274*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
275*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpleub %zmm1, %zmm0, %k0 {%k1}
276*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
277*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
278*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunordub %zmm1, %zmm0, %k0 {%k1}
279*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
280*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
281*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnequb %zmm1, %zmm0, %k0 {%k1}
282*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
283*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
284*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltub %zmm1, %zmm0, %k0 {%k1}
285*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
286*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rax, %rcx
287*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnleub %zmm1, %zmm0, %k0 {%k1}
288*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rdx
289*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rdx
290*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpordub %zmm1, %zmm0, %k0 {%k1}
291*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
292*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rdx, %rax
293*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
294*9880d681SAndroid Build Coastguard Worker;
295*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_x86_avx512_ucmp_b_512:
296*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
297*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $68, %esp
298*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp3:
299*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 72
300*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
301*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
302*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
303*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpequb %zmm1, %zmm0, %k0 {%k1}
304*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
305*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl (%esp), %eax
306*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
307*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltub %zmm1, %zmm0, %k0 {%k1}
308*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
309*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
310*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
311*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpleub %zmm1, %zmm0, %k0 {%k1}
312*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
313*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
314*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
315*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunordub %zmm1, %zmm0, %k0 {%k1}
316*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
317*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
318*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
319*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnequb %zmm1, %zmm0, %k0 {%k1}
320*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
321*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
322*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
323*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltub %zmm1, %zmm0, %k0 {%k1}
324*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
325*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
326*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
327*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnleub %zmm1, %zmm0, %k0 {%k1}
328*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
329*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
330*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
331*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpordub %zmm1, %zmm0, %k0 {%k1}
332*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
333*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
334*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
335*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $68, %esp
336*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
337*9880d681SAndroid Build Coastguard Worker  %res0 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 0, i64 %mask)
338*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 1, i64 %mask)
339*9880d681SAndroid Build Coastguard Worker  %ret1 = add i64 %res0, %res1
340*9880d681SAndroid Build Coastguard Worker  %res2 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 2, i64 %mask)
341*9880d681SAndroid Build Coastguard Worker  %ret2 = add i64 %ret1, %res2
342*9880d681SAndroid Build Coastguard Worker  %res3 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 3, i64 %mask)
343*9880d681SAndroid Build Coastguard Worker  %ret3 = add i64 %ret2, %res3
344*9880d681SAndroid Build Coastguard Worker  %res4 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 4, i64 %mask)
345*9880d681SAndroid Build Coastguard Worker  %ret4 = add i64 %ret3, %res4
346*9880d681SAndroid Build Coastguard Worker  %res5 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 5, i64 %mask)
347*9880d681SAndroid Build Coastguard Worker  %ret5 = add i64 %ret4, %res5
348*9880d681SAndroid Build Coastguard Worker  %res6 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 6, i64 %mask)
349*9880d681SAndroid Build Coastguard Worker  %ret6 = add i64 %ret5, %res6
350*9880d681SAndroid Build Coastguard Worker  %res7 = call i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> %a0, <64 x i8> %a1, i32 7, i64 %mask)
351*9880d681SAndroid Build Coastguard Worker  %ret7 = add i64 %ret6, %res7
352*9880d681SAndroid Build Coastguard Worker  ret i64 %ret7
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8>, <64 x i8>, i32, i64) nounwind readnone
356*9880d681SAndroid Build Coastguard Worker
357*9880d681SAndroid Build Coastguard Workerdefine i32 @test_cmp_w_512(<32 x i16> %a0, <32 x i16> %a1) {
358*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_cmp_w_512:
359*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
360*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpeqw %zmm1, %zmm0, %k0
361*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
362*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltw %zmm1, %zmm0, %k0
363*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
364*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
365*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmplew %zmm1, %zmm0, %k0
366*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
367*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
368*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunordw %zmm1, %zmm0, %k0
369*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
370*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
371*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpneqw %zmm1, %zmm0, %k0
372*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
373*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
374*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltw %zmm1, %zmm0, %k0
375*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
376*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
377*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnlew %zmm1, %zmm0, %k0
378*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %edx
379*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %edx
380*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpordw %zmm1, %zmm0, %k0
381*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
382*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %edx, %eax
383*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
384*9880d681SAndroid Build Coastguard Worker;
385*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_cmp_w_512:
386*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
387*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpeqw %zmm1, %zmm0, %k0
388*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
389*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltw %zmm1, %zmm0, %k0
390*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
391*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
392*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmplew %zmm1, %zmm0, %k0
393*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
394*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
395*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunordw %zmm1, %zmm0, %k0
396*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
397*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
398*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpneqw %zmm1, %zmm0, %k0
399*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
400*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
401*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltw %zmm1, %zmm0, %k0
402*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
403*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
404*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnlew %zmm1, %zmm0, %k0
405*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %edx
406*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %edx
407*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpordw %zmm1, %zmm0, %k0
408*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
409*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %edx, %eax
410*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
411*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 -1)
412*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 -1)
413*9880d681SAndroid Build Coastguard Worker  %ret1 = add i32 %res0, %res1
414*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 -1)
415*9880d681SAndroid Build Coastguard Worker  %ret2 = add i32 %ret1, %res2
416*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 -1)
417*9880d681SAndroid Build Coastguard Worker  %ret3 = add i32 %ret2, %res3
418*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 -1)
419*9880d681SAndroid Build Coastguard Worker  %ret4 = add i32 %ret3, %res4
420*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 -1)
421*9880d681SAndroid Build Coastguard Worker  %ret5 = add i32 %ret4, %res5
422*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 -1)
423*9880d681SAndroid Build Coastguard Worker  %ret6 = add i32 %ret5, %res6
424*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 -1)
425*9880d681SAndroid Build Coastguard Worker  %ret7 = add i32 %ret6, %res7
426*9880d681SAndroid Build Coastguard Worker  ret i32 %ret7
427*9880d681SAndroid Build Coastguard Worker}
428*9880d681SAndroid Build Coastguard Worker
429*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mask_cmp_w_512(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {
430*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_cmp_w_512:
431*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
432*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
433*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpeqw %zmm1, %zmm0, %k0 {%k1}
434*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
435*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltw %zmm1, %zmm0, %k0 {%k1}
436*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
437*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
438*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmplew %zmm1, %zmm0, %k0 {%k1}
439*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
440*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
441*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunordw %zmm1, %zmm0, %k0 {%k1}
442*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
443*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
444*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpneqw %zmm1, %zmm0, %k0 {%k1}
445*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
446*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
447*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltw %zmm1, %zmm0, %k0 {%k1}
448*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
449*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
450*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnlew %zmm1, %zmm0, %k0 {%k1}
451*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %edx
452*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %edx
453*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpordw %zmm1, %zmm0, %k0 {%k1}
454*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
455*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %edx, %eax
456*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
457*9880d681SAndroid Build Coastguard Worker;
458*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_cmp_w_512:
459*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
460*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
461*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpeqw %zmm1, %zmm0, %k0 {%k1}
462*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
463*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltw %zmm1, %zmm0, %k0 {%k1}
464*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
465*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
466*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmplew %zmm1, %zmm0, %k0 {%k1}
467*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
468*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
469*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunordw %zmm1, %zmm0, %k0 {%k1}
470*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
471*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
472*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpneqw %zmm1, %zmm0, %k0 {%k1}
473*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
474*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
475*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltw %zmm1, %zmm0, %k0 {%k1}
476*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
477*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
478*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnlew %zmm1, %zmm0, %k0 {%k1}
479*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %edx
480*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %edx
481*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpordw %zmm1, %zmm0, %k0 {%k1}
482*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
483*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %edx, %eax
484*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
485*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 %mask)
486*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 %mask)
487*9880d681SAndroid Build Coastguard Worker  %ret1 = add i32 %res0, %res1
488*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 %mask)
489*9880d681SAndroid Build Coastguard Worker  %ret2 = add i32 %ret1, %res2
490*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 %mask)
491*9880d681SAndroid Build Coastguard Worker  %ret3 = add i32 %ret2, %res3
492*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 %mask)
493*9880d681SAndroid Build Coastguard Worker  %ret4 = add i32 %ret3, %res4
494*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 %mask)
495*9880d681SAndroid Build Coastguard Worker  %ret5 = add i32 %ret4, %res5
496*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 %mask)
497*9880d681SAndroid Build Coastguard Worker  %ret6 = add i32 %ret5, %res6
498*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 %mask)
499*9880d681SAndroid Build Coastguard Worker  %ret7 = add i32 %ret6, %res7
500*9880d681SAndroid Build Coastguard Worker  ret i32 %ret7
501*9880d681SAndroid Build Coastguard Worker}
502*9880d681SAndroid Build Coastguard Worker
503*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.mask.cmp.w.512(<32 x i16>, <32 x i16>, i32, i32) nounwind readnone
504*9880d681SAndroid Build Coastguard Worker
505*9880d681SAndroid Build Coastguard Workerdefine i32 @test_ucmp_w_512(<32 x i16> %a0, <32 x i16> %a1) {
506*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_ucmp_w_512:
507*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
508*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpequw %zmm1, %zmm0, %k0
509*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
510*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltuw %zmm1, %zmm0, %k0
511*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
512*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
513*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpleuw %zmm1, %zmm0, %k0
514*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
515*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
516*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunorduw %zmm1, %zmm0, %k0
517*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
518*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
519*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnequw %zmm1, %zmm0, %k0
520*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
521*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
522*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltuw %zmm1, %zmm0, %k0
523*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
524*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
525*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnleuw %zmm1, %zmm0, %k0
526*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %edx
527*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %edx
528*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmporduw %zmm1, %zmm0, %k0
529*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
530*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %edx, %eax
531*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
532*9880d681SAndroid Build Coastguard Worker;
533*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_ucmp_w_512:
534*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
535*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpequw %zmm1, %zmm0, %k0
536*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
537*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltuw %zmm1, %zmm0, %k0
538*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
539*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
540*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpleuw %zmm1, %zmm0, %k0
541*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
542*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
543*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunorduw %zmm1, %zmm0, %k0
544*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
545*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
546*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnequw %zmm1, %zmm0, %k0
547*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
548*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
549*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltuw %zmm1, %zmm0, %k0
550*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
551*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
552*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnleuw %zmm1, %zmm0, %k0
553*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %edx
554*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %edx
555*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmporduw %zmm1, %zmm0, %k0
556*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
557*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %edx, %eax
558*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
559*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 -1)
560*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 -1)
561*9880d681SAndroid Build Coastguard Worker  %ret1 = add i32 %res0, %res1
562*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 -1)
563*9880d681SAndroid Build Coastguard Worker  %ret2 = add i32 %ret1, %res2
564*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 -1)
565*9880d681SAndroid Build Coastguard Worker  %ret3 = add i32 %ret2, %res3
566*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 -1)
567*9880d681SAndroid Build Coastguard Worker  %ret4 = add i32 %ret3, %res4
568*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 -1)
569*9880d681SAndroid Build Coastguard Worker  %ret5 = add i32 %ret4, %res5
570*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 -1)
571*9880d681SAndroid Build Coastguard Worker  %ret6 = add i32 %ret5, %res6
572*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 -1)
573*9880d681SAndroid Build Coastguard Worker  %ret7 = add i32 %ret6, %res7
574*9880d681SAndroid Build Coastguard Worker  ret i32 %ret7
575*9880d681SAndroid Build Coastguard Worker}
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Workerdefine i32 @test_mask_ucmp_w_512(<32 x i16> %a0, <32 x i16> %a1, i32 %mask) {
578*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_ucmp_w_512:
579*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
580*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
581*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpequw %zmm1, %zmm0, %k0 {%k1}
582*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
583*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpltuw %zmm1, %zmm0, %k0 {%k1}
584*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
585*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
586*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpleuw %zmm1, %zmm0, %k0 {%k1}
587*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
588*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
589*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpunorduw %zmm1, %zmm0, %k0 {%k1}
590*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
591*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
592*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnequw %zmm1, %zmm0, %k0 {%k1}
593*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
594*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
595*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnltuw %zmm1, %zmm0, %k0 {%k1}
596*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
597*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %eax, %ecx
598*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmpnleuw %zmm1, %zmm0, %k0 {%k1}
599*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %edx
600*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %edx
601*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpcmporduw %zmm1, %zmm0, %k0 {%k1}
602*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
603*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %edx, %eax
604*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
605*9880d681SAndroid Build Coastguard Worker;
606*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_ucmp_w_512:
607*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
608*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
609*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpequw %zmm1, %zmm0, %k0 {%k1}
610*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
611*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpltuw %zmm1, %zmm0, %k0 {%k1}
612*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
613*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
614*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpleuw %zmm1, %zmm0, %k0 {%k1}
615*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
616*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
617*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpunorduw %zmm1, %zmm0, %k0 {%k1}
618*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
619*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
620*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnequw %zmm1, %zmm0, %k0 {%k1}
621*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
622*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
623*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnltuw %zmm1, %zmm0, %k0 {%k1}
624*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
625*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %eax, %ecx
626*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmpnleuw %zmm1, %zmm0, %k0 {%k1}
627*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %edx
628*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %edx
629*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpcmporduw %zmm1, %zmm0, %k0 {%k1}
630*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
631*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %edx, %eax
632*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
633*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 0, i32 %mask)
634*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 1, i32 %mask)
635*9880d681SAndroid Build Coastguard Worker  %ret1 = add i32 %res0, %res1
636*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 2, i32 %mask)
637*9880d681SAndroid Build Coastguard Worker  %ret2 = add i32 %ret1, %res2
638*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 3, i32 %mask)
639*9880d681SAndroid Build Coastguard Worker  %ret3 = add i32 %ret2, %res3
640*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 4, i32 %mask)
641*9880d681SAndroid Build Coastguard Worker  %ret4 = add i32 %ret3, %res4
642*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 5, i32 %mask)
643*9880d681SAndroid Build Coastguard Worker  %ret5 = add i32 %ret4, %res5
644*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 6, i32 %mask)
645*9880d681SAndroid Build Coastguard Worker  %ret6 = add i32 %ret5, %res6
646*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> %a0, <32 x i16> %a1, i32 7, i32 %mask)
647*9880d681SAndroid Build Coastguard Worker  %ret7 = add i32 %ret6, %res7
648*9880d681SAndroid Build Coastguard Worker  ret i32 %ret7
649*9880d681SAndroid Build Coastguard Worker}
650*9880d681SAndroid Build Coastguard Worker
651*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16>, <32 x i16>, i32, i32) nounwind readnone
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rr_512(<16 x i32> %a, <16 x i32> %b) {
654*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rr_512:
655*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
656*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw %zmm1, %zmm0, %zmm0
657*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
658*9880d681SAndroid Build Coastguard Worker;
659*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rr_512:
660*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
661*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw %zmm1, %zmm0, %zmm0
662*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
663*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1)
664*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
665*9880d681SAndroid Build Coastguard Worker}
666*9880d681SAndroid Build Coastguard Worker
667*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rrk_512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) {
668*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rrk_512:
669*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
670*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
671*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw %zmm1, %zmm0, %zmm2 {%k1}
672*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
673*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
674*9880d681SAndroid Build Coastguard Worker;
675*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rrk_512:
676*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
677*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
678*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw %zmm1, %zmm0, %zmm2 {%k1}
679*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
680*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
681*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask)
682*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
683*9880d681SAndroid Build Coastguard Worker}
684*9880d681SAndroid Build Coastguard Worker
685*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rrkz_512(<16 x i32> %a, <16 x i32> %b, i32 %mask) {
686*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rrkz_512:
687*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
688*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
689*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw %zmm1, %zmm0, %zmm0 {%k1} {z}
690*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
691*9880d681SAndroid Build Coastguard Worker;
692*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rrkz_512:
693*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
694*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
695*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw %zmm1, %zmm0, %zmm0 {%k1} {z}
696*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
697*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask)
698*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
699*9880d681SAndroid Build Coastguard Worker}
700*9880d681SAndroid Build Coastguard Worker
701*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rm_512(<16 x i32> %a, <16 x i32>* %ptr_b) {
702*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rm_512:
703*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
704*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw (%rdi), %zmm0, %zmm0
705*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
706*9880d681SAndroid Build Coastguard Worker;
707*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rm_512:
708*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
709*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
710*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw (%eax), %zmm0, %zmm0
711*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
712*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
713*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1)
714*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
715*9880d681SAndroid Build Coastguard Worker}
716*9880d681SAndroid Build Coastguard Worker
717*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmk_512(<16 x i32> %a, <16 x i32>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
718*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmk_512:
719*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
720*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
721*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw (%rdi), %zmm0, %zmm1 {%k1}
722*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
723*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
724*9880d681SAndroid Build Coastguard Worker;
725*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmk_512:
726*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
727*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
728*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
729*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw (%eax), %zmm0, %zmm1 {%k1}
730*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
731*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
732*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
733*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask)
734*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
735*9880d681SAndroid Build Coastguard Worker}
736*9880d681SAndroid Build Coastguard Worker
737*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmkz_512(<16 x i32> %a, <16 x i32>* %ptr_b, i32 %mask) {
738*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmkz_512:
739*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
740*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
741*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw (%rdi), %zmm0, %zmm0 {%k1} {z}
742*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
743*9880d681SAndroid Build Coastguard Worker;
744*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmkz_512:
745*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
746*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
747*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
748*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw (%eax), %zmm0, %zmm0 {%k1} {z}
749*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
750*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
751*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask)
752*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
753*9880d681SAndroid Build Coastguard Worker}
754*9880d681SAndroid Build Coastguard Worker
755*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmb_512(<16 x i32> %a, i32* %ptr_b) {
756*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmb_512:
757*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
758*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw (%rdi){1to16}, %zmm0, %zmm0
759*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
760*9880d681SAndroid Build Coastguard Worker;
761*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmb_512:
762*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
763*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
764*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw (%eax){1to16}, %zmm0, %zmm0
765*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
766*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
767*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
768*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
769*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1)
770*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
771*9880d681SAndroid Build Coastguard Worker}
772*9880d681SAndroid Build Coastguard Worker
773*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmbk_512(<16 x i32> %a, i32* %ptr_b, <32 x i16> %passThru, i32 %mask) {
774*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmbk_512:
775*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
776*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
777*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw (%rdi){1to16}, %zmm0, %zmm1 {%k1}
778*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
779*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
780*9880d681SAndroid Build Coastguard Worker;
781*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmbk_512:
782*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
783*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
784*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
785*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw (%eax){1to16}, %zmm0, %zmm1 {%k1}
786*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
787*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
788*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
789*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
790*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
791*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask)
792*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
793*9880d681SAndroid Build Coastguard Worker}
794*9880d681SAndroid Build Coastguard Worker
795*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packs_epi32_rmbkz_512(<16 x i32> %a, i32* %ptr_b, i32 %mask) {
796*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi32_rmbkz_512:
797*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
798*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
799*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackssdw (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z}
800*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
801*9880d681SAndroid Build Coastguard Worker;
802*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi32_rmbkz_512:
803*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
804*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
805*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
806*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackssdw (%eax){1to16}, %zmm0, %zmm0 {%k1} {z}
807*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
808*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
809*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
810*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
811*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask)
812*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
813*9880d681SAndroid Build Coastguard Worker}
814*9880d681SAndroid Build Coastguard Worker
815*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.packssdw.512(<16 x i32>, <16 x i32>, <32 x i16>, i32)
816*9880d681SAndroid Build Coastguard Worker
817*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
818*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rr_512:
819*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
820*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpacksswb %zmm1, %zmm0, %zmm0
821*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
822*9880d681SAndroid Build Coastguard Worker;
823*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rr_512:
824*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
825*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpacksswb %zmm1, %zmm0, %zmm0
826*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
827*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1)
828*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
829*9880d681SAndroid Build Coastguard Worker}
830*9880d681SAndroid Build Coastguard Worker
831*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) {
832*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rrk_512:
833*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
834*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
835*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpacksswb %zmm1, %zmm0, %zmm2 {%k1}
836*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
837*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
838*9880d681SAndroid Build Coastguard Worker;
839*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rrk_512:
840*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
841*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
842*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
843*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
844*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpacksswb %zmm1, %zmm0, %zmm2 {%k1}
845*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
846*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
847*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask)
848*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
849*9880d681SAndroid Build Coastguard Worker}
850*9880d681SAndroid Build Coastguard Worker
851*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i64 %mask) {
852*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rrkz_512:
853*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
854*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
855*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpacksswb %zmm1, %zmm0, %zmm0 {%k1} {z}
856*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
857*9880d681SAndroid Build Coastguard Worker;
858*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rrkz_512:
859*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
860*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
861*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
862*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
863*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpacksswb %zmm1, %zmm0, %zmm0 {%k1} {z}
864*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
865*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask)
866*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
867*9880d681SAndroid Build Coastguard Worker}
868*9880d681SAndroid Build Coastguard Worker
869*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
870*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rm_512:
871*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
872*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpacksswb (%rdi), %zmm0, %zmm0
873*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
874*9880d681SAndroid Build Coastguard Worker;
875*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rm_512:
876*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
877*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
878*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpacksswb (%eax), %zmm0, %zmm0
879*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
880*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
881*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1)
882*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
883*9880d681SAndroid Build Coastguard Worker}
884*9880d681SAndroid Build Coastguard Worker
885*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <64 x i8> %passThru, i64 %mask) {
886*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rmk_512:
887*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
888*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rsi, %k1
889*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpacksswb (%rdi), %zmm0, %zmm1 {%k1}
890*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
891*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
892*9880d681SAndroid Build Coastguard Worker;
893*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rmk_512:
894*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
895*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
896*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
897*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
898*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
899*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpacksswb (%eax), %zmm0, %zmm1 {%k1}
900*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
901*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
902*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
903*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask)
904*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
905*9880d681SAndroid Build Coastguard Worker}
906*9880d681SAndroid Build Coastguard Worker
907*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packs_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i64 %mask) {
908*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packs_epi16_rmkz_512:
909*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
910*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rsi, %k1
911*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpacksswb (%rdi), %zmm0, %zmm0 {%k1} {z}
912*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
913*9880d681SAndroid Build Coastguard Worker;
914*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packs_epi16_rmkz_512:
915*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
916*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
917*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
918*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
919*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
920*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpacksswb (%eax), %zmm0, %zmm0 {%k1} {z}
921*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
922*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
923*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask)
924*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
925*9880d681SAndroid Build Coastguard Worker}
926*9880d681SAndroid Build Coastguard Worker
927*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.packsswb.512(<32 x i16>, <32 x i16>, <64 x i8>, i64)
928*9880d681SAndroid Build Coastguard Worker
929*9880d681SAndroid Build Coastguard Worker
930*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rr_512(<16 x i32> %a, <16 x i32> %b) {
931*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rr_512:
932*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
933*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw %zmm1, %zmm0, %zmm0
934*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
935*9880d681SAndroid Build Coastguard Worker;
936*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rr_512:
937*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
938*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw %zmm1, %zmm0, %zmm0
939*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
940*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1)
941*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
942*9880d681SAndroid Build Coastguard Worker}
943*9880d681SAndroid Build Coastguard Worker
944*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rrk_512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask) {
945*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rrk_512:
946*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
947*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
948*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw %zmm1, %zmm0, %zmm2 {%k1}
949*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
950*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
951*9880d681SAndroid Build Coastguard Worker;
952*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rrk_512:
953*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
954*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
955*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw %zmm1, %zmm0, %zmm2 {%k1}
956*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
957*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
958*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask)
959*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
960*9880d681SAndroid Build Coastguard Worker}
961*9880d681SAndroid Build Coastguard Worker
962*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rrkz_512(<16 x i32> %a, <16 x i32> %b, i32 %mask) {
963*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rrkz_512:
964*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
965*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
966*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw %zmm1, %zmm0, %zmm0 {%k1} {z}
967*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
968*9880d681SAndroid Build Coastguard Worker;
969*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rrkz_512:
970*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
971*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
972*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw %zmm1, %zmm0, %zmm0 {%k1} {z}
973*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
974*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask)
975*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
976*9880d681SAndroid Build Coastguard Worker}
977*9880d681SAndroid Build Coastguard Worker
978*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rm_512(<16 x i32> %a, <16 x i32>* %ptr_b) {
979*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rm_512:
980*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
981*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw (%rdi), %zmm0, %zmm0
982*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
983*9880d681SAndroid Build Coastguard Worker;
984*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rm_512:
985*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
986*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
987*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw (%eax), %zmm0, %zmm0
988*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
989*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
990*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1)
991*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
992*9880d681SAndroid Build Coastguard Worker}
993*9880d681SAndroid Build Coastguard Worker
994*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmk_512(<16 x i32> %a, <16 x i32>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
995*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmk_512:
996*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
997*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
998*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw (%rdi), %zmm0, %zmm1 {%k1}
999*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1000*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1001*9880d681SAndroid Build Coastguard Worker;
1002*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmk_512:
1003*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1004*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1005*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1006*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw (%eax), %zmm0, %zmm1 {%k1}
1007*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1008*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1009*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
1010*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask)
1011*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Worker
1014*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmkz_512(<16 x i32> %a, <16 x i32>* %ptr_b, i32 %mask) {
1015*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmkz_512:
1016*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1017*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1018*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw (%rdi), %zmm0, %zmm0 {%k1} {z}
1019*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1020*9880d681SAndroid Build Coastguard Worker;
1021*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmkz_512:
1022*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1023*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1024*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1025*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw (%eax), %zmm0, %zmm0 {%k1} {z}
1026*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1027*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i32>, <16 x i32>* %ptr_b
1028*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask)
1029*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1030*9880d681SAndroid Build Coastguard Worker}
1031*9880d681SAndroid Build Coastguard Worker
1032*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmb_512(<16 x i32> %a, i32* %ptr_b) {
1033*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmb_512:
1034*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1035*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw (%rdi){1to16}, %zmm0, %zmm0
1036*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1037*9880d681SAndroid Build Coastguard Worker;
1038*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmb_512:
1039*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1040*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1041*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw (%eax){1to16}, %zmm0, %zmm0
1042*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1043*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
1044*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
1045*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
1046*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 -1)
1047*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1048*9880d681SAndroid Build Coastguard Worker}
1049*9880d681SAndroid Build Coastguard Worker
1050*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmbk_512(<16 x i32> %a, i32* %ptr_b, <32 x i16> %passThru, i32 %mask) {
1051*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmbk_512:
1052*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1053*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1054*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw (%rdi){1to16}, %zmm0, %zmm1 {%k1}
1055*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1056*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1057*9880d681SAndroid Build Coastguard Worker;
1058*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmbk_512:
1059*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1060*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1061*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1062*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw (%eax){1to16}, %zmm0, %zmm1 {%k1}
1063*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1064*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1065*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
1066*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
1067*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
1068*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> %passThru, i32 %mask)
1069*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1070*9880d681SAndroid Build Coastguard Worker}
1071*9880d681SAndroid Build Coastguard Worker
1072*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_packus_epi32_rmbkz_512(<16 x i32> %a, i32* %ptr_b, i32 %mask) {
1073*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi32_rmbkz_512:
1074*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1075*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1076*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackusdw (%rdi){1to16}, %zmm0, %zmm0 {%k1} {z}
1077*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1078*9880d681SAndroid Build Coastguard Worker;
1079*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi32_rmbkz_512:
1080*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1081*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1082*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1083*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackusdw (%eax){1to16}, %zmm0, %zmm0 {%k1} {z}
1084*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1085*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
1086*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <16 x i32> undef, i32 %q, i32 0
1087*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <16 x i32> %vecinit.i, <16 x i32> undef, <16 x i32> zeroinitializer
1088*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32> %a, <16 x i32> %b, <32 x i16> zeroinitializer, i32 %mask)
1089*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1090*9880d681SAndroid Build Coastguard Worker}
1091*9880d681SAndroid Build Coastguard Worker
1092*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.packusdw.512(<16 x i32>, <16 x i32>, <32 x i16>, i32)
1093*9880d681SAndroid Build Coastguard Worker
1094*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
1095*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rr_512:
1096*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1097*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackuswb %zmm1, %zmm0, %zmm0
1098*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1099*9880d681SAndroid Build Coastguard Worker;
1100*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rr_512:
1101*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1102*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackuswb %zmm1, %zmm0, %zmm0
1103*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1104*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1)
1105*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
1106*9880d681SAndroid Build Coastguard Worker}
1107*9880d681SAndroid Build Coastguard Worker
1108*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask) {
1109*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rrk_512:
1110*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1111*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1112*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackuswb %zmm1, %zmm0, %zmm2 {%k1}
1113*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
1114*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1115*9880d681SAndroid Build Coastguard Worker;
1116*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rrk_512:
1117*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1118*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1119*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1120*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1121*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackuswb %zmm1, %zmm0, %zmm2 {%k1}
1122*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
1123*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1124*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask)
1125*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
1126*9880d681SAndroid Build Coastguard Worker}
1127*9880d681SAndroid Build Coastguard Worker
1128*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i64 %mask) {
1129*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rrkz_512:
1130*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1131*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1132*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackuswb %zmm1, %zmm0, %zmm0 {%k1} {z}
1133*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1134*9880d681SAndroid Build Coastguard Worker;
1135*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rrkz_512:
1136*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1137*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1138*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1139*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1140*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackuswb %zmm1, %zmm0, %zmm0 {%k1} {z}
1141*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1142*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask)
1143*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
1144*9880d681SAndroid Build Coastguard Worker}
1145*9880d681SAndroid Build Coastguard Worker
1146*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
1147*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rm_512:
1148*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1149*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackuswb (%rdi), %zmm0, %zmm0
1150*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1151*9880d681SAndroid Build Coastguard Worker;
1152*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rm_512:
1153*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1154*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1155*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackuswb (%eax), %zmm0, %zmm0
1156*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1157*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1158*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 -1)
1159*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
1160*9880d681SAndroid Build Coastguard Worker}
1161*9880d681SAndroid Build Coastguard Worker
1162*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <64 x i8> %passThru, i64 %mask) {
1163*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rmk_512:
1164*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1165*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rsi, %k1
1166*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackuswb (%rdi), %zmm0, %zmm1 {%k1}
1167*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1168*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1169*9880d681SAndroid Build Coastguard Worker;
1170*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rmk_512:
1171*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1172*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1173*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1174*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1175*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1176*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackuswb (%eax), %zmm0, %zmm1 {%k1}
1177*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1178*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1179*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1180*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> %passThru, i64 %mask)
1181*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
1182*9880d681SAndroid Build Coastguard Worker}
1183*9880d681SAndroid Build Coastguard Worker
1184*9880d681SAndroid Build Coastguard Workerdefine <64 x i8> @test_mask_packus_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i64 %mask) {
1185*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_packus_epi16_rmkz_512:
1186*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1187*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rsi, %k1
1188*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpackuswb (%rdi), %zmm0, %zmm0 {%k1} {z}
1189*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1190*9880d681SAndroid Build Coastguard Worker;
1191*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_packus_epi16_rmkz_512:
1192*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1193*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1194*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1195*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1196*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1197*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpackuswb (%eax), %zmm0, %zmm0 {%k1} {z}
1198*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1199*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1200*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16> %a, <32 x i16> %b, <64 x i8> zeroinitializer, i64 %mask)
1201*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
1202*9880d681SAndroid Build Coastguard Worker}
1203*9880d681SAndroid Build Coastguard Worker
1204*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.packuswb.512(<32 x i16>, <32 x i16>, <64 x i8>, i64)
1205*9880d681SAndroid Build Coastguard Worker
1206*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
1207*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rr_512:
1208*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1209*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddsw %zmm1, %zmm0, %zmm0
1210*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1211*9880d681SAndroid Build Coastguard Worker;
1212*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rr_512:
1213*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1214*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddsw %zmm1, %zmm0, %zmm0
1215*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1216*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1217*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1218*9880d681SAndroid Build Coastguard Worker}
1219*9880d681SAndroid Build Coastguard Worker
1220*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
1221*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rrk_512:
1222*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1223*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1224*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddsw %zmm1, %zmm0, %zmm2 {%k1}
1225*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
1226*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1227*9880d681SAndroid Build Coastguard Worker;
1228*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rrk_512:
1229*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1230*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1231*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddsw %zmm1, %zmm0, %zmm2 {%k1}
1232*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
1233*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1234*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1235*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1236*9880d681SAndroid Build Coastguard Worker}
1237*9880d681SAndroid Build Coastguard Worker
1238*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
1239*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rrkz_512:
1240*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1241*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1242*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddsw %zmm1, %zmm0, %zmm0 {%k1} {z}
1243*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1244*9880d681SAndroid Build Coastguard Worker;
1245*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rrkz_512:
1246*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1247*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1248*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddsw %zmm1, %zmm0, %zmm0 {%k1} {z}
1249*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1250*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1251*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1252*9880d681SAndroid Build Coastguard Worker}
1253*9880d681SAndroid Build Coastguard Worker
1254*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
1255*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rm_512:
1256*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1257*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddsw (%rdi), %zmm0, %zmm0
1258*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1259*9880d681SAndroid Build Coastguard Worker;
1260*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rm_512:
1261*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1262*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1263*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddsw (%eax), %zmm0, %zmm0
1264*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1265*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1266*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1267*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1268*9880d681SAndroid Build Coastguard Worker}
1269*9880d681SAndroid Build Coastguard Worker
1270*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
1271*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rmk_512:
1272*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1273*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1274*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddsw (%rdi), %zmm0, %zmm1 {%k1}
1275*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1276*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1277*9880d681SAndroid Build Coastguard Worker;
1278*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rmk_512:
1279*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1280*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1281*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1282*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddsw (%eax), %zmm0, %zmm1 {%k1}
1283*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1284*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1285*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1286*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1287*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1288*9880d681SAndroid Build Coastguard Worker}
1289*9880d681SAndroid Build Coastguard Worker
1290*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
1291*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epi16_rmkz_512:
1292*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1293*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1294*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddsw (%rdi), %zmm0, %zmm0 {%k1} {z}
1295*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1296*9880d681SAndroid Build Coastguard Worker;
1297*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epi16_rmkz_512:
1298*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1299*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1300*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1301*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddsw (%eax), %zmm0, %zmm0 {%k1} {z}
1302*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1303*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1304*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1305*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1306*9880d681SAndroid Build Coastguard Worker}
1307*9880d681SAndroid Build Coastguard Worker
1308*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.padds.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1309*9880d681SAndroid Build Coastguard Worker
1310*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
1311*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rr_512:
1312*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1313*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubsw %zmm1, %zmm0, %zmm0
1314*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1315*9880d681SAndroid Build Coastguard Worker;
1316*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rr_512:
1317*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1318*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubsw %zmm1, %zmm0, %zmm0
1319*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1320*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1321*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1322*9880d681SAndroid Build Coastguard Worker}
1323*9880d681SAndroid Build Coastguard Worker
1324*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
1325*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rrk_512:
1326*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1327*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1328*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubsw %zmm1, %zmm0, %zmm2 {%k1}
1329*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
1330*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1331*9880d681SAndroid Build Coastguard Worker;
1332*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rrk_512:
1333*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1334*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1335*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubsw %zmm1, %zmm0, %zmm2 {%k1}
1336*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
1337*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1338*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1339*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1340*9880d681SAndroid Build Coastguard Worker}
1341*9880d681SAndroid Build Coastguard Worker
1342*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
1343*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rrkz_512:
1344*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1345*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1346*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubsw %zmm1, %zmm0, %zmm0 {%k1} {z}
1347*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1348*9880d681SAndroid Build Coastguard Worker;
1349*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rrkz_512:
1350*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1351*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1352*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubsw %zmm1, %zmm0, %zmm0 {%k1} {z}
1353*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1354*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1355*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1356*9880d681SAndroid Build Coastguard Worker}
1357*9880d681SAndroid Build Coastguard Worker
1358*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
1359*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rm_512:
1360*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1361*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubsw (%rdi), %zmm0, %zmm0
1362*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1363*9880d681SAndroid Build Coastguard Worker;
1364*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rm_512:
1365*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1366*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1367*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubsw (%eax), %zmm0, %zmm0
1368*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1369*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1370*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1371*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1372*9880d681SAndroid Build Coastguard Worker}
1373*9880d681SAndroid Build Coastguard Worker
1374*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
1375*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rmk_512:
1376*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1377*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1378*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubsw (%rdi), %zmm0, %zmm1 {%k1}
1379*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1380*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1381*9880d681SAndroid Build Coastguard Worker;
1382*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rmk_512:
1383*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1384*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1385*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1386*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubsw (%eax), %zmm0, %zmm1 {%k1}
1387*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1388*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1389*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1390*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1391*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1392*9880d681SAndroid Build Coastguard Worker}
1393*9880d681SAndroid Build Coastguard Worker
1394*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
1395*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epi16_rmkz_512:
1396*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1397*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1398*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubsw (%rdi), %zmm0, %zmm0 {%k1} {z}
1399*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1400*9880d681SAndroid Build Coastguard Worker;
1401*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epi16_rmkz_512:
1402*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1403*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1404*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1405*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubsw (%eax), %zmm0, %zmm0 {%k1} {z}
1406*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1407*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1408*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1409*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1410*9880d681SAndroid Build Coastguard Worker}
1411*9880d681SAndroid Build Coastguard Worker
1412*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psubs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1413*9880d681SAndroid Build Coastguard Worker
1414*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rr_512(<32 x i16> %a, <32 x i16> %b) {
1415*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rr_512:
1416*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1417*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddusw %zmm1, %zmm0, %zmm0
1418*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1419*9880d681SAndroid Build Coastguard Worker;
1420*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rr_512:
1421*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1422*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddusw %zmm1, %zmm0, %zmm0
1423*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1424*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1425*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1426*9880d681SAndroid Build Coastguard Worker}
1427*9880d681SAndroid Build Coastguard Worker
1428*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
1429*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rrk_512:
1430*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1431*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1432*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddusw %zmm1, %zmm0, %zmm2 {%k1}
1433*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
1434*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1435*9880d681SAndroid Build Coastguard Worker;
1436*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rrk_512:
1437*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1438*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1439*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddusw %zmm1, %zmm0, %zmm2 {%k1}
1440*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
1441*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1442*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1443*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1444*9880d681SAndroid Build Coastguard Worker}
1445*9880d681SAndroid Build Coastguard Worker
1446*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
1447*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rrkz_512:
1448*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1449*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1450*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddusw %zmm1, %zmm0, %zmm0 {%k1} {z}
1451*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1452*9880d681SAndroid Build Coastguard Worker;
1453*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rrkz_512:
1454*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1455*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1456*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddusw %zmm1, %zmm0, %zmm0 {%k1} {z}
1457*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1458*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1459*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1460*9880d681SAndroid Build Coastguard Worker}
1461*9880d681SAndroid Build Coastguard Worker
1462*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
1463*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rm_512:
1464*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1465*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddusw (%rdi), %zmm0, %zmm0
1466*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1467*9880d681SAndroid Build Coastguard Worker;
1468*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rm_512:
1469*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1470*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1471*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddusw (%eax), %zmm0, %zmm0
1472*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1473*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1474*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1475*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1476*9880d681SAndroid Build Coastguard Worker}
1477*9880d681SAndroid Build Coastguard Worker
1478*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
1479*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rmk_512:
1480*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1481*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1482*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddusw (%rdi), %zmm0, %zmm1 {%k1}
1483*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1484*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1485*9880d681SAndroid Build Coastguard Worker;
1486*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rmk_512:
1487*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1488*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1489*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1490*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddusw (%eax), %zmm0, %zmm1 {%k1}
1491*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1492*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1493*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1494*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1495*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1496*9880d681SAndroid Build Coastguard Worker}
1497*9880d681SAndroid Build Coastguard Worker
1498*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_adds_epu16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
1499*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_adds_epu16_rmkz_512:
1500*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1501*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1502*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddusw (%rdi), %zmm0, %zmm0 {%k1} {z}
1503*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1504*9880d681SAndroid Build Coastguard Worker;
1505*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_adds_epu16_rmkz_512:
1506*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1507*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1508*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1509*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddusw (%eax), %zmm0, %zmm0 {%k1} {z}
1510*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1511*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1512*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1513*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1514*9880d681SAndroid Build Coastguard Worker}
1515*9880d681SAndroid Build Coastguard Worker
1516*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.paddus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1517*9880d681SAndroid Build Coastguard Worker
1518*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rr_512(<32 x i16> %a, <32 x i16> %b) {
1519*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rr_512:
1520*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1521*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubusw %zmm1, %zmm0, %zmm0
1522*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1523*9880d681SAndroid Build Coastguard Worker;
1524*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rr_512:
1525*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1526*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubusw %zmm1, %zmm0, %zmm0
1527*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1528*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1529*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1530*9880d681SAndroid Build Coastguard Worker}
1531*9880d681SAndroid Build Coastguard Worker
1532*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
1533*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rrk_512:
1534*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1535*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1536*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubusw %zmm1, %zmm0, %zmm2 {%k1}
1537*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm2, %zmm0
1538*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1539*9880d681SAndroid Build Coastguard Worker;
1540*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rrk_512:
1541*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1542*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1543*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubusw %zmm1, %zmm0, %zmm2 {%k1}
1544*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm2, %zmm0
1545*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1546*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1547*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1548*9880d681SAndroid Build Coastguard Worker}
1549*9880d681SAndroid Build Coastguard Worker
1550*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
1551*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rrkz_512:
1552*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1553*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1554*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubusw %zmm1, %zmm0, %zmm0 {%k1} {z}
1555*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1556*9880d681SAndroid Build Coastguard Worker;
1557*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rrkz_512:
1558*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1559*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1560*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubusw %zmm1, %zmm0, %zmm0 {%k1} {z}
1561*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1562*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1563*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1564*9880d681SAndroid Build Coastguard Worker}
1565*9880d681SAndroid Build Coastguard Worker
1566*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
1567*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rm_512:
1568*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1569*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubusw (%rdi), %zmm0, %zmm0
1570*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1571*9880d681SAndroid Build Coastguard Worker;
1572*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rm_512:
1573*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1574*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1575*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubusw (%eax), %zmm0, %zmm0
1576*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1577*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1578*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
1579*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1580*9880d681SAndroid Build Coastguard Worker}
1581*9880d681SAndroid Build Coastguard Worker
1582*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
1583*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rmk_512:
1584*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1585*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1586*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubusw (%rdi), %zmm0, %zmm1 {%k1}
1587*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm0
1588*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1589*9880d681SAndroid Build Coastguard Worker;
1590*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rmk_512:
1591*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1592*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1593*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1594*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubusw (%eax), %zmm0, %zmm1 {%k1}
1595*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm0
1596*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1597*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1598*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
1599*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1600*9880d681SAndroid Build Coastguard Worker}
1601*9880d681SAndroid Build Coastguard Worker
1602*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_subs_epu16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
1603*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_mask_subs_epu16_rmkz_512:
1604*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1605*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
1606*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsubusw (%rdi), %zmm0, %zmm0 {%k1} {z}
1607*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1608*9880d681SAndroid Build Coastguard Worker;
1609*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_mask_subs_epu16_rmkz_512:
1610*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1611*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
1612*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1613*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsubusw (%eax), %zmm0, %zmm0 {%k1} {z}
1614*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1615*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
1616*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
1617*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
1618*9880d681SAndroid Build Coastguard Worker}
1619*9880d681SAndroid Build Coastguard Worker
1620*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psubus.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1621*9880d681SAndroid Build Coastguard Worker
1622*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)
1623*9880d681SAndroid Build Coastguard Worker
1624*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pmaxs_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {
1625*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxs_b_512:
1626*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1627*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1628*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm2 {%k1}
1629*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm0
1630*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1631*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1632*9880d681SAndroid Build Coastguard Worker;
1633*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxs_b_512:
1634*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1635*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1636*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1637*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1638*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm2 {%k1}
1639*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm0
1640*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1641*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1642*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)
1643*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmaxs.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)
1644*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
1645*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
1646*9880d681SAndroid Build Coastguard Worker}
1647*9880d681SAndroid Build Coastguard Worker
1648*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1649*9880d681SAndroid Build Coastguard Worker
1650*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmaxs_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1651*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxs_w_512:
1652*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1653*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1654*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm2 {%k1}
1655*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm0
1656*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1657*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1658*9880d681SAndroid Build Coastguard Worker;
1659*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxs_w_512:
1660*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1661*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1662*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm2 {%k1}
1663*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm0
1664*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1665*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1666*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1667*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaxs.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1668*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1669*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1670*9880d681SAndroid Build Coastguard Worker}
1671*9880d681SAndroid Build Coastguard Worker
1672*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)
1673*9880d681SAndroid Build Coastguard Worker
1674*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pmaxu_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {
1675*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxu_b_512:
1676*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1677*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1678*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxub %zmm1, %zmm0, %zmm2 {%k1}
1679*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxub %zmm1, %zmm0, %zmm0
1680*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1681*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1682*9880d681SAndroid Build Coastguard Worker;
1683*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxu_b_512:
1684*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1685*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1686*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1687*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1688*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxub %zmm1, %zmm0, %zmm2 {%k1}
1689*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxub %zmm1, %zmm0, %zmm0
1690*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1691*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1692*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)
1693*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmaxu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)
1694*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
1695*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
1696*9880d681SAndroid Build Coastguard Worker}
1697*9880d681SAndroid Build Coastguard Worker
1698*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1699*9880d681SAndroid Build Coastguard Worker
1700*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmaxu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1701*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaxu_w_512:
1702*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1703*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1704*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm2 {%k1}
1705*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm0
1706*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1707*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1708*9880d681SAndroid Build Coastguard Worker;
1709*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaxu_w_512:
1710*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1711*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1712*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm2 {%k1}
1713*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm0
1714*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1715*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1716*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1717*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaxu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1718*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1719*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1720*9880d681SAndroid Build Coastguard Worker}
1721*9880d681SAndroid Build Coastguard Worker
1722*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)
1723*9880d681SAndroid Build Coastguard Worker
1724*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pmins_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {
1725*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmins_b_512:
1726*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1727*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1728*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminsb %zmm1, %zmm0, %zmm2 {%k1}
1729*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminsb %zmm1, %zmm0, %zmm0
1730*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1731*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1732*9880d681SAndroid Build Coastguard Worker;
1733*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmins_b_512:
1734*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1735*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1736*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1737*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1738*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminsb %zmm1, %zmm0, %zmm2 {%k1}
1739*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminsb %zmm1, %zmm0, %zmm0
1740*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1741*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1742*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)
1743*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pmins.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)
1744*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
1745*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
1746*9880d681SAndroid Build Coastguard Worker}
1747*9880d681SAndroid Build Coastguard Worker
1748*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1749*9880d681SAndroid Build Coastguard Worker
1750*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmins_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1751*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmins_w_512:
1752*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1753*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1754*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminsw %zmm1, %zmm0, %zmm2 {%k1}
1755*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminsw %zmm1, %zmm0, %zmm0
1756*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1757*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1758*9880d681SAndroid Build Coastguard Worker;
1759*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmins_w_512:
1760*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1761*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1762*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminsw %zmm1, %zmm0, %zmm2 {%k1}
1763*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminsw %zmm1, %zmm0, %zmm0
1764*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1765*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1766*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1767*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmins.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1768*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1769*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1770*9880d681SAndroid Build Coastguard Worker}
1771*9880d681SAndroid Build Coastguard Worker
1772*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)
1773*9880d681SAndroid Build Coastguard Worker
1774*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pminu_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {
1775*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pminu_b_512:
1776*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1777*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1778*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminub %zmm1, %zmm0, %zmm2 {%k1}
1779*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminub %zmm1, %zmm0, %zmm0
1780*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1781*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1782*9880d681SAndroid Build Coastguard Worker;
1783*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pminu_b_512:
1784*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1785*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1786*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1787*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1788*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminub %zmm1, %zmm0, %zmm2 {%k1}
1789*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminub %zmm1, %zmm0, %zmm0
1790*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1791*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1792*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)
1793*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pminu.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)
1794*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
1795*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
1796*9880d681SAndroid Build Coastguard Worker}
1797*9880d681SAndroid Build Coastguard Worker
1798*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1799*9880d681SAndroid Build Coastguard Worker
1800*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pminu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1801*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pminu_w_512:
1802*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1803*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1804*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminuw %zmm1, %zmm0, %zmm2 {%k1}
1805*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpminuw %zmm1, %zmm0, %zmm0
1806*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1807*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1808*9880d681SAndroid Build Coastguard Worker;
1809*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pminu_w_512:
1810*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1811*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1812*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminuw %zmm1, %zmm0, %zmm2 {%k1}
1813*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpminuw %zmm1, %zmm0, %zmm0
1814*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1815*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1816*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1817*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pminu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1818*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1819*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1820*9880d681SAndroid Build Coastguard Worker}
1821*9880d681SAndroid Build Coastguard Worker
1822*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1823*9880d681SAndroid Build Coastguard Worker
1824*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1825*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_512:
1826*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1827*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1828*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm3
1829*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermt2w %zmm2, %zmm0, %zmm3 {%k1}
1830*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermt2w %zmm2, %zmm0, %zmm1
1831*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm1, %zmm3, %zmm0
1832*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1833*9880d681SAndroid Build Coastguard Worker;
1834*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_512:
1835*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1836*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1837*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm3
1838*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermt2w %zmm2, %zmm0, %zmm3 {%k1}
1839*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermt2w %zmm2, %zmm0, %zmm1
1840*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm1, %zmm3, %zmm0
1841*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1842*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1843*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1844*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1845*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1846*9880d681SAndroid Build Coastguard Worker}
1847*9880d681SAndroid Build Coastguard Worker
1848*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1849*9880d681SAndroid Build Coastguard Worker
1850*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_maskz_vpermt2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1851*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_maskz_vpermt2var_hi_512:
1852*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1853*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1854*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm3
1855*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermt2w %zmm2, %zmm0, %zmm3 {%k1} {z}
1856*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermt2w %zmm2, %zmm0, %zmm1
1857*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm1, %zmm3, %zmm0
1858*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1859*9880d681SAndroid Build Coastguard Worker;
1860*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_maskz_vpermt2var_hi_512:
1861*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1862*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1863*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm3
1864*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermt2w %zmm2, %zmm0, %zmm3 {%k1} {z}
1865*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermt2w %zmm2, %zmm0, %zmm1
1866*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm1, %zmm3, %zmm0
1867*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1868*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1869*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1870*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1871*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1872*9880d681SAndroid Build Coastguard Worker}
1873*9880d681SAndroid Build Coastguard Worker
1874*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1875*9880d681SAndroid Build Coastguard Worker
1876*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_vpermi2var_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1877*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_vpermi2var_hi_512:
1878*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1879*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1880*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovaps %zmm1, %zmm3
1881*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm0, %zmm3 {%k1}
1882*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermi2w %zmm2, %zmm0, %zmm1
1883*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm1, %zmm3, %zmm0
1884*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1885*9880d681SAndroid Build Coastguard Worker;
1886*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_vpermi2var_hi_512:
1887*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1888*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1889*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovaps %zmm1, %zmm3
1890*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermi2w %zmm2, %zmm0, %zmm3 {%k1}
1891*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermi2w %zmm2, %zmm0, %zmm1
1892*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm1, %zmm3, %zmm0
1893*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1894*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1895*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1896*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1897*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1898*9880d681SAndroid Build Coastguard Worker}
1899*9880d681SAndroid Build Coastguard Worker
1900*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)
1901*9880d681SAndroid Build Coastguard Worker
1902*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pavg_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {
1903*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pavg_b_512:
1904*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1905*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1906*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpavgb %zmm1, %zmm0, %zmm2 {%k1}
1907*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpavgb %zmm1, %zmm0, %zmm0
1908*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1909*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1910*9880d681SAndroid Build Coastguard Worker;
1911*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pavg_b_512:
1912*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1913*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1914*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1915*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1916*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpavgb %zmm1, %zmm0, %zmm2 {%k1}
1917*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpavgb %zmm1, %zmm0, %zmm0
1918*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1919*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1920*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)
1921*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pavg.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)
1922*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
1923*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
1924*9880d681SAndroid Build Coastguard Worker}
1925*9880d681SAndroid Build Coastguard Worker
1926*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
1927*9880d681SAndroid Build Coastguard Worker
1928*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pavg_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
1929*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pavg_w_512:
1930*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1931*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1932*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpavgw %zmm1, %zmm0, %zmm2 {%k1}
1933*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpavgw %zmm1, %zmm0, %zmm0
1934*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1935*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1936*9880d681SAndroid Build Coastguard Worker;
1937*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pavg_w_512:
1938*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1939*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1940*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpavgw %zmm1, %zmm0, %zmm2 {%k1}
1941*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpavgw %zmm1, %zmm0, %zmm0
1942*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
1943*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1944*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
1945*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pavg.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
1946*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1947*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1948*9880d681SAndroid Build Coastguard Worker}
1949*9880d681SAndroid Build Coastguard Worker
1950*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pshuf.b.512(<64 x i8>, <64 x i8>, <64 x i8>, i64)
1951*9880d681SAndroid Build Coastguard Worker
1952*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pshuf_b_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3) {
1953*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pshuf_b_512:
1954*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1955*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
1956*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpshufb %zmm1, %zmm0, %zmm2 {%k1}
1957*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpshufb %zmm1, %zmm0, %zmm0
1958*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1959*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1960*9880d681SAndroid Build Coastguard Worker;
1961*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pshuf_b_512:
1962*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1963*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
1964*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1965*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
1966*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpshufb %zmm1, %zmm0, %zmm2 {%k1}
1967*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpshufb %zmm1, %zmm0, %zmm0
1968*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
1969*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1970*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pshuf.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 %x3)
1971*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pshuf.b.512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2, i64 -1)
1972*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
1973*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
1974*9880d681SAndroid Build Coastguard Worker}
1975*9880d681SAndroid Build Coastguard Worker
1976*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pabs.w.512(<32 x i16>, <32 x i16>, i32)
1977*9880d681SAndroid Build Coastguard Worker
1978*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pabs_w_512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) {
1979*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pabs_w_512:
1980*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
1981*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
1982*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpabsw %zmm0, %zmm1 {%k1}
1983*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpabsw %zmm0, %zmm0
1984*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
1985*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
1986*9880d681SAndroid Build Coastguard Worker;
1987*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pabs_w_512:
1988*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
1989*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
1990*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpabsw %zmm0, %zmm1 {%k1}
1991*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpabsw %zmm0, %zmm0
1992*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
1993*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
1994*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pabs.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2)
1995*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pabs.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 -1)
1996*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
1997*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
1998*9880d681SAndroid Build Coastguard Worker}
1999*9880d681SAndroid Build Coastguard Worker
2000*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pabs.b.512(<64 x i8>, <64 x i8>, i64)
2001*9880d681SAndroid Build Coastguard Worker
2002*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pabs_b_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) {
2003*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pabs_b_512:
2004*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2005*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
2006*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpabsb %zmm0, %zmm1 {%k1}
2007*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpabsb %zmm0, %zmm0
2008*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm0
2009*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2010*9880d681SAndroid Build Coastguard Worker;
2011*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pabs_b_512:
2012*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2013*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2014*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2015*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
2016*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpabsb %zmm0, %zmm1 {%k1}
2017*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpabsb %zmm0, %zmm0
2018*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm1, %zmm0
2019*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2020*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pabs.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2)
2021*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pabs.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 -1)
2022*9880d681SAndroid Build Coastguard Worker  %res2 = add <64 x i8> %res, %res1
2023*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res2
2024*9880d681SAndroid Build Coastguard Worker}
2025*9880d681SAndroid Build Coastguard Worker
2026*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmulhu.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2027*9880d681SAndroid Build Coastguard Worker
2028*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmulhu_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2029*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmulhu_w_512:
2030*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2031*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2032*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmulhuw %zmm1, %zmm0, %zmm2 {%k1}
2033*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmulhuw %zmm1, %zmm0, %zmm0
2034*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2035*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2036*9880d681SAndroid Build Coastguard Worker;
2037*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmulhu_w_512:
2038*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2039*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2040*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmulhuw %zmm1, %zmm0, %zmm2 {%k1}
2041*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmulhuw %zmm1, %zmm0, %zmm0
2042*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2043*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2044*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmulhu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2045*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmulhu.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2046*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
2047*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
2048*9880d681SAndroid Build Coastguard Worker}
2049*9880d681SAndroid Build Coastguard Worker
2050*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmulh.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2051*9880d681SAndroid Build Coastguard Worker
2052*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmulh_w_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2053*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmulh_w_512:
2054*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2055*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2056*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmulhw %zmm1, %zmm0, %zmm2 {%k1}
2057*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmulhw %zmm1, %zmm0, %zmm0
2058*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2059*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2060*9880d681SAndroid Build Coastguard Worker;
2061*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmulh_w_512:
2062*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2063*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2064*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmulhw %zmm1, %zmm0, %zmm2 {%k1}
2065*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmulhw %zmm1, %zmm0, %zmm0
2066*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2067*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2068*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmulh.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2069*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmulh.w.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2070*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
2071*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
2072*9880d681SAndroid Build Coastguard Worker}
2073*9880d681SAndroid Build Coastguard Worker
2074*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2075*9880d681SAndroid Build Coastguard Worker
2076*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmulhr_sw_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2077*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmulhr_sw_512:
2078*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2079*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2080*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmulhrsw %zmm1, %zmm0, %zmm2 {%k1}
2081*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmulhrsw %zmm1, %zmm0, %zmm0
2082*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2083*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2084*9880d681SAndroid Build Coastguard Worker;
2085*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmulhr_sw_512:
2086*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2087*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2088*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmulhrsw %zmm1, %zmm0, %zmm2 {%k1}
2089*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmulhrsw %zmm1, %zmm0, %zmm0
2090*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2091*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2092*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2093*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2094*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
2095*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
2096*9880d681SAndroid Build Coastguard Worker}
2097*9880d681SAndroid Build Coastguard Worker
2098*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16>, <32 x i8>, i32)
2099*9880d681SAndroid Build Coastguard Worker
2100*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmov_wb_512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) {
2101*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmov_wb_512:
2102*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2103*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2104*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovwb %zmm0, %ymm1 {%k1}
2105*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovwb %zmm0, %ymm2 {%k1} {z}
2106*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovwb %zmm0, %ymm0
2107*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %ymm1, %ymm0, %ymm0
2108*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %ymm2, %ymm0, %ymm0
2109*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2110*9880d681SAndroid Build Coastguard Worker;
2111*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmov_wb_512:
2112*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2113*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2114*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovwb %zmm0, %ymm1 {%k1}
2115*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovwb %zmm0, %ymm2 {%k1} {z}
2116*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovwb %zmm0, %ymm0
2117*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %ymm1, %ymm0, %ymm0
2118*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %ymm2, %ymm0, %ymm0
2119*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2120*9880d681SAndroid Build Coastguard Worker    %res0 = call <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 -1)
2121*9880d681SAndroid Build Coastguard Worker    %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2)
2122*9880d681SAndroid Build Coastguard Worker    %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmov.wb.512(<32 x i16> %x0, <32 x i8> zeroinitializer, i32 %x2)
2123*9880d681SAndroid Build Coastguard Worker    %res3 = add <32 x i8> %res0, %res1
2124*9880d681SAndroid Build Coastguard Worker    %res4 = add <32 x i8> %res3, %res2
2125*9880d681SAndroid Build Coastguard Worker    ret <32 x i8> %res4
2126*9880d681SAndroid Build Coastguard Worker}
2127*9880d681SAndroid Build Coastguard Worker
2128*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.wb.mem.512(i8* %ptr, <32 x i16>, i32)
2129*9880d681SAndroid Build Coastguard Worker
2130*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_wb_mem_512(i8* %ptr, <32 x i16> %x1, i32 %x2) {
2131*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmov_wb_mem_512:
2132*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2133*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2134*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovwb %zmm0, (%rdi)
2135*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovwb %zmm0, (%rdi) {%k1}
2136*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2137*9880d681SAndroid Build Coastguard Worker;
2138*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmov_wb_mem_512:
2139*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2140*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2141*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
2142*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovwb %zmm0, (%eax)
2143*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovwb %zmm0, (%eax) {%k1}
2144*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2145*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 -1)
2146*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 %x2)
2147*9880d681SAndroid Build Coastguard Worker    ret void
2148*9880d681SAndroid Build Coastguard Worker}
2149*9880d681SAndroid Build Coastguard Worker
2150*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16>, <32 x i8>, i32)
2151*9880d681SAndroid Build Coastguard Worker
2152*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmovs_wb_512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) {
2153*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovs_wb_512:
2154*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2155*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2156*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovswb %zmm0, %ymm1 {%k1}
2157*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovswb %zmm0, %ymm2 {%k1} {z}
2158*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovswb %zmm0, %ymm0
2159*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %ymm1, %ymm0, %ymm0
2160*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %ymm2, %ymm0, %ymm0
2161*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2162*9880d681SAndroid Build Coastguard Worker;
2163*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovs_wb_512:
2164*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2165*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2166*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovswb %zmm0, %ymm1 {%k1}
2167*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovswb %zmm0, %ymm2 {%k1} {z}
2168*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovswb %zmm0, %ymm0
2169*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %ymm1, %ymm0, %ymm0
2170*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %ymm2, %ymm0, %ymm0
2171*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2172*9880d681SAndroid Build Coastguard Worker    %res0 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 -1)
2173*9880d681SAndroid Build Coastguard Worker    %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2)
2174*9880d681SAndroid Build Coastguard Worker    %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmovs.wb.512(<32 x i16> %x0, <32 x i8> zeroinitializer, i32 %x2)
2175*9880d681SAndroid Build Coastguard Worker    %res3 = add <32 x i8> %res0, %res1
2176*9880d681SAndroid Build Coastguard Worker    %res4 = add <32 x i8> %res3, %res2
2177*9880d681SAndroid Build Coastguard Worker    ret <32 x i8> %res4
2178*9880d681SAndroid Build Coastguard Worker}
2179*9880d681SAndroid Build Coastguard Worker
2180*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.wb.mem.512(i8* %ptr, <32 x i16>, i32)
2181*9880d681SAndroid Build Coastguard Worker
2182*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_wb_mem_512(i8* %ptr, <32 x i16> %x1, i32 %x2) {
2183*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovs_wb_mem_512:
2184*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2185*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovswb %zmm0, (%rdi)
2186*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2187*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovswb %zmm0, (%rdi) {%k1}
2188*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2189*9880d681SAndroid Build Coastguard Worker;
2190*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovs_wb_mem_512:
2191*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2192*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
2193*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2194*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovswb %zmm0, (%ecx)
2195*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %eax, %k1
2196*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovswb %zmm0, (%ecx) {%k1}
2197*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2198*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 -1)
2199*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 %x2)
2200*9880d681SAndroid Build Coastguard Worker    ret void
2201*9880d681SAndroid Build Coastguard Worker}
2202*9880d681SAndroid Build Coastguard Worker
2203*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16>, <32 x i8>, i32)
2204*9880d681SAndroid Build Coastguard Worker
2205*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmovus_wb_512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2) {
2206*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovus_wb_512:
2207*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2208*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2209*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovuswb %zmm0, %ymm1 {%k1}
2210*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovuswb %zmm0, %ymm2 {%k1} {z}
2211*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovuswb %zmm0, %ymm0
2212*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %ymm1, %ymm0, %ymm0
2213*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %ymm2, %ymm0, %ymm0
2214*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2215*9880d681SAndroid Build Coastguard Worker;
2216*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovus_wb_512:
2217*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2218*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2219*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovuswb %zmm0, %ymm1 {%k1}
2220*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovuswb %zmm0, %ymm2 {%k1} {z}
2221*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovuswb %zmm0, %ymm0
2222*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %ymm1, %ymm0, %ymm0
2223*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %ymm2, %ymm0, %ymm0
2224*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2225*9880d681SAndroid Build Coastguard Worker    %res0 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 -1)
2226*9880d681SAndroid Build Coastguard Worker    %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %x0, <32 x i8> %x1, i32 %x2)
2227*9880d681SAndroid Build Coastguard Worker    %res2 = call <32 x i8> @llvm.x86.avx512.mask.pmovus.wb.512(<32 x i16> %x0, <32 x i8> zeroinitializer, i32 %x2)
2228*9880d681SAndroid Build Coastguard Worker    %res3 = add <32 x i8> %res0, %res1
2229*9880d681SAndroid Build Coastguard Worker    %res4 = add <32 x i8> %res3, %res2
2230*9880d681SAndroid Build Coastguard Worker    ret <32 x i8> %res4
2231*9880d681SAndroid Build Coastguard Worker}
2232*9880d681SAndroid Build Coastguard Worker
2233*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.wb.mem.512(i8* %ptr, <32 x i16>, i32)
2234*9880d681SAndroid Build Coastguard Worker
2235*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_wb_mem_512(i8* %ptr, <32 x i16> %x1, i32 %x2) {
2236*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovus_wb_mem_512:
2237*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2238*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovuswb %zmm0, (%rdi)
2239*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2240*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovuswb %zmm0, (%rdi) {%k1}
2241*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2242*9880d681SAndroid Build Coastguard Worker;
2243*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovus_wb_mem_512:
2244*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2245*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
2246*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2247*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovuswb %zmm0, (%ecx)
2248*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %eax, %k1
2249*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovuswb %zmm0, (%ecx) {%k1}
2250*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2251*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 -1)
2252*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.wb.mem.512(i8* %ptr, <32 x i16> %x1, i32 %x2)
2253*9880d681SAndroid Build Coastguard Worker    ret void
2254*9880d681SAndroid Build Coastguard Worker}
2255*9880d681SAndroid Build Coastguard Worker
2256*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmaddubs.w.512(<64 x i8>, <64 x i8>, <32 x i16>, i32)
2257*9880d681SAndroid Build Coastguard Worker
2258*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmaddubs_w_512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x2, i32 %x3) {
2259*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaddubs_w_512:
2260*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2261*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2262*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaddubsw %zmm1, %zmm0, %zmm2 {%k1}
2263*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaddubsw %zmm1, %zmm0, %zmm0
2264*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2265*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2266*9880d681SAndroid Build Coastguard Worker;
2267*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaddubs_w_512:
2268*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2269*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2270*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaddubsw %zmm1, %zmm0, %zmm2 {%k1}
2271*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaddubsw %zmm1, %zmm0, %zmm0
2272*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2273*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2274*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmaddubs.w.512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x2, i32 %x3)
2275*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmaddubs.w.512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x2, i32 -1)
2276*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i16> %res, %res1
2277*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res2
2278*9880d681SAndroid Build Coastguard Worker}
2279*9880d681SAndroid Build Coastguard Worker
2280*9880d681SAndroid Build Coastguard Workerdeclare <16 x i32> @llvm.x86.avx512.mask.pmaddw.d.512(<32 x i16>, <32 x i16>, <16 x i32>, i16)
2281*9880d681SAndroid Build Coastguard Worker
2282*9880d681SAndroid Build Coastguard Workerdefine <16 x i32>@test_int_x86_avx512_mask_pmaddw_d_512(<32 x i16> %x0, <32 x i16> %x1, <16 x i32> %x2, i16 %x3) {
2283*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmaddw_d_512:
2284*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2285*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovw %edi, %k1
2286*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaddwd %zmm1, %zmm0, %zmm2 {%k1}
2287*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmaddwd %zmm1, %zmm0, %zmm0
2288*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
2289*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2290*9880d681SAndroid Build Coastguard Worker;
2291*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmaddw_d_512:
2292*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2293*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovw {{[0-9]+}}(%esp), %k1
2294*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaddwd %zmm1, %zmm0, %zmm2 {%k1}
2295*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmaddwd %zmm1, %zmm0, %zmm0
2296*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddd %zmm0, %zmm2, %zmm0
2297*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2298*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i32> @llvm.x86.avx512.mask.pmaddw.d.512(<32 x i16> %x0, <32 x i16> %x1, <16 x i32> %x2, i16 %x3)
2299*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i32> @llvm.x86.avx512.mask.pmaddw.d.512(<32 x i16> %x0, <32 x i16> %x1, <16 x i32> %x2, i16 -1)
2300*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i32> %res, %res1
2301*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res2
2302*9880d681SAndroid Build Coastguard Worker}
2303*9880d681SAndroid Build Coastguard Worker
2304*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8>, <64 x i8>, i32, <32 x i16>, i32)
2305*9880d681SAndroid Build Coastguard Worker
2306*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_dbpsadbw_512(<64 x i8> %x0, <64 x i8> %x1, <32 x i16> %x3, i32 %x4) {
2307*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_dbpsadbw_512:
2308*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2309*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2310*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vdbpsadbw $2, %zmm1, %zmm0, %zmm2 {%k1}
2311*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vdbpsadbw $2, %zmm1, %zmm0, %zmm3 {%k1} {z}
2312*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vdbpsadbw $2, %zmm1, %zmm0, %zmm0
2313*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2314*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2315*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2316*9880d681SAndroid Build Coastguard Worker;
2317*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_dbpsadbw_512:
2318*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2319*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2320*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vdbpsadbw $2, %zmm1, %zmm0, %zmm2 {%k1}
2321*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vdbpsadbw $2, %zmm1, %zmm0, %zmm3 {%k1} {z}
2322*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vdbpsadbw $2, %zmm1, %zmm0, %zmm0
2323*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2324*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2325*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2326*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8> %x0, <64 x i8> %x1, i32 2, <32 x i16> %x3, i32 %x4)
2327*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8> %x0, <64 x i8> %x1, i32 2, <32 x i16> zeroinitializer, i32 %x4)
2328*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.dbpsadbw.512(<64 x i8> %x0, <64 x i8> %x1, i32 2, <32 x i16> %x3, i32 -1)
2329*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2330*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2331*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2332*9880d681SAndroid Build Coastguard Worker}
2333*9880d681SAndroid Build Coastguard Worker
2334*9880d681SAndroid Build Coastguard Workerdeclare  <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8>, <64 x i8>)
2335*9880d681SAndroid Build Coastguard Worker
2336*9880d681SAndroid Build Coastguard Workerdefine  <8 x i64>@test_int_x86_avx512_mask_psadb_w_512(<64 x i8> %x0, <64 x i8> %x1, <64 x i8> %x2){
2337*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psadb_w_512:
2338*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2339*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsadbw %zmm1, %zmm0, %zmm1
2340*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsadbw %zmm2, %zmm0, %zmm0
2341*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
2342*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2343*9880d681SAndroid Build Coastguard Worker;
2344*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psadb_w_512:
2345*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2346*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsadbw %zmm1, %zmm0, %zmm1
2347*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsadbw %zmm2, %zmm0, %zmm0
2348*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddq %zmm0, %zmm1, %zmm0
2349*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2350*9880d681SAndroid Build Coastguard Worker  %res = call  <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8> %x0, <64 x i8> %x1)
2351*9880d681SAndroid Build Coastguard Worker  %res1 = call  <8 x i64> @llvm.x86.avx512.psad.bw.512(<64 x i8> %x0, <64 x i8> %x2)
2352*9880d681SAndroid Build Coastguard Worker  %res2 = add  <8 x i64> %res, %res1
2353*9880d681SAndroid Build Coastguard Worker  ret  <8 x i64> %res2
2354*9880d681SAndroid Build Coastguard Worker}
2355*9880d681SAndroid Build Coastguard Worker
2356*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.kunpck.wd(i32, i32)
2357*9880d681SAndroid Build Coastguard Worker
2358*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_kunpck_wd(i32 %x0, i32 %x1) {
2359*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_kunpck_wd:
2360*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2361*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k0
2362*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2363*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kunpckwd %k1, %k0, %k0
2364*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
2365*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2366*9880d681SAndroid Build Coastguard Worker;
2367*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_kunpck_wd:
2368*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2369*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2370*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2371*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckwd %k1, %k0, %k0
2372*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
2373*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2374*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.kunpck.wd(i32 %x0, i32 %x1)
2375*9880d681SAndroid Build Coastguard Worker  ret i32 %res
2376*9880d681SAndroid Build Coastguard Worker}
2377*9880d681SAndroid Build Coastguard Worker
2378*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.kunpck.dq(i64, i64)
2379*9880d681SAndroid Build Coastguard Worker
2380*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_kunpck_qd(i64 %x0, i64 %x1) {
2381*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_kunpck_qd:
2382*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2383*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k0
2384*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rsi, %k1
2385*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kunpckdq %k1, %k0, %k0
2386*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
2387*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2388*9880d681SAndroid Build Coastguard Worker;
2389*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_kunpck_qd:
2390*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2391*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $12, %esp
2392*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp4:
2393*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 16
2394*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2395*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2396*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k0
2397*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
2398*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl (%esp), %eax
2399*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
2400*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $12, %esp
2401*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2402*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.kunpck.dq(i64 %x0, i64 %x1)
2403*9880d681SAndroid Build Coastguard Worker  ret i64 %res
2404*9880d681SAndroid Build Coastguard Worker}
2405*9880d681SAndroid Build Coastguard Worker
2406*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.cvtb2mask.512(<64 x i8>)
2407*9880d681SAndroid Build Coastguard Worker
2408*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_cvtb2mask_512(<64 x i8> %x0) {
2409*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtb2mask_512:
2410*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2411*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovb2m %zmm0, %k0
2412*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
2413*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2414*9880d681SAndroid Build Coastguard Worker;
2415*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtb2mask_512:
2416*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2417*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $12, %esp
2418*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp5:
2419*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 16
2420*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovb2m %zmm0, %k0
2421*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
2422*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl (%esp), %eax
2423*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
2424*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $12, %esp
2425*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2426*9880d681SAndroid Build Coastguard Worker    %res = call i64 @llvm.x86.avx512.cvtb2mask.512(<64 x i8> %x0)
2427*9880d681SAndroid Build Coastguard Worker    ret i64 %res
2428*9880d681SAndroid Build Coastguard Worker}
2429*9880d681SAndroid Build Coastguard Worker
2430*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvtw2mask.512(<32 x i16>)
2431*9880d681SAndroid Build Coastguard Worker
2432*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_cvtw2mask_512(<32 x i16> %x0) {
2433*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtw2mask_512:
2434*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2435*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovw2m %zmm0, %k0
2436*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
2437*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2438*9880d681SAndroid Build Coastguard Worker;
2439*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtw2mask_512:
2440*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2441*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovw2m %zmm0, %k0
2442*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
2443*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2444*9880d681SAndroid Build Coastguard Worker    %res = call i32 @llvm.x86.avx512.cvtw2mask.512(<32 x i16> %x0)
2445*9880d681SAndroid Build Coastguard Worker    ret i32 %res
2446*9880d681SAndroid Build Coastguard Worker}
2447*9880d681SAndroid Build Coastguard Worker
2448*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.cvtmask2b.512(i64)
2449*9880d681SAndroid Build Coastguard Worker
2450*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_cvtmask2b_512(i64 %x0) {
2451*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtmask2b_512:
2452*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2453*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k0
2454*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovm2b %k0, %zmm0
2455*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2456*9880d681SAndroid Build Coastguard Worker;
2457*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtmask2b_512:
2458*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2459*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2460*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2461*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k0
2462*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovm2b %k0, %zmm0
2463*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2464*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.cvtmask2b.512(i64 %x0)
2465*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res
2466*9880d681SAndroid Build Coastguard Worker}
2467*9880d681SAndroid Build Coastguard Worker
2468*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.cvtmask2w.512(i32)
2469*9880d681SAndroid Build Coastguard Worker
2470*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_cvtmask2w_512(i32 %x0) {
2471*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_cvtmask2w_512:
2472*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2473*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k0
2474*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovm2w %k0, %zmm0
2475*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2476*9880d681SAndroid Build Coastguard Worker;
2477*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_cvtmask2w_512:
2478*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2479*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2480*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovm2w %k0, %zmm0
2481*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2482*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.cvtmask2w.512(i32 %x0)
2483*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2484*9880d681SAndroid Build Coastguard Worker}
2485*9880d681SAndroid Build Coastguard Worker
2486*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16>, <8 x i16>, <32 x i16>, i32)
2487*9880d681SAndroid Build Coastguard Worker
2488*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrl_w_512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2489*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrl_w_512:
2490*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2491*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2492*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlw %xmm1, %zmm0, %zmm2 {%k1}
2493*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlw %xmm1, %zmm0, %zmm3 {%k1} {z}
2494*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlw %xmm1, %zmm0, %zmm0
2495*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2496*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm0, %zmm0
2497*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2498*9880d681SAndroid Build Coastguard Worker;
2499*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrl_w_512:
2500*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2501*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2502*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlw %xmm1, %zmm0, %zmm2 {%k1}
2503*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlw %xmm1, %zmm0, %zmm3 {%k1} {z}
2504*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlw %xmm1, %zmm0, %zmm0
2505*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
2506*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm0, %zmm0
2507*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2508*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3)
2509*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 -1)
2510*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrl.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2511*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2512*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2513*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2514*9880d681SAndroid Build Coastguard Worker}
2515*9880d681SAndroid Build Coastguard Worker
2516*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16>, i32, <32 x i16>, i32)
2517*9880d681SAndroid Build Coastguard Worker
2518*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrl_wi_512(<32 x i16> %x0, i32 %x1, <32 x i16> %x2, i32 %x3) {
2519*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrl_wi_512:
2520*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2521*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2522*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlw $3, %zmm0, %zmm1 {%k1}
2523*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlw $3, %zmm0, %zmm2 {%k1} {z}
2524*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlw $3, %zmm0, %zmm0
2525*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2526*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm2, %zmm0, %zmm0
2527*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2528*9880d681SAndroid Build Coastguard Worker;
2529*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrl_wi_512:
2530*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2531*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2532*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlw $3, %zmm0, %zmm1 {%k1}
2533*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlw $3, %zmm0, %zmm2 {%k1} {z}
2534*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlw $3, %zmm0, %zmm0
2535*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2536*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm2, %zmm0, %zmm0
2537*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2538*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 %x3)
2539*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 -1)
2540*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrl.wi.512(<32 x i16> %x0, i32 3, <32 x i16> zeroinitializer, i32 %x3)
2541*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2542*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2543*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2544*9880d681SAndroid Build Coastguard Worker}
2545*9880d681SAndroid Build Coastguard Worker
2546*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2547*9880d681SAndroid Build Coastguard Worker
2548*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2549*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrlv32hi:
2550*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2551*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2552*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlvw %zmm1, %zmm0, %zmm2 {%k1}
2553*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlvw %zmm1, %zmm0, %zmm3 {%k1} {z}
2554*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsrlvw %zmm1, %zmm0, %zmm0
2555*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2556*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2557*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2558*9880d681SAndroid Build Coastguard Worker;
2559*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrlv32hi:
2560*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2561*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2562*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlvw %zmm1, %zmm0, %zmm2 {%k1}
2563*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlvw %zmm1, %zmm0, %zmm3 {%k1} {z}
2564*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsrlvw %zmm1, %zmm0, %zmm0
2565*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2566*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2567*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2568*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2569*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2570*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrlv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2571*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2572*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2573*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2574*9880d681SAndroid Build Coastguard Worker}
2575*9880d681SAndroid Build Coastguard Worker
2576*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16>, <8 x i16>, <32 x i16>, i32)
2577*9880d681SAndroid Build Coastguard Worker
2578*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psra_w_512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2579*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psra_w_512:
2580*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2581*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2582*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsraw %xmm1, %zmm0, %zmm2 {%k1}
2583*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsraw %xmm1, %zmm0, %zmm3 {%k1} {z}
2584*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsraw %xmm1, %zmm0, %zmm0
2585*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2586*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2587*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2588*9880d681SAndroid Build Coastguard Worker;
2589*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psra_w_512:
2590*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2591*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2592*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsraw %xmm1, %zmm0, %zmm2 {%k1}
2593*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsraw %xmm1, %zmm0, %zmm3 {%k1} {z}
2594*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsraw %xmm1, %zmm0, %zmm0
2595*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2596*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2597*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2598*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3)
2599*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2600*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psra.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 -1)
2601*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2602*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2603*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2604*9880d681SAndroid Build Coastguard Worker}
2605*9880d681SAndroid Build Coastguard Worker
2606*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16>, i32, <32 x i16>, i32)
2607*9880d681SAndroid Build Coastguard Worker
2608*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psra_wi_512(<32 x i16> %x0, i32 %x1, <32 x i16> %x2, i32 %x3) {
2609*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psra_wi_512:
2610*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2611*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2612*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsraw $3, %zmm0, %zmm1 {%k1}
2613*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsraw $3, %zmm0, %zmm2 {%k1} {z}
2614*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsraw $3, %zmm0, %zmm0
2615*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2616*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2617*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2618*9880d681SAndroid Build Coastguard Worker;
2619*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psra_wi_512:
2620*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2621*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2622*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsraw $3, %zmm0, %zmm1 {%k1}
2623*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsraw $3, %zmm0, %zmm2 {%k1} {z}
2624*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsraw $3, %zmm0, %zmm0
2625*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2626*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2627*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2628*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 %x3)
2629*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16> %x0, i32 3, <32 x i16> zeroinitializer, i32 %x3)
2630*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psra.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 -1)
2631*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2632*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2633*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2634*9880d681SAndroid Build Coastguard Worker}
2635*9880d681SAndroid Build Coastguard Worker
2636*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2637*9880d681SAndroid Build Coastguard Worker
2638*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrav32_hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2639*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrav32_hi:
2640*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2641*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2642*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsravw %zmm1, %zmm0, %zmm2 {%k1}
2643*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsravw %zmm1, %zmm0, %zmm3 {%k1} {z}
2644*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsravw %zmm1, %zmm0, %zmm0
2645*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2646*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2647*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2648*9880d681SAndroid Build Coastguard Worker;
2649*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrav32_hi:
2650*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2651*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2652*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsravw %zmm1, %zmm0, %zmm2 {%k1}
2653*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsravw %zmm1, %zmm0, %zmm3 {%k1} {z}
2654*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsravw %zmm1, %zmm0, %zmm0
2655*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2656*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2657*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2658*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2659*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2660*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2661*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2662*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2663*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2664*9880d681SAndroid Build Coastguard Worker}
2665*9880d681SAndroid Build Coastguard Worker
2666*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psrav32_hi_const(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2667*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psrav32_hi_const:
2668*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2669*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vmovdqu16 {{.*#+}} zmm0 = [2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51]
2670*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsravw {{.*}}(%rip), %zmm0, %zmm0
2671*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2672*9880d681SAndroid Build Coastguard Worker;
2673*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psrav32_hi_const:
2674*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2675*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vmovdqu16 {{.*#+}} zmm0 = [2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51,2,9,65524,23,65510,37,65496,51]
2676*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsravw {{\.LCPI.*}}, %zmm0, %zmm0
2677*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2678*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psrav32.hi(<32 x i16> <i16 2, i16 9,  i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51, i16 2, i16 9,  i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51, i16 2, i16 9,  i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51, i16 2, i16 9,  i16 -12, i16 23, i16 -26, i16 37, i16 -40, i16 51>,
2679*9880d681SAndroid Build Coastguard Worker                                                          <32 x i16> <i16 1, i16 10, i16 35,  i16 52, i16 69,  i16 9,  i16 16,  i16 49, i16 1, i16 10, i16 35,  i16 52, i16 69,  i16 9,  i16 16,  i16 49, i16 1, i16 10, i16 35,  i16 52, i16 69,  i16 9,  i16 16,  i16 49, i16 1, i16 10, i16 35,  i16 52, i16 69,  i16 9,  i16 16,  i16 49>,
2680*9880d681SAndroid Build Coastguard Worker                                                          <32 x i16> zeroinitializer, i32 -1)
2681*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2682*9880d681SAndroid Build Coastguard Worker}
2683*9880d681SAndroid Build Coastguard Worker
2684*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16>, <8 x i16>, <32 x i16>, i32)
2685*9880d681SAndroid Build Coastguard Worker
2686*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psll_w_512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2687*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psll_w_512:
2688*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2689*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2690*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllw %xmm1, %zmm0, %zmm2 {%k1}
2691*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllw %xmm1, %zmm0, %zmm3 {%k1} {z}
2692*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllw %xmm1, %zmm0, %zmm0
2693*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2694*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2695*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2696*9880d681SAndroid Build Coastguard Worker;
2697*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psll_w_512:
2698*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2699*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2700*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllw %xmm1, %zmm0, %zmm2 {%k1}
2701*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllw %xmm1, %zmm0, %zmm3 {%k1} {z}
2702*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllw %xmm1, %zmm0, %zmm0
2703*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2704*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2705*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2706*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 %x3)
2707*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2708*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psll.w.512(<32 x i16> %x0, <8 x i16> %x1, <32 x i16> %x2, i32 -1)
2709*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2710*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2711*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2712*9880d681SAndroid Build Coastguard Worker}
2713*9880d681SAndroid Build Coastguard Worker
2714*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16>, i32, <32 x i16>, i32)
2715*9880d681SAndroid Build Coastguard Worker
2716*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psll_wi_512(<32 x i16> %x0, i32 %x1, <32 x i16> %x2, i32 %x3) {
2717*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psll_wi_512:
2718*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2719*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
2720*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllw $3, %zmm0, %zmm1 {%k1}
2721*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllw $3, %zmm0, %zmm2 {%k1} {z}
2722*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllw $3, %zmm0, %zmm0
2723*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2724*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2725*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2726*9880d681SAndroid Build Coastguard Worker;
2727*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psll_wi_512:
2728*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2729*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2730*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllw $3, %zmm0, %zmm1 {%k1}
2731*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllw $3, %zmm0, %zmm2 {%k1} {z}
2732*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllw $3, %zmm0, %zmm0
2733*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2734*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2735*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2736*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 %x3)
2737*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16> %x0, i32 3, <32 x i16> zeroinitializer, i32 %x3)
2738*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psll.wi.512(<32 x i16> %x0, i32 3, <32 x i16> %x2, i32 -1)
2739*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2740*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2741*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2742*9880d681SAndroid Build Coastguard Worker}
2743*9880d681SAndroid Build Coastguard Worker
2744*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2745*9880d681SAndroid Build Coastguard Worker
2746*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2747*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_psllv32hi:
2748*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2749*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2750*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllvw %zmm1, %zmm0, %zmm2 {%k1}
2751*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllvw %zmm1, %zmm0, %zmm3 {%k1} {z}
2752*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpsllvw %zmm1, %zmm0, %zmm0
2753*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2754*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2755*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2756*9880d681SAndroid Build Coastguard Worker;
2757*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_psllv32hi:
2758*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2759*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2760*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllvw %zmm1, %zmm0, %zmm2 {%k1}
2761*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllvw %zmm1, %zmm0, %zmm3 {%k1} {z}
2762*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpsllvw %zmm1, %zmm0, %zmm0
2763*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2764*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2765*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2766*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2767*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2768*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.psllv32hi(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2769*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2770*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2771*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2772*9880d681SAndroid Build Coastguard Worker}
2773*9880d681SAndroid Build Coastguard Worker
2774*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8>, <32 x i16>, i32)
2775*9880d681SAndroid Build Coastguard Worker
2776*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmovzxb_w_512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2) {
2777*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovzxb_w_512:
2778*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2779*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2780*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovzxbw {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero
2781*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovzxbw {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero
2782*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovzxbw {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero
2783*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2784*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2785*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2786*9880d681SAndroid Build Coastguard Worker;
2787*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovzxb_w_512:
2788*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2789*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2790*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovzxbw {{.*#+}} zmm1 {%k1} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero
2791*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovzxbw {{.*#+}} zmm2 {%k1} {z} = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero
2792*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovzxbw {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],zero,ymm0[4],zero,ymm0[5],zero,ymm0[6],zero,ymm0[7],zero,ymm0[8],zero,ymm0[9],zero,ymm0[10],zero,ymm0[11],zero,ymm0[12],zero,ymm0[13],zero,ymm0[14],zero,ymm0[15],zero,ymm0[16],zero,ymm0[17],zero,ymm0[18],zero,ymm0[19],zero,ymm0[20],zero,ymm0[21],zero,ymm0[22],zero,ymm0[23],zero,ymm0[24],zero,ymm0[25],zero,ymm0[26],zero,ymm0[27],zero,ymm0[28],zero,ymm0[29],zero,ymm0[30],zero,ymm0[31],zero
2793*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2794*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2795*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2796*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2)
2797*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8> %x0, <32 x i16> zeroinitializer, i32 %x2)
2798*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.pmovzxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 -1)
2799*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2800*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2801*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2802*9880d681SAndroid Build Coastguard Worker}
2803*9880d681SAndroid Build Coastguard Worker
2804*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8>, <32 x i16>, i32)
2805*9880d681SAndroid Build Coastguard Worker
2806*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pmovsxb_w_512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2) {
2807*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pmovsxb_w_512:
2808*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2809*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2810*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovsxbw %ymm0, %zmm1 {%k1}
2811*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovsxbw %ymm0, %zmm2 {%k1} {z}
2812*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpmovsxbw %ymm0, %zmm0
2813*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2814*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2815*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2816*9880d681SAndroid Build Coastguard Worker;
2817*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pmovsxb_w_512:
2818*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2819*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2820*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovsxbw %ymm0, %zmm1 {%k1}
2821*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovsxbw %ymm0, %zmm2 {%k1} {z}
2822*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpmovsxbw %ymm0, %zmm0
2823*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm2, %zmm1, %zmm1
2824*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2825*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2826*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 %x2)
2827*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8> %x0, <32 x i16> zeroinitializer, i32 %x2)
2828*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.pmovsxb.w.512(<32 x i8> %x0, <32 x i16> %x1, i32 -1)
2829*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2830*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2831*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2832*9880d681SAndroid Build Coastguard Worker}
2833*9880d681SAndroid Build Coastguard Worker
2834*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2835*9880d681SAndroid Build Coastguard Worker
2836*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_permvar_hi_512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3) {
2837*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_permvar_hi_512:
2838*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2839*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2840*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermw %zmm0, %zmm1, %zmm2 {%k1}
2841*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermw %zmm0, %zmm1, %zmm3 {%k1} {z}
2842*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpermw %zmm0, %zmm1, %zmm0
2843*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2844*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2845*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2846*9880d681SAndroid Build Coastguard Worker;
2847*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_permvar_hi_512:
2848*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2849*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2850*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermw %zmm0, %zmm1, %zmm2 {%k1}
2851*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermw %zmm0, %zmm1, %zmm3 {%k1} {z}
2852*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpermw %zmm0, %zmm1, %zmm0
2853*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm3, %zmm2, %zmm1
2854*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
2855*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2856*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 %x3)
2857*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> zeroinitializer, i32 %x3)
2858*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.permvar.hi.512(<32 x i16> %x0, <32 x i16> %x1, <32 x i16> %x2, i32 -1)
2859*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
2860*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res3, %res2
2861*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
2862*9880d681SAndroid Build Coastguard Worker}
2863*9880d681SAndroid Build Coastguard Worker
2864*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.ptestm.b.512(<64 x i8>, <64 x i8>, i64)
2865*9880d681SAndroid Build Coastguard Worker
2866*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_ptestm_b_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) {
2867*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestm_b_512:
2868*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2869*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
2870*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestmb %zmm1, %zmm0, %k0 {%k1}
2871*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
2872*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestmb %zmm1, %zmm0, %k0
2873*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
2874*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
2875*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2876*9880d681SAndroid Build Coastguard Worker;
2877*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestm_b_512:
2878*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2879*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $20, %esp
2880*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp6:
2881*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 24
2882*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2883*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2884*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
2885*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestmb %zmm1, %zmm0, %k0 {%k1}
2886*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
2887*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestmb %zmm1, %zmm0, %k0
2888*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
2889*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl (%esp), %eax
2890*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
2891*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
2892*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
2893*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $20, %esp
2894*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2895*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.ptestm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2)
2896*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.ptestm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64-1)
2897*9880d681SAndroid Build Coastguard Worker  %res2 = add i64 %res, %res1
2898*9880d681SAndroid Build Coastguard Worker  ret i64 %res2
2899*9880d681SAndroid Build Coastguard Worker}
2900*9880d681SAndroid Build Coastguard Worker
2901*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.ptestm.w.512(<32 x i16>, <32 x i16>, i32)
2902*9880d681SAndroid Build Coastguard Worker
2903*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_ptestm_w_512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) {
2904*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestm_w_512:
2905*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2906*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2907*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestmw %zmm1, %zmm0, %k0 {%k1}
2908*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
2909*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestmw %zmm1, %zmm0, %k0
2910*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
2911*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
2912*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2913*9880d681SAndroid Build Coastguard Worker;
2914*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestm_w_512:
2915*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2916*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2917*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestmw %zmm1, %zmm0, %k0 {%k1}
2918*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
2919*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestmw %zmm1, %zmm0, %k0
2920*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
2921*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
2922*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2923*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.ptestm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2)
2924*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.ptestm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32-1)
2925*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res, %res1
2926*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
2927*9880d681SAndroid Build Coastguard Worker}
2928*9880d681SAndroid Build Coastguard Worker
2929*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.avx512.ptestnm.b.512(<64 x i8>, <64 x i8>, i64 %x2)
2930*9880d681SAndroid Build Coastguard Worker
2931*9880d681SAndroid Build Coastguard Workerdefine i64@test_int_x86_avx512_ptestnm_b_512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2) {
2932*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestnm_b_512:
2933*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2934*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rdi, %k1
2935*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestnmb %zmm1, %zmm0, %k0 {%k1}
2936*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rcx
2937*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestnmb %zmm1, %zmm0, %k0
2938*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %k0, %rax
2939*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addq %rcx, %rax
2940*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2941*9880d681SAndroid Build Coastguard Worker;
2942*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestnm_b_512:
2943*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2944*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    subl $20, %esp
2945*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:  .Ltmp7:
2946*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    .cfi_def_cfa_offset 24
2947*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
2948*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2949*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
2950*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestnmb %zmm1, %zmm0, %k0 {%k1}
2951*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, (%esp)
2952*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestnmb %zmm1, %zmm0, %k0
2953*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovq %k0, {{[0-9]+}}(%esp)
2954*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl (%esp), %eax
2955*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
2956*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl {{[0-9]+}}(%esp), %eax
2957*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    adcxl {{[0-9]+}}(%esp), %edx
2958*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl $20, %esp
2959*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2960*9880d681SAndroid Build Coastguard Worker  %res = call i64 @llvm.x86.avx512.ptestnm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64 %x2)
2961*9880d681SAndroid Build Coastguard Worker  %res1 = call i64 @llvm.x86.avx512.ptestnm.b.512(<64 x i8> %x0, <64 x i8> %x1, i64-1)
2962*9880d681SAndroid Build Coastguard Worker  %res2 = add i64 %res, %res1
2963*9880d681SAndroid Build Coastguard Worker  ret i64 %res2
2964*9880d681SAndroid Build Coastguard Worker}
2965*9880d681SAndroid Build Coastguard Worker
2966*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.ptestnm.w.512(<32 x i16>, <32 x i16>, i32 %x2)
2967*9880d681SAndroid Build Coastguard Worker
2968*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_ptestnm_w_512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2) {
2969*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_ptestnm_w_512:
2970*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2971*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %edi, %k1
2972*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestnmw %zmm1, %zmm0, %k0 {%k1}
2973*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %ecx
2974*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vptestnmw %zmm1, %zmm0, %k0
2975*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %k0, %eax
2976*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    addl %ecx, %eax
2977*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
2978*9880d681SAndroid Build Coastguard Worker;
2979*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_ptestnm_w_512:
2980*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
2981*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
2982*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestnmw %zmm1, %zmm0, %k0 {%k1}
2983*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %ecx
2984*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vptestnmw %zmm1, %zmm0, %k0
2985*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd %k0, %eax
2986*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    addl %ecx, %eax
2987*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
2988*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.ptestnm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32 %x2)
2989*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.ptestnm.w.512(<32 x i16> %x0, <32 x i16> %x1, i32-1)
2990*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res, %res1
2991*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
2992*9880d681SAndroid Build Coastguard Worker}
2993*9880d681SAndroid Build Coastguard Worker
2994*9880d681SAndroid Build Coastguard Workerdeclare <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8, <64 x i8>, i64)
2995*9880d681SAndroid Build Coastguard Worker
2996*9880d681SAndroid Build Coastguard Workerdefine <64 x i8>@test_int_x86_avx512_mask_pbroadcast_b_gpr_512(i8 %x0, <64 x i8> %x1, i64 %mask) {
2997*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pbroadcast_b_gpr_512:
2998*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
2999*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovq %rsi, %k1
3000*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpbroadcastb %dil, %zmm0 {%k1}
3001*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpbroadcastb %dil, %zmm1 {%k1} {z}
3002*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpbroadcastb %dil, %zmm2
3003*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
3004*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddb %zmm0, %zmm1, %zmm0
3005*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
3006*9880d681SAndroid Build Coastguard Worker;
3007*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pbroadcast_b_gpr_512:
3008*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
3009*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movb {{[0-9]+}}(%esp), %al
3010*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k0
3011*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
3012*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kunpckdq %k0, %k1, %k1
3013*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpbroadcastb %al, %zmm1 {%k1} {z}
3014*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpbroadcastb %al, %zmm0 {%k1}
3015*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpbroadcastb %al, %zmm2
3016*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm2, %zmm0
3017*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddb %zmm0, %zmm1, %zmm0
3018*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
3019*9880d681SAndroid Build Coastguard Worker  %res = call <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8 %x0, <64 x i8> %x1, i64 -1)
3020*9880d681SAndroid Build Coastguard Worker  %res1 = call <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8 %x0, <64 x i8> %x1, i64 %mask)
3021*9880d681SAndroid Build Coastguard Worker  %res2 = call <64 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.512(i8 %x0, <64 x i8> zeroinitializer, i64 %mask)
3022*9880d681SAndroid Build Coastguard Worker  %res3 = add <64 x i8> %res, %res1
3023*9880d681SAndroid Build Coastguard Worker  %res4 = add <64 x i8> %res2, %res3
3024*9880d681SAndroid Build Coastguard Worker  ret <64 x i8> %res4
3025*9880d681SAndroid Build Coastguard Worker}
3026*9880d681SAndroid Build Coastguard Worker
3027*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16, <32 x i16>, i32)
3028*9880d681SAndroid Build Coastguard Worker
3029*9880d681SAndroid Build Coastguard Workerdefine <32 x i16>@test_int_x86_avx512_mask_pbroadcast_w_gpr_512(i16 %x0, <32 x i16> %x1, i32 %mask) {
3030*9880d681SAndroid Build Coastguard Worker; AVX512BW-LABEL: test_int_x86_avx512_mask_pbroadcast_w_gpr_512:
3031*9880d681SAndroid Build Coastguard Worker; AVX512BW:       ## BB#0:
3032*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    kmovd %esi, %k1
3033*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpbroadcastw %di, %zmm0 {%k1}
3034*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpbroadcastw %di, %zmm1 {%k1} {z}
3035*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpbroadcastw %di, %zmm2
3036*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
3037*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
3038*9880d681SAndroid Build Coastguard Worker; AVX512BW-NEXT:    retq
3039*9880d681SAndroid Build Coastguard Worker;
3040*9880d681SAndroid Build Coastguard Worker; AVX512F-32-LABEL: test_int_x86_avx512_mask_pbroadcast_w_gpr_512:
3041*9880d681SAndroid Build Coastguard Worker; AVX512F-32:       # BB#0:
3042*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
3043*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    kmovd {{[0-9]+}}(%esp), %k1
3044*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpbroadcastw %ax, %zmm0 {%k1}
3045*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpbroadcastw %ax, %zmm1 {%k1} {z}
3046*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpbroadcastw %ax, %zmm2
3047*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm2, %zmm0
3048*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    vpaddw %zmm0, %zmm1, %zmm0
3049*9880d681SAndroid Build Coastguard Worker; AVX512F-32-NEXT:    retl
3050*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16 %x0, <32 x i16> %x1, i32 -1)
3051*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16 %x0, <32 x i16> %x1, i32 %mask)
3052*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.512(i16 %x0, <32 x i16> zeroinitializer, i32 %mask)
3053*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i16> %res, %res1
3054*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i16> %res2, %res3
3055*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res4
3056*9880d681SAndroid Build Coastguard Worker}
3057