xref: /llvm-project/llvm/test/CodeGen/X86/gep-expanded-vector.ll (revision 5384fb3d407c8bf4f34117baf60ddcb273a4b6d2)
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
3
4%struct.S1 = type { ptr, ptr }
5
6define 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
36; CHECK-NEXT:    retq
37entry:
38  %Vec = getelementptr inbounds ptr, <64 x ptr> %tmp , i64 2
39  %ptr = extractelement <64 x ptr> %Vec, i32 %ind
40  ret ptr %ptr
41}
42
43