1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc < %s -O2 -mattr=avx512f -mtriple=x86_64-unknown | FileCheck %s
4 %struct.S1 = type { ptr, ptr }
6 define ptr @malloc_init_state(<64 x ptr> %tmp, i32 %ind) nounwind {
7 ; CHECK-LABEL: malloc_init_state:
8 ; CHECK: # %bb.0: # %entry
9 ; CHECK-NEXT: pushq %rbp
10 ; CHECK-NEXT: movq %rsp, %rbp
11 ; CHECK-NEXT: andq $-64, %rsp
12 ; CHECK-NEXT: subq $576, %rsp # imm = 0x240
13 ; CHECK-NEXT: # kill: def $edi killed $edi def $rdi
14 ; CHECK-NEXT: vpbroadcastq {{.*#+}} zmm8 = [16,16,16,16,16,16,16,16]
15 ; CHECK-NEXT: vpaddq %zmm8, %zmm0, %zmm0
16 ; CHECK-NEXT: vpaddq %zmm8, %zmm1, %zmm1
17 ; CHECK-NEXT: vpaddq %zmm8, %zmm2, %zmm2
18 ; CHECK-NEXT: vpaddq %zmm8, %zmm3, %zmm3
19 ; CHECK-NEXT: vpaddq %zmm8, %zmm4, %zmm4
20 ; CHECK-NEXT: vpaddq %zmm8, %zmm5, %zmm5
21 ; CHECK-NEXT: vpaddq %zmm8, %zmm6, %zmm6
22 ; CHECK-NEXT: vpaddq %zmm8, %zmm7, %zmm7
23 ; CHECK-NEXT: vmovdqa64 %zmm7, {{[0-9]+}}(%rsp)
24 ; CHECK-NEXT: vmovdqa64 %zmm6, {{[0-9]+}}(%rsp)
25 ; CHECK-NEXT: vmovdqa64 %zmm5, {{[0-9]+}}(%rsp)
26 ; CHECK-NEXT: vmovdqa64 %zmm4, {{[0-9]+}}(%rsp)
27 ; CHECK-NEXT: vmovdqa64 %zmm3, {{[0-9]+}}(%rsp)
28 ; CHECK-NEXT: vmovdqa64 %zmm2, {{[0-9]+}}(%rsp)
29 ; CHECK-NEXT: vmovdqa64 %zmm1, {{[0-9]+}}(%rsp)
30 ; CHECK-NEXT: vmovdqa64 %zmm0, (%rsp)
31 ; CHECK-NEXT: andl $63, %edi
32 ; CHECK-NEXT: movq (%rsp,%rdi,8), %rax
33 ; CHECK-NEXT: movq %rbp, %rsp
34 ; CHECK-NEXT: popq %rbp
35 ; CHECK-NEXT: vzeroupper
38 %Vec = getelementptr inbounds ptr, <64 x ptr> %tmp , i64 2
39 %ptr = extractelement <64 x ptr> %Vec, i32 %ind