xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512bw-intrinsics-fast-isel.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 -fast-isel -mtriple=i386-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=X32
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefix=ALL --check-prefix=X64
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; NOTE: This should use IR equivalent to what is generated by clang/test/CodeGen/avx512bw-builtins.c
6*9880d681SAndroid Build Coastguard Worker
7*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_broadcastb_epi8(<2 x i64> %a0) {
8*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_broadcastb_epi8:
9*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
10*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpbroadcastb %xmm0, %zmm0
11*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
12*9880d681SAndroid Build Coastguard Worker;
13*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_broadcastb_epi8:
14*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
15*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpbroadcastb %xmm0, %zmm0
16*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
17*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
18*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <16 x i8> %arg0, <16 x i8> undef, <64 x i32> zeroinitializer
19*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <64 x i8> %res0 to <8 x i64>
20*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
21*9880d681SAndroid Build Coastguard Worker}
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_broadcastb_epi8(<8 x i64> %a0, i64* %a1, <2 x i64> %a2) {
24*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_broadcastb_epi8:
25*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
26*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
27*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovq (%eax), %k1
28*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpbroadcastb %xmm1, %zmm0 {%k1}
29*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
30*9880d681SAndroid Build Coastguard Worker;
31*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_broadcastb_epi8:
32*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
33*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovq (%rdi), %k1
34*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpbroadcastb %xmm1, %zmm0 {%k1}
35*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
36*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
37*9880d681SAndroid Build Coastguard Worker  %bc1 = bitcast i64* %a1 to <64 x i1>*
38*9880d681SAndroid Build Coastguard Worker  %arg1 = load <64 x i1>, <64 x i1>* %bc1
39*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <2 x i64> %a2 to <16 x i8>
40*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <16 x i8> %arg2, <16 x i8> undef, <64 x i32> zeroinitializer
41*9880d681SAndroid Build Coastguard Worker  %res1 = select <64 x i1> %arg1, <64 x i8> %res0, <64 x i8> %arg0
42*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <64 x i8> %res1 to <8 x i64>
43*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_broadcastb_epi8(i64* %a0, <2 x i64> %a1) {
47*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_broadcastb_epi8:
48*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
49*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
50*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovq (%eax), %k1
51*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpbroadcastb %xmm0, %zmm0 {%k1} {z}
52*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
53*9880d681SAndroid Build Coastguard Worker;
54*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_broadcastb_epi8:
55*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
56*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovq (%rdi), %k1
57*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpbroadcastb %xmm0, %zmm0 {%k1} {z}
58*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
59*9880d681SAndroid Build Coastguard Worker  %bc0 = bitcast i64* %a0 to <64 x i1>*
60*9880d681SAndroid Build Coastguard Worker  %arg0 = load <64 x i1>, <64 x i1>* %bc0
61*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <16 x i8>
62*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <16 x i8> %arg1, <16 x i8> undef, <64 x i32> zeroinitializer
63*9880d681SAndroid Build Coastguard Worker  %res1 = select <64 x i1> %arg0, <64 x i8> %res0, <64 x i8> zeroinitializer
64*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <64 x i8> %res1 to <8 x i64>
65*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_broadcastw_epi16(<2 x i64> %a0) {
69*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_broadcastw_epi16:
70*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
71*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpbroadcastw %xmm0, %zmm0
72*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
73*9880d681SAndroid Build Coastguard Worker;
74*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_broadcastw_epi16:
75*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
76*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpbroadcastw %xmm0, %zmm0
77*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
78*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <2 x i64> %a0 to <8 x i16>
79*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <8 x i16> %arg0, <8 x i16> undef, <32 x i32> zeroinitializer
80*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <32 x i16> %res0 to <8 x i64>
81*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_broadcastw_epi16(<8 x i64> %a0, i32 %a1, <2 x i64> %a2) {
85*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_broadcastw_epi16:
86*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
87*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
88*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovd %eax, %k1
89*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpbroadcastw %xmm1, %zmm0 {%k1}
90*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
91*9880d681SAndroid Build Coastguard Worker;
92*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_broadcastw_epi16:
93*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
94*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovd %edi, %k1
95*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpbroadcastw %xmm1, %zmm0 {%k1}
96*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
97*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <32 x i16>
98*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast i32 %a1 to <32 x i1>
99*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <2 x i64> %a2 to <8 x i16>
100*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <8 x i16> %arg2, <8 x i16> undef, <32 x i32> zeroinitializer
101*9880d681SAndroid Build Coastguard Worker  %res1 = select <32 x i1> %arg1, <32 x i16> %res0, <32 x i16> %arg0
102*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <32 x i16> %res1 to <8 x i64>
103*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
104*9880d681SAndroid Build Coastguard Worker}
105*9880d681SAndroid Build Coastguard Worker
106*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_broadcastw_epi16(i32 %a0, <2 x i64> %a1) {
107*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_broadcastw_epi16:
108*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
109*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
110*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovd %eax, %k1
111*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpbroadcastw %xmm0, %zmm0 {%k1} {z}
112*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
113*9880d681SAndroid Build Coastguard Worker;
114*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_broadcastw_epi16:
115*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
116*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovd %edi, %k1
117*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpbroadcastw %xmm0, %zmm0 {%k1} {z}
118*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
119*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast i32 %a0 to <32 x i1>
120*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <2 x i64> %a1 to <8 x i16>
121*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <8 x i16> %arg1, <8 x i16> undef, <32 x i32> zeroinitializer
122*9880d681SAndroid Build Coastguard Worker  %res1 = select <32 x i1> %arg0, <32 x i16> %res0, <32 x i16> zeroinitializer
123*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <32 x i16> %res1 to <8 x i64>
124*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_bslli_epi128(<8 x i64> %a0) {
128*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_bslli_epi128:
129*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
130*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpsrldq {{.*#+}} zmm0 = zmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zmm0[27,28,29,30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zmm0[43,44,45,46,47],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zmm0[59,60,61,62,63],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
131*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
132*9880d681SAndroid Build Coastguard Worker;
133*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_bslli_epi128:
134*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
135*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpsrldq {{.*#+}} zmm0 = zmm0[11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zmm0[27,28,29,30,31],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zmm0[43,44,45,46,47],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zmm0[59,60,61,62,63],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
136*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
137*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
138*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg0, <64 x i8> zeroinitializer, <64 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122>
139*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <64 x i8> %res0 to <8 x i64>
140*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
141*9880d681SAndroid Build Coastguard Worker}
142*9880d681SAndroid Build Coastguard Worker
143*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_bsrli_epi128(<8 x i64> %a0) {
144*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_bsrli_epi128:
145*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
146*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpsrldq {{.*#+}} zmm0 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zmm0[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero,zmm0[37,38,39,40,41,42,43,44,45,46,47],zero,zero,zero,zero,zero,zmm0[53,54,55,56,57,58,59,60,61,62,63],zero,zero,zero,zero,zero
147*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
148*9880d681SAndroid Build Coastguard Worker;
149*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_bsrli_epi128:
150*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
151*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpsrldq {{.*#+}} zmm0 = zmm0[5,6,7,8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zmm0[21,22,23,24,25,26,27,28,29,30,31],zero,zero,zero,zero,zero,zmm0[37,38,39,40,41,42,43,44,45,46,47],zero,zero,zero,zero,zero,zmm0[53,54,55,56,57,58,59,60,61,62,63],zero,zero,zero,zero,zero
152*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
153*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
154*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg0, <64 x i8> zeroinitializer, <64 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116>
155*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <64 x i8> %res0 to <8 x i64>
156*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
157*9880d681SAndroid Build Coastguard Worker}
158*9880d681SAndroid Build Coastguard Worker
159*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpackhi_epi8(<8 x i64> %a0, <8 x i64> %a1) {
160*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpackhi_epi8:
161*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
162*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpckhbw {{.*#+}} zmm0 = zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31],zmm0[40],zmm1[40],zmm0[41],zmm1[41],zmm0[42],zmm1[42],zmm0[43],zmm1[43],zmm0[44],zmm1[44],zmm0[45],zmm1[45],zmm0[46],zmm1[46],zmm0[47],zmm1[47],zmm0[56],zmm1[56],zmm0[57],zmm1[57],zmm0[58],zmm1[58],zmm0[59],zmm1[59],zmm0[60],zmm1[60],zmm0[61],zmm1[61],zmm0[62],zmm1[62],zmm0[63],zmm1[63]
163*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
164*9880d681SAndroid Build Coastguard Worker;
165*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpackhi_epi8:
166*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
167*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpckhbw {{.*#+}} zmm0 = zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31],zmm0[40],zmm1[40],zmm0[41],zmm1[41],zmm0[42],zmm1[42],zmm0[43],zmm1[43],zmm0[44],zmm1[44],zmm0[45],zmm1[45],zmm0[46],zmm1[46],zmm0[47],zmm1[47],zmm0[56],zmm1[56],zmm0[57],zmm1[57],zmm0[58],zmm1[58],zmm0[59],zmm1[59],zmm0[60],zmm1[60],zmm0[61],zmm1[61],zmm0[62],zmm1[62],zmm0[63],zmm1[63]
168*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
169*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
170*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <64 x i8>
171*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg0, <64 x i8> %arg1, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
172*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <64 x i8> %res0 to <8 x i64>
173*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Worker; TODO - improve support for i64 -> mmask64 on 32-bit targets
177*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpackhi_epi8(<8 x i64> %a0, i64* %a1, <8 x i64> %a2, <8 x i64> %a3) {
178*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpackhi_epi8:
179*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
180*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
181*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovq (%eax), %k1
182*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpckhbw {{.*#+}} zmm0 {%k1} = zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[12],zmm2[12],zmm1[13],zmm2[13],zmm1[14],zmm2[14],zmm1[15],zmm2[15],zmm1[24],zmm2[24],zmm1[25],zmm2[25],zmm1[26],zmm2[26],zmm1[27],zmm2[27],zmm1[28],zmm2[28],zmm1[29],zmm2[29],zmm1[30],zmm2[30],zmm1[31],zmm2[31],zmm1[40],zmm2[40],zmm1[41],zmm2[41],zmm1[42],zmm2[42],zmm1[43],zmm2[43],zmm1[44],zmm2[44],zmm1[45],zmm2[45],zmm1[46],zmm2[46],zmm1[47],zmm2[47],zmm1[56],zmm2[56],zmm1[57],zmm2[57],zmm1[58],zmm2[58],zmm1[59],zmm2[59],zmm1[60],zmm2[60],zmm1[61],zmm2[61],zmm1[62],zmm2[62],zmm1[63],zmm2[63]
183*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
184*9880d681SAndroid Build Coastguard Worker;
185*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpackhi_epi8:
186*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
187*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovq (%rdi), %k1
188*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpckhbw {{.*#+}} zmm0 {%k1} = zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[12],zmm2[12],zmm1[13],zmm2[13],zmm1[14],zmm2[14],zmm1[15],zmm2[15],zmm1[24],zmm2[24],zmm1[25],zmm2[25],zmm1[26],zmm2[26],zmm1[27],zmm2[27],zmm1[28],zmm2[28],zmm1[29],zmm2[29],zmm1[30],zmm2[30],zmm1[31],zmm2[31],zmm1[40],zmm2[40],zmm1[41],zmm2[41],zmm1[42],zmm2[42],zmm1[43],zmm2[43],zmm1[44],zmm2[44],zmm1[45],zmm2[45],zmm1[46],zmm2[46],zmm1[47],zmm2[47],zmm1[56],zmm2[56],zmm1[57],zmm2[57],zmm1[58],zmm2[58],zmm1[59],zmm2[59],zmm1[60],zmm2[60],zmm1[61],zmm2[61],zmm1[62],zmm2[62],zmm1[63],zmm2[63]
189*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
190*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
191*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast i64* %a1 to <64 x i1>*
192*9880d681SAndroid Build Coastguard Worker  %sel1 = load <64 x i1>, <64 x i1>* %arg1
193*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <64 x i8>
194*9880d681SAndroid Build Coastguard Worker  %arg3 = bitcast <8 x i64> %a3 to <64 x i8>
195*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg2, <64 x i8> %arg3, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
196*9880d681SAndroid Build Coastguard Worker  %res1 = select <64 x i1> %sel1, <64 x i8> %res0, <64 x i8> %arg0
197*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <64 x i8> %res1 to <8 x i64>
198*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
199*9880d681SAndroid Build Coastguard Worker}
200*9880d681SAndroid Build Coastguard Worker
201*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpackhi_epi8(i64* %a0, <8 x i64> %a1, <8 x i64> %a2) {
202*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpackhi_epi8:
203*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
204*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
205*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovq (%eax), %k1
206*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpckhbw {{.*#+}} zmm0 {%k1} {z} = zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31],zmm0[40],zmm1[40],zmm0[41],zmm1[41],zmm0[42],zmm1[42],zmm0[43],zmm1[43],zmm0[44],zmm1[44],zmm0[45],zmm1[45],zmm0[46],zmm1[46],zmm0[47],zmm1[47],zmm0[56],zmm1[56],zmm0[57],zmm1[57],zmm0[58],zmm1[58],zmm0[59],zmm1[59],zmm0[60],zmm1[60],zmm0[61],zmm1[61],zmm0[62],zmm1[62],zmm0[63],zmm1[63]
207*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
208*9880d681SAndroid Build Coastguard Worker;
209*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpackhi_epi8:
210*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
211*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovq (%rdi), %k1
212*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpckhbw {{.*#+}} zmm0 {%k1} {z} = zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31],zmm0[40],zmm1[40],zmm0[41],zmm1[41],zmm0[42],zmm1[42],zmm0[43],zmm1[43],zmm0[44],zmm1[44],zmm0[45],zmm1[45],zmm0[46],zmm1[46],zmm0[47],zmm1[47],zmm0[56],zmm1[56],zmm0[57],zmm1[57],zmm0[58],zmm1[58],zmm0[59],zmm1[59],zmm0[60],zmm1[60],zmm0[61],zmm1[61],zmm0[62],zmm1[62],zmm0[63],zmm1[63]
213*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
214*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast i64* %a0 to <64 x i1>*
215*9880d681SAndroid Build Coastguard Worker  %sel0 = load <64 x i1>, <64 x i1>* %arg0
216*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <64 x i8>
217*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <64 x i8>
218*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg1, <64 x i8> %arg2, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
219*9880d681SAndroid Build Coastguard Worker  %res1 = select <64 x i1> %sel0, <64 x i8> %res0, <64 x i8> zeroinitializer
220*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <64 x i8> %res1 to <8 x i64>
221*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
222*9880d681SAndroid Build Coastguard Worker}
223*9880d681SAndroid Build Coastguard Worker
224*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpackhi_epi16(<8 x i64> %a0, <8 x i64> %a1) {
225*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpackhi_epi16:
226*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
227*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpckhwd {{.*#+}} zmm0 = zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31]
228*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
229*9880d681SAndroid Build Coastguard Worker;
230*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpackhi_epi16:
231*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
232*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpckhwd {{.*#+}} zmm0 = zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31]
233*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
234*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <32 x i16>
235*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <32 x i16>
236*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <32 x i16> %arg0, <32 x i16> %arg1, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
237*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <32 x i16> %res0 to <8 x i64>
238*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
239*9880d681SAndroid Build Coastguard Worker}
240*9880d681SAndroid Build Coastguard Worker
241*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpackhi_epi16(<8 x i64> %a0, i32 %a1, <8 x i64> %a2, <8 x i64> %a3) {
242*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpackhi_epi16:
243*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
244*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
245*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovd %eax, %k1
246*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpckhwd {{.*#+}} zmm0 {%k1} = zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[12],zmm2[12],zmm1[13],zmm2[13],zmm1[14],zmm2[14],zmm1[15],zmm2[15],zmm1[20],zmm2[20],zmm1[21],zmm2[21],zmm1[22],zmm2[22],zmm1[23],zmm2[23],zmm1[28],zmm2[28],zmm1[29],zmm2[29],zmm1[30],zmm2[30],zmm1[31],zmm2[31]
247*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
248*9880d681SAndroid Build Coastguard Worker;
249*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpackhi_epi16:
250*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
251*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovd %edi, %k1
252*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpckhwd {{.*#+}} zmm0 {%k1} = zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[12],zmm2[12],zmm1[13],zmm2[13],zmm1[14],zmm2[14],zmm1[15],zmm2[15],zmm1[20],zmm2[20],zmm1[21],zmm2[21],zmm1[22],zmm2[22],zmm1[23],zmm2[23],zmm1[28],zmm2[28],zmm1[29],zmm2[29],zmm1[30],zmm2[30],zmm1[31],zmm2[31]
253*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
254*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <32 x i16>
255*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast i32 %a1 to <32 x i1>
256*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <32 x i16>
257*9880d681SAndroid Build Coastguard Worker  %arg3 = bitcast <8 x i64> %a3 to <32 x i16>
258*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <32 x i16> %arg2, <32 x i16> %arg3, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
259*9880d681SAndroid Build Coastguard Worker  %res1 = select <32 x i1> %arg1, <32 x i16> %res0, <32 x i16> %arg0
260*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <32 x i16> %res1 to <8 x i64>
261*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
262*9880d681SAndroid Build Coastguard Worker}
263*9880d681SAndroid Build Coastguard Worker
264*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpackhi_epi16(i32 %a0, <8 x i64> %a1, <8 x i64> %a2) {
265*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpackhi_epi16:
266*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
267*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
268*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovd %eax, %k1
269*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpckhwd {{.*#+}} zmm0 {%k1} {z} = zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31]
270*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
271*9880d681SAndroid Build Coastguard Worker;
272*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpackhi_epi16:
273*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
274*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovd %edi, %k1
275*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpckhwd {{.*#+}} zmm0 {%k1} {z} = zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[12],zmm1[12],zmm0[13],zmm1[13],zmm0[14],zmm1[14],zmm0[15],zmm1[15],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[28],zmm1[28],zmm0[29],zmm1[29],zmm0[30],zmm1[30],zmm0[31],zmm1[31]
276*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
277*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast i32 %a0 to <32 x i1>
278*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <32 x i16>
279*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <32 x i16>
280*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <32 x i16> %arg1, <32 x i16> %arg2, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
281*9880d681SAndroid Build Coastguard Worker  %res1 = select <32 x i1> %arg0, <32 x i16> %res0, <32 x i16> zeroinitializer
282*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <32 x i16> %res1 to <8 x i64>
283*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
284*9880d681SAndroid Build Coastguard Worker}
285*9880d681SAndroid Build Coastguard Worker
286*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpacklo_epi8(<8 x i64> %a0, <8 x i64> %a1) {
287*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpacklo_epi8:
288*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
289*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpcklbw {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[32],zmm1[32],zmm0[33],zmm1[33],zmm0[34],zmm1[34],zmm0[35],zmm1[35],zmm0[36],zmm1[36],zmm0[37],zmm1[37],zmm0[38],zmm1[38],zmm0[39],zmm1[39],zmm0[48],zmm1[48],zmm0[49],zmm1[49],zmm0[50],zmm1[50],zmm0[51],zmm1[51],zmm0[52],zmm1[52],zmm0[53],zmm1[53],zmm0[54],zmm1[54],zmm0[55],zmm1[55]
290*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
291*9880d681SAndroid Build Coastguard Worker;
292*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpacklo_epi8:
293*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
294*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklbw {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[32],zmm1[32],zmm0[33],zmm1[33],zmm0[34],zmm1[34],zmm0[35],zmm1[35],zmm0[36],zmm1[36],zmm0[37],zmm1[37],zmm0[38],zmm1[38],zmm0[39],zmm1[39],zmm0[48],zmm1[48],zmm0[49],zmm1[49],zmm0[50],zmm1[50],zmm0[51],zmm1[51],zmm0[52],zmm1[52],zmm0[53],zmm1[53],zmm0[54],zmm1[54],zmm0[55],zmm1[55]
295*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
296*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
297*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <64 x i8>
298*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg0, <64 x i8> %arg1, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
299*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <64 x i8> %res0 to <8 x i64>
300*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
301*9880d681SAndroid Build Coastguard Worker}
302*9880d681SAndroid Build Coastguard Worker
303*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpacklo_epi8(<8 x i64> %a0, i64* %a1, <8 x i64> %a2, <8 x i64> %a3) {
304*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpacklo_epi8:
305*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
306*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
307*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovq (%eax), %k1
308*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpcklbw {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[16],zmm2[16],zmm1[17],zmm2[17],zmm1[18],zmm2[18],zmm1[19],zmm2[19],zmm1[20],zmm2[20],zmm1[21],zmm2[21],zmm1[22],zmm2[22],zmm1[23],zmm2[23],zmm1[32],zmm2[32],zmm1[33],zmm2[33],zmm1[34],zmm2[34],zmm1[35],zmm2[35],zmm1[36],zmm2[36],zmm1[37],zmm2[37],zmm1[38],zmm2[38],zmm1[39],zmm2[39],zmm1[48],zmm2[48],zmm1[49],zmm2[49],zmm1[50],zmm2[50],zmm1[51],zmm2[51],zmm1[52],zmm2[52],zmm1[53],zmm2[53],zmm1[54],zmm2[54],zmm1[55],zmm2[55]
309*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
310*9880d681SAndroid Build Coastguard Worker;
311*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpacklo_epi8:
312*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
313*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovq (%rdi), %k1
314*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklbw {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[4],zmm2[4],zmm1[5],zmm2[5],zmm1[6],zmm2[6],zmm1[7],zmm2[7],zmm1[16],zmm2[16],zmm1[17],zmm2[17],zmm1[18],zmm2[18],zmm1[19],zmm2[19],zmm1[20],zmm2[20],zmm1[21],zmm2[21],zmm1[22],zmm2[22],zmm1[23],zmm2[23],zmm1[32],zmm2[32],zmm1[33],zmm2[33],zmm1[34],zmm2[34],zmm1[35],zmm2[35],zmm1[36],zmm2[36],zmm1[37],zmm2[37],zmm1[38],zmm2[38],zmm1[39],zmm2[39],zmm1[48],zmm2[48],zmm1[49],zmm2[49],zmm1[50],zmm2[50],zmm1[51],zmm2[51],zmm1[52],zmm2[52],zmm1[53],zmm2[53],zmm1[54],zmm2[54],zmm1[55],zmm2[55]
315*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
316*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <64 x i8>
317*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast i64* %a1 to <64 x i1>*
318*9880d681SAndroid Build Coastguard Worker  %sel1 = load <64 x i1>, <64 x i1>* %arg1
319*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <64 x i8>
320*9880d681SAndroid Build Coastguard Worker  %arg3 = bitcast <8 x i64> %a3 to <64 x i8>
321*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg2, <64 x i8> %arg3, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
322*9880d681SAndroid Build Coastguard Worker  %res1 = select <64 x i1> %sel1, <64 x i8> %res0, <64 x i8> %arg0
323*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <64 x i8> %res1 to <8 x i64>
324*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
325*9880d681SAndroid Build Coastguard Worker}
326*9880d681SAndroid Build Coastguard Worker
327*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpacklo_epi8(i64* %a0, <8 x i64> %a1, <8 x i64> %a2) {
328*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpacklo_epi8:
329*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
330*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
331*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovq (%eax), %k1
332*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpcklbw {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[32],zmm1[32],zmm0[33],zmm1[33],zmm0[34],zmm1[34],zmm0[35],zmm1[35],zmm0[36],zmm1[36],zmm0[37],zmm1[37],zmm0[38],zmm1[38],zmm0[39],zmm1[39],zmm0[48],zmm1[48],zmm0[49],zmm1[49],zmm0[50],zmm1[50],zmm0[51],zmm1[51],zmm0[52],zmm1[52],zmm0[53],zmm1[53],zmm0[54],zmm1[54],zmm0[55],zmm1[55]
333*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
334*9880d681SAndroid Build Coastguard Worker;
335*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpacklo_epi8:
336*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
337*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovq (%rdi), %k1
338*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklbw {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[4],zmm1[4],zmm0[5],zmm1[5],zmm0[6],zmm1[6],zmm0[7],zmm1[7],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[20],zmm1[20],zmm0[21],zmm1[21],zmm0[22],zmm1[22],zmm0[23],zmm1[23],zmm0[32],zmm1[32],zmm0[33],zmm1[33],zmm0[34],zmm1[34],zmm0[35],zmm1[35],zmm0[36],zmm1[36],zmm0[37],zmm1[37],zmm0[38],zmm1[38],zmm0[39],zmm1[39],zmm0[48],zmm1[48],zmm0[49],zmm1[49],zmm0[50],zmm1[50],zmm0[51],zmm1[51],zmm0[52],zmm1[52],zmm0[53],zmm1[53],zmm0[54],zmm1[54],zmm0[55],zmm1[55]
339*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
340*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast i64* %a0 to <64 x i1>*
341*9880d681SAndroid Build Coastguard Worker  %sel0 = load <64 x i1>, <64 x i1>* %arg0
342*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <64 x i8>
343*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <64 x i8>
344*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <64 x i8> %arg1, <64 x i8> %arg2, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
345*9880d681SAndroid Build Coastguard Worker  %res1 = select <64 x i1> %sel0, <64 x i8> %res0, <64 x i8> zeroinitializer
346*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <64 x i8> %res1 to <8 x i64>
347*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
348*9880d681SAndroid Build Coastguard Worker}
349*9880d681SAndroid Build Coastguard Worker
350*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_unpacklo_epi16(<8 x i64> %a0, <8 x i64> %a1) {
351*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_unpacklo_epi16:
352*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
353*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpcklwd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27]
354*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
355*9880d681SAndroid Build Coastguard Worker;
356*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_unpacklo_epi16:
357*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
358*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklwd {{.*#+}} zmm0 = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27]
359*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
360*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <32 x i16>
361*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <32 x i16>
362*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <32 x i16> %arg0, <32 x i16> %arg1, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
363*9880d681SAndroid Build Coastguard Worker  %res1 = bitcast <32 x i16> %res0 to <8 x i64>
364*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res1
365*9880d681SAndroid Build Coastguard Worker}
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_mask_unpacklo_epi16(<8 x i64> %a0, i32 %a1, <8 x i64> %a2, <8 x i64> %a3) {
368*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_mask_unpacklo_epi16:
369*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
370*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
371*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovd %eax, %k1
372*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpcklwd {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[16],zmm2[16],zmm1[17],zmm2[17],zmm1[18],zmm2[18],zmm1[19],zmm2[19],zmm1[24],zmm2[24],zmm1[25],zmm2[25],zmm1[26],zmm2[26],zmm1[27],zmm2[27]
373*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
374*9880d681SAndroid Build Coastguard Worker;
375*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_mask_unpacklo_epi16:
376*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
377*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovd %edi, %k1
378*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklwd {{.*#+}} zmm0 {%k1} = zmm1[0],zmm2[0],zmm1[1],zmm2[1],zmm1[2],zmm2[2],zmm1[3],zmm2[3],zmm1[8],zmm2[8],zmm1[9],zmm2[9],zmm1[10],zmm2[10],zmm1[11],zmm2[11],zmm1[16],zmm2[16],zmm1[17],zmm2[17],zmm1[18],zmm2[18],zmm1[19],zmm2[19],zmm1[24],zmm2[24],zmm1[25],zmm2[25],zmm1[26],zmm2[26],zmm1[27],zmm2[27]
379*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
380*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast <8 x i64> %a0 to <32 x i16>
381*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast i32 %a1 to <32 x i1>
382*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <32 x i16>
383*9880d681SAndroid Build Coastguard Worker  %arg3 = bitcast <8 x i64> %a3 to <32 x i16>
384*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <32 x i16> %arg2, <32 x i16> %arg3, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
385*9880d681SAndroid Build Coastguard Worker  %res1 = select <32 x i1> %arg1, <32 x i16> %res0, <32 x i16> %arg0
386*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <32 x i16> %res1 to <8 x i64>
387*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
388*9880d681SAndroid Build Coastguard Worker}
389*9880d681SAndroid Build Coastguard Worker
390*9880d681SAndroid Build Coastguard Workerdefine <8 x i64> @test_mm512_maskz_unpacklo_epi16(i32 %a0, <8 x i64> %a1, <8 x i64> %a2) {
391*9880d681SAndroid Build Coastguard Worker; X32-LABEL: test_mm512_maskz_unpacklo_epi16:
392*9880d681SAndroid Build Coastguard Worker; X32:       # BB#0:
393*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
394*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    kmovd %eax, %k1
395*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    vpunpcklwd {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27]
396*9880d681SAndroid Build Coastguard Worker; X32-NEXT:    retl
397*9880d681SAndroid Build Coastguard Worker;
398*9880d681SAndroid Build Coastguard Worker; X64-LABEL: test_mm512_maskz_unpacklo_epi16:
399*9880d681SAndroid Build Coastguard Worker; X64:       # BB#0:
400*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    kmovd %edi, %k1
401*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    vpunpcklwd {{.*#+}} zmm0 {%k1} {z} = zmm0[0],zmm1[0],zmm0[1],zmm1[1],zmm0[2],zmm1[2],zmm0[3],zmm1[3],zmm0[8],zmm1[8],zmm0[9],zmm1[9],zmm0[10],zmm1[10],zmm0[11],zmm1[11],zmm0[16],zmm1[16],zmm0[17],zmm1[17],zmm0[18],zmm1[18],zmm0[19],zmm1[19],zmm0[24],zmm1[24],zmm0[25],zmm1[25],zmm0[26],zmm1[26],zmm0[27],zmm1[27]
402*9880d681SAndroid Build Coastguard Worker; X64-NEXT:    retq
403*9880d681SAndroid Build Coastguard Worker  %arg0 = bitcast i32 %a0 to <32 x i1>
404*9880d681SAndroid Build Coastguard Worker  %arg1 = bitcast <8 x i64> %a1 to <32 x i16>
405*9880d681SAndroid Build Coastguard Worker  %arg2 = bitcast <8 x i64> %a2 to <32 x i16>
406*9880d681SAndroid Build Coastguard Worker  %res0 = shufflevector <32 x i16> %arg1, <32 x i16> %arg2, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
407*9880d681SAndroid Build Coastguard Worker  %res1 = select <32 x i1> %arg0, <32 x i16> %res0, <32 x i16> zeroinitializer
408*9880d681SAndroid Build Coastguard Worker  %res2 = bitcast <32 x i16> %res1 to <8 x i64>
409*9880d681SAndroid Build Coastguard Worker  ret <8 x i64> %res2
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Worker!0 = !{i32 1}
413*9880d681SAndroid Build Coastguard Worker
414