xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512bwvl-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 -mattr=+avx512vl --show-mc-encoding| FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; 256-bit
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_cmp_b_256(<32 x i8> %a0, <32 x i8> %a1) {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_b_256:
8*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x00]
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r8d ## encoding: [0xc5,0x7b,0x93,0xc0]
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x01]
12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r9d ## encoding: [0xc5,0x7b,0x93,0xc8]
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x02]
14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r10d ## encoding: [0xc5,0x7b,0x93,0xd0]
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x03]
16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %esi ## encoding: [0xc5,0xfb,0x93,0xf0]
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x04]
18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edi ## encoding: [0xc5,0xfb,0x93,0xf8]
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x05]
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x06]
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %ecx ## encoding: [0xc5,0xfb,0x93,0xc8]
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3f,0xc1,0x07]
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edx ## encoding: [0xc5,0xfb,0x93,0xd0]
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7]
26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %eax, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc0,0x01]
27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x02]
28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %edx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x03]
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %r8d, %xmm1 ## encoding: [0x62,0xd1,0x7d,0x08,0x6e,0xc8]
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %r9d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xc9,0x01]
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %r10d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xca,0x02]
32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %esi, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x22,0xce,0x03]
33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm0, %ymm1, %ymm0 ## encoding: [0x62,0xf3,0x75,0x28,0x38,0xc0,0x01]
34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
35*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 0, i32 -1)
36*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i32> undef, i32 %res0, i32 0
37*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 1, i32 -1)
38*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i32> %vec0, i32 %res1, i32 1
39*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 2, i32 -1)
40*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i32> %vec1, i32 %res2, i32 2
41*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 3, i32 -1)
42*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i32> %vec2, i32 %res3, i32 3
43*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 4, i32 -1)
44*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i32> %vec3, i32 %res4, i32 4
45*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 5, i32 -1)
46*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i32> %vec4, i32 %res5, i32 5
47*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 6, i32 -1)
48*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i32> %vec5, i32 %res6, i32 6
49*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 7, i32 -1)
50*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i32> %vec6, i32 %res7, i32 7
51*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %vec7
52*9880d681SAndroid Build Coastguard Worker}
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_mask_cmp_b_256(<32 x i8> %a0, <32 x i8> %a1, i32 %mask) {
55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_b_256:
56*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x00]
59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r8d ## encoding: [0xc5,0x7b,0x93,0xc0]
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x01]
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r9d ## encoding: [0xc5,0x7b,0x93,0xc8]
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x02]
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r10d ## encoding: [0xc5,0x7b,0x93,0xd0]
64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x03]
65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %esi ## encoding: [0xc5,0xfb,0x93,0xf0]
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x04]
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edi ## encoding: [0xc5,0xfb,0x93,0xf8]
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x05]
69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x06]
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %ecx ## encoding: [0xc5,0xfb,0x93,0xc8]
72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3f,0xc1,0x07]
73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edx ## encoding: [0xc5,0xfb,0x93,0xd0]
74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7]
75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %eax, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc0,0x01]
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x02]
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %edx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x03]
78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %r8d, %xmm1 ## encoding: [0x62,0xd1,0x7d,0x08,0x6e,0xc8]
79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %r9d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xc9,0x01]
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %r10d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xca,0x02]
81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %esi, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x22,0xce,0x03]
82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm0, %ymm1, %ymm0 ## encoding: [0x62,0xf3,0x75,0x28,0x38,0xc0,0x01]
83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
84*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 0, i32 %mask)
85*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i32> undef, i32 %res0, i32 0
86*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 1, i32 %mask)
87*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i32> %vec0, i32 %res1, i32 1
88*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 2, i32 %mask)
89*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i32> %vec1, i32 %res2, i32 2
90*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 3, i32 %mask)
91*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i32> %vec2, i32 %res3, i32 3
92*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 4, i32 %mask)
93*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i32> %vec3, i32 %res4, i32 4
94*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 5, i32 %mask)
95*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i32> %vec4, i32 %res5, i32 5
96*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 6, i32 %mask)
97*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i32> %vec5, i32 %res6, i32 6
98*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 7, i32 %mask)
99*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i32> %vec6, i32 %res7, i32 7
100*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %vec7
101*9880d681SAndroid Build Coastguard Worker}
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.mask.cmp.b.256(<32 x i8>, <32 x i8>, i32, i32) nounwind readnone
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_ucmp_b_256(<32 x i8> %a0, <32 x i8> %a1) {
106*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_b_256:
107*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x00]
109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r8d ## encoding: [0xc5,0x7b,0x93,0xc0]
110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltub %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x01]
111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r9d ## encoding: [0xc5,0x7b,0x93,0xc8]
112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleub %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x02]
113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r10d ## encoding: [0xc5,0x7b,0x93,0xd0]
114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordub %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x03]
115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %esi ## encoding: [0xc5,0xfb,0x93,0xf0]
116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x04]
117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edi ## encoding: [0xc5,0xfb,0x93,0xf8]
118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltub %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x05]
119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleub %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x06]
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %ecx ## encoding: [0xc5,0xfb,0x93,0xc8]
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordub %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x28,0x3e,0xc1,0x07]
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edx ## encoding: [0xc5,0xfb,0x93,0xd0]
124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7]
125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %eax, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc0,0x01]
126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x02]
127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %edx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x03]
128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %r8d, %xmm1 ## encoding: [0x62,0xd1,0x7d,0x08,0x6e,0xc8]
129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %r9d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xc9,0x01]
130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %r10d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xca,0x02]
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %esi, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x22,0xce,0x03]
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm0, %ymm1, %ymm0 ## encoding: [0x62,0xf3,0x75,0x28,0x38,0xc0,0x01]
133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
134*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 0, i32 -1)
135*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i32> undef, i32 %res0, i32 0
136*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 1, i32 -1)
137*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i32> %vec0, i32 %res1, i32 1
138*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 2, i32 -1)
139*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i32> %vec1, i32 %res2, i32 2
140*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 3, i32 -1)
141*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i32> %vec2, i32 %res3, i32 3
142*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 4, i32 -1)
143*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i32> %vec3, i32 %res4, i32 4
144*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 5, i32 -1)
145*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i32> %vec4, i32 %res5, i32 5
146*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 6, i32 -1)
147*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i32> %vec5, i32 %res6, i32 6
148*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 7, i32 -1)
149*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i32> %vec6, i32 %res7, i32 7
150*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %vec7
151*9880d681SAndroid Build Coastguard Worker}
152*9880d681SAndroid Build Coastguard Worker
153*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test_mask_ucmp_b_256(<32 x i8> %a0, <32 x i8> %a1, i32 %mask) {
154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_b_256:
155*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x00]
158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r8d ## encoding: [0xc5,0x7b,0x93,0xc0]
159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltub %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x01]
160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r9d ## encoding: [0xc5,0x7b,0x93,0xc8]
161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleub %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x02]
162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %r10d ## encoding: [0xc5,0x7b,0x93,0xd0]
163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordub %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x03]
164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %esi ## encoding: [0xc5,0xfb,0x93,0xf0]
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x04]
166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edi ## encoding: [0xc5,0xfb,0x93,0xf8]
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltub %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x05]
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleub %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x06]
170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %ecx ## encoding: [0xc5,0xfb,0x93,0xc8]
171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordub %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x3e,0xc1,0x07]
172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %edx ## encoding: [0xc5,0xfb,0x93,0xd0]
173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %edi, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc7]
174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %eax, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc0,0x01]
175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %ecx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc1,0x02]
176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %edx, %xmm0, %xmm0 ## encoding: [0xc4,0xe3,0x79,0x22,0xc2,0x03]
177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %r8d, %xmm1 ## encoding: [0x62,0xd1,0x7d,0x08,0x6e,0xc8]
178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $1, %r9d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xc9,0x01]
179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $2, %r10d, %xmm1, %xmm1 ## encoding: [0xc4,0xc3,0x71,0x22,0xca,0x02]
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrd $3, %esi, %xmm1, %xmm1 ## encoding: [0xc4,0xe3,0x71,0x22,0xce,0x03]
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vinserti32x4 $1, %xmm0, %ymm1, %ymm0 ## encoding: [0x62,0xf3,0x75,0x28,0x38,0xc0,0x01]
182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
183*9880d681SAndroid Build Coastguard Worker  %res0 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 0, i32 %mask)
184*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i32> undef, i32 %res0, i32 0
185*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 1, i32 %mask)
186*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i32> %vec0, i32 %res1, i32 1
187*9880d681SAndroid Build Coastguard Worker  %res2 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 2, i32 %mask)
188*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i32> %vec1, i32 %res2, i32 2
189*9880d681SAndroid Build Coastguard Worker  %res3 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 3, i32 %mask)
190*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i32> %vec2, i32 %res3, i32 3
191*9880d681SAndroid Build Coastguard Worker  %res4 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 4, i32 %mask)
192*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i32> %vec3, i32 %res4, i32 4
193*9880d681SAndroid Build Coastguard Worker  %res5 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 5, i32 %mask)
194*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i32> %vec4, i32 %res5, i32 5
195*9880d681SAndroid Build Coastguard Worker  %res6 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 6, i32 %mask)
196*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i32> %vec5, i32 %res6, i32 6
197*9880d681SAndroid Build Coastguard Worker  %res7 = call i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8> %a0, <32 x i8> %a1, i32 7, i32 %mask)
198*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i32> %vec6, i32 %res7, i32 7
199*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %vec7
200*9880d681SAndroid Build Coastguard Worker}
201*9880d681SAndroid Build Coastguard Worker
202*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.mask.ucmp.b.256(<32 x i8>, <32 x i8>, i32, i32) nounwind readnone
203*9880d681SAndroid Build Coastguard Worker
204*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_cmp_w_256(<16 x i16> %a0, <16 x i16> %a1) {
205*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_w_256:
206*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqw %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xc1,0x00]
208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltw %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xc9,0x01]
209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmplew %ymm1, %ymm0, %k2 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xd1,0x02]
210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordw %ymm1, %ymm0, %k3 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xd9,0x03]
211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqw %ymm1, %ymm0, %k4 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xe1,0x04]
212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltw %ymm1, %ymm0, %k5 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xe9,0x05]
213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnlew %ymm1, %ymm0, %k6 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xf1,0x06]
214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordw %ymm1, %ymm0, %k7 ## encoding: [0x62,0xf3,0xfd,0x28,0x3f,0xf9,0x07]
215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
222*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
223*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
224*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
232*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 0, i16 -1)
233*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
234*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 1, i16 -1)
235*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
236*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 2, i16 -1)
237*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
238*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 3, i16 -1)
239*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
240*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 4, i16 -1)
241*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
242*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 5, i16 -1)
243*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
244*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 6, i16 -1)
245*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
246*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 7, i16 -1)
247*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
248*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_cmp_w_256(<16 x i16> %a0, <16 x i16> %a1, i16 %mask) {
252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_w_256:
253*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqw %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xc1,0x00]
256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltw %ymm1, %ymm0, %k2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xd1,0x01]
257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmplew %ymm1, %ymm0, %k3 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xd9,0x02]
258*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordw %ymm1, %ymm0, %k4 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xe1,0x03]
259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqw %ymm1, %ymm0, %k5 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xe9,0x04]
260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltw %ymm1, %ymm0, %k6 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xf1,0x05]
261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnlew %ymm1, %ymm0, %k7 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xf9,0x06]
262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordw %ymm1, %ymm0, %k1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3f,0xc9,0x07]
263*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
277*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
280*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 0, i16 %mask)
281*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
282*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 1, i16 %mask)
283*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
284*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 2, i16 %mask)
285*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
286*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 3, i16 %mask)
287*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
288*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 4, i16 %mask)
289*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
290*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 5, i16 %mask)
291*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
292*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 6, i16 %mask)
293*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
294*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 7, i16 %mask)
295*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
296*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
297*9880d681SAndroid Build Coastguard Worker}
298*9880d681SAndroid Build Coastguard Worker
299*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.cmp.w.256(<16 x i16>, <16 x i16>, i32, i16) nounwind readnone
300*9880d681SAndroid Build Coastguard Worker
301*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_ucmp_w_256(<16 x i16> %a0, <16 x i16> %a1) {
302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_w_256:
303*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequw %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xc1,0x00]
305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltuw %ymm1, %ymm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xc9,0x01]
306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleuw %ymm1, %ymm0, %k2 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xd1,0x02]
307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunorduw %ymm1, %ymm0, %k3 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xd9,0x03]
308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequw %ymm1, %ymm0, %k4 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xe1,0x04]
309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltuw %ymm1, %ymm0, %k5 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xe9,0x05]
310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuw %ymm1, %ymm0, %k6 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xf1,0x06]
311*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmporduw %ymm1, %ymm0, %k7 ## encoding: [0x62,0xf3,0xfd,0x28,0x3e,0xf9,0x07]
312*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
329*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 0, i16 -1)
330*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
331*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 1, i16 -1)
332*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
333*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 2, i16 -1)
334*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
335*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 3, i16 -1)
336*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
337*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 4, i16 -1)
338*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
339*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 5, i16 -1)
340*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
341*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 6, i16 -1)
342*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
343*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 7, i16 -1)
344*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
345*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
346*9880d681SAndroid Build Coastguard Worker}
347*9880d681SAndroid Build Coastguard Worker
348*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_ucmp_w_256(<16 x i16> %a0, <16 x i16> %a1, i16 %mask) {
349*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_w_256:
350*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequw %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xc1,0x00]
353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltuw %ymm1, %ymm0, %k2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xd1,0x01]
354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleuw %ymm1, %ymm0, %k3 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xd9,0x02]
355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunorduw %ymm1, %ymm0, %k4 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xe1,0x03]
356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequw %ymm1, %ymm0, %k5 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xe9,0x04]
357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltuw %ymm1, %ymm0, %k6 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xf1,0x05]
358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuw %ymm1, %ymm0, %k7 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xf9,0x06]
359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmporduw %ymm1, %ymm0, %k1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x29,0x3e,0xc9,0x07]
360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
361*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
362*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
363*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
364*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
365*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
375*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
376*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
377*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 0, i16 %mask)
378*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
379*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 1, i16 %mask)
380*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
381*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 2, i16 %mask)
382*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
383*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 3, i16 %mask)
384*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
385*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 4, i16 %mask)
386*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
387*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 5, i16 %mask)
388*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
389*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 6, i16 %mask)
390*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
391*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16> %a0, <16 x i16> %a1, i32 7, i16 %mask)
392*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
393*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
394*9880d681SAndroid Build Coastguard Worker}
395*9880d681SAndroid Build Coastguard Worker
396*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.ucmp.w.256(<16 x i16>, <16 x i16>, i32, i16) nounwind readnone
397*9880d681SAndroid Build Coastguard Worker
398*9880d681SAndroid Build Coastguard Worker; 128-bit
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdefine i16 @test_pcmpeq_b_128(<16 x i8> %a, <16 x i8> %b) {
401*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_pcmpeq_b_128:
402*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqb %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf1,0x7d,0x08,0x74,0xc1]
404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
407*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.mask.pcmpeq.b.128(<16 x i8> %a, <16 x i8> %b, i16 -1)
408*9880d681SAndroid Build Coastguard Worker  ret i16 %res
409*9880d681SAndroid Build Coastguard Worker}
410*9880d681SAndroid Build Coastguard Worker
411*9880d681SAndroid Build Coastguard Workerdefine i16 @test_mask_pcmpeq_b_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) {
412*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_pcmpeq_b_128:
413*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqb %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x74,0xc1]
416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
419*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.mask.pcmpeq.b.128(<16 x i8> %a, <16 x i8> %b, i16 %mask)
420*9880d681SAndroid Build Coastguard Worker  ret i16 %res
421*9880d681SAndroid Build Coastguard Worker}
422*9880d681SAndroid Build Coastguard Worker
423*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.pcmpeq.b.128(<16 x i8>, <16 x i8>, i16)
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Workerdefine i8 @test_pcmpeq_w_128(<8 x i16> %a, <8 x i16> %b) {
426*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_pcmpeq_w_128:
427*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqw %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf1,0x7d,0x08,0x75,0xc1]
429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
432*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.pcmpeq.w.128(<8 x i16> %a, <8 x i16> %b, i8 -1)
433*9880d681SAndroid Build Coastguard Worker  ret i8 %res
434*9880d681SAndroid Build Coastguard Worker}
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Workerdefine i8 @test_mask_pcmpeq_w_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
437*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_pcmpeq_w_128:
438*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
439*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
440*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqw %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x75,0xc1]
441*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
442*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
444*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.pcmpeq.w.128(<8 x i16> %a, <8 x i16> %b, i8 %mask)
445*9880d681SAndroid Build Coastguard Worker  ret i8 %res
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.pcmpeq.w.128(<8 x i16>, <8 x i16>, i8)
449*9880d681SAndroid Build Coastguard Worker
450*9880d681SAndroid Build Coastguard Workerdefine i16 @test_pcmpgt_b_128(<16 x i8> %a, <16 x i8> %b) {
451*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_pcmpgt_b_128:
452*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtb %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf1,0x7d,0x08,0x64,0xc1]
454*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
455*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
457*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.mask.pcmpgt.b.128(<16 x i8> %a, <16 x i8> %b, i16 -1)
458*9880d681SAndroid Build Coastguard Worker  ret i16 %res
459*9880d681SAndroid Build Coastguard Worker}
460*9880d681SAndroid Build Coastguard Worker
461*9880d681SAndroid Build Coastguard Workerdefine i16 @test_mask_pcmpgt_b_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) {
462*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_pcmpgt_b_128:
463*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtb %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x64,0xc1]
466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
469*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.mask.pcmpgt.b.128(<16 x i8> %a, <16 x i8> %b, i16 %mask)
470*9880d681SAndroid Build Coastguard Worker  ret i16 %res
471*9880d681SAndroid Build Coastguard Worker}
472*9880d681SAndroid Build Coastguard Worker
473*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.pcmpgt.b.128(<16 x i8>, <16 x i8>, i16)
474*9880d681SAndroid Build Coastguard Worker
475*9880d681SAndroid Build Coastguard Workerdefine i8 @test_pcmpgt_w_128(<8 x i16> %a, <8 x i16> %b) {
476*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_pcmpgt_w_128:
477*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtw %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf1,0x7d,0x08,0x65,0xc1]
479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
480*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
481*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
482*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.pcmpgt.w.128(<8 x i16> %a, <8 x i16> %b, i8 -1)
483*9880d681SAndroid Build Coastguard Worker  ret i8 %res
484*9880d681SAndroid Build Coastguard Worker}
485*9880d681SAndroid Build Coastguard Worker
486*9880d681SAndroid Build Coastguard Workerdefine i8 @test_mask_pcmpgt_w_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
487*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_pcmpgt_w_128:
488*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpgtw %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x65,0xc1]
491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
494*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.mask.pcmpgt.w.128(<8 x i16> %a, <8 x i16> %b, i8 %mask)
495*9880d681SAndroid Build Coastguard Worker  ret i8 %res
496*9880d681SAndroid Build Coastguard Worker}
497*9880d681SAndroid Build Coastguard Worker
498*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.pcmpgt.w.128(<8 x i16>, <8 x i16>, i8)
499*9880d681SAndroid Build Coastguard Worker
500*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_cmp_b_128(<16 x i8> %a0, <16 x i8> %a1) {
501*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_b_128:
502*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
503*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqb %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xc1,0x00]
504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltb %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xc9,0x01]
505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleb %xmm1, %xmm0, %k2 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xd1,0x02]
506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordb %xmm1, %xmm0, %k3 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xd9,0x03]
507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqb %xmm1, %xmm0, %k4 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xe1,0x04]
508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltb %xmm1, %xmm0, %k5 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xe9,0x05]
509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleb %xmm1, %xmm0, %k6 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xf1,0x06]
510*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordb %xmm1, %xmm0, %k7 ## encoding: [0x62,0xf3,0x7d,0x08,0x3f,0xf9,0x07]
511*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
512*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
513*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
514*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
519*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
520*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
523*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
526*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
528*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 0, i16 -1)
529*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
530*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 1, i16 -1)
531*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
532*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 2, i16 -1)
533*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
534*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 3, i16 -1)
535*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
536*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 4, i16 -1)
537*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
538*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 5, i16 -1)
539*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
540*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 6, i16 -1)
541*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
542*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 7, i16 -1)
543*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
544*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
545*9880d681SAndroid Build Coastguard Worker}
546*9880d681SAndroid Build Coastguard Worker
547*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_cmp_b_128(<16 x i8> %a0, <16 x i8> %a1, i16 %mask) {
548*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_b_128:
549*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
550*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqb %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xc1,0x00]
552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltb %xmm1, %xmm0, %k2 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xd1,0x01]
553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleb %xmm1, %xmm0, %k3 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xd9,0x02]
554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordb %xmm1, %xmm0, %k4 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xe1,0x03]
555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqb %xmm1, %xmm0, %k5 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xe9,0x04]
556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltb %xmm1, %xmm0, %k6 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xf1,0x05]
557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleb %xmm1, %xmm0, %k7 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xf9,0x06]
558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordb %xmm1, %xmm0, %k1 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3f,0xc9,0x07]
559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
560*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
561*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
562*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
563*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
564*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
565*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
576*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 0, i16 %mask)
577*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
578*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 1, i16 %mask)
579*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
580*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 2, i16 %mask)
581*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
582*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 3, i16 %mask)
583*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
584*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 4, i16 %mask)
585*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
586*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 5, i16 %mask)
587*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
588*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 6, i16 %mask)
589*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
590*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 7, i16 %mask)
591*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
592*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
593*9880d681SAndroid Build Coastguard Worker}
594*9880d681SAndroid Build Coastguard Worker
595*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.cmp.b.128(<16 x i8>, <16 x i8>, i32, i16) nounwind readnone
596*9880d681SAndroid Build Coastguard Worker
597*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_ucmp_b_128(<16 x i8> %a0, <16 x i8> %a1) {
598*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_b_128:
599*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequb %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xc1,0x00]
601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltub %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xc9,0x01]
602*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleub %xmm1, %xmm0, %k2 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xd1,0x02]
603*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordub %xmm1, %xmm0, %k3 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xd9,0x03]
604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequb %xmm1, %xmm0, %k4 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xe1,0x04]
605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltub %xmm1, %xmm0, %k5 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xe9,0x05]
606*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleub %xmm1, %xmm0, %k6 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xf1,0x06]
607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordub %xmm1, %xmm0, %k7 ## encoding: [0x62,0xf3,0x7d,0x08,0x3e,0xf9,0x07]
608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
615*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
625*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 0, i16 -1)
626*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
627*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 1, i16 -1)
628*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
629*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 2, i16 -1)
630*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
631*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 3, i16 -1)
632*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
633*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 4, i16 -1)
634*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
635*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 5, i16 -1)
636*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
637*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 6, i16 -1)
638*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
639*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 7, i16 -1)
640*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
641*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
642*9880d681SAndroid Build Coastguard Worker}
643*9880d681SAndroid Build Coastguard Worker
644*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_ucmp_b_128(<16 x i8> %a0, <16 x i8> %a1, i16 %mask) {
645*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_b_128:
646*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequb %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xc1,0x00]
649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltub %xmm1, %xmm0, %k2 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xd1,0x01]
650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleub %xmm1, %xmm0, %k3 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xd9,0x02]
651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordub %xmm1, %xmm0, %k4 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xe1,0x03]
652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequb %xmm1, %xmm0, %k5 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xe9,0x04]
653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltub %xmm1, %xmm0, %k6 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xf1,0x05]
654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleub %xmm1, %xmm0, %k7 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xf9,0x06]
655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordub %xmm1, %xmm0, %k1 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x3e,0xc9,0x07]
656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovd %ecx, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6e,0xc1]
659*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $1, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x01]
660*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
661*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x02]
662*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $3, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x03]
664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x04]
666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $5, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x05]
668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x06]
670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrw $7, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xc4,0xc0,0x07]
672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
673*9880d681SAndroid Build Coastguard Worker  %res0 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 0, i16 %mask)
674*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i16> undef, i16 %res0, i32 0
675*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 1, i16 %mask)
676*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i16> %vec0, i16 %res1, i32 1
677*9880d681SAndroid Build Coastguard Worker  %res2 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 2, i16 %mask)
678*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i16> %vec1, i16 %res2, i32 2
679*9880d681SAndroid Build Coastguard Worker  %res3 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 3, i16 %mask)
680*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i16> %vec2, i16 %res3, i32 3
681*9880d681SAndroid Build Coastguard Worker  %res4 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 4, i16 %mask)
682*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i16> %vec3, i16 %res4, i32 4
683*9880d681SAndroid Build Coastguard Worker  %res5 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 5, i16 %mask)
684*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i16> %vec4, i16 %res5, i32 5
685*9880d681SAndroid Build Coastguard Worker  %res6 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 6, i16 %mask)
686*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i16> %vec5, i16 %res6, i32 6
687*9880d681SAndroid Build Coastguard Worker  %res7 = call i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8> %a0, <16 x i8> %a1, i32 7, i16 %mask)
688*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i16> %vec6, i16 %res7, i32 7
689*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %vec7
690*9880d681SAndroid Build Coastguard Worker}
691*9880d681SAndroid Build Coastguard Worker
692*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.mask.ucmp.b.128(<16 x i8>, <16 x i8>, i32, i16) nounwind readnone
693*9880d681SAndroid Build Coastguard Worker
694*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_cmp_w_128(<8 x i16> %a0, <8 x i16> %a1) {
695*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_cmp_w_128:
696*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqw %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xc1,0x00]
698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltw %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xc9,0x01]
699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmplew %xmm1, %xmm0, %k2 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xd1,0x02]
700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordw %xmm1, %xmm0, %k3 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xd9,0x03]
701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqw %xmm1, %xmm0, %k4 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xe1,0x04]
702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltw %xmm1, %xmm0, %k5 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xe9,0x05]
703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnlew %xmm1, %xmm0, %k6 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xf1,0x06]
704*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordw %xmm1, %xmm0, %k7 ## encoding: [0x62,0xf3,0xfd,0x08,0x3f,0xf9,0x07]
705*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
706*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x00]
707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x02]
709*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
710*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x04]
711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x06]
713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x08]
715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0a]
717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0c]
719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0e]
721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
722*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 0, i8 -1)
723*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
724*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 1, i8 -1)
725*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
726*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 2, i8 -1)
727*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
728*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 3, i8 -1)
729*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
730*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 4, i8 -1)
731*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
732*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 5, i8 -1)
733*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
734*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 6, i8 -1)
735*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
736*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 7, i8 -1)
737*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
738*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
739*9880d681SAndroid Build Coastguard Worker}
740*9880d681SAndroid Build Coastguard Worker
741*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_mask_cmp_w_128(<8 x i16> %a0, <8 x i16> %a1, i8 %mask) {
742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_cmp_w_128:
743*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpeqw %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xc1,0x00]
746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltw %xmm1, %xmm0, %k2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xd1,0x01]
747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmplew %xmm1, %xmm0, %k3 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xd9,0x02]
748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunordw %xmm1, %xmm0, %k4 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xe1,0x03]
749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpneqw %xmm1, %xmm0, %k5 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xe9,0x04]
750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltw %xmm1, %xmm0, %k6 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xf1,0x05]
751*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnlew %xmm1, %xmm0, %k7 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xf9,0x06]
752*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpordw %xmm1, %xmm0, %k1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3f,0xc9,0x07]
753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x00]
755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x02]
757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x04]
759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x06]
761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x08]
763*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0a]
765*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0c]
767*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0e]
769*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
770*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 0, i8 %mask)
771*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
772*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 1, i8 %mask)
773*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
774*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 2, i8 %mask)
775*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
776*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 3, i8 %mask)
777*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
778*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 4, i8 %mask)
779*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
780*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 5, i8 %mask)
781*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
782*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 6, i8 %mask)
783*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
784*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 7, i8 %mask)
785*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
786*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
787*9880d681SAndroid Build Coastguard Worker}
788*9880d681SAndroid Build Coastguard Worker
789*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.cmp.w.128(<8 x i16>, <8 x i16>, i32, i8) nounwind readnone
790*9880d681SAndroid Build Coastguard Worker
791*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_ucmp_w_128(<8 x i16> %a0, <8 x i16> %a1) {
792*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_ucmp_w_128:
793*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequw %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xc1,0x00]
795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltuw %xmm1, %xmm0, %k1 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xc9,0x01]
796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleuw %xmm1, %xmm0, %k2 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xd1,0x02]
797*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunorduw %xmm1, %xmm0, %k3 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xd9,0x03]
798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequw %xmm1, %xmm0, %k4 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xe1,0x04]
799*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltuw %xmm1, %xmm0, %k5 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xe9,0x05]
800*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuw %xmm1, %xmm0, %k6 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xf1,0x06]
801*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmporduw %xmm1, %xmm0, %k7 ## encoding: [0x62,0xf3,0xfd,0x08,0x3e,0xf9,0x07]
802*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x00]
804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x02]
806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
807*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x04]
808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
809*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x06]
810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x08]
812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
813*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0a]
814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0c]
816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0e]
818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
819*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 0, i8 -1)
820*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
821*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 1, i8 -1)
822*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
823*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 2, i8 -1)
824*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
825*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 3, i8 -1)
826*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
827*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 4, i8 -1)
828*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
829*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 5, i8 -1)
830*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
831*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 6, i8 -1)
832*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
833*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 7, i8 -1)
834*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
835*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
836*9880d681SAndroid Build Coastguard Worker}
837*9880d681SAndroid Build Coastguard Worker
838*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @test_mask_ucmp_w_128(<8 x i16> %a0, <8 x i16> %a1, i8 %mask) {
839*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_ucmp_w_128:
840*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpequw %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xc1,0x00]
843*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpltuw %xmm1, %xmm0, %k2 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xd1,0x01]
844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpleuw %xmm1, %xmm0, %k3 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xd9,0x02]
845*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpunorduw %xmm1, %xmm0, %k4 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xe1,0x03]
846*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnequw %xmm1, %xmm0, %k5 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xe9,0x04]
847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnltuw %xmm1, %xmm0, %k6 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xf1,0x05]
848*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmpnleuw %xmm1, %xmm0, %k7 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xf9,0x06]
849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpcmporduw %xmm1, %xmm0, %k1 {%k1} ## encoding: [0x62,0xf3,0xfd,0x09,0x3e,0xc9,0x07]
850*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
851*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $0, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x00]
852*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k2, %eax ## encoding: [0xc5,0xf8,0x93,0xc2]
853*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $2, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x02]
854*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k3, %eax ## encoding: [0xc5,0xf8,0x93,0xc3]
855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $4, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x04]
856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k4, %eax ## encoding: [0xc5,0xf8,0x93,0xc4]
857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $6, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x06]
858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k5, %eax ## encoding: [0xc5,0xf8,0x93,0xc5]
859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $8, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x08]
860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k6, %eax ## encoding: [0xc5,0xf8,0x93,0xc6]
861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $10, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0a]
862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k7, %eax ## encoding: [0xc5,0xf8,0x93,0xc7]
863*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $12, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0c]
864*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k1, %eax ## encoding: [0xc5,0xf8,0x93,0xc1]
865*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpinsrb $14, %eax, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x20,0xc0,0x0e]
866*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
867*9880d681SAndroid Build Coastguard Worker  %res0 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 0, i8 %mask)
868*9880d681SAndroid Build Coastguard Worker  %vec0 = insertelement <8 x i8> undef, i8 %res0, i32 0
869*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 1, i8 %mask)
870*9880d681SAndroid Build Coastguard Worker  %vec1 = insertelement <8 x i8> %vec0, i8 %res1, i32 1
871*9880d681SAndroid Build Coastguard Worker  %res2 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 2, i8 %mask)
872*9880d681SAndroid Build Coastguard Worker  %vec2 = insertelement <8 x i8> %vec1, i8 %res2, i32 2
873*9880d681SAndroid Build Coastguard Worker  %res3 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 3, i8 %mask)
874*9880d681SAndroid Build Coastguard Worker  %vec3 = insertelement <8 x i8> %vec2, i8 %res3, i32 3
875*9880d681SAndroid Build Coastguard Worker  %res4 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 4, i8 %mask)
876*9880d681SAndroid Build Coastguard Worker  %vec4 = insertelement <8 x i8> %vec3, i8 %res4, i32 4
877*9880d681SAndroid Build Coastguard Worker  %res5 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 5, i8 %mask)
878*9880d681SAndroid Build Coastguard Worker  %vec5 = insertelement <8 x i8> %vec4, i8 %res5, i32 5
879*9880d681SAndroid Build Coastguard Worker  %res6 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 6, i8 %mask)
880*9880d681SAndroid Build Coastguard Worker  %vec6 = insertelement <8 x i8> %vec5, i8 %res6, i32 6
881*9880d681SAndroid Build Coastguard Worker  %res7 = call i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16> %a0, <8 x i16> %a1, i32 7, i8 %mask)
882*9880d681SAndroid Build Coastguard Worker  %vec7 = insertelement <8 x i8> %vec6, i8 %res7, i32 7
883*9880d681SAndroid Build Coastguard Worker  ret <8 x i8> %vec7
884*9880d681SAndroid Build Coastguard Worker}
885*9880d681SAndroid Build Coastguard Worker
886*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.mask.ucmp.w.128(<8 x i16>, <8 x i16>, i32, i8) nounwind readnone
887*9880d681SAndroid Build Coastguard Worker
888*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.vfmadd.ps.256(<8 x float>, <8 x float>, <8 x float>, i8) nounwind readnone
889*9880d681SAndroid Build Coastguard Worker
890*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_vfmadd256_ps(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 %mask) {
891*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd256_ps:
892*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
893*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
894*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xa8,0xc2]
895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
896*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfmadd.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 %mask) nounwind
897*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
898*9880d681SAndroid Build Coastguard Worker}
899*9880d681SAndroid Build Coastguard Worker
900*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float>, <4 x float>, <4 x float>, i8) nounwind readnone
901*9880d681SAndroid Build Coastguard Worker
902*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
903*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps:
904*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa8,0xc2]
907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
908*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) nounwind
909*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
910*9880d681SAndroid Build Coastguard Worker}
911*9880d681SAndroid Build Coastguard Worker
912*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
913*9880d681SAndroid Build Coastguard Worker
914*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_fmadd256_pd(<4 x double> %a, <4 x double> %b, <4 x double> %c, i8 %mask) {
915*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_fmadd256_pd:
916*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xa8,0xc2]
919*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
920*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %a, <4 x double> %b, <4 x double> %c, i8 %mask)
921*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
922*9880d681SAndroid Build Coastguard Worker}
923*9880d681SAndroid Build Coastguard Worker
924*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
925*9880d681SAndroid Build Coastguard Worker
926*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_fmadd128_pd(<2 x double> %a, <2 x double> %b, <2 x double> %c, i8 %mask) {
927*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_fmadd128_pd:
928*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
929*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
930*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa8,0xc2]
931*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
932*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %a, <2 x double> %b, <2 x double> %c, i8 %mask)
933*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
934*9880d681SAndroid Build Coastguard Worker}
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vfmadd_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
937*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_pd_128:
938*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
939*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa8,0xda]
942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa8,0xc2]
943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
944*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
945*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
946*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
947*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
948*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
949*9880d681SAndroid Build Coastguard Worker}
950*9880d681SAndroid Build Coastguard Worker
951*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfmadd.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
952*9880d681SAndroid Build Coastguard Worker
953*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfmadd_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
954*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_pd_128:
955*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231pd %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb8,0xd9]
959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa8,0xc2]
960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
961*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
962*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
963*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
964*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
965*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
966*9880d681SAndroid Build Coastguard Worker}
967*9880d681SAndroid Build Coastguard Worker
968*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.maskz.vfmadd.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
969*9880d681SAndroid Build Coastguard Worker
970*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_maskz_vfmadd_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
971*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_pd_128:
972*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
974*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
975*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xa8,0xda]
976*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa8,0xc2]
977*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
978*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
979*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.maskz.vfmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
980*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.maskz.vfmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
981*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
982*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
983*9880d681SAndroid Build Coastguard Worker}
984*9880d681SAndroid Build Coastguard Worker
985*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_vfmadd_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_pd_256:
987*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xa8,0xda]
991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa8,0xc2]
992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
994*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
995*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
996*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
997*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
998*9880d681SAndroid Build Coastguard Worker}
999*9880d681SAndroid Build Coastguard Worker
1000*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask3.vfmadd.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1001*9880d681SAndroid Build Coastguard Worker
1002*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask3_vfmadd_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1003*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_pd_256:
1004*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1007*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231pd %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0xb8,0xd9]
1008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa8,0xc2]
1009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1011*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask3.vfmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1012*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask3.vfmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1013*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1014*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1015*9880d681SAndroid Build Coastguard Worker}
1016*9880d681SAndroid Build Coastguard Worker
1017*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.maskz.vfmadd.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1018*9880d681SAndroid Build Coastguard Worker
1019*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_maskz_vfmadd_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1020*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_pd_256:
1021*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1022*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xa9,0xa8,0xda]
1025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa8,0xc2]
1026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1028*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.maskz.vfmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1029*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.maskz.vfmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1030*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1031*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1032*9880d681SAndroid Build Coastguard Worker}
1033*9880d681SAndroid Build Coastguard Worker
1034*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfmadd_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1035*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ps_128:
1036*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1037*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1038*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1039*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa8,0xda]
1040*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa8,0xc2]
1041*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1043*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1044*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1045*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1046*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1047*9880d681SAndroid Build Coastguard Worker}
1048*9880d681SAndroid Build Coastguard Worker
1049*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfmadd.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1050*9880d681SAndroid Build Coastguard Worker
1051*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmadd_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1052*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ps_128:
1053*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1054*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231ps %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb8,0xd9]
1057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa8,0xc2]
1058*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1059*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1060*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1061*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1062*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1063*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1064*9880d681SAndroid Build Coastguard Worker}
1065*9880d681SAndroid Build Coastguard Worker
1066*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.maskz.vfmadd.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1067*9880d681SAndroid Build Coastguard Worker
1068*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_vfmadd_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1069*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ps_128:
1070*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1072*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1073*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xa8,0xda]
1074*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa8,0xc2]
1075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1077*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1078*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.maskz.vfmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1079*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1080*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1081*9880d681SAndroid Build Coastguard Worker}
1082*9880d681SAndroid Build Coastguard Worker
1083*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_vfmadd_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1084*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmadd_ps_256:
1085*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1088*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xa8,0xda]
1089*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa8,0xc2]
1090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1092*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1093*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.vfmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1094*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1095*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1096*9880d681SAndroid Build Coastguard Worker}
1097*9880d681SAndroid Build Coastguard Worker
1098*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask3.vfmadd.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1099*9880d681SAndroid Build Coastguard Worker
1100*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask3_vfmadd_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmadd_ps_256:
1102*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd231ps %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0xb8,0xd9]
1106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa8,0xc2]
1107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1109*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask3.vfmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1110*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask3.vfmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1111*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1112*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1113*9880d681SAndroid Build Coastguard Worker}
1114*9880d681SAndroid Build Coastguard Worker
1115*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.maskz.vfmadd.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1116*9880d681SAndroid Build Coastguard Worker
1117*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_maskz_vfmadd_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1118*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmadd_ps_256:
1119*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %ymm2, %ymm1, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xa9,0xa8,0xda]
1123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa8,0xc2]
1124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1126*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.maskz.vfmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1127*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.maskz.vfmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1128*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1129*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1130*9880d681SAndroid Build Coastguard Worker}
1131*9880d681SAndroid Build Coastguard Worker
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfmsub.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
1134*9880d681SAndroid Build Coastguard Worker
1135*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfmsub_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1136*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsub_pd_128:
1137*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub231pd %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xba,0xd9]
1141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xaa,0xc2]
1142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1144*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask3.vfmsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1145*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfmsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1146*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1147*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1148*9880d681SAndroid Build Coastguard Worker}
1149*9880d681SAndroid Build Coastguard Worker
1150*9880d681SAndroid Build Coastguard Worker
1151*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask3.vfmsub.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1152*9880d681SAndroid Build Coastguard Worker
1153*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask3_vfmsub_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsub_pd_256:
1155*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub231pd %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0xba,0xd9]
1159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xaa,0xc2]
1160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1162*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask3.vfmsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1163*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask3.vfmsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1164*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1165*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1166*9880d681SAndroid Build Coastguard Worker}
1167*9880d681SAndroid Build Coastguard Worker
1168*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfmsub.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1169*9880d681SAndroid Build Coastguard Worker
1170*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmsub_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1171*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsub_ps_128:
1172*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub231ps %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xba,0xd9]
1176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xaa,0xc2]
1177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1179*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfmsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1180*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfmsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1181*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1182*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1183*9880d681SAndroid Build Coastguard Worker}
1184*9880d681SAndroid Build Coastguard Worker
1185*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask3.vfmsub.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1186*9880d681SAndroid Build Coastguard Worker
1187*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask3_vfmsub_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1188*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsub_ps_256:
1189*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub231ps %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0xba,0xd9]
1193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsub213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xaa,0xc2]
1194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1196*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask3.vfmsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1197*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask3.vfmsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1198*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1199*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1200*9880d681SAndroid Build Coastguard Worker}
1201*9880d681SAndroid Build Coastguard Worker
1202*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.vfnmadd.ps.256(<8 x float>, <8 x float>, <8 x float>, i8) nounwind readnone
1203*9880d681SAndroid Build Coastguard Worker
1204*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_vfnmadd256_ps(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 %mask) {
1205*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmadd256_ps:
1206*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xac,0xc2]
1209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1210*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfnmadd.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 %mask) nounwind
1211*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1212*9880d681SAndroid Build Coastguard Worker}
1213*9880d681SAndroid Build Coastguard Worker
1214*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vfnmadd.ps.128(<4 x float>, <4 x float>, <4 x float>, i8) nounwind readnone
1215*9880d681SAndroid Build Coastguard Worker
1216*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfnmadd128_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
1217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmadd128_ps:
1218*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xac,0xc2]
1221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1222*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfnmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) nounwind
1223*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1224*9880d681SAndroid Build Coastguard Worker}
1225*9880d681SAndroid Build Coastguard Worker
1226*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.vfnmadd.pd.256(<4 x double>, <4 x double>, <4 x double>, i8) nounwind readnone
1227*9880d681SAndroid Build Coastguard Worker
1228*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfnmadd256_pd(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) {
1229*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmadd256_pd:
1230*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1232*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xac,0xc2]
1233*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1234*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfnmadd.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) nounwind
1235*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1236*9880d681SAndroid Build Coastguard Worker}
1237*9880d681SAndroid Build Coastguard Worker
1238*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vfnmadd.pd.128(<2 x double>, <2 x double>, <2 x double>, i8) nounwind readnone
1239*9880d681SAndroid Build Coastguard Worker
1240*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfnmadd128_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
1241*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmadd128_pd:
1242*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1244*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xac,0xc2]
1245*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1246*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfnmadd.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) nounwind
1247*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1248*9880d681SAndroid Build Coastguard Worker}
1249*9880d681SAndroid Build Coastguard Worker
1250*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.vfnmsub.ps.256(<8 x float>, <8 x float>, <8 x float>, i8) nounwind readnone
1251*9880d681SAndroid Build Coastguard Worker
1252*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_vfnmsub256_ps(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 %mask) {
1253*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmsub256_ps:
1254*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xae,0xc2]
1257*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1258*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfnmsub.ps.256(<8 x float> %a0, <8 x float> %a1, <8 x float> %a2, i8 %mask) nounwind
1259*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1260*9880d681SAndroid Build Coastguard Worker}
1261*9880d681SAndroid Build Coastguard Worker
1262*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vfnmsub.ps.128(<4 x float>, <4 x float>, <4 x float>, i8) nounwind readnone
1263*9880d681SAndroid Build Coastguard Worker
1264*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfnmsub128_ps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
1265*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmsub128_ps:
1266*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xae,0xc2]
1269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1270*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfnmsub.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) nounwind
1271*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1272*9880d681SAndroid Build Coastguard Worker}
1273*9880d681SAndroid Build Coastguard Worker
1274*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.vfnmsub.pd.256(<4 x double>, <4 x double>, <4 x double>, i8) nounwind readnone
1275*9880d681SAndroid Build Coastguard Worker
1276*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfnmsub256_pd(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) {
1277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmsub256_pd:
1278*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xae,0xc2]
1281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1282*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfnmsub.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) nounwind
1283*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1284*9880d681SAndroid Build Coastguard Worker}
1285*9880d681SAndroid Build Coastguard Worker
1286*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vfnmsub.pd.128(<2 x double>, <2 x double>, <2 x double>, i8) nounwind readnone
1287*9880d681SAndroid Build Coastguard Worker
1288*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfnmsub128_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
1289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfnmsub128_pd:
1290*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xae,0xc2]
1293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1294*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfnmsub.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) nounwind
1295*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1296*9880d681SAndroid Build Coastguard Worker}
1297*9880d681SAndroid Build Coastguard Worker
1298*9880d681SAndroid Build Coastguard Worker
1299*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vfnmsub_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1300*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmsub_pd_128:
1301*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xae,0xda]
1305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xae,0xc2]
1306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1308*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfnmsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1309*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vfnmsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1310*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1311*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1312*9880d681SAndroid Build Coastguard Worker}
1313*9880d681SAndroid Build Coastguard Worker
1314*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
1315*9880d681SAndroid Build Coastguard Worker
1316*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfnmsub_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1317*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfnmsub_pd_128:
1318*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1319*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1320*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1321*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub231pd %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xbe,0xd9]
1322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xae,0xc2]
1323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1325*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1326*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1327*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1328*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1329*9880d681SAndroid Build Coastguard Worker}
1330*9880d681SAndroid Build Coastguard Worker
1331*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_vfnmsub_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1332*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmsub_pd_256:
1333*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1334*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xae,0xda]
1337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xae,0xc2]
1338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1340*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfnmsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1341*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.vfnmsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1342*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1343*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1344*9880d681SAndroid Build Coastguard Worker}
1345*9880d681SAndroid Build Coastguard Worker
1346*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1347*9880d681SAndroid Build Coastguard Worker
1348*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask3_vfnmsub_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1349*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfnmsub_pd_256:
1350*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub231pd %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0xbe,0xd9]
1354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xae,0xc2]
1355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1357*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1358*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask3.vfnmsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1359*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1360*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1361*9880d681SAndroid Build Coastguard Worker}
1362*9880d681SAndroid Build Coastguard Worker
1363*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfnmsub_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1364*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmsub_ps_128:
1365*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xae,0xda]
1369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xae,0xc2]
1370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1372*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfnmsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1373*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.vfnmsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1374*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1375*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1376*9880d681SAndroid Build Coastguard Worker}
1377*9880d681SAndroid Build Coastguard Worker
1378*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1379*9880d681SAndroid Build Coastguard Worker
1380*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfnmsub_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1381*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfnmsub_ps_128:
1382*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1384*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1385*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub231ps %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xbe,0xd9]
1386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xae,0xc2]
1387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1389*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1390*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1391*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1392*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1393*9880d681SAndroid Build Coastguard Worker}
1394*9880d681SAndroid Build Coastguard Worker
1395*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_vfnmsub_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1396*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmsub_ps_256:
1397*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1398*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1399*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xae,0xda]
1401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xae,0xc2]
1402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1404*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfnmsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1405*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.vfnmsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1406*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1407*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1408*9880d681SAndroid Build Coastguard Worker}
1409*9880d681SAndroid Build Coastguard Worker
1410*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1411*9880d681SAndroid Build Coastguard Worker
1412*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask3_vfnmsub_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1413*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfnmsub_ps_256:
1414*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1417*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub231ps %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0xbe,0xd9]
1418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmsub213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xae,0xc2]
1419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1421*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1422*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask3.vfnmsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1423*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1424*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1425*9880d681SAndroid Build Coastguard Worker}
1426*9880d681SAndroid Build Coastguard Worker
1427*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vfnmadd_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1428*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmadd_pd_128:
1429*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xac,0xda]
1433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xac,0xc2]
1434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1436*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfnmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1437*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vfnmadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1438*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1439*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1440*9880d681SAndroid Build Coastguard Worker}
1441*9880d681SAndroid Build Coastguard Worker
1442*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_vfnmadd_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1443*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmadd_pd_256:
1444*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xac,0xda]
1448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xac,0xc2]
1449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1451*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfnmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1452*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.vfnmadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1453*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1454*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1455*9880d681SAndroid Build Coastguard Worker}
1456*9880d681SAndroid Build Coastguard Worker
1457*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfnmadd_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1458*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmadd_ps_128:
1459*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1461*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1462*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xac,0xda]
1463*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xac,0xc2]
1464*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1466*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfnmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1467*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.vfnmadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1468*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1469*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1470*9880d681SAndroid Build Coastguard Worker}
1471*9880d681SAndroid Build Coastguard Worker
1472*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_vfnmadd_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1473*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfnmadd_ps_256:
1474*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1475*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xac,0xda]
1478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfnmadd213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xac,0xc2]
1479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1480*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1481*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfnmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1482*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.vfnmadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1483*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1484*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1485*9880d681SAndroid Build Coastguard Worker}
1486*9880d681SAndroid Build Coastguard Worker
1487*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.256(<8 x float>, <8 x float>, <8 x float>, i8) nounwind readnone
1488*9880d681SAndroid Build Coastguard Worker
1489*9880d681SAndroid Build Coastguard Workerdefine <8 x float> @test_mask_fmaddsub256_ps(<8 x float> %a, <8 x float> %b, <8 x float> %c, i8 %mask) {
1490*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_fmaddsub256_ps:
1491*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xa6,0xc2]
1494*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1495*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.256(<8 x float> %a, <8 x float> %b, <8 x float> %c, i8 %mask)
1496*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res
1497*9880d681SAndroid Build Coastguard Worker}
1498*9880d681SAndroid Build Coastguard Worker
1499*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.128(<4 x float>, <4 x float>, <4 x float>, i8) nounwind readnone
1500*9880d681SAndroid Build Coastguard Worker
1501*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_fmaddsub128_ps(<4 x float> %a, <4 x float> %b, <4 x float> %c, i8 %mask) {
1502*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_fmaddsub128_ps:
1503*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1504*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1505*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa6,0xc2]
1506*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1507*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.128(<4 x float> %a, <4 x float> %b, <4 x float> %c, i8 %mask)
1508*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1509*9880d681SAndroid Build Coastguard Worker}
1510*9880d681SAndroid Build Coastguard Worker
1511*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.256(<4 x double>, <4 x double>, <4 x double>, i8) nounwind readnone
1512*9880d681SAndroid Build Coastguard Worker
1513*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfmaddsub256_pd(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) {
1514*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmaddsub256_pd:
1515*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xa6,0xc2]
1518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1519*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) nounwind
1520*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1521*9880d681SAndroid Build Coastguard Worker}
1522*9880d681SAndroid Build Coastguard Worker
1523*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.128(<2 x double>, <2 x double>, <2 x double>, i8) nounwind readnone
1524*9880d681SAndroid Build Coastguard Worker
1525*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfmaddsub128_pd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
1526*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmaddsub128_pd:
1527*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1528*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1529*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa6,0xc2]
1530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1531*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) nounwind
1532*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1533*9880d681SAndroid Build Coastguard Worker}
1534*9880d681SAndroid Build Coastguard Worker
1535*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask_vfmaddsub_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1536*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmaddsub_pd_128:
1537*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1538*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1539*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1540*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa6,0xda]
1541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa6,0xc2]
1542*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1543*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1544*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1545*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1546*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1547*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1548*9880d681SAndroid Build Coastguard Worker}
1549*9880d681SAndroid Build Coastguard Worker
1550*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
1551*9880d681SAndroid Build Coastguard Worker
1552*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfmaddsub_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1553*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmaddsub_pd_128:
1554*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1556*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1557*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub231pd %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb6,0xd9]
1558*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa6,0xc2]
1559*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1560*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1561*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1562*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1563*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1564*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1565*9880d681SAndroid Build Coastguard Worker}
1566*9880d681SAndroid Build Coastguard Worker
1567*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
1568*9880d681SAndroid Build Coastguard Worker
1569*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_maskz_vfmaddsub_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1570*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmaddsub_pd_128:
1571*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %xmm2, %xmm1, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0xa6,0xda]
1575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa6,0xc2]
1576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1578*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1579*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1580*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <2 x double> %res, %res1
1581*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1582*9880d681SAndroid Build Coastguard Worker}
1583*9880d681SAndroid Build Coastguard Worker
1584*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask_vfmaddsub_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1585*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmaddsub_pd_256:
1586*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xa6,0xda]
1590*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa6,0xc2]
1591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1593*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1594*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask.vfmaddsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1595*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1596*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1597*9880d681SAndroid Build Coastguard Worker}
1598*9880d681SAndroid Build Coastguard Worker
1599*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1600*9880d681SAndroid Build Coastguard Worker
1601*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask3_vfmaddsub_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1602*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmaddsub_pd_256:
1603*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1604*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1605*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1606*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub231pd %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0xb6,0xd9]
1607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa6,0xc2]
1608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1610*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1611*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask3.vfmaddsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1612*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1613*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1614*9880d681SAndroid Build Coastguard Worker}
1615*9880d681SAndroid Build Coastguard Worker
1616*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1617*9880d681SAndroid Build Coastguard Worker
1618*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_maskz_vfmaddsub_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1619*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmaddsub_pd_256:
1620*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1621*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1622*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1623*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %ymm2, %ymm1, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xa9,0xa6,0xda]
1624*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa6,0xc2]
1625*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1626*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1627*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1628*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.maskz.vfmaddsub.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1629*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x double> %res, %res1
1630*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1631*9880d681SAndroid Build Coastguard Worker}
1632*9880d681SAndroid Build Coastguard Worker
1633*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask_vfmaddsub_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1634*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmaddsub_ps_128:
1635*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1636*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1637*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1638*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %xmm2, %xmm1, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa6,0xda]
1639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa6,0xc2]
1640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1642*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1643*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1644*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1645*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1646*9880d681SAndroid Build Coastguard Worker}
1647*9880d681SAndroid Build Coastguard Worker
1648*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1649*9880d681SAndroid Build Coastguard Worker
1650*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmaddsub_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1651*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmaddsub_ps_128:
1652*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub231ps %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb6,0xd9]
1656*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa6,0xc2]
1657*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1658*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1659*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1660*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1661*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1662*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1663*9880d681SAndroid Build Coastguard Worker}
1664*9880d681SAndroid Build Coastguard Worker
1665*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1666*9880d681SAndroid Build Coastguard Worker
1667*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_maskz_vfmaddsub_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1668*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmaddsub_ps_128:
1669*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %xmm2, %xmm1, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0x89,0xa6,0xda]
1673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa6,0xc2]
1674*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1675*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1676*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1677*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1678*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <4 x float> %res, %res1
1679*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1680*9880d681SAndroid Build Coastguard Worker}
1681*9880d681SAndroid Build Coastguard Worker
1682*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask_vfmaddsub_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1683*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vfmaddsub_ps_256:
1684*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1686*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1687*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %ymm2, %ymm1, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x75,0x29,0xa6,0xda]
1688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa6,0xc2]
1689*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1690*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1691*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1692*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask.vfmaddsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1693*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1694*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1695*9880d681SAndroid Build Coastguard Worker}
1696*9880d681SAndroid Build Coastguard Worker
1697*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1698*9880d681SAndroid Build Coastguard Worker
1699*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask3_vfmaddsub_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1700*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmaddsub_ps_256:
1701*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1704*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub231ps %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0xb6,0xd9]
1705*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa6,0xc2]
1706*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1708*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1709*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask3.vfmaddsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1710*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1711*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1712*9880d681SAndroid Build Coastguard Worker}
1713*9880d681SAndroid Build Coastguard Worker
1714*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1715*9880d681SAndroid Build Coastguard Worker
1716*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_maskz_vfmaddsub_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1717*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vfmaddsub_ps_256:
1718*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm0, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd8]
1721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %ymm2, %ymm1, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0x75,0xa9,0xa6,0xda]
1722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmaddsub213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa6,0xc2]
1723*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1724*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1725*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1726*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.maskz.vfmaddsub.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1727*9880d681SAndroid Build Coastguard Worker  %res2 = fadd <8 x float> %res, %res1
1728*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1729*9880d681SAndroid Build Coastguard Worker}
1730*9880d681SAndroid Build Coastguard Worker
1731*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.128(<2 x double>, <2 x double>, <2 x double>, i8)
1732*9880d681SAndroid Build Coastguard Worker
1733*9880d681SAndroid Build Coastguard Workerdefine <2 x double>@test_int_x86_avx512_mask3_vfmsubadd_pd_128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3) {
1734*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsubadd_pd_128:
1735*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd231pd %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0xb7,0xd9]
1739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa7,0xc2]
1740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0xe5,0x08,0x58,0xc0]
1741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1742*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 %x3)
1743*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.128(<2 x double> %x0, <2 x double> %x1, <2 x double> %x2, i8 -1)
1744*9880d681SAndroid Build Coastguard Worker  %res2=fadd <2 x double> %res, %res1
1745*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res2
1746*9880d681SAndroid Build Coastguard Worker}
1747*9880d681SAndroid Build Coastguard Worker
1748*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.256(<4 x double>, <4 x double>, <4 x double>, i8)
1749*9880d681SAndroid Build Coastguard Worker
1750*9880d681SAndroid Build Coastguard Workerdefine <4 x double>@test_int_x86_avx512_mask3_vfmsubadd_pd_256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3) {
1751*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsubadd_pd_256:
1752*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1753*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd231pd %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0xb7,0xd9]
1756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa7,0xc2]
1757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddpd %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0xe5,0x28,0x58,0xc0]
1758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1759*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 %x3)
1760*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x double> @llvm.x86.avx512.mask3.vfmsubadd.pd.256(<4 x double> %x0, <4 x double> %x1, <4 x double> %x2, i8 -1)
1761*9880d681SAndroid Build Coastguard Worker  %res2=fadd <4 x double> %res, %res1
1762*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res2
1763*9880d681SAndroid Build Coastguard Worker}
1764*9880d681SAndroid Build Coastguard Worker
1765*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.128(<4 x float>, <4 x float>, <4 x float>, i8)
1766*9880d681SAndroid Build Coastguard Worker
1767*9880d681SAndroid Build Coastguard Workerdefine <4 x float>@test_int_x86_avx512_mask3_vfmsubadd_ps_128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3) {
1768*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsubadd_ps_128:
1769*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1770*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1771*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1772*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd231ps %xmm1, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0xb7,0xd9]
1773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa7,0xc2]
1774*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x64,0x08,0x58,0xc0]
1775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1776*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 %x3)
1777*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.128(<4 x float> %x0, <4 x float> %x1, <4 x float> %x2, i8 -1)
1778*9880d681SAndroid Build Coastguard Worker  %res2=fadd <4 x float> %res, %res1
1779*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res2
1780*9880d681SAndroid Build Coastguard Worker}
1781*9880d681SAndroid Build Coastguard Worker
1782*9880d681SAndroid Build Coastguard Workerdeclare <8 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.256(<8 x float>, <8 x float>, <8 x float>, i8)
1783*9880d681SAndroid Build Coastguard Worker
1784*9880d681SAndroid Build Coastguard Workerdefine <8 x float>@test_int_x86_avx512_mask3_vfmsubadd_ps_256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3) {
1785*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask3_vfmsubadd_ps_256:
1786*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1787*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1788*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xda]
1789*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd231ps %ymm1, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0xb7,0xd9]
1790*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmsubadd213ps %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0x75,0x28,0xa7,0xc2]
1791*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vaddps %ymm0, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x64,0x28,0x58,0xc0]
1792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1793*9880d681SAndroid Build Coastguard Worker  %res = call <8 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 %x3)
1794*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x float> @llvm.x86.avx512.mask3.vfmsubadd.ps.256(<8 x float> %x0, <8 x float> %x1, <8 x float> %x2, i8 -1)
1795*9880d681SAndroid Build Coastguard Worker  %res2=fadd <8 x float> %res, %res1
1796*9880d681SAndroid Build Coastguard Worker  ret <8 x float> %res2
1797*9880d681SAndroid Build Coastguard Worker}
1798*9880d681SAndroid Build Coastguard Worker
1799*9880d681SAndroid Build Coastguard Worker
1800*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_r(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) {
1801*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_r:
1802*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1803*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa8,0xc2]
1805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1806*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) nounwind
1807*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1808*9880d681SAndroid Build Coastguard Worker}
1809*9880d681SAndroid Build Coastguard Worker
1810*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rz(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2) {
1811*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rz:
1812*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1813*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa8,0xc2]
1814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1815*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 -1) nounwind
1816*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1817*9880d681SAndroid Build Coastguard Worker}
1818*9880d681SAndroid Build Coastguard Worker
1819*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmk(<4 x float> %a0, <4 x float> %a1, <4 x float>* %ptr_a2, i8 %mask) {
1820*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmk:
1821*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1822*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1823*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi), %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa8,0x07]
1824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1825*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x float>, <4 x float>* %ptr_a2
1826*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) nounwind
1827*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1828*9880d681SAndroid Build Coastguard Worker}
1829*9880d681SAndroid Build Coastguard Worker
1830*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmka(<4 x float> %a0, <4 x float> %a1, <4 x float>* %ptr_a2, i8 %mask) {
1831*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmka:
1832*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1833*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1834*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi), %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x09,0xa8,0x07]
1835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1836*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x float>, <4 x float>* %ptr_a2, align 8
1837*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 %mask) nounwind
1838*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1839*9880d681SAndroid Build Coastguard Worker}
1840*9880d681SAndroid Build Coastguard Worker
1841*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmkz(<4 x float> %a0, <4 x float> %a1, <4 x float>* %ptr_a2) {
1842*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmkz:
1843*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi), %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa8,0x07]
1845*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1846*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x float>, <4 x float>* %ptr_a2
1847*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 -1) nounwind
1848*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1849*9880d681SAndroid Build Coastguard Worker}
1850*9880d681SAndroid Build Coastguard Worker
1851*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmkza(<4 x float> %a0, <4 x float> %a1, <4 x float>* %ptr_a2) {
1852*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmkza:
1853*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1854*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi), %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x08,0xa8,0x07]
1855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1856*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x float>, <4 x float>* %ptr_a2, align 4
1857*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2, i8 -1) nounwind
1858*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1859*9880d681SAndroid Build Coastguard Worker}
1860*9880d681SAndroid Build Coastguard Worker
1861*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmb(<4 x float> %a0, <4 x float> %a1, float* %ptr_a2, i8 %mask) {
1862*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmb:
1863*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1864*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1865*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi){1to4}, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x19,0xa8,0x07]
1866*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1867*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_a2
1868*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1869*9880d681SAndroid Build Coastguard Worker  %vecinit2.i = insertelement <4 x float> %vecinit.i, float %q, i32 1
1870*9880d681SAndroid Build Coastguard Worker  %vecinit4.i = insertelement <4 x float> %vecinit2.i, float %q, i32 2
1871*9880d681SAndroid Build Coastguard Worker  %vecinit6.i = insertelement <4 x float> %vecinit4.i, float %q, i32 3
1872*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %vecinit6.i, i8 %mask) nounwind
1873*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1874*9880d681SAndroid Build Coastguard Worker}
1875*9880d681SAndroid Build Coastguard Worker
1876*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmba(<4 x float> %a0, <4 x float> %a1, float* %ptr_a2, i8 %mask) {
1877*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmba:
1878*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi){1to4}, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x75,0x19,0xa8,0x07]
1881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1882*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_a2, align 4
1883*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1884*9880d681SAndroid Build Coastguard Worker  %vecinit2.i = insertelement <4 x float> %vecinit.i, float %q, i32 1
1885*9880d681SAndroid Build Coastguard Worker  %vecinit4.i = insertelement <4 x float> %vecinit2.i, float %q, i32 2
1886*9880d681SAndroid Build Coastguard Worker  %vecinit6.i = insertelement <4 x float> %vecinit4.i, float %q, i32 3
1887*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %vecinit6.i, i8 %mask) nounwind
1888*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1889*9880d681SAndroid Build Coastguard Worker}
1890*9880d681SAndroid Build Coastguard Worker
1891*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmbz(<4 x float> %a0, <4 x float> %a1, float* %ptr_a2) {
1892*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmbz:
1893*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1894*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi){1to4}, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xa8,0x07]
1895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1896*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_a2
1897*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1898*9880d681SAndroid Build Coastguard Worker  %vecinit2.i = insertelement <4 x float> %vecinit.i, float %q, i32 1
1899*9880d681SAndroid Build Coastguard Worker  %vecinit4.i = insertelement <4 x float> %vecinit2.i, float %q, i32 2
1900*9880d681SAndroid Build Coastguard Worker  %vecinit6.i = insertelement <4 x float> %vecinit4.i, float %q, i32 3
1901*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %vecinit6.i, i8 -1) nounwind
1902*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1903*9880d681SAndroid Build Coastguard Worker}
1904*9880d681SAndroid Build Coastguard Worker
1905*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test_mask_vfmadd128_ps_rmbza(<4 x float> %a0, <4 x float> %a1, float* %ptr_a2) {
1906*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_ps_rmbza:
1907*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213ps (%rdi){1to4}, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0x75,0x18,0xa8,0x07]
1909*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1910*9880d681SAndroid Build Coastguard Worker  %q = load float, float* %ptr_a2, align 4
1911*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x float> undef, float %q, i32 0
1912*9880d681SAndroid Build Coastguard Worker  %vecinit2.i = insertelement <4 x float> %vecinit.i, float %q, i32 1
1913*9880d681SAndroid Build Coastguard Worker  %vecinit4.i = insertelement <4 x float> %vecinit2.i, float %q, i32 2
1914*9880d681SAndroid Build Coastguard Worker  %vecinit6.i = insertelement <4 x float> %vecinit4.i, float %q, i32 3
1915*9880d681SAndroid Build Coastguard Worker  %res = call <4 x float> @llvm.x86.avx512.mask.vfmadd.ps.128(<4 x float> %a0, <4 x float> %a1, <4 x float> %vecinit6.i, i8 -1) nounwind
1916*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %res
1917*9880d681SAndroid Build Coastguard Worker}
1918*9880d681SAndroid Build Coastguard Worker
1919*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfmadd128_pd_r(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) {
1920*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_pd_r:
1921*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa8,0xc2]
1924*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1925*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) nounwind
1926*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1927*9880d681SAndroid Build Coastguard Worker}
1928*9880d681SAndroid Build Coastguard Worker
1929*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfmadd128_pd_rz(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2) {
1930*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_pd_rz:
1931*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %xmm2, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa8,0xc2]
1933*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1934*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 -1) nounwind
1935*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1936*9880d681SAndroid Build Coastguard Worker}
1937*9880d681SAndroid Build Coastguard Worker
1938*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfmadd128_pd_rmk(<2 x double> %a0, <2 x double> %a1, <2 x double>* %ptr_a2, i8 %mask) {
1939*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_pd_rmk:
1940*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd (%rdi), %xmm1, %xmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0xa8,0x07]
1943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1944*9880d681SAndroid Build Coastguard Worker  %a2 = load <2 x double>, <2 x double>* %ptr_a2
1945*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 %mask) nounwind
1946*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1947*9880d681SAndroid Build Coastguard Worker}
1948*9880d681SAndroid Build Coastguard Worker
1949*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @test_mask_vfmadd128_pd_rmkz(<2 x double> %a0, <2 x double> %a1, <2 x double>* %ptr_a2) {
1950*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd128_pd_rmkz:
1951*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd (%rdi), %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0xa8,0x07]
1953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1954*9880d681SAndroid Build Coastguard Worker  %a2 = load <2 x double>, <2 x double>* %ptr_a2
1955*9880d681SAndroid Build Coastguard Worker  %res = call <2 x double> @llvm.x86.avx512.mask.vfmadd.pd.128(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2, i8 -1) nounwind
1956*9880d681SAndroid Build Coastguard Worker  ret <2 x double> %res
1957*9880d681SAndroid Build Coastguard Worker}
1958*9880d681SAndroid Build Coastguard Worker
1959*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfmadd256_pd_r(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) {
1960*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd256_pd_r:
1961*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1962*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
1963*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xa8,0xc2]
1964*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1965*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) nounwind
1966*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1967*9880d681SAndroid Build Coastguard Worker}
1968*9880d681SAndroid Build Coastguard Worker
1969*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfmadd256_pd_rz(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2) {
1970*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd256_pd_rz:
1971*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd %ymm2, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa8,0xc2]
1973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1974*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 -1) nounwind
1975*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1976*9880d681SAndroid Build Coastguard Worker}
1977*9880d681SAndroid Build Coastguard Worker
1978*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfmadd256_pd_rmk(<4 x double> %a0, <4 x double> %a1, <4 x double>* %ptr_a2, i8 %mask) {
1979*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd256_pd_rmk:
1980*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1981*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
1982*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd (%rdi), %ymm1, %ymm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0xa8,0x07]
1983*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1984*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x double>, <4 x double>* %ptr_a2
1985*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 %mask) nounwind
1986*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1987*9880d681SAndroid Build Coastguard Worker}
1988*9880d681SAndroid Build Coastguard Worker
1989*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test_mask_vfmadd256_pd_rmkz(<4 x double> %a0, <4 x double> %a1, <4 x double>* %ptr_a2) {
1990*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_vfmadd256_pd_rmkz:
1991*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
1992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vfmadd213pd (%rdi), %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0xa8,0x07]
1993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
1994*9880d681SAndroid Build Coastguard Worker  %a2 = load <4 x double>, <4 x double>* %ptr_a2
1995*9880d681SAndroid Build Coastguard Worker  %res = call <4 x double> @llvm.x86.avx512.mask.vfmadd.pd.256(<4 x double> %a0, <4 x double> %a1, <4 x double> %a2, i8 -1) nounwind
1996*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %res
1997*9880d681SAndroid Build Coastguard Worker}
1998*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_add_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
1999*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rr_128:
2000*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfd,0xc1]
2002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2003*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
2004*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2005*9880d681SAndroid Build Coastguard Worker}
2006*9880d681SAndroid Build Coastguard Worker
2007*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_add_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
2008*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rrk_128:
2009*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xfd,0xd1]
2012*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2013*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2014*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
2015*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2016*9880d681SAndroid Build Coastguard Worker}
2017*9880d681SAndroid Build Coastguard Worker
2018*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_add_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
2019*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rrkz_128:
2020*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2021*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2022*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xfd,0xc1]
2023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2024*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
2025*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2026*9880d681SAndroid Build Coastguard Worker}
2027*9880d681SAndroid Build Coastguard Worker
2028*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_add_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
2029*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rm_128:
2030*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfd,0x07]
2032*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2033*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2034*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
2035*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2036*9880d681SAndroid Build Coastguard Worker}
2037*9880d681SAndroid Build Coastguard Worker
2038*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_add_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2039*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rmk_128:
2040*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2041*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xfd,0x0f]
2043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2045*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2046*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
2047*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2048*9880d681SAndroid Build Coastguard Worker}
2049*9880d681SAndroid Build Coastguard Worker
2050*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_add_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
2051*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rmkz_128:
2052*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2053*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2054*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xfd,0x07]
2055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2056*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2057*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
2058*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2059*9880d681SAndroid Build Coastguard Worker}
2060*9880d681SAndroid Build Coastguard Worker
2061*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.padd.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
2062*9880d681SAndroid Build Coastguard Worker
2063*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_add_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
2064*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rr_256:
2065*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xfd,0xc1]
2067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2068*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
2069*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2070*9880d681SAndroid Build Coastguard Worker}
2071*9880d681SAndroid Build Coastguard Worker
2072*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_add_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
2073*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rrk_256:
2074*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xfd,0xd1]
2077*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2078*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2079*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
2080*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2081*9880d681SAndroid Build Coastguard Worker}
2082*9880d681SAndroid Build Coastguard Worker
2083*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_add_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
2084*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rrkz_256:
2085*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xfd,0xc1]
2088*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2089*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
2090*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2091*9880d681SAndroid Build Coastguard Worker}
2092*9880d681SAndroid Build Coastguard Worker
2093*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_add_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
2094*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rm_256:
2095*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xfd,0x07]
2097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2098*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2099*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
2100*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2101*9880d681SAndroid Build Coastguard Worker}
2102*9880d681SAndroid Build Coastguard Worker
2103*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_add_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
2104*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rmk_256:
2105*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xfd,0x0f]
2108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2110*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2111*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
2112*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2113*9880d681SAndroid Build Coastguard Worker}
2114*9880d681SAndroid Build Coastguard Worker
2115*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_add_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
2116*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rmkz_256:
2117*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xfd,0x07]
2120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2121*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2122*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
2123*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2124*9880d681SAndroid Build Coastguard Worker}
2125*9880d681SAndroid Build Coastguard Worker
2126*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.padd.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
2127*9880d681SAndroid Build Coastguard Worker
2128*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_sub_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
2129*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rr_128:
2130*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xf9,0xc1]
2132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2133*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
2134*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2135*9880d681SAndroid Build Coastguard Worker}
2136*9880d681SAndroid Build Coastguard Worker
2137*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_sub_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
2138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rrk_128:
2139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xf9,0xd1]
2142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2144*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
2145*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2146*9880d681SAndroid Build Coastguard Worker}
2147*9880d681SAndroid Build Coastguard Worker
2148*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_sub_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
2149*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rrkz_128:
2150*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xf9,0xc1]
2153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2154*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
2155*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2156*9880d681SAndroid Build Coastguard Worker}
2157*9880d681SAndroid Build Coastguard Worker
2158*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_sub_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
2159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rm_128:
2160*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xf9,0x07]
2162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2163*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2164*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
2165*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2166*9880d681SAndroid Build Coastguard Worker}
2167*9880d681SAndroid Build Coastguard Worker
2168*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_sub_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2169*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rmk_128:
2170*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xf9,0x0f]
2173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2175*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2176*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
2177*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2178*9880d681SAndroid Build Coastguard Worker}
2179*9880d681SAndroid Build Coastguard Worker
2180*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_sub_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
2181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rmkz_128:
2182*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xf9,0x07]
2185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2186*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2187*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
2188*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2189*9880d681SAndroid Build Coastguard Worker}
2190*9880d681SAndroid Build Coastguard Worker
2191*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psub.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
2192*9880d681SAndroid Build Coastguard Worker
2193*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_sub_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
2194*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rr_256:
2195*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xf9,0xc1]
2197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2198*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
2199*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2200*9880d681SAndroid Build Coastguard Worker}
2201*9880d681SAndroid Build Coastguard Worker
2202*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_sub_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
2203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rrk_256:
2204*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xf9,0xd1]
2207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2209*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
2210*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2211*9880d681SAndroid Build Coastguard Worker}
2212*9880d681SAndroid Build Coastguard Worker
2213*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_sub_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
2214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rrkz_256:
2215*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xf9,0xc1]
2218*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2219*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
2220*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2221*9880d681SAndroid Build Coastguard Worker}
2222*9880d681SAndroid Build Coastguard Worker
2223*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_sub_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
2224*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rm_256:
2225*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xf9,0x07]
2227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2228*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2229*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
2230*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2231*9880d681SAndroid Build Coastguard Worker}
2232*9880d681SAndroid Build Coastguard Worker
2233*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_sub_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
2234*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rmk_256:
2235*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2236*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xf9,0x0f]
2238*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2240*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2241*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
2242*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2243*9880d681SAndroid Build Coastguard Worker}
2244*9880d681SAndroid Build Coastguard Worker
2245*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_sub_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
2246*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rmkz_256:
2247*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xf9,0x07]
2250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2251*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2252*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
2253*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2254*9880d681SAndroid Build Coastguard Worker}
2255*9880d681SAndroid Build Coastguard Worker
2256*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psub.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
2257*9880d681SAndroid Build Coastguard Worker
2258*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_add_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
2259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rr_512:
2260*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0xfd,0xc1]
2262*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2263*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
2264*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2265*9880d681SAndroid Build Coastguard Worker}
2266*9880d681SAndroid Build Coastguard Worker
2267*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_add_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
2268*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rrk_512:
2269*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2271*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x49,0xfd,0xd1]
2272*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2274*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
2275*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2276*9880d681SAndroid Build Coastguard Worker}
2277*9880d681SAndroid Build Coastguard Worker
2278*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_add_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
2279*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rrkz_512:
2280*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0xfd,0xc1]
2283*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2284*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
2285*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2286*9880d681SAndroid Build Coastguard Worker}
2287*9880d681SAndroid Build Coastguard Worker
2288*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_add_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
2289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rm_512:
2290*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0xfd,0x07]
2292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2293*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2294*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
2295*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2296*9880d681SAndroid Build Coastguard Worker}
2297*9880d681SAndroid Build Coastguard Worker
2298*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_add_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
2299*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rmk_512:
2300*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2301*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2302*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x49,0xfd,0x0f]
2303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2305*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2306*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
2307*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2308*9880d681SAndroid Build Coastguard Worker}
2309*9880d681SAndroid Build Coastguard Worker
2310*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_add_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
2311*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_add_epi16_rmkz_512:
2312*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2313*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0xfd,0x07]
2315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2316*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2317*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
2318*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2319*9880d681SAndroid Build Coastguard Worker}
2320*9880d681SAndroid Build Coastguard Worker
2321*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.padd.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2322*9880d681SAndroid Build Coastguard Worker
2323*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_sub_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
2324*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rr_512:
2325*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0xf9,0xc1]
2327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2328*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
2329*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2330*9880d681SAndroid Build Coastguard Worker}
2331*9880d681SAndroid Build Coastguard Worker
2332*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_sub_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
2333*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rrk_512:
2334*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2335*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2336*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x49,0xf9,0xd1]
2337*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2339*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
2340*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2341*9880d681SAndroid Build Coastguard Worker}
2342*9880d681SAndroid Build Coastguard Worker
2343*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_sub_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
2344*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rrkz_512:
2345*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2346*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0xf9,0xc1]
2348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2349*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
2350*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2351*9880d681SAndroid Build Coastguard Worker}
2352*9880d681SAndroid Build Coastguard Worker
2353*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_sub_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
2354*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rm_512:
2355*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0xf9,0x07]
2357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2358*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2359*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
2360*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2361*9880d681SAndroid Build Coastguard Worker}
2362*9880d681SAndroid Build Coastguard Worker
2363*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_sub_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
2364*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rmk_512:
2365*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2366*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x49,0xf9,0x0f]
2368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2370*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2371*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
2372*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2373*9880d681SAndroid Build Coastguard Worker}
2374*9880d681SAndroid Build Coastguard Worker
2375*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_sub_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
2376*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_sub_epi16_rmkz_512:
2377*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2378*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2379*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubw (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0xf9,0x07]
2380*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2381*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2382*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
2383*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2384*9880d681SAndroid Build Coastguard Worker}
2385*9880d681SAndroid Build Coastguard Worker
2386*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.psub.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2387*9880d681SAndroid Build Coastguard Worker
2388*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_mullo_epi16_rr_512(<32 x i16> %a, <32 x i16> %b) {
2389*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rr_512:
2390*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2391*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %zmm1, %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0xd5,0xc1]
2392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2393*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
2394*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2395*9880d681SAndroid Build Coastguard Worker}
2396*9880d681SAndroid Build Coastguard Worker
2397*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_mullo_epi16_rrk_512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask) {
2398*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rrk_512:
2399*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2400*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2401*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %zmm1, %zmm0, %zmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x49,0xd5,0xd1]
2402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2404*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
2405*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2406*9880d681SAndroid Build Coastguard Worker}
2407*9880d681SAndroid Build Coastguard Worker
2408*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_mullo_epi16_rrkz_512(<32 x i16> %a, <32 x i16> %b, i32 %mask) {
2409*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rrkz_512:
2410*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %zmm1, %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0xd5,0xc1]
2413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2414*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
2415*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2416*9880d681SAndroid Build Coastguard Worker}
2417*9880d681SAndroid Build Coastguard Worker
2418*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_mullo_epi16_rm_512(<32 x i16> %a, <32 x i16>* %ptr_b) {
2419*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rm_512:
2420*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %zmm0, %zmm0 ## encoding: [0x62,0xf1,0x7d,0x48,0xd5,0x07]
2422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2423*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2424*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 -1)
2425*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2426*9880d681SAndroid Build Coastguard Worker}
2427*9880d681SAndroid Build Coastguard Worker
2428*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_mullo_epi16_rmk_512(<32 x i16> %a, <32 x i16>* %ptr_b, <32 x i16> %passThru, i32 %mask) {
2429*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rmk_512:
2430*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %zmm0, %zmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x49,0xd5,0x0f]
2433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2435*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2436*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> %passThru, i32 %mask)
2437*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2438*9880d681SAndroid Build Coastguard Worker}
2439*9880d681SAndroid Build Coastguard Worker
2440*9880d681SAndroid Build Coastguard Workerdefine <32 x i16> @test_mask_mullo_epi16_rmkz_512(<32 x i16> %a, <32 x i16>* %ptr_b, i32 %mask) {
2441*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rmkz_512:
2442*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2443*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2444*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %zmm0, %zmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xc9,0xd5,0x07]
2445*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2446*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i16>, <32 x i16>* %ptr_b
2447*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16> %a, <32 x i16> %b, <32 x i16> zeroinitializer, i32 %mask)
2448*9880d681SAndroid Build Coastguard Worker  ret <32 x i16> %res
2449*9880d681SAndroid Build Coastguard Worker}
2450*9880d681SAndroid Build Coastguard Worker
2451*9880d681SAndroid Build Coastguard Workerdeclare <32 x i16> @llvm.x86.avx512.mask.pmull.w.512(<32 x i16>, <32 x i16>, <32 x i16>, i32)
2452*9880d681SAndroid Build Coastguard Worker
2453*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_mullo_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
2454*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rr_128:
2455*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2456*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd5,0xc1]
2457*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2458*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
2459*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2460*9880d681SAndroid Build Coastguard Worker}
2461*9880d681SAndroid Build Coastguard Worker
2462*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_mullo_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
2463*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rrk_128:
2464*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2465*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd5,0xd1]
2467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2469*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
2470*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2471*9880d681SAndroid Build Coastguard Worker}
2472*9880d681SAndroid Build Coastguard Worker
2473*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_mullo_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
2474*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rrkz_128:
2475*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2476*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2477*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd5,0xc1]
2478*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2479*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
2480*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2481*9880d681SAndroid Build Coastguard Worker}
2482*9880d681SAndroid Build Coastguard Worker
2483*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_mullo_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
2484*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rm_128:
2485*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd5,0x07]
2487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2488*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2489*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
2490*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2491*9880d681SAndroid Build Coastguard Worker}
2492*9880d681SAndroid Build Coastguard Worker
2493*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_mullo_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2494*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rmk_128:
2495*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2496*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2497*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd5,0x0f]
2498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2500*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2501*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
2502*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2503*9880d681SAndroid Build Coastguard Worker}
2504*9880d681SAndroid Build Coastguard Worker
2505*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_mullo_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
2506*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rmkz_128:
2507*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd5,0x07]
2510*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2511*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2512*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
2513*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2514*9880d681SAndroid Build Coastguard Worker}
2515*9880d681SAndroid Build Coastguard Worker
2516*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmull.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
2517*9880d681SAndroid Build Coastguard Worker
2518*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_mullo_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
2519*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rr_256:
2520*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2521*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd5,0xc1]
2522*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2523*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
2524*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2525*9880d681SAndroid Build Coastguard Worker}
2526*9880d681SAndroid Build Coastguard Worker
2527*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_mullo_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
2528*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rrk_256:
2529*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd5,0xd1]
2532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2534*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
2535*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2536*9880d681SAndroid Build Coastguard Worker}
2537*9880d681SAndroid Build Coastguard Worker
2538*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_mullo_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
2539*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rrkz_256:
2540*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2541*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2542*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd5,0xc1]
2543*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2544*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
2545*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2546*9880d681SAndroid Build Coastguard Worker}
2547*9880d681SAndroid Build Coastguard Worker
2548*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_mullo_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
2549*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rm_256:
2550*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd5,0x07]
2552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2553*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2554*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
2555*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2556*9880d681SAndroid Build Coastguard Worker}
2557*9880d681SAndroid Build Coastguard Worker
2558*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_mullo_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
2559*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rmk_256:
2560*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2561*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2562*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd5,0x0f]
2563*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2564*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2565*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2566*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
2567*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2568*9880d681SAndroid Build Coastguard Worker}
2569*9880d681SAndroid Build Coastguard Worker
2570*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_mullo_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
2571*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_mullo_epi16_rmkz_256:
2572*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmullw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd5,0x07]
2575*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2576*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2577*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
2578*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2579*9880d681SAndroid Build Coastguard Worker}
2580*9880d681SAndroid Build Coastguard Worker
2581*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmull.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
2582*9880d681SAndroid Build Coastguard Worker
2583*9880d681SAndroid Build Coastguard Worker
2584*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rr_128(<4 x i32> %a, <4 x i32> %b) {
2585*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rr_128:
2586*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2587*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6b,0xc1]
2588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2589*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 -1)
2590*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2591*9880d681SAndroid Build Coastguard Worker}
2592*9880d681SAndroid Build Coastguard Worker
2593*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rrk_128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask) {
2594*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rrk_128:
2595*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x6b,0xd1]
2598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2600*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask)
2601*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2602*9880d681SAndroid Build Coastguard Worker}
2603*9880d681SAndroid Build Coastguard Worker
2604*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rrkz_128(<4 x i32> %a, <4 x i32> %b, i8 %mask) {
2605*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rrkz_128:
2606*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2607*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x6b,0xc1]
2609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2610*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 %mask)
2611*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2612*9880d681SAndroid Build Coastguard Worker}
2613*9880d681SAndroid Build Coastguard Worker
2614*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rm_128(<4 x i32> %a, <4 x i32>* %ptr_b) {
2615*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rm_128:
2616*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x6b,0x07]
2618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2619*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i32>, <4 x i32>* %ptr_b
2620*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 -1)
2621*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2622*9880d681SAndroid Build Coastguard Worker}
2623*9880d681SAndroid Build Coastguard Worker
2624*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rmk_128(<4 x i32> %a, <4 x i32>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2625*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmk_128:
2626*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2627*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x6b,0x0f]
2629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2631*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i32>, <4 x i32>* %ptr_b
2632*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask)
2633*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2634*9880d681SAndroid Build Coastguard Worker}
2635*9880d681SAndroid Build Coastguard Worker
2636*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rmkz_128(<4 x i32> %a, <4 x i32>* %ptr_b, i8 %mask) {
2637*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmkz_128:
2638*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2639*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2640*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x6b,0x07]
2641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2642*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i32>, <4 x i32>* %ptr_b
2643*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 %mask)
2644*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2645*9880d681SAndroid Build Coastguard Worker}
2646*9880d681SAndroid Build Coastguard Worker
2647*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rmb_128(<4 x i32> %a, i32* %ptr_b) {
2648*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmb_128:
2649*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi){1to4}, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x18,0x6b,0x07]
2651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2652*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2653*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i32> undef, i32 %q, i32 0
2654*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i32> %vecinit.i, <4 x i32> undef, <4 x i32> zeroinitializer
2655*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 -1)
2656*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2657*9880d681SAndroid Build Coastguard Worker}
2658*9880d681SAndroid Build Coastguard Worker
2659*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rmbk_128(<4 x i32> %a, i32* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2660*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmbk_128:
2661*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2662*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi){1to4}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x19,0x6b,0x0f]
2664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2666*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2667*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i32> undef, i32 %q, i32 0
2668*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i32> %vecinit.i, <4 x i32> undef, <4 x i32> zeroinitializer
2669*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask)
2670*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2671*9880d681SAndroid Build Coastguard Worker}
2672*9880d681SAndroid Build Coastguard Worker
2673*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packs_epi32_rmbkz_128(<4 x i32> %a, i32* %ptr_b, i8 %mask) {
2674*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmbkz_128:
2675*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2676*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2677*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi){1to4}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x99,0x6b,0x07]
2678*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2679*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2680*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i32> undef, i32 %q, i32 0
2681*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i32> %vecinit.i, <4 x i32> undef, <4 x i32> zeroinitializer
2682*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 %mask)
2683*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2684*9880d681SAndroid Build Coastguard Worker}
2685*9880d681SAndroid Build Coastguard Worker
2686*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.packssdw.128(<4 x i32>, <4 x i32>, <8 x i16>, i8)
2687*9880d681SAndroid Build Coastguard Worker
2688*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rr_256(<8 x i32> %a, <8 x i32> %b) {
2689*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rr_256:
2690*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x6b,0xc1]
2692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2693*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 -1)
2694*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2695*9880d681SAndroid Build Coastguard Worker}
2696*9880d681SAndroid Build Coastguard Worker
2697*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rrk_256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask) {
2698*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rrk_256:
2699*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2701*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x6b,0xd1]
2702*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2703*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2704*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask)
2705*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2706*9880d681SAndroid Build Coastguard Worker}
2707*9880d681SAndroid Build Coastguard Worker
2708*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rrkz_256(<8 x i32> %a, <8 x i32> %b, i16 %mask) {
2709*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rrkz_256:
2710*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x6b,0xc1]
2713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2714*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 %mask)
2715*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2716*9880d681SAndroid Build Coastguard Worker}
2717*9880d681SAndroid Build Coastguard Worker
2718*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rm_256(<8 x i32> %a, <8 x i32>* %ptr_b) {
2719*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rm_256:
2720*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2721*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x6b,0x07]
2722*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2723*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i32>, <8 x i32>* %ptr_b
2724*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 -1)
2725*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2726*9880d681SAndroid Build Coastguard Worker}
2727*9880d681SAndroid Build Coastguard Worker
2728*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rmk_256(<8 x i32> %a, <8 x i32>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
2729*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmk_256:
2730*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2732*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x6b,0x0f]
2733*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2734*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2735*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i32>, <8 x i32>* %ptr_b
2736*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask)
2737*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2738*9880d681SAndroid Build Coastguard Worker}
2739*9880d681SAndroid Build Coastguard Worker
2740*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rmkz_256(<8 x i32> %a, <8 x i32>* %ptr_b, i16 %mask) {
2741*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmkz_256:
2742*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2743*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x6b,0x07]
2745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2746*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i32>, <8 x i32>* %ptr_b
2747*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 %mask)
2748*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2749*9880d681SAndroid Build Coastguard Worker}
2750*9880d681SAndroid Build Coastguard Worker
2751*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rmb_256(<8 x i32> %a, i32* %ptr_b) {
2752*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmb_256:
2753*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2754*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi){1to8}, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x38,0x6b,0x07]
2755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2756*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2757*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i32> undef, i32 %q, i32 0
2758*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i32> %vecinit.i, <8 x i32> undef, <8 x i32> zeroinitializer
2759*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 -1)
2760*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2761*9880d681SAndroid Build Coastguard Worker}
2762*9880d681SAndroid Build Coastguard Worker
2763*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rmbk_256(<8 x i32> %a, i32* %ptr_b, <16 x i16> %passThru, i16 %mask) {
2764*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmbk_256:
2765*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2766*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2767*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi){1to8}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x39,0x6b,0x0f]
2768*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2769*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2770*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2771*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i32> undef, i32 %q, i32 0
2772*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i32> %vecinit.i, <8 x i32> undef, <8 x i32> zeroinitializer
2773*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask)
2774*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2775*9880d681SAndroid Build Coastguard Worker}
2776*9880d681SAndroid Build Coastguard Worker
2777*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packs_epi32_rmbkz_256(<8 x i32> %a, i32* %ptr_b, i16 %mask) {
2778*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi32_rmbkz_256:
2779*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackssdw (%rdi){1to8}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xb9,0x6b,0x07]
2782*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2783*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2784*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i32> undef, i32 %q, i32 0
2785*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i32> %vecinit.i, <8 x i32> undef, <8 x i32> zeroinitializer
2786*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 %mask)
2787*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
2788*9880d681SAndroid Build Coastguard Worker}
2789*9880d681SAndroid Build Coastguard Worker
2790*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.packssdw.256(<8 x i32>, <8 x i32>, <16 x i16>, i16)
2791*9880d681SAndroid Build Coastguard Worker
2792*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packs_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
2793*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rr_128:
2794*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x63,0xc1]
2796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2797*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 -1)
2798*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2799*9880d681SAndroid Build Coastguard Worker}
2800*9880d681SAndroid Build Coastguard Worker
2801*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packs_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <16 x i8> %passThru, i16 %mask) {
2802*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rrk_128:
2803*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x63,0xd1]
2806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2807*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2808*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> %passThru, i16 %mask)
2809*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2810*9880d681SAndroid Build Coastguard Worker}
2811*9880d681SAndroid Build Coastguard Worker
2812*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packs_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i16 %mask) {
2813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rrkz_128:
2814*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x63,0xc1]
2817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2818*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 %mask)
2819*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2820*9880d681SAndroid Build Coastguard Worker}
2821*9880d681SAndroid Build Coastguard Worker
2822*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packs_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
2823*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rm_128:
2824*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x63,0x07]
2826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2827*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2828*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 -1)
2829*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2830*9880d681SAndroid Build Coastguard Worker}
2831*9880d681SAndroid Build Coastguard Worker
2832*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packs_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <16 x i8> %passThru, i16 %mask) {
2833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rmk_128:
2834*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x63,0x0f]
2837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2839*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2840*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> %passThru, i16 %mask)
2841*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2842*9880d681SAndroid Build Coastguard Worker}
2843*9880d681SAndroid Build Coastguard Worker
2844*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packs_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i16 %mask) {
2845*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rmkz_128:
2846*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2847*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2848*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x63,0x07]
2849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2850*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
2851*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 %mask)
2852*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
2853*9880d681SAndroid Build Coastguard Worker}
2854*9880d681SAndroid Build Coastguard Worker
2855*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.packsswb.128(<8 x i16>, <8 x i16>, <16 x i8>, i16)
2856*9880d681SAndroid Build Coastguard Worker
2857*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packs_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
2858*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rr_256:
2859*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x63,0xc1]
2861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2862*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 -1)
2863*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
2864*9880d681SAndroid Build Coastguard Worker}
2865*9880d681SAndroid Build Coastguard Worker
2866*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packs_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <32 x i8> %passThru, i32 %mask) {
2867*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rrk_256:
2868*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2869*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2870*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x63,0xd1]
2871*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2873*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> %passThru, i32 %mask)
2874*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
2875*9880d681SAndroid Build Coastguard Worker}
2876*9880d681SAndroid Build Coastguard Worker
2877*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packs_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i32 %mask) {
2878*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rrkz_256:
2879*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
2881*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x63,0xc1]
2882*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2883*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 %mask)
2884*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
2885*9880d681SAndroid Build Coastguard Worker}
2886*9880d681SAndroid Build Coastguard Worker
2887*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packs_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
2888*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rm_256:
2889*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2890*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x63,0x07]
2891*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2892*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2893*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 -1)
2894*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
2895*9880d681SAndroid Build Coastguard Worker}
2896*9880d681SAndroid Build Coastguard Worker
2897*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packs_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <32 x i8> %passThru, i32 %mask) {
2898*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rmk_256:
2899*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2900*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x63,0x0f]
2902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2903*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2904*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2905*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> %passThru, i32 %mask)
2906*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
2907*9880d681SAndroid Build Coastguard Worker}
2908*9880d681SAndroid Build Coastguard Worker
2909*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packs_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i32 %mask) {
2910*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packs_epi16_rmkz_256:
2911*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2912*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
2913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpacksswb (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x63,0x07]
2914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2915*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
2916*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 %mask)
2917*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
2918*9880d681SAndroid Build Coastguard Worker}
2919*9880d681SAndroid Build Coastguard Worker
2920*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.packsswb.256(<16 x i16>, <16 x i16>, <32 x i8>, i32)
2921*9880d681SAndroid Build Coastguard Worker
2922*9880d681SAndroid Build Coastguard Worker
2923*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rr_128(<4 x i32> %a, <4 x i32> %b) {
2924*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rr_128:
2925*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2926*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x2b,0xc1]
2927*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2928*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 -1)
2929*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2930*9880d681SAndroid Build Coastguard Worker}
2931*9880d681SAndroid Build Coastguard Worker
2932*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rrk_128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask) {
2933*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rrk_128:
2934*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2935*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x2b,0xd1]
2937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
2938*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2939*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask)
2940*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2941*9880d681SAndroid Build Coastguard Worker}
2942*9880d681SAndroid Build Coastguard Worker
2943*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rrkz_128(<4 x i32> %a, <4 x i32> %b, i8 %mask) {
2944*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rrkz_128:
2945*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2946*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
2947*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x2b,0xc1]
2948*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2949*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 %mask)
2950*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2951*9880d681SAndroid Build Coastguard Worker}
2952*9880d681SAndroid Build Coastguard Worker
2953*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rm_128(<4 x i32> %a, <4 x i32>* %ptr_b) {
2954*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rm_128:
2955*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x2b,0x07]
2957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2958*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i32>, <4 x i32>* %ptr_b
2959*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 -1)
2960*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2961*9880d681SAndroid Build Coastguard Worker}
2962*9880d681SAndroid Build Coastguard Worker
2963*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rmk_128(<4 x i32> %a, <4 x i32>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2964*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmk_128:
2965*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x2b,0x0f]
2968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
2969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2970*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i32>, <4 x i32>* %ptr_b
2971*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask)
2972*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2973*9880d681SAndroid Build Coastguard Worker}
2974*9880d681SAndroid Build Coastguard Worker
2975*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rmkz_128(<4 x i32> %a, <4 x i32>* %ptr_b, i8 %mask) {
2976*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmkz_128:
2977*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2978*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
2979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x2b,0x07]
2980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2981*9880d681SAndroid Build Coastguard Worker  %b = load <4 x i32>, <4 x i32>* %ptr_b
2982*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 %mask)
2983*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2984*9880d681SAndroid Build Coastguard Worker}
2985*9880d681SAndroid Build Coastguard Worker
2986*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rmb_128(<4 x i32> %a, i32* %ptr_b) {
2987*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmb_128:
2988*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
2989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi){1to4}, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x18,0x2b,0x07]
2990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
2991*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
2992*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i32> undef, i32 %q, i32 0
2993*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i32> %vecinit.i, <4 x i32> undef, <4 x i32> zeroinitializer
2994*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 -1)
2995*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
2996*9880d681SAndroid Build Coastguard Worker}
2997*9880d681SAndroid Build Coastguard Worker
2998*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rmbk_128(<4 x i32> %a, i32* %ptr_b, <8 x i16> %passThru, i8 %mask) {
2999*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmbk_128:
3000*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3002*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi){1to4}, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x19,0x2b,0x0f]
3003*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3004*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3005*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
3006*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i32> undef, i32 %q, i32 0
3007*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i32> %vecinit.i, <4 x i32> undef, <4 x i32> zeroinitializer
3008*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> %passThru, i8 %mask)
3009*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3010*9880d681SAndroid Build Coastguard Worker}
3011*9880d681SAndroid Build Coastguard Worker
3012*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_packus_epi32_rmbkz_128(<4 x i32> %a, i32* %ptr_b, i8 %mask) {
3013*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmbkz_128:
3014*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3015*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3016*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi){1to4}, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x99,0x2b,0x07]
3017*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3018*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
3019*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <4 x i32> undef, i32 %q, i32 0
3020*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <4 x i32> %vecinit.i, <4 x i32> undef, <4 x i32> zeroinitializer
3021*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32> %a, <4 x i32> %b, <8 x i16> zeroinitializer, i8 %mask)
3022*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3023*9880d681SAndroid Build Coastguard Worker}
3024*9880d681SAndroid Build Coastguard Worker
3025*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.packusdw.128(<4 x i32>, <4 x i32>, <8 x i16>, i8)
3026*9880d681SAndroid Build Coastguard Worker
3027*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rr_256(<8 x i32> %a, <8 x i32> %b) {
3028*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rr_256:
3029*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3030*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x2b,0xc1]
3031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3032*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 -1)
3033*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3034*9880d681SAndroid Build Coastguard Worker}
3035*9880d681SAndroid Build Coastguard Worker
3036*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rrk_256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask) {
3037*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rrk_256:
3038*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3039*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3040*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x2b,0xd1]
3041*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3043*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask)
3044*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3045*9880d681SAndroid Build Coastguard Worker}
3046*9880d681SAndroid Build Coastguard Worker
3047*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rrkz_256(<8 x i32> %a, <8 x i32> %b, i16 %mask) {
3048*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rrkz_256:
3049*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x2b,0xc1]
3052*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3053*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 %mask)
3054*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3055*9880d681SAndroid Build Coastguard Worker}
3056*9880d681SAndroid Build Coastguard Worker
3057*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rm_256(<8 x i32> %a, <8 x i32>* %ptr_b) {
3058*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rm_256:
3059*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x2b,0x07]
3061*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3062*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i32>, <8 x i32>* %ptr_b
3063*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 -1)
3064*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3065*9880d681SAndroid Build Coastguard Worker}
3066*9880d681SAndroid Build Coastguard Worker
3067*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rmk_256(<8 x i32> %a, <8 x i32>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
3068*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmk_256:
3069*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x2b,0x0f]
3072*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3073*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3074*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i32>, <8 x i32>* %ptr_b
3075*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask)
3076*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3077*9880d681SAndroid Build Coastguard Worker}
3078*9880d681SAndroid Build Coastguard Worker
3079*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rmkz_256(<8 x i32> %a, <8 x i32>* %ptr_b, i16 %mask) {
3080*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmkz_256:
3081*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3082*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3083*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x2b,0x07]
3084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3085*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i32>, <8 x i32>* %ptr_b
3086*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 %mask)
3087*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3088*9880d681SAndroid Build Coastguard Worker}
3089*9880d681SAndroid Build Coastguard Worker
3090*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rmb_256(<8 x i32> %a, i32* %ptr_b) {
3091*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmb_256:
3092*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3093*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi){1to8}, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x38,0x2b,0x07]
3094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3095*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
3096*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i32> undef, i32 %q, i32 0
3097*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i32> %vecinit.i, <8 x i32> undef, <8 x i32> zeroinitializer
3098*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 -1)
3099*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3100*9880d681SAndroid Build Coastguard Worker}
3101*9880d681SAndroid Build Coastguard Worker
3102*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rmbk_256(<8 x i32> %a, i32* %ptr_b, <16 x i16> %passThru, i16 %mask) {
3103*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmbk_256:
3104*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi){1to8}, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x39,0x2b,0x0f]
3107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3109*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
3110*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i32> undef, i32 %q, i32 0
3111*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i32> %vecinit.i, <8 x i32> undef, <8 x i32> zeroinitializer
3112*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> %passThru, i16 %mask)
3113*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3114*9880d681SAndroid Build Coastguard Worker}
3115*9880d681SAndroid Build Coastguard Worker
3116*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_packus_epi32_rmbkz_256(<8 x i32> %a, i32* %ptr_b, i16 %mask) {
3117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi32_rmbkz_256:
3118*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackusdw (%rdi){1to8}, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xb9,0x2b,0x07]
3121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3122*9880d681SAndroid Build Coastguard Worker  %q = load i32, i32* %ptr_b
3123*9880d681SAndroid Build Coastguard Worker  %vecinit.i = insertelement <8 x i32> undef, i32 %q, i32 0
3124*9880d681SAndroid Build Coastguard Worker  %b = shufflevector <8 x i32> %vecinit.i, <8 x i32> undef, <8 x i32> zeroinitializer
3125*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32> %a, <8 x i32> %b, <16 x i16> zeroinitializer, i16 %mask)
3126*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3127*9880d681SAndroid Build Coastguard Worker}
3128*9880d681SAndroid Build Coastguard Worker
3129*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.packusdw.256(<8 x i32>, <8 x i32>, <16 x i16>, i16)
3130*9880d681SAndroid Build Coastguard Worker
3131*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packus_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
3132*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rr_128:
3133*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x67,0xc1]
3135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3136*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 -1)
3137*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3138*9880d681SAndroid Build Coastguard Worker}
3139*9880d681SAndroid Build Coastguard Worker
3140*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packus_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <16 x i8> %passThru, i16 %mask) {
3141*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rrk_128:
3142*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x67,0xd1]
3145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3147*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> %passThru, i16 %mask)
3148*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3149*9880d681SAndroid Build Coastguard Worker}
3150*9880d681SAndroid Build Coastguard Worker
3151*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packus_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i16 %mask) {
3152*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rrkz_128:
3153*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x67,0xc1]
3156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3157*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 %mask)
3158*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3159*9880d681SAndroid Build Coastguard Worker}
3160*9880d681SAndroid Build Coastguard Worker
3161*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packus_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
3162*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rm_128:
3163*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x67,0x07]
3165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3166*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3167*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 -1)
3168*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3169*9880d681SAndroid Build Coastguard Worker}
3170*9880d681SAndroid Build Coastguard Worker
3171*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packus_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <16 x i8> %passThru, i16 %mask) {
3172*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rmk_128:
3173*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0x67,0x0f]
3176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3178*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3179*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> %passThru, i16 %mask)
3180*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3181*9880d681SAndroid Build Coastguard Worker}
3182*9880d681SAndroid Build Coastguard Worker
3183*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_packus_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i16 %mask) {
3184*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rmkz_128:
3185*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0x67,0x07]
3188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3189*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3190*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16> %a, <8 x i16> %b, <16 x i8> zeroinitializer, i16 %mask)
3191*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3192*9880d681SAndroid Build Coastguard Worker}
3193*9880d681SAndroid Build Coastguard Worker
3194*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.packuswb.128(<8 x i16>, <8 x i16>, <16 x i8>, i16)
3195*9880d681SAndroid Build Coastguard Worker
3196*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packus_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
3197*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rr_256:
3198*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x67,0xc1]
3200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3201*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 -1)
3202*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3203*9880d681SAndroid Build Coastguard Worker}
3204*9880d681SAndroid Build Coastguard Worker
3205*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packus_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <32 x i8> %passThru, i32 %mask) {
3206*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rrk_256:
3207*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
3209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x67,0xd1]
3210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3212*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> %passThru, i32 %mask)
3213*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3214*9880d681SAndroid Build Coastguard Worker}
3215*9880d681SAndroid Build Coastguard Worker
3216*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packus_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i32 %mask) {
3217*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rrkz_256:
3218*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3219*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
3220*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x67,0xc1]
3221*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3222*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 %mask)
3223*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3224*9880d681SAndroid Build Coastguard Worker}
3225*9880d681SAndroid Build Coastguard Worker
3226*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packus_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
3227*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rm_256:
3228*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x67,0x07]
3230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3231*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3232*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 -1)
3233*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3234*9880d681SAndroid Build Coastguard Worker}
3235*9880d681SAndroid Build Coastguard Worker
3236*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packus_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <32 x i8> %passThru, i32 %mask) {
3237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rmk_256:
3238*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
3240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0x67,0x0f]
3241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3243*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3244*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> %passThru, i32 %mask)
3245*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3246*9880d681SAndroid Build Coastguard Worker}
3247*9880d681SAndroid Build Coastguard Worker
3248*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_packus_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i32 %mask) {
3249*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_packus_epi16_rmkz_256:
3250*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
3252*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpackuswb (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0x67,0x07]
3253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3254*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3255*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16> %a, <16 x i16> %b, <32 x i8> zeroinitializer, i32 %mask)
3256*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3257*9880d681SAndroid Build Coastguard Worker}
3258*9880d681SAndroid Build Coastguard Worker
3259*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.packuswb.256(<16 x i16>, <16 x i16>, <32 x i8>, i32)
3260*9880d681SAndroid Build Coastguard Worker
3261*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
3262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rr_128:
3263*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3264*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xed,0xc1]
3265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3266*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3267*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3268*9880d681SAndroid Build Coastguard Worker}
3269*9880d681SAndroid Build Coastguard Worker
3270*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
3271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rrk_128:
3272*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3274*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xed,0xd1]
3275*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3276*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3277*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3278*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3279*9880d681SAndroid Build Coastguard Worker}
3280*9880d681SAndroid Build Coastguard Worker
3281*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
3282*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rrkz_128:
3283*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3284*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xed,0xc1]
3286*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3287*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3288*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3289*9880d681SAndroid Build Coastguard Worker}
3290*9880d681SAndroid Build Coastguard Worker
3291*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
3292*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rm_128:
3293*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3294*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xed,0x07]
3295*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3296*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3297*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3298*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3299*9880d681SAndroid Build Coastguard Worker}
3300*9880d681SAndroid Build Coastguard Worker
3301*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
3302*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rmk_128:
3303*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xed,0x0f]
3306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3308*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3309*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3310*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3311*9880d681SAndroid Build Coastguard Worker}
3312*9880d681SAndroid Build Coastguard Worker
3313*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
3314*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rmkz_128:
3315*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xed,0x07]
3318*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3319*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3320*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3321*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3322*9880d681SAndroid Build Coastguard Worker}
3323*9880d681SAndroid Build Coastguard Worker
3324*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.padds.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
3325*9880d681SAndroid Build Coastguard Worker
3326*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
3327*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rr_256:
3328*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xed,0xc1]
3330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3331*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3332*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3333*9880d681SAndroid Build Coastguard Worker}
3334*9880d681SAndroid Build Coastguard Worker
3335*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
3336*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rrk_256:
3337*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xed,0xd1]
3340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3342*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3343*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3344*9880d681SAndroid Build Coastguard Worker}
3345*9880d681SAndroid Build Coastguard Worker
3346*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
3347*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rrkz_256:
3348*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xed,0xc1]
3351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3352*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3353*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3354*9880d681SAndroid Build Coastguard Worker}
3355*9880d681SAndroid Build Coastguard Worker
3356*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
3357*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rm_256:
3358*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3359*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xed,0x07]
3360*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3361*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3362*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3363*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3364*9880d681SAndroid Build Coastguard Worker}
3365*9880d681SAndroid Build Coastguard Worker
3366*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
3367*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rmk_256:
3368*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xed,0x0f]
3371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3373*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3374*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3375*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3376*9880d681SAndroid Build Coastguard Worker}
3377*9880d681SAndroid Build Coastguard Worker
3378*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
3379*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi16_rmkz_256:
3380*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3381*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3382*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xed,0x07]
3383*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3384*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3385*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3386*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3387*9880d681SAndroid Build Coastguard Worker}
3388*9880d681SAndroid Build Coastguard Worker
3389*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.padds.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
3390*9880d681SAndroid Build Coastguard Worker
3391*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epi16_rr_128(<8 x i16> %a, <8 x i16> %b) {
3392*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rr_128:
3393*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3394*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe9,0xc1]
3395*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3396*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3397*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3398*9880d681SAndroid Build Coastguard Worker}
3399*9880d681SAndroid Build Coastguard Worker
3400*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epi16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
3401*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rrk_128:
3402*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe9,0xd1]
3405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3407*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3408*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3409*9880d681SAndroid Build Coastguard Worker}
3410*9880d681SAndroid Build Coastguard Worker
3411*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epi16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
3412*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rrkz_128:
3413*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3414*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3415*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xe9,0xc1]
3416*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3417*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3418*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3419*9880d681SAndroid Build Coastguard Worker}
3420*9880d681SAndroid Build Coastguard Worker
3421*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epi16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
3422*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rm_128:
3423*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3424*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe9,0x07]
3425*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3426*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3427*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3428*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3429*9880d681SAndroid Build Coastguard Worker}
3430*9880d681SAndroid Build Coastguard Worker
3431*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epi16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
3432*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rmk_128:
3433*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe9,0x0f]
3436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3437*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3438*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3439*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3440*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3441*9880d681SAndroid Build Coastguard Worker}
3442*9880d681SAndroid Build Coastguard Worker
3443*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epi16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
3444*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rmkz_128:
3445*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3446*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xe9,0x07]
3448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3449*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3450*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3451*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3452*9880d681SAndroid Build Coastguard Worker}
3453*9880d681SAndroid Build Coastguard Worker
3454*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psubs.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
3455*9880d681SAndroid Build Coastguard Worker
3456*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epi16_rr_256(<16 x i16> %a, <16 x i16> %b) {
3457*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rr_256:
3458*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3459*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe9,0xc1]
3460*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3461*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3462*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3463*9880d681SAndroid Build Coastguard Worker}
3464*9880d681SAndroid Build Coastguard Worker
3465*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epi16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
3466*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rrk_256:
3467*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3469*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe9,0xd1]
3470*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3472*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3473*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3474*9880d681SAndroid Build Coastguard Worker}
3475*9880d681SAndroid Build Coastguard Worker
3476*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epi16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
3477*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rrkz_256:
3478*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3479*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3480*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xe9,0xc1]
3481*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3482*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3483*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3484*9880d681SAndroid Build Coastguard Worker}
3485*9880d681SAndroid Build Coastguard Worker
3486*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epi16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
3487*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rm_256:
3488*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe9,0x07]
3490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3491*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3492*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3493*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3494*9880d681SAndroid Build Coastguard Worker}
3495*9880d681SAndroid Build Coastguard Worker
3496*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epi16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
3497*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rmk_256:
3498*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe9,0x0f]
3501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3503*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3504*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3505*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3506*9880d681SAndroid Build Coastguard Worker}
3507*9880d681SAndroid Build Coastguard Worker
3508*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epi16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
3509*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi16_rmkz_256:
3510*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3511*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3512*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xe9,0x07]
3513*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3514*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3515*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3516*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3517*9880d681SAndroid Build Coastguard Worker}
3518*9880d681SAndroid Build Coastguard Worker
3519*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psubs.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
3520*9880d681SAndroid Build Coastguard Worker
3521*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epu16_rr_128(<8 x i16> %a, <8 x i16> %b) {
3522*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rr_128:
3523*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3524*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xdd,0xc1]
3525*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3526*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3527*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3528*9880d681SAndroid Build Coastguard Worker}
3529*9880d681SAndroid Build Coastguard Worker
3530*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epu16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
3531*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rrk_128:
3532*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xdd,0xd1]
3535*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3536*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3537*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3538*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3539*9880d681SAndroid Build Coastguard Worker}
3540*9880d681SAndroid Build Coastguard Worker
3541*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epu16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
3542*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rrkz_128:
3543*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3544*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3545*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xdd,0xc1]
3546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3547*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3548*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3549*9880d681SAndroid Build Coastguard Worker}
3550*9880d681SAndroid Build Coastguard Worker
3551*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epu16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
3552*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rm_128:
3553*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3554*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xdd,0x07]
3555*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3556*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3557*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3558*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3559*9880d681SAndroid Build Coastguard Worker}
3560*9880d681SAndroid Build Coastguard Worker
3561*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epu16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
3562*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rmk_128:
3563*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3564*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3565*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xdd,0x0f]
3566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3568*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3569*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3570*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3571*9880d681SAndroid Build Coastguard Worker}
3572*9880d681SAndroid Build Coastguard Worker
3573*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_adds_epu16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
3574*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rmkz_128:
3575*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3576*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3577*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xdd,0x07]
3578*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3579*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3580*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3581*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3582*9880d681SAndroid Build Coastguard Worker}
3583*9880d681SAndroid Build Coastguard Worker
3584*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.paddus.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
3585*9880d681SAndroid Build Coastguard Worker
3586*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epu16_rr_256(<16 x i16> %a, <16 x i16> %b) {
3587*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rr_256:
3588*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xdd,0xc1]
3590*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3591*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3592*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3593*9880d681SAndroid Build Coastguard Worker}
3594*9880d681SAndroid Build Coastguard Worker
3595*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epu16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
3596*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rrk_256:
3597*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xdd,0xd1]
3600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3602*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3603*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3604*9880d681SAndroid Build Coastguard Worker}
3605*9880d681SAndroid Build Coastguard Worker
3606*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epu16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
3607*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rrkz_256:
3608*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xdd,0xc1]
3611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3612*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3613*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3614*9880d681SAndroid Build Coastguard Worker}
3615*9880d681SAndroid Build Coastguard Worker
3616*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epu16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
3617*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rm_256:
3618*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3619*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xdd,0x07]
3620*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3621*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3622*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3623*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3624*9880d681SAndroid Build Coastguard Worker}
3625*9880d681SAndroid Build Coastguard Worker
3626*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epu16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
3627*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rmk_256:
3628*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xdd,0x0f]
3631*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3633*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3634*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3635*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3636*9880d681SAndroid Build Coastguard Worker}
3637*9880d681SAndroid Build Coastguard Worker
3638*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_adds_epu16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
3639*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu16_rmkz_256:
3640*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3641*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3642*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xdd,0x07]
3643*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3644*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3645*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3646*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3647*9880d681SAndroid Build Coastguard Worker}
3648*9880d681SAndroid Build Coastguard Worker
3649*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.paddus.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
3650*9880d681SAndroid Build Coastguard Worker
3651*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epu16_rr_128(<8 x i16> %a, <8 x i16> %b) {
3652*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rr_128:
3653*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd9,0xc1]
3655*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3656*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3657*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3658*9880d681SAndroid Build Coastguard Worker}
3659*9880d681SAndroid Build Coastguard Worker
3660*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epu16_rrk_128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask) {
3661*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rrk_128:
3662*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3663*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd9,0xd1]
3665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3667*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3668*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3669*9880d681SAndroid Build Coastguard Worker}
3670*9880d681SAndroid Build Coastguard Worker
3671*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epu16_rrkz_128(<8 x i16> %a, <8 x i16> %b, i8 %mask) {
3672*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rrkz_128:
3673*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3674*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3675*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd9,0xc1]
3676*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3677*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3678*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3679*9880d681SAndroid Build Coastguard Worker}
3680*9880d681SAndroid Build Coastguard Worker
3681*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epu16_rm_128(<8 x i16> %a, <8 x i16>* %ptr_b) {
3682*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rm_128:
3683*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd9,0x07]
3685*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3686*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3687*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 -1)
3688*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3689*9880d681SAndroid Build Coastguard Worker}
3690*9880d681SAndroid Build Coastguard Worker
3691*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epu16_rmk_128(<8 x i16> %a, <8 x i16>* %ptr_b, <8 x i16> %passThru, i8 %mask) {
3692*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rmk_128:
3693*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3694*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd9,0x0f]
3696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3698*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3699*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> %passThru, i8 %mask)
3700*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3701*9880d681SAndroid Build Coastguard Worker}
3702*9880d681SAndroid Build Coastguard Worker
3703*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_mask_subs_epu16_rmkz_128(<8 x i16> %a, <8 x i16>* %ptr_b, i8 %mask) {
3704*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rmkz_128:
3705*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3706*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3707*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd9,0x07]
3708*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3709*9880d681SAndroid Build Coastguard Worker  %b = load <8 x i16>, <8 x i16>* %ptr_b
3710*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16> %a, <8 x i16> %b, <8 x i16> zeroinitializer, i8 %mask)
3711*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
3712*9880d681SAndroid Build Coastguard Worker}
3713*9880d681SAndroid Build Coastguard Worker
3714*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psubus.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
3715*9880d681SAndroid Build Coastguard Worker
3716*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epu16_rr_256(<16 x i16> %a, <16 x i16> %b) {
3717*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rr_256:
3718*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd9,0xc1]
3720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3721*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3722*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3723*9880d681SAndroid Build Coastguard Worker}
3724*9880d681SAndroid Build Coastguard Worker
3725*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epu16_rrk_256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask) {
3726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rrk_256:
3727*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3729*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd9,0xd1]
3730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3732*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3733*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3734*9880d681SAndroid Build Coastguard Worker}
3735*9880d681SAndroid Build Coastguard Worker
3736*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epu16_rrkz_256(<16 x i16> %a, <16 x i16> %b, i16 %mask) {
3737*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rrkz_256:
3738*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd9,0xc1]
3741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3742*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3743*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3744*9880d681SAndroid Build Coastguard Worker}
3745*9880d681SAndroid Build Coastguard Worker
3746*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epu16_rm_256(<16 x i16> %a, <16 x i16>* %ptr_b) {
3747*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rm_256:
3748*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3749*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd9,0x07]
3750*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3751*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3752*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 -1)
3753*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3754*9880d681SAndroid Build Coastguard Worker}
3755*9880d681SAndroid Build Coastguard Worker
3756*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epu16_rmk_256(<16 x i16> %a, <16 x i16>* %ptr_b, <16 x i16> %passThru, i16 %mask) {
3757*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rmk_256:
3758*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd9,0x0f]
3761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3763*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3764*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> %passThru, i16 %mask)
3765*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3766*9880d681SAndroid Build Coastguard Worker}
3767*9880d681SAndroid Build Coastguard Worker
3768*9880d681SAndroid Build Coastguard Workerdefine <16 x i16> @test_mask_subs_epu16_rmkz_256(<16 x i16> %a, <16 x i16>* %ptr_b, i16 %mask) {
3769*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu16_rmkz_256:
3770*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3771*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3772*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusw (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd9,0x07]
3773*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3774*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i16>, <16 x i16>* %ptr_b
3775*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16> %a, <16 x i16> %b, <16 x i16> zeroinitializer, i16 %mask)
3776*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
3777*9880d681SAndroid Build Coastguard Worker}
3778*9880d681SAndroid Build Coastguard Worker
3779*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psubus.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
3780*9880d681SAndroid Build Coastguard Worker
3781*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epi8_rr_128(<16 x i8> %a, <16 x i8> %b) {
3782*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rr_128:
3783*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3784*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xec,0xc1]
3785*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3786*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
3787*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3788*9880d681SAndroid Build Coastguard Worker}
3789*9880d681SAndroid Build Coastguard Worker
3790*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epi8_rrk_128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) {
3791*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rrk_128:
3792*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xec,0xd1]
3795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3797*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
3798*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3799*9880d681SAndroid Build Coastguard Worker}
3800*9880d681SAndroid Build Coastguard Worker
3801*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epi8_rrkz_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) {
3802*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rrkz_128:
3803*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3804*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3805*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xec,0xc1]
3806*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3807*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
3808*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3809*9880d681SAndroid Build Coastguard Worker}
3810*9880d681SAndroid Build Coastguard Worker
3811*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epi8_rm_128(<16 x i8> %a, <16 x i8>* %ptr_b) {
3812*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rm_128:
3813*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3814*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xec,0x07]
3815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3816*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
3817*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
3818*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3819*9880d681SAndroid Build Coastguard Worker}
3820*9880d681SAndroid Build Coastguard Worker
3821*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epi8_rmk_128(<16 x i8> %a, <16 x i8>* %ptr_b, <16 x i8> %passThru, i16 %mask) {
3822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rmk_128:
3823*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xec,0x0f]
3826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3828*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
3829*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
3830*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3831*9880d681SAndroid Build Coastguard Worker}
3832*9880d681SAndroid Build Coastguard Worker
3833*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epi8_rmkz_128(<16 x i8> %a, <16 x i8>* %ptr_b, i16 %mask) {
3834*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rmkz_128:
3835*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xec,0x07]
3838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3839*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
3840*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
3841*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3842*9880d681SAndroid Build Coastguard Worker}
3843*9880d681SAndroid Build Coastguard Worker
3844*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.padds.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
3845*9880d681SAndroid Build Coastguard Worker
3846*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epi8_rr_256(<32 x i8> %a, <32 x i8> %b) {
3847*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rr_256:
3848*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3849*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xec,0xc1]
3850*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3851*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
3852*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3853*9880d681SAndroid Build Coastguard Worker}
3854*9880d681SAndroid Build Coastguard Worker
3855*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epi8_rrk_256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) {
3856*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rrk_256:
3857*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
3859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xec,0xd1]
3860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3862*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
3863*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3864*9880d681SAndroid Build Coastguard Worker}
3865*9880d681SAndroid Build Coastguard Worker
3866*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epi8_rrkz_256(<32 x i8> %a, <32 x i8> %b, i32 %mask) {
3867*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rrkz_256:
3868*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3869*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
3870*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xec,0xc1]
3871*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3872*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
3873*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3874*9880d681SAndroid Build Coastguard Worker}
3875*9880d681SAndroid Build Coastguard Worker
3876*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epi8_rm_256(<32 x i8> %a, <32 x i8>* %ptr_b) {
3877*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rm_256:
3878*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xec,0x07]
3880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3881*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
3882*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
3883*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3884*9880d681SAndroid Build Coastguard Worker}
3885*9880d681SAndroid Build Coastguard Worker
3886*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epi8_rmk_256(<32 x i8> %a, <32 x i8>* %ptr_b, <32 x i8> %passThru, i32 %mask) {
3887*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rmk_256:
3888*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
3890*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xec,0x0f]
3891*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3892*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3893*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
3894*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
3895*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3896*9880d681SAndroid Build Coastguard Worker}
3897*9880d681SAndroid Build Coastguard Worker
3898*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epi8_rmkz_256(<32 x i8> %a, <32 x i8>* %ptr_b, i32 %mask) {
3899*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epi8_rmkz_256:
3900*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3901*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
3902*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddsb (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xec,0x07]
3903*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3904*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
3905*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
3906*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3907*9880d681SAndroid Build Coastguard Worker}
3908*9880d681SAndroid Build Coastguard Worker
3909*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.padds.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
3910*9880d681SAndroid Build Coastguard Worker
3911*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epi8_rr_128(<16 x i8> %a, <16 x i8> %b) {
3912*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rr_128:
3913*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe8,0xc1]
3915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3916*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
3917*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3918*9880d681SAndroid Build Coastguard Worker}
3919*9880d681SAndroid Build Coastguard Worker
3920*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epi8_rrk_128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) {
3921*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rrk_128:
3922*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3924*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe8,0xd1]
3925*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3926*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3927*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
3928*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3929*9880d681SAndroid Build Coastguard Worker}
3930*9880d681SAndroid Build Coastguard Worker
3931*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epi8_rrkz_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) {
3932*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rrkz_128:
3933*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3934*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
3935*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xe8,0xc1]
3936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3937*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
3938*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3939*9880d681SAndroid Build Coastguard Worker}
3940*9880d681SAndroid Build Coastguard Worker
3941*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epi8_rm_128(<16 x i8> %a, <16 x i8>* %ptr_b) {
3942*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rm_128:
3943*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3944*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe8,0x07]
3945*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3946*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
3947*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
3948*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3949*9880d681SAndroid Build Coastguard Worker}
3950*9880d681SAndroid Build Coastguard Worker
3951*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epi8_rmk_128(<16 x i8> %a, <16 x i8>* %ptr_b, <16 x i8> %passThru, i16 %mask) {
3952*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rmk_128:
3953*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3955*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe8,0x0f]
3956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
3957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3958*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
3959*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
3960*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3961*9880d681SAndroid Build Coastguard Worker}
3962*9880d681SAndroid Build Coastguard Worker
3963*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epi8_rmkz_128(<16 x i8> %a, <16 x i8>* %ptr_b, i16 %mask) {
3964*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rmkz_128:
3965*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3966*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
3967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xe8,0x07]
3968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3969*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
3970*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
3971*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
3972*9880d681SAndroid Build Coastguard Worker}
3973*9880d681SAndroid Build Coastguard Worker
3974*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.psubs.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
3975*9880d681SAndroid Build Coastguard Worker
3976*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epi8_rr_256(<32 x i8> %a, <32 x i8> %b) {
3977*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rr_256:
3978*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3979*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe8,0xc1]
3980*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3981*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
3982*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3983*9880d681SAndroid Build Coastguard Worker}
3984*9880d681SAndroid Build Coastguard Worker
3985*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epi8_rrk_256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) {
3986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rrk_256:
3987*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
3989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe8,0xd1]
3990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
3991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
3992*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
3993*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
3994*9880d681SAndroid Build Coastguard Worker}
3995*9880d681SAndroid Build Coastguard Worker
3996*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epi8_rrkz_256(<32 x i8> %a, <32 x i8> %b, i32 %mask) {
3997*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rrkz_256:
3998*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
3999*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4000*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xe8,0xc1]
4001*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4002*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
4003*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4004*9880d681SAndroid Build Coastguard Worker}
4005*9880d681SAndroid Build Coastguard Worker
4006*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epi8_rm_256(<32 x i8> %a, <32 x i8>* %ptr_b) {
4007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rm_256:
4008*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe8,0x07]
4010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4011*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4012*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
4013*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4014*9880d681SAndroid Build Coastguard Worker}
4015*9880d681SAndroid Build Coastguard Worker
4016*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epi8_rmk_256(<32 x i8> %a, <32 x i8>* %ptr_b, <32 x i8> %passThru, i32 %mask) {
4017*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rmk_256:
4018*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4019*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
4020*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe8,0x0f]
4021*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
4022*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4023*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4024*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
4025*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4026*9880d681SAndroid Build Coastguard Worker}
4027*9880d681SAndroid Build Coastguard Worker
4028*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epi8_rmkz_256(<32 x i8> %a, <32 x i8>* %ptr_b, i32 %mask) {
4029*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epi8_rmkz_256:
4030*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
4032*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubsb (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xe8,0x07]
4033*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4034*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4035*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
4036*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4037*9880d681SAndroid Build Coastguard Worker}
4038*9880d681SAndroid Build Coastguard Worker
4039*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.psubs.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4040*9880d681SAndroid Build Coastguard Worker
4041*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epu8_rr_128(<16 x i8> %a, <16 x i8> %b) {
4042*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rr_128:
4043*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xdc,0xc1]
4045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4046*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
4047*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4048*9880d681SAndroid Build Coastguard Worker}
4049*9880d681SAndroid Build Coastguard Worker
4050*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epu8_rrk_128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) {
4051*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rrk_128:
4052*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4053*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4054*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xdc,0xd1]
4055*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
4056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4057*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
4058*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4059*9880d681SAndroid Build Coastguard Worker}
4060*9880d681SAndroid Build Coastguard Worker
4061*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epu8_rrkz_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) {
4062*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rrkz_128:
4063*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4064*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xdc,0xc1]
4066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4067*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
4068*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4069*9880d681SAndroid Build Coastguard Worker}
4070*9880d681SAndroid Build Coastguard Worker
4071*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epu8_rm_128(<16 x i8> %a, <16 x i8>* %ptr_b) {
4072*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rm_128:
4073*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4074*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xdc,0x07]
4075*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4076*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
4077*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
4078*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4079*9880d681SAndroid Build Coastguard Worker}
4080*9880d681SAndroid Build Coastguard Worker
4081*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epu8_rmk_128(<16 x i8> %a, <16 x i8>* %ptr_b, <16 x i8> %passThru, i16 %mask) {
4082*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rmk_128:
4083*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4084*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
4085*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xdc,0x0f]
4086*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
4087*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4088*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
4089*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
4090*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4091*9880d681SAndroid Build Coastguard Worker}
4092*9880d681SAndroid Build Coastguard Worker
4093*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_adds_epu8_rmkz_128(<16 x i8> %a, <16 x i8>* %ptr_b, i16 %mask) {
4094*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rmkz_128:
4095*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
4097*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xdc,0x07]
4098*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4099*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
4100*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
4101*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4102*9880d681SAndroid Build Coastguard Worker}
4103*9880d681SAndroid Build Coastguard Worker
4104*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.paddus.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4105*9880d681SAndroid Build Coastguard Worker
4106*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epu8_rr_256(<32 x i8> %a, <32 x i8> %b) {
4107*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rr_256:
4108*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xdc,0xc1]
4110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4111*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
4112*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4113*9880d681SAndroid Build Coastguard Worker}
4114*9880d681SAndroid Build Coastguard Worker
4115*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epu8_rrk_256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) {
4116*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rrk_256:
4117*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xdc,0xd1]
4120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
4121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4122*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
4123*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4124*9880d681SAndroid Build Coastguard Worker}
4125*9880d681SAndroid Build Coastguard Worker
4126*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epu8_rrkz_256(<32 x i8> %a, <32 x i8> %b, i32 %mask) {
4127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rrkz_256:
4128*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xdc,0xc1]
4131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4132*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
4133*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4134*9880d681SAndroid Build Coastguard Worker}
4135*9880d681SAndroid Build Coastguard Worker
4136*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epu8_rm_256(<32 x i8> %a, <32 x i8>* %ptr_b) {
4137*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rm_256:
4138*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xdc,0x07]
4140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4141*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4142*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
4143*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4144*9880d681SAndroid Build Coastguard Worker}
4145*9880d681SAndroid Build Coastguard Worker
4146*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epu8_rmk_256(<32 x i8> %a, <32 x i8>* %ptr_b, <32 x i8> %passThru, i32 %mask) {
4147*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rmk_256:
4148*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
4150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xdc,0x0f]
4151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
4152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4153*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4154*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
4155*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4156*9880d681SAndroid Build Coastguard Worker}
4157*9880d681SAndroid Build Coastguard Worker
4158*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_adds_epu8_rmkz_256(<32 x i8> %a, <32 x i8>* %ptr_b, i32 %mask) {
4159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_adds_epu8_rmkz_256:
4160*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
4162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddusb (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xdc,0x07]
4163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4164*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4165*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
4166*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4167*9880d681SAndroid Build Coastguard Worker}
4168*9880d681SAndroid Build Coastguard Worker
4169*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.paddus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4170*9880d681SAndroid Build Coastguard Worker
4171*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epu8_rr_128(<16 x i8> %a, <16 x i8> %b) {
4172*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rr_128:
4173*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd8,0xc1]
4175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4176*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
4177*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4178*9880d681SAndroid Build Coastguard Worker}
4179*9880d681SAndroid Build Coastguard Worker
4180*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epu8_rrk_128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask) {
4181*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rrk_128:
4182*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd8,0xd1]
4185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
4186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4187*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
4188*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4189*9880d681SAndroid Build Coastguard Worker}
4190*9880d681SAndroid Build Coastguard Worker
4191*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epu8_rrkz_128(<16 x i8> %a, <16 x i8> %b, i16 %mask) {
4192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rrkz_128:
4193*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd8,0xc1]
4196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4197*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
4198*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4199*9880d681SAndroid Build Coastguard Worker}
4200*9880d681SAndroid Build Coastguard Worker
4201*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epu8_rm_128(<16 x i8> %a, <16 x i8>* %ptr_b) {
4202*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rm_128:
4203*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb (%rdi), %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd8,0x07]
4205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4206*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
4207*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 -1)
4208*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4209*9880d681SAndroid Build Coastguard Worker}
4210*9880d681SAndroid Build Coastguard Worker
4211*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epu8_rmk_128(<16 x i8> %a, <16 x i8>* %ptr_b, <16 x i8> %passThru, i16 %mask) {
4212*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rmk_128:
4213*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
4215*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb (%rdi), %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd8,0x0f]
4216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
4217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4218*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
4219*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> %passThru, i16 %mask)
4220*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4221*9880d681SAndroid Build Coastguard Worker}
4222*9880d681SAndroid Build Coastguard Worker
4223*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_mask_subs_epu8_rmkz_128(<16 x i8> %a, <16 x i8>* %ptr_b, i16 %mask) {
4224*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rmkz_128:
4225*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4226*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
4227*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb (%rdi), %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd8,0x07]
4228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4229*9880d681SAndroid Build Coastguard Worker  %b = load <16 x i8>, <16 x i8>* %ptr_b
4230*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8> %a, <16 x i8> %b, <16 x i8> zeroinitializer, i16 %mask)
4231*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
4232*9880d681SAndroid Build Coastguard Worker}
4233*9880d681SAndroid Build Coastguard Worker
4234*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.psubus.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4235*9880d681SAndroid Build Coastguard Worker
4236*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epu8_rr_256(<32 x i8> %a, <32 x i8> %b) {
4237*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rr_256:
4238*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4239*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd8,0xc1]
4240*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4241*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
4242*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4243*9880d681SAndroid Build Coastguard Worker}
4244*9880d681SAndroid Build Coastguard Worker
4245*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epu8_rrk_256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask) {
4246*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rrk_256:
4247*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4248*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd8,0xd1]
4250*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm2, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc2]
4251*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4252*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
4253*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4254*9880d681SAndroid Build Coastguard Worker}
4255*9880d681SAndroid Build Coastguard Worker
4256*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epu8_rrkz_256(<32 x i8> %a, <32 x i8> %b, i32 %mask) {
4257*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rrkz_256:
4258*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4259*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4260*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd8,0xc1]
4261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4262*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
4263*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4264*9880d681SAndroid Build Coastguard Worker}
4265*9880d681SAndroid Build Coastguard Worker
4266*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epu8_rm_256(<32 x i8> %a, <32 x i8>* %ptr_b) {
4267*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rm_256:
4268*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb (%rdi), %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd8,0x07]
4270*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4271*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4272*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 -1)
4273*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4274*9880d681SAndroid Build Coastguard Worker}
4275*9880d681SAndroid Build Coastguard Worker
4276*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epu8_rmk_256(<32 x i8> %a, <32 x i8>* %ptr_b, <32 x i8> %passThru, i32 %mask) {
4277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rmk_256:
4278*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
4280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb (%rdi), %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd8,0x0f]
4281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm0 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xc1]
4282*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4283*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4284*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> %passThru, i32 %mask)
4285*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4286*9880d681SAndroid Build Coastguard Worker}
4287*9880d681SAndroid Build Coastguard Worker
4288*9880d681SAndroid Build Coastguard Workerdefine <32 x i8> @test_mask_subs_epu8_rmkz_256(<32 x i8> %a, <32 x i8>* %ptr_b, i32 %mask) {
4289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_mask_subs_epu8_rmkz_256:
4290*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
4292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsubusb (%rdi), %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd8,0x07]
4293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4294*9880d681SAndroid Build Coastguard Worker  %b = load <32 x i8>, <32 x i8>* %ptr_b
4295*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8> %a, <32 x i8> %b, <32 x i8> zeroinitializer, i32 %mask)
4296*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
4297*9880d681SAndroid Build Coastguard Worker}
4298*9880d681SAndroid Build Coastguard Worker
4299*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.psubus.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4300*9880d681SAndroid Build Coastguard Worker
4301*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmaxs.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4302*9880d681SAndroid Build Coastguard Worker
4303*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmaxs_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask) {
4304*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_b_128:
4305*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4306*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4307*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x3c,0xd1]
4308*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x3c,0xc1]
4309*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
4310*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4311*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pmaxs.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2 ,i16 %mask)
4312*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmaxs.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)
4313*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4314*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4315*9880d681SAndroid Build Coastguard Worker}
4316*9880d681SAndroid Build Coastguard Worker
4317*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmaxs.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4318*9880d681SAndroid Build Coastguard Worker
4319*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmaxs_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {
4320*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_b_256:
4321*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4322*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4323*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x3c,0xd1]
4324*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x3c,0xc1]
4325*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
4326*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4327*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pmaxs.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)
4328*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmaxs.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)
4329*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4330*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4331*9880d681SAndroid Build Coastguard Worker}
4332*9880d681SAndroid Build Coastguard Worker
4333*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmaxs.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4334*9880d681SAndroid Build Coastguard Worker
4335*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmaxs_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4336*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_w_128:
4337*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4338*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xee,0xd1]
4340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xee,0xc1]
4341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4342*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4343*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmaxs.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4344*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmaxs.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4345*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4346*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4347*9880d681SAndroid Build Coastguard Worker}
4348*9880d681SAndroid Build Coastguard Worker
4349*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmaxs.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4350*9880d681SAndroid Build Coastguard Worker
4351*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmaxs_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {
4352*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxs_w_256:
4353*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4354*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4355*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xee,0xd1]
4356*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xee,0xc1]
4357*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4358*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4359*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmaxs.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)
4360*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmaxs.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)
4361*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4362*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4363*9880d681SAndroid Build Coastguard Worker}
4364*9880d681SAndroid Build Coastguard Worker
4365*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmaxu.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4366*9880d681SAndroid Build Coastguard Worker
4367*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmaxu_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2,i16 %mask) {
4368*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_b_128:
4369*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxub %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xde,0xd1]
4372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xde,0xc1]
4373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
4374*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4375*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pmaxu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask)
4376*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmaxu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)
4377*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4378*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4379*9880d681SAndroid Build Coastguard Worker}
4380*9880d681SAndroid Build Coastguard Worker
4381*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmaxu.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4382*9880d681SAndroid Build Coastguard Worker
4383*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmaxu_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {
4384*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_b_256:
4385*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4386*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxub %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xde,0xd1]
4388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxub %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xde,0xc1]
4389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
4390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4391*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pmaxu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)
4392*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmaxu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)
4393*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4394*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4395*9880d681SAndroid Build Coastguard Worker}
4396*9880d681SAndroid Build Coastguard Worker
4397*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmaxu.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4398*9880d681SAndroid Build Coastguard Worker
4399*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmaxu_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4400*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_w_128:
4401*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4402*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4403*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x3e,0xd1]
4404*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x3e,0xc1]
4405*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4406*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4407*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmaxu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4408*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmaxu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4409*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4410*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4411*9880d681SAndroid Build Coastguard Worker}
4412*9880d681SAndroid Build Coastguard Worker
4413*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmaxu.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4414*9880d681SAndroid Build Coastguard Worker
4415*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmaxu_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {
4416*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaxu_w_256:
4417*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4418*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4419*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x3e,0xd1]
4420*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x3e,0xc1]
4421*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4422*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4423*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmaxu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)
4424*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmaxu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)
4425*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4426*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4427*9880d681SAndroid Build Coastguard Worker}
4428*9880d681SAndroid Build Coastguard Worker
4429*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmins.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4430*9880d681SAndroid Build Coastguard Worker
4431*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmins_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask) {
4432*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_b_128:
4433*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4434*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4435*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x38,0xd1]
4436*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsb %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x38,0xc1]
4437*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
4438*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4439*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pmins.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask)
4440*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmins.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)
4441*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4442*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4443*9880d681SAndroid Build Coastguard Worker}
4444*9880d681SAndroid Build Coastguard Worker
4445*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pmins.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4446*9880d681SAndroid Build Coastguard Worker
4447*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pmins_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {
4448*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_b_256:
4449*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x38,0xd1]
4452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x38,0xc1]
4453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
4454*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4455*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pmins.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)
4456*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pmins.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)
4457*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4458*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4459*9880d681SAndroid Build Coastguard Worker}
4460*9880d681SAndroid Build Coastguard Worker
4461*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmins.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4462*9880d681SAndroid Build Coastguard Worker
4463*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmins_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4464*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_w_128:
4465*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4466*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xea,0xd1]
4468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xea,0xc1]
4469*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4470*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4471*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmins.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4472*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmins.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4473*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4474*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4475*9880d681SAndroid Build Coastguard Worker}
4476*9880d681SAndroid Build Coastguard Worker
4477*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmins.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4478*9880d681SAndroid Build Coastguard Worker
4479*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmins_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {
4480*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmins_w_256:
4481*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4482*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4483*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xea,0xd1]
4484*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminsw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xea,0xc1]
4485*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4486*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4487*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmins.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)
4488*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmins.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)
4489*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4490*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4491*9880d681SAndroid Build Coastguard Worker}
4492*9880d681SAndroid Build Coastguard Worker
4493*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pminu.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4494*9880d681SAndroid Build Coastguard Worker
4495*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pminu_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask) {
4496*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_b_128:
4497*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4498*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4499*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminub %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xda,0xd1]
4500*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminub %xmm1, %xmm0, %xmm0 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xda,0xc1]
4501*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
4502*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4503*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pminu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %mask)
4504*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pminu.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> zeroinitializer, i16 %mask)
4505*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4506*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4507*9880d681SAndroid Build Coastguard Worker}
4508*9880d681SAndroid Build Coastguard Worker
4509*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pminu.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4510*9880d681SAndroid Build Coastguard Worker
4511*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pminu_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {
4512*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_b_256:
4513*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4514*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4515*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminub %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xda,0xd1]
4516*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminub %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xda,0xc1]
4517*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
4518*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4519*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pminu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)
4520*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pminu.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)
4521*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4522*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4523*9880d681SAndroid Build Coastguard Worker}
4524*9880d681SAndroid Build Coastguard Worker
4525*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pminu.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4526*9880d681SAndroid Build Coastguard Worker
4527*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pminu_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4528*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_w_128:
4529*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x3a,0xd1]
4532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x3a,0xc1]
4533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4534*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4535*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pminu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4536*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pminu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4537*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4538*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4539*9880d681SAndroid Build Coastguard Worker}
4540*9880d681SAndroid Build Coastguard Worker
4541*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pminu.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4542*9880d681SAndroid Build Coastguard Worker
4543*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pminu_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask) {
4544*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pminu_w_256:
4545*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4546*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x3a,0xd1]
4548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpminuw %ymm1, %ymm0, %ymm0 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x3a,0xc1]
4549*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4550*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4551*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pminu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %mask)
4552*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pminu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %mask)
4553*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4554*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4555*9880d681SAndroid Build Coastguard Worker}
4556*9880d681SAndroid Build Coastguard Worker
4557*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4558*9880d681SAndroid Build Coastguard Worker
4559*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4560*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_128:
4561*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4562*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4563*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9]
4564*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %xmm2, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x7d,0xda]
4565*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %xmm2, %xmm0, %xmm1 ## encoding: [0x62,0xf2,0xfd,0x08,0x7d,0xca]
4566*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x65,0x08,0xfd,0xc1]
4567*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4568*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4569*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4570*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4571*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4572*9880d681SAndroid Build Coastguard Worker}
4573*9880d681SAndroid Build Coastguard Worker
4574*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4575*9880d681SAndroid Build Coastguard Worker
4576*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_maskz_vpermt2var_hi_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4577*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_hi_128:
4578*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4579*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4580*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9]
4581*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %xmm2, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x7d,0xda]
4582*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %xmm2, %xmm0, %xmm1 ## encoding: [0x62,0xf2,0xfd,0x08,0x7d,0xca]
4583*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x65,0x08,0xfd,0xc1]
4584*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4585*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4586*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4587*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4588*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4589*9880d681SAndroid Build Coastguard Worker}
4590*9880d681SAndroid Build Coastguard Worker
4591*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4592*9880d681SAndroid Build Coastguard Worker
4593*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_vpermt2var_hi_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4594*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermt2var_hi_256:
4595*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4596*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4597*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9]
4598*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %ymm2, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x7d,0xda]
4599*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %ymm2, %ymm0, %ymm1 ## encoding: [0x62,0xf2,0xfd,0x28,0x7d,0xca]
4600*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x65,0x28,0xfd,0xc1]
4601*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4602*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4603*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.vpermt2var.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4604*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4605*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4606*9880d681SAndroid Build Coastguard Worker}
4607*9880d681SAndroid Build Coastguard Worker
4608*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4609*9880d681SAndroid Build Coastguard Worker
4610*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_maskz_vpermt2var_hi_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4611*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_maskz_vpermt2var_hi_256:
4612*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9]
4615*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %ymm2, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x7d,0xda]
4616*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermt2w %ymm2, %ymm0, %ymm1 ## encoding: [0x62,0xf2,0xfd,0x28,0x7d,0xca]
4617*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x65,0x28,0xfd,0xc1]
4618*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4619*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4620*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.maskz.vpermt2var.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4621*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4622*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4623*9880d681SAndroid Build Coastguard Worker}
4624*9880d681SAndroid Build Coastguard Worker
4625*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4626*9880d681SAndroid Build Coastguard Worker
4627*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_vpermi2var_hi_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4628*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_hi_128:
4629*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4631*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9]
4632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2w %xmm2, %xmm0, %xmm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x75,0xda]
4633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2w %xmm2, %xmm0, %xmm1 ## encoding: [0x62,0xf2,0xfd,0x08,0x75,0xca]
4634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x65,0x08,0xfd,0xc1]
4635*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4636*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4637*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4638*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4639*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4640*9880d681SAndroid Build Coastguard Worker}
4641*9880d681SAndroid Build Coastguard Worker
4642*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4643*9880d681SAndroid Build Coastguard Worker
4644*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_vpermi2var_hi_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4645*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_vpermi2var_hi_256:
4646*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4647*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vmovaps %zmm1, %zmm3 ## encoding: [0x62,0xf1,0x7c,0x48,0x28,0xd9]
4649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2w %ymm2, %ymm0, %ymm3 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x75,0xda]
4650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermi2w %ymm2, %ymm0, %ymm1 ## encoding: [0x62,0xf2,0xfd,0x28,0x75,0xca]
4651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm1, %ymm3, %ymm0 ## encoding: [0x62,0xf1,0x65,0x28,0xfd,0xc1]
4652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4653*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4654*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.vpermi2var.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4655*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4656*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4657*9880d681SAndroid Build Coastguard Worker}
4658*9880d681SAndroid Build Coastguard Worker
4659*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pavg.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4660*9880d681SAndroid Build Coastguard Worker
4661*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pavg_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) {
4662*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pavg_b_128:
4663*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4664*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4665*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe0,0xd1]
4666*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe0,0xc1]
4667*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
4668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4669*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pavg.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3)
4670*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pavg.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1)
4671*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4672*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4673*9880d681SAndroid Build Coastguard Worker}
4674*9880d681SAndroid Build Coastguard Worker
4675*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pavg.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4676*9880d681SAndroid Build Coastguard Worker
4677*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pavg_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {
4678*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pavg_b_256:
4679*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4680*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4681*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe0,0xd1]
4682*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgb %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe0,0xc1]
4683*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
4684*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4685*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pavg.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)
4686*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pavg.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)
4687*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4688*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4689*9880d681SAndroid Build Coastguard Worker}
4690*9880d681SAndroid Build Coastguard Worker
4691*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pavg.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4692*9880d681SAndroid Build Coastguard Worker
4693*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pavg_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4694*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pavg_w_128:
4695*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe3,0xd1]
4698*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe3,0xc1]
4699*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4700*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4701*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pavg.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4702*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pavg.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4703*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4704*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4705*9880d681SAndroid Build Coastguard Worker}
4706*9880d681SAndroid Build Coastguard Worker
4707*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pavg.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4708*9880d681SAndroid Build Coastguard Worker
4709*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pavg_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4710*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pavg_w_256:
4711*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe3,0xd1]
4714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpavgw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe3,0xc1]
4715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4717*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pavg.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4718*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pavg.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4719*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4720*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4721*9880d681SAndroid Build Coastguard Worker}
4722*9880d681SAndroid Build Coastguard Worker
4723*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pshuf.b.128(<16 x i8>, <16 x i8>, <16 x i8>, i16)
4724*9880d681SAndroid Build Coastguard Worker
4725*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pshuf_b_128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3) {
4726*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pshuf_b_128:
4727*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4728*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4729*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpshufb %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x00,0xd1]
4730*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpshufb %xmm1, %xmm0, %xmm0 ## encoding: [0xc4,0xe2,0x79,0x00,0xc1]
4731*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
4732*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4733*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pshuf.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 %x3)
4734*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pshuf.b.128(<16 x i8> %x0, <16 x i8> %x1, <16 x i8> %x2, i16 -1)
4735*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4736*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4737*9880d681SAndroid Build Coastguard Worker}
4738*9880d681SAndroid Build Coastguard Worker
4739*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pshuf.b.256(<32 x i8>, <32 x i8>, <32 x i8>, i32)
4740*9880d681SAndroid Build Coastguard Worker
4741*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pshuf_b_256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3) {
4742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pshuf_b_256:
4743*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4744*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4745*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpshufb %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x00,0xd1]
4746*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpshufb %ymm1, %ymm0, %ymm0 ## encoding: [0xc4,0xe2,0x7d,0x00,0xc1]
4747*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
4748*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4749*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pshuf.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 %x3)
4750*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pshuf.b.256(<32 x i8> %x0, <32 x i8> %x1, <32 x i8> %x2, i32 -1)
4751*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4752*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4753*9880d681SAndroid Build Coastguard Worker}
4754*9880d681SAndroid Build Coastguard Worker
4755*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pabs.b.128(<16 x i8>, <16 x i8>, i16)
4756*9880d681SAndroid Build Coastguard Worker
4757*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pabs_b_128(<16 x i8> %x0, <16 x i8> %x1, i16 %x2) {
4758*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_b_128:
4759*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsb %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x1c,0xc8]
4762*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsb %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x1c,0xc0]
4763*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfc,0xc0]
4764*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4765*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pabs.b.128(<16 x i8> %x0, <16 x i8> %x1, i16 %x2)
4766*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pabs.b.128(<16 x i8> %x0, <16 x i8> %x1, i16 -1)
4767*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i8> %res, %res1
4768*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res2
4769*9880d681SAndroid Build Coastguard Worker}
4770*9880d681SAndroid Build Coastguard Worker
4771*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pabs.b.256(<32 x i8>, <32 x i8>, i32)
4772*9880d681SAndroid Build Coastguard Worker
4773*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pabs_b_256(<32 x i8> %x0, <32 x i8> %x1, i32 %x2) {
4774*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_b_256:
4775*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
4777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsb %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x1c,0xc8]
4778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsb %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x1c,0xc0]
4779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfc,0xc0]
4780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4781*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pabs.b.256(<32 x i8> %x0, <32 x i8> %x1, i32 %x2)
4782*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pabs.b.256(<32 x i8> %x0, <32 x i8> %x1, i32 -1)
4783*9880d681SAndroid Build Coastguard Worker  %res2 = add <32 x i8> %res, %res1
4784*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res2
4785*9880d681SAndroid Build Coastguard Worker}
4786*9880d681SAndroid Build Coastguard Worker
4787*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pabs.w.128(<8 x i16>, <8 x i16>, i8)
4788*9880d681SAndroid Build Coastguard Worker
4789*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pabs_w_128(<8 x i16> %x0, <8 x i16> %x1, i8 %x2) {
4790*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_w_128:
4791*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4792*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4793*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsw %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x1d,0xc8]
4794*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsw %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x1d,0xc0]
4795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
4796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4797*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pabs.w.128(<8 x i16> %x0, <8 x i16> %x1, i8 %x2)
4798*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pabs.w.128(<8 x i16> %x0, <8 x i16> %x1, i8 -1)
4799*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4800*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4801*9880d681SAndroid Build Coastguard Worker}
4802*9880d681SAndroid Build Coastguard Worker
4803*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pabs.w.256(<16 x i16>, <16 x i16>, i16)
4804*9880d681SAndroid Build Coastguard Worker
4805*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pabs_w_256(<16 x i16> %x0, <16 x i16> %x1, i16 %x2) {
4806*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pabs_w_256:
4807*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4808*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4809*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsw %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x1d,0xc8]
4810*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpabsw %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x1d,0xc0]
4811*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
4812*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4813*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pabs.w.256(<16 x i16> %x0, <16 x i16> %x1, i16 %x2)
4814*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pabs.w.256(<16 x i16> %x0, <16 x i16> %x1, i16 -1)
4815*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4816*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4817*9880d681SAndroid Build Coastguard Worker}
4818*9880d681SAndroid Build Coastguard Worker
4819*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmulhu.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4820*9880d681SAndroid Build Coastguard Worker
4821*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmulhu_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmulhu_w_128:
4823*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4824*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4825*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe4,0xd1]
4826*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhuw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe4,0xc1]
4827*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4828*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4829*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmulhu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4830*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmulhu.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4831*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4832*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4833*9880d681SAndroid Build Coastguard Worker}
4834*9880d681SAndroid Build Coastguard Worker
4835*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmulhu.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4836*9880d681SAndroid Build Coastguard Worker
4837*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmulhu_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4838*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmulhu_w_256:
4839*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhuw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe4,0xd1]
4842*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhuw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe4,0xc1]
4843*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4844*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4845*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmulhu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4846*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmulhu.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4847*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4848*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4849*9880d681SAndroid Build Coastguard Worker}
4850*9880d681SAndroid Build Coastguard Worker
4851*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmulh.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4852*9880d681SAndroid Build Coastguard Worker
4853*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmulh_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4854*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmulh_w_128:
4855*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe5,0xd1]
4858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe5,0xc1]
4859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4861*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmulh.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4862*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmulh.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4863*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4864*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4865*9880d681SAndroid Build Coastguard Worker}
4866*9880d681SAndroid Build Coastguard Worker
4867*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmulh.w.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4868*9880d681SAndroid Build Coastguard Worker
4869*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmulh_w_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4870*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmulh_w_256:
4871*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4872*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4873*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe5,0xd1]
4874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe5,0xc1]
4875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4877*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmulh.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4878*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmulh.w.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4879*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4880*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4881*9880d681SAndroid Build Coastguard Worker}
4882*9880d681SAndroid Build Coastguard Worker
4883*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
4884*9880d681SAndroid Build Coastguard Worker
4885*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmulhr_sw_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
4886*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmulhr_sw_128:
4887*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4888*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4889*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhrsw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x0b,0xd1]
4890*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhrsw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x0b,0xc1]
4891*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
4892*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4893*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
4894*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
4895*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
4896*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
4897*9880d681SAndroid Build Coastguard Worker}
4898*9880d681SAndroid Build Coastguard Worker
4899*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
4900*9880d681SAndroid Build Coastguard Worker
4901*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmulhr_sw_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
4902*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmulhr_sw_256:
4903*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4904*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4905*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhrsw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x0b,0xd1]
4906*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmulhrsw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x0b,0xc1]
4907*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
4908*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4909*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
4910*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmul.hr.sw.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
4911*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
4912*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
4913*9880d681SAndroid Build Coastguard Worker}
4914*9880d681SAndroid Build Coastguard Worker
4915*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmov.wb.128(<8 x i16>, <16 x i8>, i8)
4916*9880d681SAndroid Build Coastguard Worker
4917*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmov_wb_128(<8 x i16> %x0, <16 x i8> %x1, i8 %x2) {
4918*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_wb_128:
4919*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4920*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4921*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x30,0xc1]
4922*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7e,0x89,0x30,0xc2]
4923*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x08,0x30,0xc0]
4924*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1]
4925*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc2]
4926*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4927*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmov.wb.128(<8 x i16> %x0, <16 x i8> %x1, i8 -1)
4928*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.wb.128(<8 x i16> %x0, <16 x i8> %x1, i8 %x2)
4929*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmov.wb.128(<8 x i16> %x0, <16 x i8> zeroinitializer, i8 %x2)
4930*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4931*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4932*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4933*9880d681SAndroid Build Coastguard Worker}
4934*9880d681SAndroid Build Coastguard Worker
4935*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.wb.mem.128(i8* %ptr, <8 x i16>, i8)
4936*9880d681SAndroid Build Coastguard Worker
4937*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_wb_mem_128(i8* %ptr, <8 x i16> %x1, i8 %x2) {
4938*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_wb_mem_128:
4939*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4940*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
4941*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %xmm0, (%rdi) ## encoding: [0x62,0xf2,0x7e,0x08,0x30,0x07]
4942*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %xmm0, (%rdi) {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x30,0x07]
4943*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4944*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.wb.mem.128(i8* %ptr, <8 x i16> %x1, i8 -1)
4945*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.wb.mem.128(i8* %ptr, <8 x i16> %x1, i8 %x2)
4946*9880d681SAndroid Build Coastguard Worker    ret void
4947*9880d681SAndroid Build Coastguard Worker}
4948*9880d681SAndroid Build Coastguard Worker
4949*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.128(<8 x i16>, <16 x i8>, i8)
4950*9880d681SAndroid Build Coastguard Worker
4951*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovs_wb_128(<8 x i16> %x0, <16 x i8> %x1, i8 %x2) {
4952*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_wb_128:
4953*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4955*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x20,0xc1]
4956*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7e,0x89,0x20,0xc2]
4957*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x08,0x20,0xc0]
4958*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1]
4959*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc2]
4960*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4961*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.128(<8 x i16> %x0, <16 x i8> %x1, i8 -1)
4962*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.128(<8 x i16> %x0, <16 x i8> %x1, i8 %x2)
4963*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.128(<8 x i16> %x0, <16 x i8> zeroinitializer, i8 %x2)
4964*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4965*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
4966*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
4967*9880d681SAndroid Build Coastguard Worker}
4968*9880d681SAndroid Build Coastguard Worker
4969*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.wb.mem.128(i8* %ptr, <8 x i16>, i8)
4970*9880d681SAndroid Build Coastguard Worker
4971*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_wb_mem_128(i8* %ptr, <8 x i16> %x1, i8 %x2) {
4972*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_wb_mem_128:
4973*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4974*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %xmm0, (%rdi) ## encoding: [0x62,0xf2,0x7e,0x08,0x20,0x07]
4975*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
4976*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %xmm0, (%rdi) {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x20,0x07]
4977*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4978*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.wb.mem.128(i8* %ptr, <8 x i16> %x1, i8 -1)
4979*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.wb.mem.128(i8* %ptr, <8 x i16> %x1, i8 %x2)
4980*9880d681SAndroid Build Coastguard Worker    ret void
4981*9880d681SAndroid Build Coastguard Worker}
4982*9880d681SAndroid Build Coastguard Worker
4983*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.128(<8 x i16>, <16 x i8>, i8)
4984*9880d681SAndroid Build Coastguard Worker
4985*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovus_wb_128(<8 x i16> %x0, <16 x i8> %x1, i8 %x2) {
4986*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_wb_128:
4987*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
4988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
4989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x10,0xc1]
4990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7e,0x89,0x10,0xc2]
4991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x08,0x10,0xc0]
4992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1]
4993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc2]
4994*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
4995*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.128(<8 x i16> %x0, <16 x i8> %x1, i8 -1)
4996*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.128(<8 x i16> %x0, <16 x i8> %x1, i8 %x2)
4997*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.128(<8 x i16> %x0, <16 x i8> zeroinitializer, i8 %x2)
4998*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
4999*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
5000*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
5001*9880d681SAndroid Build Coastguard Worker}
5002*9880d681SAndroid Build Coastguard Worker
5003*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.wb.mem.128(i8* %ptr, <8 x i16>, i8)
5004*9880d681SAndroid Build Coastguard Worker
5005*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_wb_mem_128(i8* %ptr, <8 x i16> %x1, i8 %x2) {
5006*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_wb_mem_128:
5007*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %xmm0, (%rdi) ## encoding: [0x62,0xf2,0x7e,0x08,0x10,0x07]
5009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %xmm0, (%rdi) {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x10,0x07]
5011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5012*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.wb.mem.128(i8* %ptr, <8 x i16> %x1, i8 -1)
5013*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.wb.mem.128(i8* %ptr, <8 x i16> %x1, i8 %x2)
5014*9880d681SAndroid Build Coastguard Worker    ret void
5015*9880d681SAndroid Build Coastguard Worker}
5016*9880d681SAndroid Build Coastguard Worker
5017*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmov.wb.256(<16 x i16>, <16 x i8>, i16)
5018*9880d681SAndroid Build Coastguard Worker
5019*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmov_wb_256(<16 x i16> %x0, <16 x i8> %x1, i16 %x2) {
5020*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_wb_256:
5021*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5022*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5023*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %ymm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x30,0xc1]
5024*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %ymm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7e,0xa9,0x30,0xc2]
5025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %ymm0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x28,0x30,0xc0]
5026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1]
5027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc2]
5028*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5029*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmov.wb.256(<16 x i16> %x0, <16 x i8> %x1, i16 -1)
5030*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmov.wb.256(<16 x i16> %x0, <16 x i8> %x1, i16 %x2)
5031*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmov.wb.256(<16 x i16> %x0, <16 x i8> zeroinitializer, i16 %x2)
5032*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
5033*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
5034*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
5035*9880d681SAndroid Build Coastguard Worker}
5036*9880d681SAndroid Build Coastguard Worker
5037*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmov.wb.mem.256(i8* %ptr, <16 x i16>, i16)
5038*9880d681SAndroid Build Coastguard Worker
5039*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmov_wb_mem_256(i8* %ptr, <16 x i16> %x1, i16 %x2) {
5040*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmov_wb_mem_256:
5041*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5042*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5043*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %ymm0, (%rdi) ## encoding: [0x62,0xf2,0x7e,0x28,0x30,0x07]
5044*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovwb %ymm0, (%rdi) {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x30,0x07]
5045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5046*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.wb.mem.256(i8* %ptr, <16 x i16> %x1, i16 -1)
5047*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmov.wb.mem.256(i8* %ptr, <16 x i16> %x1, i16 %x2)
5048*9880d681SAndroid Build Coastguard Worker    ret void
5049*9880d681SAndroid Build Coastguard Worker}
5050*9880d681SAndroid Build Coastguard Worker
5051*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.256(<16 x i16>, <16 x i8>, i16)
5052*9880d681SAndroid Build Coastguard Worker
5053*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovs_wb_256(<16 x i16> %x0, <16 x i8> %x1, i16 %x2) {
5054*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_wb_256:
5055*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5056*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5057*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %ymm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x20,0xc1]
5058*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %ymm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7e,0xa9,0x20,0xc2]
5059*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %ymm0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x28,0x20,0xc0]
5060*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1]
5061*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc2]
5062*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5063*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.256(<16 x i16> %x0, <16 x i8> %x1, i16 -1)
5064*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.256(<16 x i16> %x0, <16 x i8> %x1, i16 %x2)
5065*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovs.wb.256(<16 x i16> %x0, <16 x i8> zeroinitializer, i16 %x2)
5066*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
5067*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
5068*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
5069*9880d681SAndroid Build Coastguard Worker}
5070*9880d681SAndroid Build Coastguard Worker
5071*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovs.wb.mem.256(i8* %ptr, <16 x i16>, i16)
5072*9880d681SAndroid Build Coastguard Worker
5073*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovs_wb_mem_256(i8* %ptr, <16 x i16> %x1, i16 %x2) {
5074*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovs_wb_mem_256:
5075*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5076*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %ymm0, (%rdi) ## encoding: [0x62,0xf2,0x7e,0x28,0x20,0x07]
5077*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5078*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovswb %ymm0, (%rdi) {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x20,0x07]
5079*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5080*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.wb.mem.256(i8* %ptr, <16 x i16> %x1, i16 -1)
5081*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovs.wb.mem.256(i8* %ptr, <16 x i16> %x1, i16 %x2)
5082*9880d681SAndroid Build Coastguard Worker    ret void
5083*9880d681SAndroid Build Coastguard Worker}
5084*9880d681SAndroid Build Coastguard Worker
5085*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.256(<16 x i16>, <16 x i8>, i16)
5086*9880d681SAndroid Build Coastguard Worker
5087*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pmovus_wb_256(<16 x i16> %x0, <16 x i8> %x1, i16 %x2) {
5088*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_wb_256:
5089*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5090*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5091*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %ymm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x10,0xc1]
5092*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %ymm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7e,0xa9,0x10,0xc2]
5093*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %ymm0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x28,0x10,0xc0]
5094*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc1]
5095*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm2, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfc,0xc2]
5096*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5097*9880d681SAndroid Build Coastguard Worker    %res0 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.256(<16 x i16> %x0, <16 x i8> %x1, i16 -1)
5098*9880d681SAndroid Build Coastguard Worker    %res1 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.256(<16 x i16> %x0, <16 x i8> %x1, i16 %x2)
5099*9880d681SAndroid Build Coastguard Worker    %res2 = call <16 x i8> @llvm.x86.avx512.mask.pmovus.wb.256(<16 x i16> %x0, <16 x i8> zeroinitializer, i16 %x2)
5100*9880d681SAndroid Build Coastguard Worker    %res3 = add <16 x i8> %res0, %res1
5101*9880d681SAndroid Build Coastguard Worker    %res4 = add <16 x i8> %res3, %res2
5102*9880d681SAndroid Build Coastguard Worker    ret <16 x i8> %res4
5103*9880d681SAndroid Build Coastguard Worker}
5104*9880d681SAndroid Build Coastguard Worker
5105*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.avx512.mask.pmovus.wb.mem.256(i8* %ptr, <16 x i16>, i16)
5106*9880d681SAndroid Build Coastguard Worker
5107*9880d681SAndroid Build Coastguard Workerdefine void @test_int_x86_avx512_mask_pmovus_wb_mem_256(i8* %ptr, <16 x i16> %x1, i16 %x2) {
5108*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovus_wb_mem_256:
5109*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %ymm0, (%rdi) ## encoding: [0x62,0xf2,0x7e,0x28,0x10,0x07]
5111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovuswb %ymm0, (%rdi) {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x10,0x07]
5113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5114*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.wb.mem.256(i8* %ptr, <16 x i16> %x1, i16 -1)
5115*9880d681SAndroid Build Coastguard Worker    call void @llvm.x86.avx512.mask.pmovus.wb.mem.256(i8* %ptr, <16 x i16> %x1, i16 %x2)
5116*9880d681SAndroid Build Coastguard Worker    ret void
5117*9880d681SAndroid Build Coastguard Worker}
5118*9880d681SAndroid Build Coastguard Worker
5119*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.x86.avx512.mask.pmaddw.d.128(<8 x i16>, <8 x i16>, <4 x i32>, i8)
5120*9880d681SAndroid Build Coastguard Worker
5121*9880d681SAndroid Build Coastguard Workerdefine <4 x i32>@test_int_x86_avx512_mask_pmaddw_d_128(<8 x i16> %x0, <8 x i16> %x1, <4 x i32> %x2, i8 %x3) {
5122*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaddw_d_128:
5123*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xf5,0xd1]
5126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddwd %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xf5,0xc1]
5127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfe,0xc0]
5128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5129*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i32> @llvm.x86.avx512.mask.pmaddw.d.128(<8 x i16> %x0, <8 x i16> %x1, <4 x i32> %x2, i8 %x3)
5130*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i32> @llvm.x86.avx512.mask.pmaddw.d.128(<8 x i16> %x0, <8 x i16> %x1, <4 x i32> %x2, i8 -1)
5131*9880d681SAndroid Build Coastguard Worker  %res2 = add <4 x i32> %res, %res1
5132*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res2
5133*9880d681SAndroid Build Coastguard Worker}
5134*9880d681SAndroid Build Coastguard Worker
5135*9880d681SAndroid Build Coastguard Workerdeclare <8 x i32> @llvm.x86.avx512.mask.pmaddw.d.256(<16 x i16>, <16 x i16>, <8 x i32>, i8)
5136*9880d681SAndroid Build Coastguard Worker
5137*9880d681SAndroid Build Coastguard Workerdefine <8 x i32>@test_int_x86_avx512_mask_pmaddw_d_256(<16 x i16> %x0, <16 x i16> %x1, <8 x i32> %x2, i8 %x3) {
5138*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaddw_d_256:
5139*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddwd %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xf5,0xd1]
5142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddwd %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xf5,0xc1]
5143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddd %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfe,0xc0]
5144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5145*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i32> @llvm.x86.avx512.mask.pmaddw.d.256(<16 x i16> %x0, <16 x i16> %x1, <8 x i32> %x2, i8 %x3)
5146*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i32> @llvm.x86.avx512.mask.pmaddw.d.256(<16 x i16> %x0, <16 x i16> %x1, <8 x i32> %x2, i8 -1)
5147*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i32> %res, %res1
5148*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res2
5149*9880d681SAndroid Build Coastguard Worker}
5150*9880d681SAndroid Build Coastguard Worker
5151*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmaddubs.w.128(<16 x i8>, <16 x i8>, <8 x i16>, i8)
5152*9880d681SAndroid Build Coastguard Worker
5153*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmaddubs_w_128(<16 x i8> %x0, <16 x i8> %x1, <8 x i16> %x2, i8 %x3) {
5154*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaddubs_w_128:
5155*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddubsw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x04,0xd1]
5158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddubsw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x04,0xc1]
5159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
5160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5161*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmaddubs.w.128(<16 x i8> %x0, <16 x i8> %x1, <8 x i16> %x2, i8 %x3)
5162*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmaddubs.w.128(<16 x i8> %x0, <16 x i8> %x1, <8 x i16> %x2, i8 -1)
5163*9880d681SAndroid Build Coastguard Worker  %res2 = add <8 x i16> %res, %res1
5164*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res2
5165*9880d681SAndroid Build Coastguard Worker}
5166*9880d681SAndroid Build Coastguard Worker
5167*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmaddubs.w.256(<32 x i8>, <32 x i8>, <16 x i16>, i16)
5168*9880d681SAndroid Build Coastguard Worker
5169*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmaddubs_w_256(<32 x i8> %x0, <32 x i8> %x1, <16 x i16> %x2, i16 %x3) {
5170*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmaddubs_w_256:
5171*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddubsw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x04,0xd1]
5174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmaddubsw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x04,0xc1]
5175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
5176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5177*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmaddubs.w.256(<32 x i8> %x0, <32 x i8> %x1, <16 x i16> %x2, i16 %x3)
5178*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmaddubs.w.256(<32 x i8> %x0, <32 x i8> %x1, <16 x i16> %x2, i16 -1)
5179*9880d681SAndroid Build Coastguard Worker  %res2 = add <16 x i16> %res, %res1
5180*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res2
5181*9880d681SAndroid Build Coastguard Worker}
5182*9880d681SAndroid Build Coastguard Worker
5183*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.dbpsadbw.128(<16 x i8>, <16 x i8>, i32, <8 x i16>, i8)
5184*9880d681SAndroid Build Coastguard Worker
5185*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_dbpsadbw_128(<16 x i8> %x0, <16 x i8> %x1, <8 x i16> %x3, i8 %x4) {
5186*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_dbpsadbw_128:
5187*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdbpsadbw $2, %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf3,0x7d,0x09,0x42,0xd1,0x02]
5190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdbpsadbw $2, %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf3,0x7d,0x89,0x42,0xd9,0x02]
5191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdbpsadbw $2, %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf3,0x7d,0x08,0x42,0xc1,0x02]
5192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xfd,0xc1]
5194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5195*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.dbpsadbw.128(<16 x i8> %x0, <16 x i8> %x1, i32 2, <8 x i16> %x3, i8 %x4)
5196*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.dbpsadbw.128(<16 x i8> %x0, <16 x i8> %x1, i32 2, <8 x i16> zeroinitializer, i8 %x4)
5197*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.dbpsadbw.128(<16 x i8> %x0, <16 x i8> %x1, i32 2, <8 x i16> %x3, i8 -1)
5198*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5199*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res2, %res3
5200*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5201*9880d681SAndroid Build Coastguard Worker}
5202*9880d681SAndroid Build Coastguard Worker
5203*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.dbpsadbw.256(<32 x i8>, <32 x i8>, i32, <16 x i16>, i16)
5204*9880d681SAndroid Build Coastguard Worker
5205*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_dbpsadbw_256(<32 x i8> %x0, <32 x i8> %x1, <16 x i16> %x3, i16 %x4) {
5206*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_dbpsadbw_256:
5207*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdbpsadbw $2, %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf3,0x7d,0x29,0x42,0xd1,0x02]
5210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdbpsadbw $2, %ymm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf3,0x7d,0xa9,0x42,0xd9,0x02]
5211*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vdbpsadbw $2, %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf3,0x7d,0x28,0x42,0xc1,0x02]
5212*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5214*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5215*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.dbpsadbw.256(<32 x i8> %x0, <32 x i8> %x1, i32 2, <16 x i16> %x3, i16 %x4)
5216*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.dbpsadbw.256(<32 x i8> %x0, <32 x i8> %x1, i32 2, <16 x i16> zeroinitializer, i16 %x4)
5217*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.dbpsadbw.256(<32 x i8> %x0, <32 x i8> %x1, i32 2, <16 x i16> %x3, i16 -1)
5218*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5219*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5220*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5221*9880d681SAndroid Build Coastguard Worker}
5222*9880d681SAndroid Build Coastguard Worker
5223*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.cvtb2mask.128(<16 x i8>)
5224*9880d681SAndroid Build Coastguard Worker
5225*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_cvtb2mask_128(<16 x i8> %x0) {
5226*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtb2mask_128:
5227*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5228*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovb2m %xmm0, %k0 ## encoding: [0x62,0xf2,0x7e,0x08,0x29,0xc0]
5229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5230*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
5231*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5232*9880d681SAndroid Build Coastguard Worker    %res = call i16 @llvm.x86.avx512.cvtb2mask.128(<16 x i8> %x0)
5233*9880d681SAndroid Build Coastguard Worker    ret i16 %res
5234*9880d681SAndroid Build Coastguard Worker}
5235*9880d681SAndroid Build Coastguard Worker
5236*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.cvtb2mask.256(<32 x i8>)
5237*9880d681SAndroid Build Coastguard Worker
5238*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_cvtb2mask_256(<32 x i8> %x0) {
5239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtb2mask_256:
5240*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovb2m %ymm0, %k0 ## encoding: [0x62,0xf2,0x7e,0x28,0x29,0xc0]
5242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
5243*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5244*9880d681SAndroid Build Coastguard Worker    %res = call i32 @llvm.x86.avx512.cvtb2mask.256(<32 x i8> %x0)
5245*9880d681SAndroid Build Coastguard Worker    ret i32 %res
5246*9880d681SAndroid Build Coastguard Worker}
5247*9880d681SAndroid Build Coastguard Worker
5248*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.cvtw2mask.128(<8 x i16>)
5249*9880d681SAndroid Build Coastguard Worker
5250*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_cvtw2mask_128(<8 x i16> %x0) {
5251*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtw2mask_128:
5252*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5253*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovw2m %xmm0, %k0 ## encoding: [0x62,0xf2,0xfe,0x08,0x29,0xc0]
5254*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5255*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
5256*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5257*9880d681SAndroid Build Coastguard Worker    %res = call i8 @llvm.x86.avx512.cvtw2mask.128(<8 x i16> %x0)
5258*9880d681SAndroid Build Coastguard Worker    ret i8 %res
5259*9880d681SAndroid Build Coastguard Worker}
5260*9880d681SAndroid Build Coastguard Worker
5261*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.cvtw2mask.256(<16 x i16>)
5262*9880d681SAndroid Build Coastguard Worker
5263*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_cvtw2mask_256(<16 x i16> %x0) {
5264*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtw2mask_256:
5265*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovw2m %ymm0, %k0 ## encoding: [0x62,0xf2,0xfe,0x28,0x29,0xc0]
5267*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5268*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
5269*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5270*9880d681SAndroid Build Coastguard Worker    %res = call i16 @llvm.x86.avx512.cvtw2mask.256(<16 x i16> %x0)
5271*9880d681SAndroid Build Coastguard Worker    ret i16 %res
5272*9880d681SAndroid Build Coastguard Worker}
5273*9880d681SAndroid Build Coastguard Worker
5274*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.cvtmask2b.128(i16)
5275*9880d681SAndroid Build Coastguard Worker
5276*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_cvtmask2b_128(i16 %x0) {
5277*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2b_128:
5278*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5279*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0 ## encoding: [0xc5,0xf8,0x92,0xc7]
5280*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2b %k0, %xmm0 ## encoding: [0x62,0xf2,0x7e,0x08,0x28,0xc0]
5281*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5282*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.cvtmask2b.128(i16 %x0)
5283*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
5284*9880d681SAndroid Build Coastguard Worker}
5285*9880d681SAndroid Build Coastguard Worker
5286*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.cvtmask2b.256(i32)
5287*9880d681SAndroid Build Coastguard Worker
5288*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_cvtmask2b_256(i32 %x0) {
5289*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2b_256:
5290*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k0 ## encoding: [0xc5,0xfb,0x92,0xc7]
5292*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2b %k0, %ymm0 ## encoding: [0x62,0xf2,0x7e,0x28,0x28,0xc0]
5293*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5294*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.cvtmask2b.256(i32 %x0)
5295*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res
5296*9880d681SAndroid Build Coastguard Worker}
5297*9880d681SAndroid Build Coastguard Worker
5298*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.cvtmask2w.128(i8)
5299*9880d681SAndroid Build Coastguard Worker
5300*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_cvtmask2w_128(i8 %x0) {
5301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2w_128:
5302*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5303*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0 ## encoding: [0xc5,0xf8,0x92,0xc7]
5304*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2w %k0, %xmm0 ## encoding: [0x62,0xf2,0xfe,0x08,0x28,0xc0]
5305*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5306*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.cvtmask2w.128(i8 %x0)
5307*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
5308*9880d681SAndroid Build Coastguard Worker}
5309*9880d681SAndroid Build Coastguard Worker
5310*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.cvtmask2w.256(i16)
5311*9880d681SAndroid Build Coastguard Worker
5312*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_cvtmask2w_256(i16 %x0) {
5313*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_cvtmask2w_256:
5314*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k0 ## encoding: [0xc5,0xf8,0x92,0xc7]
5316*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovm2w %k0, %ymm0 ## encoding: [0x62,0xf2,0xfe,0x28,0x28,0xc0]
5317*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5318*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.cvtmask2w.256(i16 %x0)
5319*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res
5320*9880d681SAndroid Build Coastguard Worker}
5321*9880d681SAndroid Build Coastguard Worker
5322*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psrl.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5323*9880d681SAndroid Build Coastguard Worker
5324*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psrl_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_w_128:
5326*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5328*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xd1,0xd1]
5329*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xd1,0xd9]
5330*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xd1,0xc1]
5331*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
5332*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm3, %xmm0 ## encoding: [0x62,0xf1,0x65,0x08,0xfd,0xc0]
5333*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5334*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psrl.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5335*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psrl.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5336*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psrl.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5337*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5338*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res2, %res3
5339*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5340*9880d681SAndroid Build Coastguard Worker}
5341*9880d681SAndroid Build Coastguard Worker
5342*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psrl.w.256(<16 x i16>, <8 x i16>, <16 x i16>, i16)
5343*9880d681SAndroid Build Coastguard Worker
5344*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psrl_w_256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5345*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_w_256:
5346*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5347*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5348*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw %xmm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xd1,0xd1]
5349*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw %xmm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xd1,0xd9]
5350*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw %xmm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xd1,0xc1]
5351*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
5352*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xfd,0xc3]
5353*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5354*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psrl.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 %x3)
5355*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psrl.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 -1)
5356*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psrl.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5357*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5358*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5359*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5360*9880d681SAndroid Build Coastguard Worker}
5361*9880d681SAndroid Build Coastguard Worker
5362*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psrl.wi.128(<8 x i16>, i32, <8 x i16>, i8)
5363*9880d681SAndroid Build Coastguard Worker
5364*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psrl_wi_128(<8 x i16> %x0, i32 %x1, <8 x i16> %x2, i8 %x3) {
5365*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_wi_128:
5366*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5367*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5368*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw $3, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x75,0x09,0x71,0xd0,0x03]
5369*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw $3, %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf1,0x6d,0x89,0x71,0xd0,0x03]
5370*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw $3, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x71,0xd0,0x03]
5371*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5372*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
5373*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5374*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psrl.wi.128(<8 x i16> %x0, i32 3, <8 x i16> %x2, i8 %x3)
5375*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psrl.wi.128(<8 x i16> %x0, i32 3, <8 x i16> %x2, i8 -1)
5376*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psrl.wi.128(<8 x i16> %x0, i32 3, <8 x i16> zeroinitializer, i8 %x3)
5377*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5378*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res2, %res3
5379*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5380*9880d681SAndroid Build Coastguard Worker}
5381*9880d681SAndroid Build Coastguard Worker
5382*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psrl.wi.256(<16 x i16>, i32, <16 x i16>, i16)
5383*9880d681SAndroid Build Coastguard Worker
5384*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psrl_wi_256(<16 x i16> %x0, i32 %x1, <16 x i16> %x2, i16 %x3) {
5385*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrl_wi_256:
5386*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5387*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5388*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw $3, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x75,0x29,0x71,0xd0,0x03]
5389*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw $3, %ymm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf1,0x6d,0xa9,0x71,0xd0,0x03]
5390*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlw $3, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x71,0xd0,0x03]
5391*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5392*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xfd,0xc2]
5393*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5394*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psrl.wi.256(<16 x i16> %x0, i32 3, <16 x i16> %x2, i16 %x3)
5395*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psrl.wi.256(<16 x i16> %x0, i32 3, <16 x i16> %x2, i16 -1)
5396*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psrl.wi.256(<16 x i16> %x0, i32 3, <16 x i16> zeroinitializer, i16 %x3)
5397*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5398*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5399*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5400*9880d681SAndroid Build Coastguard Worker}
5401*9880d681SAndroid Build Coastguard Worker
5402*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psrlv16.hi(<16 x i16>, <16 x i16>, <16 x i16>, i16)
5403*9880d681SAndroid Build Coastguard Worker
5404*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psrlv16_hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5405*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrlv16_hi:
5406*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5407*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5408*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x10,0xd1]
5409*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvw %ymm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x10,0xd9]
5410*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x28,0x10,0xc1]
5411*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5412*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5413*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5414*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psrlv16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
5415*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psrlv16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5416*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psrlv16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
5417*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5418*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5419*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5420*9880d681SAndroid Build Coastguard Worker}
5421*9880d681SAndroid Build Coastguard Worker
5422*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psrlv8.hi(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5423*9880d681SAndroid Build Coastguard Worker
5424*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psrlv8_hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5425*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrlv8_hi:
5426*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5427*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5428*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x10,0xd1]
5429*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvw %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x10,0xd9]
5430*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsrlvw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x08,0x10,0xc1]
5431*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5432*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5433*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5434*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psrlv8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5435*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psrlv8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5436*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psrlv8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5437*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5438*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5439*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5440*9880d681SAndroid Build Coastguard Worker}
5441*9880d681SAndroid Build Coastguard Worker
5442*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psra.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5443*9880d681SAndroid Build Coastguard Worker
5444*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psra_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5445*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_w_128:
5446*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5447*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5448*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xe1,0xd1]
5449*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xe1,0xd9]
5450*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xe1,0xc1]
5451*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5452*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5453*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5454*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psra.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5455*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psra.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5456*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psra.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5457*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5458*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5459*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5460*9880d681SAndroid Build Coastguard Worker}
5461*9880d681SAndroid Build Coastguard Worker
5462*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psra.wi.128(<8 x i16>, i32, <8 x i16>, i8)
5463*9880d681SAndroid Build Coastguard Worker
5464*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psra_wi_128(<8 x i16> %x0, i32 %x1, <8 x i16> %x2, i8 %x3) {
5465*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_wi_128:
5466*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5467*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5468*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw $3, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x75,0x09,0x71,0xe0,0x03]
5469*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw $3, %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf1,0x6d,0x89,0x71,0xe0,0x03]
5470*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw $3, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x71,0xe0,0x03]
5471*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xca]
5472*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5473*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5474*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psra.wi.128(<8 x i16> %x0, i32 3, <8 x i16> %x2, i8 %x3)
5475*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psra.wi.128(<8 x i16> %x0, i32 3, <8 x i16> zeroinitializer, i8 %x3)
5476*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psra.wi.128(<8 x i16> %x0, i32 3, <8 x i16> %x2, i8 -1)
5477*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5478*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5479*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5480*9880d681SAndroid Build Coastguard Worker}
5481*9880d681SAndroid Build Coastguard Worker
5482*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psra.w.256(<16 x i16>, <8 x i16>, <16 x i16>, i16)
5483*9880d681SAndroid Build Coastguard Worker
5484*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psra_w_256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5485*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_w_256:
5486*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5487*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5488*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw %xmm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xe1,0xd1]
5489*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw %xmm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xe1,0xd9]
5490*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw %xmm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xe1,0xc1]
5491*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5492*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5493*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5494*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psra.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 %x3)
5495*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psra.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5496*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psra.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 -1)
5497*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5498*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5499*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5500*9880d681SAndroid Build Coastguard Worker}
5501*9880d681SAndroid Build Coastguard Worker
5502*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psra.wi.256(<16 x i16>, i32, <16 x i16>, i16)
5503*9880d681SAndroid Build Coastguard Worker
5504*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psra_wi_256(<16 x i16> %x0, i32 %x1, <16 x i16> %x2, i16 %x3) {
5505*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psra_wi_256:
5506*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5507*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5508*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw $3, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x75,0x29,0x71,0xe0,0x03]
5509*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw $3, %ymm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf1,0x6d,0xa9,0x71,0xe0,0x03]
5510*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsraw $3, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x71,0xe0,0x03]
5511*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xca]
5512*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5513*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5514*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psra.wi.256(<16 x i16> %x0, i32 3, <16 x i16> %x2, i16 %x3)
5515*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psra.wi.256(<16 x i16> %x0, i32 3, <16 x i16> zeroinitializer, i16 %x3)
5516*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psra.wi.256(<16 x i16> %x0, i32 3, <16 x i16> %x2, i16 -1)
5517*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5518*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5519*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5520*9880d681SAndroid Build Coastguard Worker}
5521*9880d681SAndroid Build Coastguard Worker
5522*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psrav16.hi(<16 x i16>, <16 x i16>, <16 x i16>, i16)
5523*9880d681SAndroid Build Coastguard Worker
5524*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psrav16_hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5525*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrav16_hi:
5526*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5527*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5528*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x11,0xd1]
5529*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravw %ymm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x11,0xd9]
5530*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x28,0x11,0xc1]
5531*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5532*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5533*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5534*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psrav16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
5535*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psrav16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5536*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psrav16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
5537*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5538*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5539*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5540*9880d681SAndroid Build Coastguard Worker}
5541*9880d681SAndroid Build Coastguard Worker
5542*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psrav8.hi(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5543*9880d681SAndroid Build Coastguard Worker
5544*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psrav8_hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5545*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psrav8_hi:
5546*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5547*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5548*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x11,0xd1]
5549*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravw %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x11,0xd9]
5550*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsravw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x08,0x11,0xc1]
5551*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5552*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5553*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5554*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psrav8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5555*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psrav8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5556*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psrav8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5557*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5558*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5559*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5560*9880d681SAndroid Build Coastguard Worker}
5561*9880d681SAndroid Build Coastguard Worker
5562*9880d681SAndroid Build Coastguard Worker
5563*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psll.w.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5564*9880d681SAndroid Build Coastguard Worker
5565*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psll_w_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5566*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_w_128:
5567*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5568*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5569*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x09,0xf1,0xd1]
5570*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0x89,0xf1,0xd9]
5571*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0xf1,0xc1]
5572*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5573*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5574*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5575*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psll.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5576*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psll.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5577*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psll.w.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5578*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5579*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5580*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5581*9880d681SAndroid Build Coastguard Worker}
5582*9880d681SAndroid Build Coastguard Worker
5583*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psll.w.256(<16 x i16>, <8 x i16>, <16 x i16>, i16)
5584*9880d681SAndroid Build Coastguard Worker
5585*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psll_w_256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5586*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_w_256:
5587*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5588*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5589*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw %xmm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf1,0x7d,0x29,0xf1,0xd1]
5590*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw %xmm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf1,0x7d,0xa9,0xf1,0xd9]
5591*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw %xmm1, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0xf1,0xc1]
5592*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5593*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5594*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5595*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psll.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 %x3)
5596*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psll.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5597*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psll.w.256(<16 x i16> %x0, <8 x i16> %x1, <16 x i16> %x2, i16 -1)
5598*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5599*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5600*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5601*9880d681SAndroid Build Coastguard Worker}
5602*9880d681SAndroid Build Coastguard Worker
5603*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psll.wi.128(<8 x i16>, i32, <8 x i16>, i8)
5604*9880d681SAndroid Build Coastguard Worker
5605*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psll_wi_128(<8 x i16> %x0, i32 %x1, <8 x i16> %x2, i8 %x3) {
5606*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_wi_128:
5607*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5608*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5609*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw $3, %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf1,0x75,0x09,0x71,0xf0,0x03]
5610*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw $3, %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf1,0x6d,0x89,0x71,0xf0,0x03]
5611*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw $3, %xmm0, %xmm0 ## encoding: [0x62,0xf1,0x7d,0x08,0x71,0xf0,0x03]
5612*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xca]
5613*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5614*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5615*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psll.wi.128(<8 x i16> %x0, i32 3, <8 x i16> %x2, i8 %x3)
5616*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psll.wi.128(<8 x i16> %x0, i32 3, <8 x i16> zeroinitializer, i8 %x3)
5617*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psll.wi.128(<8 x i16> %x0, i32 3, <8 x i16> %x2, i8 -1)
5618*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5619*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5620*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5621*9880d681SAndroid Build Coastguard Worker}
5622*9880d681SAndroid Build Coastguard Worker
5623*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psll.wi.256(<16 x i16>, i32, <16 x i16>, i16)
5624*9880d681SAndroid Build Coastguard Worker
5625*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psll_wi_256(<16 x i16> %x0, i32 %x1, <16 x i16> %x2, i16 %x3) {
5626*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psll_wi_256:
5627*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5628*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
5629*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw $3, %ymm0, %ymm1 {%k1} ## encoding: [0x62,0xf1,0x75,0x29,0x71,0xf0,0x03]
5630*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw $3, %ymm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf1,0x6d,0xa9,0x71,0xf0,0x03]
5631*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllw $3, %ymm0, %ymm0 ## encoding: [0x62,0xf1,0x7d,0x28,0x71,0xf0,0x03]
5632*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xca]
5633*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5634*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5635*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psll.wi.256(<16 x i16> %x0, i32 3, <16 x i16> %x2, i16 %x3)
5636*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psll.wi.256(<16 x i16> %x0, i32 3, <16 x i16> zeroinitializer, i16 %x3)
5637*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psll.wi.256(<16 x i16> %x0, i32 3, <16 x i16> %x2, i16 -1)
5638*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5639*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5640*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5641*9880d681SAndroid Build Coastguard Worker}
5642*9880d681SAndroid Build Coastguard Worker
5643*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.psllv16.hi(<16 x i16>, <16 x i16>, <16 x i16>, i16)
5644*9880d681SAndroid Build Coastguard Worker
5645*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_psllv16_hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5646*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psllv16_hi:
5647*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5648*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5649*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvw %ymm1, %ymm0, %ymm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x12,0xd1]
5650*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvw %ymm1, %ymm0, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0xa9,0x12,0xd9]
5651*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvw %ymm1, %ymm0, %ymm0 ## encoding: [0x62,0xf2,0xfd,0x28,0x12,0xc1]
5652*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5653*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5654*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5655*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.psllv16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
5656*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.psllv16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5657*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.psllv16.hi(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
5658*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5659*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5660*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5661*9880d681SAndroid Build Coastguard Worker}
5662*9880d681SAndroid Build Coastguard Worker
5663*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.psllv8.hi(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5664*9880d681SAndroid Build Coastguard Worker
5665*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_psllv8_hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5666*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_psllv8_hi:
5667*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5668*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5669*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvw %xmm1, %xmm0, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x12,0xd1]
5670*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvw %xmm1, %xmm0, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xfd,0x89,0x12,0xd9]
5671*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpsllvw %xmm1, %xmm0, %xmm0 ## encoding: [0x62,0xf2,0xfd,0x08,0x12,0xc1]
5672*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5673*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5674*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5675*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.psllv8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5676*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.psllv8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5677*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.psllv8.hi(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5678*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5679*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5680*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5681*9880d681SAndroid Build Coastguard Worker}
5682*9880d681SAndroid Build Coastguard Worker
5683*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmovzxb.w.128(<16 x i8>, <8 x i16>, i8)
5684*9880d681SAndroid Build Coastguard Worker
5685*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmovzxb_w_128(<16 x i8> %x0, <8 x i16> %x1, i8 %x2) {
5686*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxb_w_128:
5687*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5688*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5689*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x30,0xc8]
5690*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm1 {%k1} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
5691*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x30,0xd0]
5692*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm2 {%k1} {z} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
5693*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x30,0xc0]
5694*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
5695*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xca]
5696*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5697*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5698*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmovzxb.w.128(<16 x i8> %x0, <8 x i16> %x1, i8 %x2)
5699*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmovzxb.w.128(<16 x i8> %x0, <8 x i16> zeroinitializer, i8 %x2)
5700*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmovzxb.w.128(<16 x i8> %x0, <8 x i16> %x1, i8 -1)
5701*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5702*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5703*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5704*9880d681SAndroid Build Coastguard Worker}
5705*9880d681SAndroid Build Coastguard Worker
5706*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmovzxb.w.256(<16 x i8>, <16 x i16>, i16)
5707*9880d681SAndroid Build Coastguard Worker
5708*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmovzxb_w_256(<16 x i8> %x0, <16 x i16> %x1, i16 %x2) {
5709*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovzxb_w_256:
5710*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5711*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5712*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x30,0xc8]
5713*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm1 {%k1} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
5714*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw %xmm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x30,0xd0]
5715*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm2 {%k1} {z} = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
5716*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovzxbw %xmm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x30,0xc0]
5717*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero,xmm0[8],zero,xmm0[9],zero,xmm0[10],zero,xmm0[11],zero,xmm0[12],zero,xmm0[13],zero,xmm0[14],zero,xmm0[15],zero
5718*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xca]
5719*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5720*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5721*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmovzxb.w.256(<16 x i8> %x0, <16 x i16> %x1, i16 %x2)
5722*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmovzxb.w.256(<16 x i8> %x0, <16 x i16> zeroinitializer, i16 %x2)
5723*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmovzxb.w.256(<16 x i8> %x0, <16 x i16> %x1, i16 -1)
5724*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5725*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5726*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5727*9880d681SAndroid Build Coastguard Worker}
5728*9880d681SAndroid Build Coastguard Worker
5729*9880d681SAndroid Build Coastguard Worker
5730*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pmovsxb.w.128(<16 x i8>, <8 x i16>, i8)
5731*9880d681SAndroid Build Coastguard Worker
5732*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pmovsxb_w_128(<16 x i8> %x0, <8 x i16> %x1, i8 %x2) {
5733*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxb_w_128:
5734*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5735*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5736*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x20,0xc8]
5737*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x20,0xd0]
5738*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x20,0xc0]
5739*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm2, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xca]
5740*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5741*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5742*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pmovsxb.w.128(<16 x i8> %x0, <8 x i16> %x1, i8 %x2)
5743*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pmovsxb.w.128(<16 x i8> %x0, <8 x i16> zeroinitializer, i8 %x2)
5744*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.pmovsxb.w.128(<16 x i8> %x0, <8 x i16> %x1, i8 -1)
5745*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5746*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5747*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5748*9880d681SAndroid Build Coastguard Worker}
5749*9880d681SAndroid Build Coastguard Worker
5750*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pmovsxb.w.256(<16 x i8>, <16 x i16>, i16)
5751*9880d681SAndroid Build Coastguard Worker
5752*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pmovsxb_w_256(<16 x i8> %x0, <16 x i16> %x1, i16 %x2) {
5753*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxb_w_256:
5754*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5755*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5756*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x20,0xc8]
5757*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x20,0xd0]
5758*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxbw %xmm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x20,0xc0]
5759*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xca]
5760*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5761*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5762*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pmovsxb.w.256(<16 x i8> %x0, <16 x i16> %x1, i16 %x2)
5763*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pmovsxb.w.256(<16 x i8> %x0, <16 x i16> zeroinitializer, i16 %x2)
5764*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.pmovsxb.w.256(<16 x i8> %x0, <16 x i16> %x1, i16 -1)
5765*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5766*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5767*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5768*9880d681SAndroid Build Coastguard Worker}
5769*9880d681SAndroid Build Coastguard Worker
5770*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.x86.avx512.mask.pmovsxd.q.128(<4 x i32>, <2 x i64>, i8)
5771*9880d681SAndroid Build Coastguard Worker
5772*9880d681SAndroid Build Coastguard Workerdefine <2 x i64>@test_int_x86_avx512_mask_pmovsxd_q_128(<4 x i32> %x0, <2 x i64> %x1, i8 %x2) {
5773*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxd_q_128:
5774*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5775*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5776*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %xmm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x25,0xc8]
5777*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %xmm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x25,0xd0]
5778*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %xmm0 ## encoding: [0x62,0xf2,0x7d,0x08,0x25,0xc0]
5779*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm2, %xmm1, %xmm1 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xca]
5780*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0xf5,0x08,0xd4,0xc0]
5781*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5782*9880d681SAndroid Build Coastguard Worker  %res = call <2 x i64> @llvm.x86.avx512.mask.pmovsxd.q.128(<4 x i32> %x0, <2 x i64> %x1, i8 %x2)
5783*9880d681SAndroid Build Coastguard Worker  %res1 = call <2 x i64> @llvm.x86.avx512.mask.pmovsxd.q.128(<4 x i32> %x0, <2 x i64> zeroinitializer, i8 %x2)
5784*9880d681SAndroid Build Coastguard Worker  %res2 = call <2 x i64> @llvm.x86.avx512.mask.pmovsxd.q.128(<4 x i32> %x0, <2 x i64> %x1, i8 -1)
5785*9880d681SAndroid Build Coastguard Worker  %res3 = add <2 x i64> %res, %res1
5786*9880d681SAndroid Build Coastguard Worker  %res4 = add <2 x i64> %res3, %res2
5787*9880d681SAndroid Build Coastguard Worker  ret <2 x i64> %res4
5788*9880d681SAndroid Build Coastguard Worker}
5789*9880d681SAndroid Build Coastguard Worker
5790*9880d681SAndroid Build Coastguard Workerdeclare <4 x i64> @llvm.x86.avx512.mask.pmovsxd.q.256(<4 x i32>, <4 x i64>, i8)
5791*9880d681SAndroid Build Coastguard Worker
5792*9880d681SAndroid Build Coastguard Workerdefine <4 x i64>@test_int_x86_avx512_mask_pmovsxd_q_256(<4 x i32> %x0, <4 x i64> %x1, i8 %x2) {
5793*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pmovsxd_q_256:
5794*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5795*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5796*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %ymm1 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x25,0xc8]
5797*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %ymm2 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x25,0xd0]
5798*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpmovsxdq %xmm0, %ymm0 ## encoding: [0x62,0xf2,0x7d,0x28,0x25,0xc0]
5799*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm2, %ymm1, %ymm1 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xca]
5800*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddq %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0xf5,0x28,0xd4,0xc0]
5801*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5802*9880d681SAndroid Build Coastguard Worker  %res = call <4 x i64> @llvm.x86.avx512.mask.pmovsxd.q.256(<4 x i32> %x0, <4 x i64> %x1, i8 %x2)
5803*9880d681SAndroid Build Coastguard Worker  %res1 = call <4 x i64> @llvm.x86.avx512.mask.pmovsxd.q.256(<4 x i32> %x0, <4 x i64> zeroinitializer, i8 %x2)
5804*9880d681SAndroid Build Coastguard Worker  %res2 = call <4 x i64> @llvm.x86.avx512.mask.pmovsxd.q.256(<4 x i32> %x0, <4 x i64> %x1, i8 -1)
5805*9880d681SAndroid Build Coastguard Worker  %res3 = add <4 x i64> %res, %res1
5806*9880d681SAndroid Build Coastguard Worker  %res4 = add <4 x i64> %res3, %res2
5807*9880d681SAndroid Build Coastguard Worker  ret <4 x i64> %res4
5808*9880d681SAndroid Build Coastguard Worker}
5809*9880d681SAndroid Build Coastguard Worker
5810*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.permvar.hi.128(<8 x i16>, <8 x i16>, <8 x i16>, i8)
5811*9880d681SAndroid Build Coastguard Worker
5812*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_permvar_hi_128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3) {
5813*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_hi_128:
5814*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5815*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5816*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermw %xmm0, %xmm1, %xmm2 {%k1} ## encoding: [0x62,0xf2,0xf5,0x09,0x8d,0xd0]
5817*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermw %xmm0, %xmm1, %xmm3 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0x89,0x8d,0xd8]
5818*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf2,0xf5,0x08,0x8d,0xc0]
5819*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm3, %xmm2, %xmm1 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xcb]
5820*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
5821*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5822*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.permvar.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 %x3)
5823*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.permvar.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> zeroinitializer, i8 %x3)
5824*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.permvar.hi.128(<8 x i16> %x0, <8 x i16> %x1, <8 x i16> %x2, i8 -1)
5825*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
5826*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res3, %res2
5827*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
5828*9880d681SAndroid Build Coastguard Worker}
5829*9880d681SAndroid Build Coastguard Worker
5830*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.permvar.hi.256(<16 x i16>, <16 x i16>, <16 x i16>, i16)
5831*9880d681SAndroid Build Coastguard Worker
5832*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_permvar_hi_256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3) {
5833*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_permvar_hi_256:
5834*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5835*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5836*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermw %ymm0, %ymm1, %ymm2 {%k1} ## encoding: [0x62,0xf2,0xf5,0x29,0x8d,0xd0]
5837*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermw %ymm0, %ymm1, %ymm3 {%k1} {z} ## encoding: [0x62,0xf2,0xf5,0xa9,0x8d,0xd8]
5838*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpermw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf2,0xf5,0x28,0x8d,0xc0]
5839*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm3, %ymm2, %ymm1 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xcb]
5840*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
5841*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5842*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.permvar.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 %x3)
5843*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.permvar.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> zeroinitializer, i16 %x3)
5844*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.permvar.hi.256(<16 x i16> %x0, <16 x i16> %x1, <16 x i16> %x2, i16 -1)
5845*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
5846*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res3, %res2
5847*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
5848*9880d681SAndroid Build Coastguard Worker}
5849*9880d681SAndroid Build Coastguard Worker
5850*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestm.b.128(<16 x i8>, <16 x i8>, i16)
5851*9880d681SAndroid Build Coastguard Worker
5852*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_ptestm_b_128(<16 x i8> %x0, <16 x i8> %x1, i16 %x2) {
5853*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestm_b_128:
5854*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5855*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5856*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmb %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x26,0xc1]
5857*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
5858*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmb %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf2,0x7d,0x08,0x26,0xc1]
5859*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5860*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax ## encoding: [0x01,0xc8]
5861*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
5862*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5863*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.ptestm.b.128(<16 x i8> %x0, <16 x i8> %x1, i16 %x2)
5864*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.ptestm.b.128(<16 x i8> %x0, <16 x i8> %x1, i16-1)
5865*9880d681SAndroid Build Coastguard Worker  %res2 = add i16 %res, %res1
5866*9880d681SAndroid Build Coastguard Worker  ret i16 %res2
5867*9880d681SAndroid Build Coastguard Worker}
5868*9880d681SAndroid Build Coastguard Worker
5869*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.ptestm.b.256(<32 x i8>, <32 x i8>, i32)
5870*9880d681SAndroid Build Coastguard Worker
5871*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_ptestm_b_256(<32 x i8> %x0, <32 x i8> %x1, i32 %x2) {
5872*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestm_b_256:
5873*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5874*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
5875*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x26,0xc1]
5876*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %ecx ## encoding: [0xc5,0xfb,0x93,0xc8]
5877*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf2,0x7d,0x28,0x26,0xc1]
5878*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
5879*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax ## encoding: [0x01,0xc8]
5880*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5881*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.ptestm.b.256(<32 x i8> %x0, <32 x i8> %x1, i32 %x2)
5882*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.ptestm.b.256(<32 x i8> %x0, <32 x i8> %x1, i32-1)
5883*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res, %res1
5884*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
5885*9880d681SAndroid Build Coastguard Worker}
5886*9880d681SAndroid Build Coastguard Worker
5887*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.ptestm.w.128(<8 x i16>, <8 x i16>, i8)
5888*9880d681SAndroid Build Coastguard Worker
5889*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_ptestm_w_128(<8 x i16> %x0, <8 x i16> %x1, i8 %x2) {
5890*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestm_w_128:
5891*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5892*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5893*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmw %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x09,0x26,0xc1]
5894*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
5895*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmw %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf2,0xfd,0x08,0x26,0xc1]
5896*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5897*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al ## encoding: [0x00,0xc8]
5898*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
5899*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5900*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.ptestm.w.128(<8 x i16> %x0, <8 x i16> %x1, i8 %x2)
5901*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.ptestm.w.128(<8 x i16> %x0, <8 x i16> %x1, i8-1)
5902*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
5903*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
5904*9880d681SAndroid Build Coastguard Worker}
5905*9880d681SAndroid Build Coastguard Worker
5906*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestm.w.256(<16 x i16>, <16 x i16>, i16)
5907*9880d681SAndroid Build Coastguard Worker
5908*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_ptestm_w_256(<16 x i16> %x0, <16 x i16> %x1, i16 %x2) {
5909*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestm_w_256:
5910*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5911*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5912*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmw %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf2,0xfd,0x29,0x26,0xc1]
5913*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
5914*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestmw %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf2,0xfd,0x28,0x26,0xc1]
5915*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5916*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax ## encoding: [0x01,0xc8]
5917*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
5918*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5919*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.ptestm.w.256(<16 x i16> %x0, <16 x i16> %x1, i16 %x2)
5920*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.ptestm.w.256(<16 x i16> %x0, <16 x i16> %x1, i16-1)
5921*9880d681SAndroid Build Coastguard Worker  %res2 = add i16 %res, %res1
5922*9880d681SAndroid Build Coastguard Worker  ret i16 %res2
5923*9880d681SAndroid Build Coastguard Worker}
5924*9880d681SAndroid Build Coastguard Worker
5925*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestnm.b.128(<16 x i8>, <16 x i8>, i16)
5926*9880d681SAndroid Build Coastguard Worker
5927*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_ptestnm_b_128(<16 x i8> %x0, <16 x i8> %x1, i16 %x2) {
5928*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_b_128:
5929*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5930*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5931*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmb %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf2,0x7e,0x09,0x26,0xc1]
5932*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
5933*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmb %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf2,0x7e,0x08,0x26,0xc1]
5934*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5935*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax ## encoding: [0x01,0xc8]
5936*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
5937*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5938*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.ptestnm.b.128(<16 x i8> %x0, <16 x i8> %x1, i16 %x2)
5939*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.ptestnm.b.128(<16 x i8> %x0, <16 x i8> %x1, i16-1)
5940*9880d681SAndroid Build Coastguard Worker  %res2 = add i16 %res, %res1
5941*9880d681SAndroid Build Coastguard Worker  ret i16 %res2
5942*9880d681SAndroid Build Coastguard Worker}
5943*9880d681SAndroid Build Coastguard Worker
5944*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.avx512.ptestnm.b.256(<32 x i8>, <32 x i8>, i32)
5945*9880d681SAndroid Build Coastguard Worker
5946*9880d681SAndroid Build Coastguard Workerdefine i32@test_int_x86_avx512_ptestnm_b_256(<32 x i8> %x0, <32 x i8> %x1, i32 %x2) {
5947*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_b_256:
5948*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5949*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %edi, %k1 ## encoding: [0xc5,0xfb,0x92,0xcf]
5950*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmb %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf2,0x7e,0x29,0x26,0xc1]
5951*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %ecx ## encoding: [0xc5,0xfb,0x93,0xc8]
5952*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmb %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf2,0x7e,0x28,0x26,0xc1]
5953*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %k0, %eax ## encoding: [0xc5,0xfb,0x93,0xc0]
5954*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax ## encoding: [0x01,0xc8]
5955*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5956*9880d681SAndroid Build Coastguard Worker  %res = call i32 @llvm.x86.avx512.ptestnm.b.256(<32 x i8> %x0, <32 x i8> %x1, i32 %x2)
5957*9880d681SAndroid Build Coastguard Worker  %res1 = call i32 @llvm.x86.avx512.ptestnm.b.256(<32 x i8> %x0, <32 x i8> %x1, i32-1)
5958*9880d681SAndroid Build Coastguard Worker  %res2 = add i32 %res, %res1
5959*9880d681SAndroid Build Coastguard Worker  ret i32 %res2
5960*9880d681SAndroid Build Coastguard Worker}
5961*9880d681SAndroid Build Coastguard Worker
5962*9880d681SAndroid Build Coastguard Workerdeclare i8 @llvm.x86.avx512.ptestnm.w.128(<8 x i16>, <8 x i16>, i8 %x2)
5963*9880d681SAndroid Build Coastguard Worker
5964*9880d681SAndroid Build Coastguard Workerdefine i8@test_int_x86_avx512_ptestnm_w_128(<8 x i16> %x0, <8 x i16> %x1, i8 %x2) {
5965*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_w_128:
5966*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5967*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5968*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmw %xmm1, %xmm0, %k0 {%k1} ## encoding: [0x62,0xf2,0xfe,0x09,0x26,0xc1]
5969*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
5970*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmw %xmm1, %xmm0, %k0 ## encoding: [0x62,0xf2,0xfe,0x08,0x26,0xc1]
5971*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5972*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addb %cl, %al ## encoding: [0x00,0xc8]
5973*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AL<def> %AL<kill> %EAX<kill>
5974*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5975*9880d681SAndroid Build Coastguard Worker  %res = call i8 @llvm.x86.avx512.ptestnm.w.128(<8 x i16> %x0, <8 x i16> %x1, i8 %x2)
5976*9880d681SAndroid Build Coastguard Worker  %res1 = call i8 @llvm.x86.avx512.ptestnm.w.128(<8 x i16> %x0, <8 x i16> %x1, i8-1)
5977*9880d681SAndroid Build Coastguard Worker  %res2 = add i8 %res, %res1
5978*9880d681SAndroid Build Coastguard Worker  ret i8 %res2
5979*9880d681SAndroid Build Coastguard Worker}
5980*9880d681SAndroid Build Coastguard Worker
5981*9880d681SAndroid Build Coastguard Workerdeclare i16 @llvm.x86.avx512.ptestnm.w.256(<16 x i16>, <16 x i16>, i16 %x2)
5982*9880d681SAndroid Build Coastguard Worker
5983*9880d681SAndroid Build Coastguard Workerdefine i16@test_int_x86_avx512_ptestnm_w_256(<16 x i16> %x0, <16 x i16> %x1, i16 %x2) {
5984*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_ptestnm_w_256:
5985*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
5986*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %edi, %k1 ## encoding: [0xc5,0xf8,0x92,0xcf]
5987*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmw %ymm1, %ymm0, %k0 {%k1} ## encoding: [0x62,0xf2,0xfe,0x29,0x26,0xc1]
5988*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %ecx ## encoding: [0xc5,0xf8,0x93,0xc8]
5989*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vptestnmw %ymm1, %ymm0, %k0 ## encoding: [0x62,0xf2,0xfe,0x28,0x26,0xc1]
5990*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %k0, %eax ## encoding: [0xc5,0xf8,0x93,0xc0]
5991*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    addl %ecx, %eax ## encoding: [0x01,0xc8]
5992*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    ## kill: %AX<def> %AX<kill> %EAX<kill>
5993*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
5994*9880d681SAndroid Build Coastguard Worker  %res = call i16 @llvm.x86.avx512.ptestnm.w.256(<16 x i16> %x0, <16 x i16> %x1, i16 %x2)
5995*9880d681SAndroid Build Coastguard Worker  %res1 = call i16 @llvm.x86.avx512.ptestnm.w.256(<16 x i16> %x0, <16 x i16> %x1, i16-1)
5996*9880d681SAndroid Build Coastguard Worker  %res2 = add i16 %res, %res1
5997*9880d681SAndroid Build Coastguard Worker  ret i16 %res2
5998*9880d681SAndroid Build Coastguard Worker}
5999*9880d681SAndroid Build Coastguard Worker
6000*9880d681SAndroid Build Coastguard Workerdeclare <32 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.256(i8, <32 x i8>, i32)
6001*9880d681SAndroid Build Coastguard Worker
6002*9880d681SAndroid Build Coastguard Workerdefine <32 x i8>@test_int_x86_avx512_mask_pbroadcast_b_gpr_256(i8 %x0, <32 x i8> %x1, i32 %mask) {
6003*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcast_b_gpr_256:
6004*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6005*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovd %esi, %k1 ## encoding: [0xc5,0xfb,0x92,0xce]
6006*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %dil, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x7a,0xc7]
6007*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %dil, %ymm1 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x7a,0xcf]
6008*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %dil, %ymm2 ## encoding: [0x62,0xf2,0x7d,0x28,0x7a,0xd7]
6009*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfc,0xc0]
6010*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfc,0xc0]
6011*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
6012*9880d681SAndroid Build Coastguard Worker  %res = call <32 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.256(i8 %x0, <32 x i8> %x1, i32 -1)
6013*9880d681SAndroid Build Coastguard Worker  %res1 = call <32 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.256(i8 %x0, <32 x i8> %x1, i32 %mask)
6014*9880d681SAndroid Build Coastguard Worker  %res2 = call <32 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.256(i8 %x0, <32 x i8> zeroinitializer, i32 %mask)
6015*9880d681SAndroid Build Coastguard Worker  %res3 = add <32 x i8> %res, %res1
6016*9880d681SAndroid Build Coastguard Worker  %res4 = add <32 x i8> %res2, %res3
6017*9880d681SAndroid Build Coastguard Worker  ret <32 x i8> %res4
6018*9880d681SAndroid Build Coastguard Worker}
6019*9880d681SAndroid Build Coastguard Worker
6020*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.128(i8, <16 x i8>, i16)
6021*9880d681SAndroid Build Coastguard Worker
6022*9880d681SAndroid Build Coastguard Workerdefine <16 x i8>@test_int_x86_avx512_mask_pbroadcast_b_gpr_128(i8 %x0, <16 x i8> %x1, i16 %mask) {
6023*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcast_b_gpr_128:
6024*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6025*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
6026*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %dil, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x7a,0xc7]
6027*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %dil, %xmm1 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x7a,0xcf]
6028*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastb %dil, %xmm2 ## encoding: [0x62,0xf2,0x7d,0x08,0x7a,0xd7]
6029*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfc,0xc0]
6030*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddb %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfc,0xc0]
6031*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
6032*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.128(i8 %x0, <16 x i8> %x1, i16 -1)
6033*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.128(i8 %x0, <16 x i8> %x1, i16 %mask)
6034*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i8> @llvm.x86.avx512.mask.pbroadcast.b.gpr.128(i8 %x0, <16 x i8> zeroinitializer, i16 %mask)
6035*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i8> %res, %res1
6036*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i8> %res2, %res3
6037*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res4
6038*9880d681SAndroid Build Coastguard Worker}
6039*9880d681SAndroid Build Coastguard Worker
6040*9880d681SAndroid Build Coastguard Workerdeclare <16 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.256(i16, <16 x i16>, i16)
6041*9880d681SAndroid Build Coastguard Worker
6042*9880d681SAndroid Build Coastguard Workerdefine <16 x i16>@test_int_x86_avx512_mask_pbroadcast_w_gpr_256(i16 %x0, <16 x i16> %x1, i16 %mask) {
6043*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcast_w_gpr_256:
6044*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6045*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
6046*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %di, %ymm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x29,0x7b,0xc7]
6047*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %di, %ymm1 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0xa9,0x7b,0xcf]
6048*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %di, %ymm2 ## encoding: [0x62,0xf2,0x7d,0x28,0x7b,0xd7]
6049*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm2, %ymm0 ## encoding: [0x62,0xf1,0x6d,0x28,0xfd,0xc0]
6050*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %ymm0, %ymm1, %ymm0 ## encoding: [0x62,0xf1,0x75,0x28,0xfd,0xc0]
6051*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
6052*9880d681SAndroid Build Coastguard Worker  %res = call <16 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.256(i16 %x0, <16 x i16> %x1, i16 -1)
6053*9880d681SAndroid Build Coastguard Worker  %res1 = call <16 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.256(i16 %x0, <16 x i16> %x1, i16 %mask)
6054*9880d681SAndroid Build Coastguard Worker  %res2 = call <16 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.256(i16 %x0, <16 x i16> zeroinitializer, i16 %mask)
6055*9880d681SAndroid Build Coastguard Worker  %res3 = add <16 x i16> %res, %res1
6056*9880d681SAndroid Build Coastguard Worker  %res4 = add <16 x i16> %res2, %res3
6057*9880d681SAndroid Build Coastguard Worker  ret <16 x i16> %res4
6058*9880d681SAndroid Build Coastguard Worker}
6059*9880d681SAndroid Build Coastguard Worker
6060*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.128(i16, <8 x i16>, i8)
6061*9880d681SAndroid Build Coastguard Worker
6062*9880d681SAndroid Build Coastguard Workerdefine <8 x i16>@test_int_x86_avx512_mask_pbroadcast_w_gpr_128(i16 %x0, <8 x i16> %x1, i8 %mask) {
6063*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_int_x86_avx512_mask_pbroadcast_w_gpr_128:
6064*9880d681SAndroid Build Coastguard Worker; CHECK:       ## BB#0:
6065*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    kmovw %esi, %k1 ## encoding: [0xc5,0xf8,0x92,0xce]
6066*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %di, %xmm0 {%k1} ## encoding: [0x62,0xf2,0x7d,0x09,0x7b,0xc7]
6067*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %di, %xmm1 {%k1} {z} ## encoding: [0x62,0xf2,0x7d,0x89,0x7b,0xcf]
6068*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpbroadcastw %di, %xmm2 ## encoding: [0x62,0xf2,0x7d,0x08,0x7b,0xd7]
6069*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm2, %xmm0 ## encoding: [0x62,0xf1,0x6d,0x08,0xfd,0xc0]
6070*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    vpaddw %xmm0, %xmm1, %xmm0 ## encoding: [0x62,0xf1,0x75,0x08,0xfd,0xc0]
6071*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:    retq ## encoding: [0xc3]
6072*9880d681SAndroid Build Coastguard Worker  %res = call <8 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.128(i16 %x0, <8 x i16> %x1, i8 -1)
6073*9880d681SAndroid Build Coastguard Worker  %res1 = call <8 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.128(i16 %x0, <8 x i16> %x1, i8 %mask)
6074*9880d681SAndroid Build Coastguard Worker  %res2 = call <8 x i16> @llvm.x86.avx512.mask.pbroadcast.w.gpr.128(i16 %x0, <8 x i16> zeroinitializer, i8 %mask)
6075*9880d681SAndroid Build Coastguard Worker  %res3 = add <8 x i16> %res, %res1
6076*9880d681SAndroid Build Coastguard Worker  %res4 = add <8 x i16> %res2, %res3
6077*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res4
6078*9880d681SAndroid Build Coastguard Worker}
6079