blob: a105c0bfdd0cf21d1354e081e2294c0f7549e5e1 [file] [log] [blame]
Simon Pilgrima80cb1d2017-07-06 19:33:10 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE2-SSSE3,SSE2
3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=SSE2-SSSE3,SSSE3
4; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX12,AVX1
5; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX12,AVX2
6; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512vl,+avx512bw | FileCheck %s --check-prefixes=AVX512
7
8define <2 x i1> @bitcast_i2_2i1(i2 zeroext %a0) {
9; SSE2-SSSE3-LABEL: bitcast_i2_2i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000010; SSE2-SSSE3: # %bb.0:
Francis Visoiu Mistriha8a83d12017-12-07 10:40:31 +000011; SSE2-SSSE3-NEXT: # kill: def %edi killed %edi def %rdi
Simon Pilgrima705db92017-09-24 13:42:31 +000012; SSE2-SSSE3-NEXT: movq %rdi, %xmm0
13; SSE2-SSSE3-NEXT: pshufd {{.*#+}} xmm1 = xmm0[0,1,0,1]
14; SSE2-SSSE3-NEXT: movdqa {{.*#+}} xmm0 = [1,2]
15; SSE2-SSSE3-NEXT: pand %xmm0, %xmm1
16; SSE2-SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
17; SSE2-SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,0,3,2]
18; SSE2-SSSE3-NEXT: pand %xmm1, %xmm0
19; SSE2-SSSE3-NEXT: psrlq $63, %xmm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000020; SSE2-SSSE3-NEXT: retq
21;
Simon Pilgrima705db92017-09-24 13:42:31 +000022; AVX1-LABEL: bitcast_i2_2i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000023; AVX1: # %bb.0:
Francis Visoiu Mistriha8a83d12017-12-07 10:40:31 +000024; AVX1-NEXT: # kill: def %edi killed %edi def %rdi
Simon Pilgrima705db92017-09-24 13:42:31 +000025; AVX1-NEXT: vmovq %rdi, %xmm0
26; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,0,1]
27; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [1,2]
28; AVX1-NEXT: vpand %xmm1, %xmm0, %xmm0
29; AVX1-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm0
30; AVX1-NEXT: vpsrlq $63, %xmm0, %xmm0
31; AVX1-NEXT: retq
32;
33; AVX2-LABEL: bitcast_i2_2i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000034; AVX2: # %bb.0:
Francis Visoiu Mistriha8a83d12017-12-07 10:40:31 +000035; AVX2-NEXT: # kill: def %edi killed %edi def %rdi
Simon Pilgrima705db92017-09-24 13:42:31 +000036; AVX2-NEXT: vmovq %rdi, %xmm0
37; AVX2-NEXT: vpbroadcastq %xmm0, %xmm0
38; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [1,2]
39; AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
40; AVX2-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm0
41; AVX2-NEXT: vpsrlq $63, %xmm0, %xmm0
42; AVX2-NEXT: retq
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000043;
44; AVX512-LABEL: bitcast_i2_2i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000045; AVX512: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000046; AVX512-NEXT: movb %dil, -{{[0-9]+}}(%rsp)
47; AVX512-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
48; AVX512-NEXT: kmovd %eax, %k1
Craig Topper55cf8802017-12-28 19:46:11 +000049; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
50; AVX512-NEXT: vmovdqa64 %xmm0, %xmm0 {%k1} {z}
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000051; AVX512-NEXT: retq
52 %1 = bitcast i2 %a0 to <2 x i1>
53 ret <2 x i1> %1
54}
55
56define <4 x i1> @bitcast_i4_4i1(i4 zeroext %a0) {
57; SSE2-SSSE3-LABEL: bitcast_i4_4i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000058; SSE2-SSSE3: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +000059; SSE2-SSSE3-NEXT: movd %edi, %xmm0
60; SSE2-SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
61; SSE2-SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8]
62; SSE2-SSSE3-NEXT: pand %xmm1, %xmm0
63; SSE2-SSSE3-NEXT: pcmpeqd %xmm1, %xmm0
64; SSE2-SSSE3-NEXT: psrld $31, %xmm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000065; SSE2-SSSE3-NEXT: retq
66;
67; AVX1-LABEL: bitcast_i4_4i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000068; AVX1: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +000069; AVX1-NEXT: vmovd %edi, %xmm0
70; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
71; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [1,2,4,8]
72; AVX1-NEXT: vpand %xmm1, %xmm0, %xmm0
73; AVX1-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
74; AVX1-NEXT: vpsrld $31, %xmm0, %xmm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000075; AVX1-NEXT: retq
76;
77; AVX2-LABEL: bitcast_i4_4i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000078; AVX2: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +000079; AVX2-NEXT: vmovd %edi, %xmm0
80; AVX2-NEXT: vpbroadcastd %xmm0, %xmm0
81; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [1,2,4,8]
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000082; AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
Simon Pilgrima705db92017-09-24 13:42:31 +000083; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
84; AVX2-NEXT: vpsrld $31, %xmm0, %xmm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000085; AVX2-NEXT: retq
86;
87; AVX512-LABEL: bitcast_i4_4i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +000088; AVX512: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000089; AVX512-NEXT: movb %dil, -{{[0-9]+}}(%rsp)
90; AVX512-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
91; AVX512-NEXT: kmovd %eax, %k1
Craig Topper55cf8802017-12-28 19:46:11 +000092; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
93; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1} {z}
Simon Pilgrima80cb1d2017-07-06 19:33:10 +000094; AVX512-NEXT: retq
95 %1 = bitcast i4 %a0 to <4 x i1>
96 ret <4 x i1> %1
97}
98
99define <8 x i1> @bitcast_i8_8i1(i8 zeroext %a0) {
100; SSE2-SSSE3-LABEL: bitcast_i8_8i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000101; SSE2-SSSE3: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000102; SSE2-SSSE3-NEXT: movd %edi, %xmm0
Simon Pilgrimc7015962017-12-29 14:41:50 +0000103; SSE2-SSSE3-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,2,3,4,5,6,7]
104; SSE2-SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
Simon Pilgrima705db92017-09-24 13:42:31 +0000105; SSE2-SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128]
106; SSE2-SSSE3-NEXT: pand %xmm1, %xmm0
107; SSE2-SSSE3-NEXT: pcmpeqw %xmm1, %xmm0
108; SSE2-SSSE3-NEXT: psrlw $15, %xmm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000109; SSE2-SSSE3-NEXT: retq
110;
Simon Pilgrima705db92017-09-24 13:42:31 +0000111; AVX1-LABEL: bitcast_i8_8i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000112; AVX1: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000113; AVX1-NEXT: vmovd %edi, %xmm0
Simon Pilgrimc7015962017-12-29 14:41:50 +0000114; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[0,0,2,3,4,5,6,7]
115; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,0,0]
Simon Pilgrima705db92017-09-24 13:42:31 +0000116; AVX1-NEXT: vmovdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128]
117; AVX1-NEXT: vpand %xmm1, %xmm0, %xmm0
118; AVX1-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
119; AVX1-NEXT: vpsrlw $15, %xmm0, %xmm0
120; AVX1-NEXT: retq
121;
122; AVX2-LABEL: bitcast_i8_8i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000123; AVX2: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000124; AVX2-NEXT: vmovd %edi, %xmm0
125; AVX2-NEXT: vpbroadcastw %xmm0, %xmm0
126; AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128]
127; AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
128; AVX2-NEXT: vpcmpeqw %xmm1, %xmm0, %xmm0
129; AVX2-NEXT: vpsrlw $15, %xmm0, %xmm0
130; AVX2-NEXT: retq
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000131;
132; AVX512-LABEL: bitcast_i8_8i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000133; AVX512: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000134; AVX512-NEXT: kmovd %edi, %k0
135; AVX512-NEXT: vpmovm2w %k0, %xmm0
136; AVX512-NEXT: retq
137 %1 = bitcast i8 %a0 to <8 x i1>
138 ret <8 x i1> %1
139}
140
141define <16 x i1> @bitcast_i16_16i1(i16 zeroext %a0) {
Simon Pilgrima705db92017-09-24 13:42:31 +0000142; SSE2-LABEL: bitcast_i16_16i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000143; SSE2: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000144; SSE2-NEXT: movd %edi, %xmm0
145; SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
146; SSE2-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,0,1,1,4,5,6,7]
147; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
148; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
149; SSE2-NEXT: pand %xmm1, %xmm0
150; SSE2-NEXT: pcmpeqb %xmm1, %xmm0
151; SSE2-NEXT: psrlw $7, %xmm0
152; SSE2-NEXT: pand {{.*}}(%rip), %xmm0
153; SSE2-NEXT: retq
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000154;
Simon Pilgrima705db92017-09-24 13:42:31 +0000155; SSSE3-LABEL: bitcast_i16_16i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000156; SSSE3: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000157; SSSE3-NEXT: movd %edi, %xmm0
158; SSSE3-NEXT: pshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
159; SSSE3-NEXT: movdqa {{.*#+}} xmm1 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
160; SSSE3-NEXT: pand %xmm1, %xmm0
161; SSSE3-NEXT: pcmpeqb %xmm1, %xmm0
162; SSSE3-NEXT: psrlw $7, %xmm0
163; SSSE3-NEXT: pand {{.*}}(%rip), %xmm0
164; SSSE3-NEXT: retq
165;
166; AVX1-LABEL: bitcast_i16_16i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000167; AVX1: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000168; AVX1-NEXT: vmovd %edi, %xmm0
169; AVX1-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
170; AVX1-NEXT: vmovddup {{.*#+}} xmm1 = mem[0,0]
171; AVX1-NEXT: vpand %xmm1, %xmm0, %xmm0
172; AVX1-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
173; AVX1-NEXT: vpsrlw $7, %xmm0, %xmm0
174; AVX1-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
175; AVX1-NEXT: retq
176;
177; AVX2-LABEL: bitcast_i16_16i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000178; AVX2: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000179; AVX2-NEXT: vmovd %edi, %xmm0
180; AVX2-NEXT: vpshufb {{.*#+}} xmm0 = xmm0[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1]
181; AVX2-NEXT: vpbroadcastq {{.*#+}} xmm1 = [9241421688590303745,9241421688590303745]
182; AVX2-NEXT: vpand %xmm1, %xmm0, %xmm0
183; AVX2-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0
184; AVX2-NEXT: vpsrlw $7, %xmm0, %xmm0
185; AVX2-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0
186; AVX2-NEXT: retq
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000187;
188; AVX512-LABEL: bitcast_i16_16i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000189; AVX512: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000190; AVX512-NEXT: kmovd %edi, %k0
191; AVX512-NEXT: vpmovm2b %k0, %xmm0
192; AVX512-NEXT: retq
193 %1 = bitcast i16 %a0 to <16 x i1>
194 ret <16 x i1> %1
195}
196
197define <32 x i1> @bitcast_i32_32i1(i32 %a0) {
198; SSE2-SSSE3-LABEL: bitcast_i32_32i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000199; SSE2-SSSE3: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000200; SSE2-SSSE3-NEXT: movl %esi, (%rdi)
201; SSE2-SSSE3-NEXT: movq %rdi, %rax
202; SSE2-SSSE3-NEXT: retq
203;
204; AVX1-LABEL: bitcast_i32_32i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000205; AVX1: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000206; AVX1-NEXT: vmovd %edi, %xmm0
207; AVX1-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
208; AVX1-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,1,1,4,5,6,7]
209; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
210; AVX1-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,2,3,3,4,5,6,7]
211; AVX1-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000212; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
Simon Pilgrima705db92017-09-24 13:42:31 +0000213; AVX1-NEXT: vandps {{.*}}(%rip), %ymm0, %ymm0
214; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm1
215; AVX1-NEXT: vpxor %xmm2, %xmm2, %xmm2
216; AVX1-NEXT: vpcmpeqb %xmm2, %xmm1, %xmm1
217; AVX1-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
218; AVX1-NEXT: vpxor %xmm3, %xmm1, %xmm1
219; AVX1-NEXT: vpsrlw $7, %xmm1, %xmm1
220; AVX1-NEXT: vmovdqa {{.*#+}} xmm4 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
221; AVX1-NEXT: vpand %xmm4, %xmm1, %xmm1
222; AVX1-NEXT: vpcmpeqb %xmm2, %xmm0, %xmm0
223; AVX1-NEXT: vpxor %xmm3, %xmm0, %xmm0
224; AVX1-NEXT: vpsrlw $7, %xmm0, %xmm0
225; AVX1-NEXT: vpand %xmm4, %xmm0, %xmm0
226; AVX1-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000227; AVX1-NEXT: retq
228;
229; AVX2-LABEL: bitcast_i32_32i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000230; AVX2: # %bb.0:
Simon Pilgrima705db92017-09-24 13:42:31 +0000231; AVX2-NEXT: vmovd %edi, %xmm0
232; AVX2-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
233; AVX2-NEXT: vpshuflw {{.*#+}} xmm1 = xmm0[0,0,1,1,4,5,6,7]
234; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm1[0,0,1,1]
235; AVX2-NEXT: vpshuflw {{.*#+}} xmm0 = xmm0[2,2,3,3,4,5,6,7]
236; AVX2-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,0,1,1]
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000237; AVX2-NEXT: vinserti128 $1, %xmm0, %ymm1, %ymm0
Simon Pilgrima705db92017-09-24 13:42:31 +0000238; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm1 = [9241421688590303745,9241421688590303745,9241421688590303745,9241421688590303745]
239; AVX2-NEXT: vpand %ymm1, %ymm0, %ymm0
240; AVX2-NEXT: vpcmpeqb %ymm1, %ymm0, %ymm0
241; AVX2-NEXT: vpsrlw $7, %ymm0, %ymm0
242; AVX2-NEXT: vpand {{.*}}(%rip), %ymm0, %ymm0
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000243; AVX2-NEXT: retq
244;
245; AVX512-LABEL: bitcast_i32_32i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000246; AVX512: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000247; AVX512-NEXT: kmovd %edi, %k0
248; AVX512-NEXT: vpmovm2b %k0, %ymm0
249; AVX512-NEXT: retq
250 %1 = bitcast i32 %a0 to <32 x i1>
251 ret <32 x i1> %1
252}
253
254define <64 x i1> @bitcast_i64_64i1(i64 %a0) {
255; SSE2-SSSE3-LABEL: bitcast_i64_64i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000256; SSE2-SSSE3: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000257; SSE2-SSSE3-NEXT: movq %rsi, (%rdi)
258; SSE2-SSSE3-NEXT: movq %rdi, %rax
259; SSE2-SSSE3-NEXT: retq
260;
261; AVX12-LABEL: bitcast_i64_64i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000262; AVX12: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000263; AVX12-NEXT: movq %rsi, (%rdi)
264; AVX12-NEXT: movq %rdi, %rax
265; AVX12-NEXT: retq
266;
267; AVX512-LABEL: bitcast_i64_64i1:
Francis Visoiu Mistrih25528d62017-12-04 17:18:51 +0000268; AVX512: # %bb.0:
Simon Pilgrima80cb1d2017-07-06 19:33:10 +0000269; AVX512-NEXT: kmovq %rdi, %k0
270; AVX512-NEXT: vpmovm2b %k0, %zmm0
271; AVX512-NEXT: retq
272 %1 = bitcast i64 %a0 to <64 x i1>
273 ret <64 x i1> %1
274}