1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl | FileCheck %s
3
4declare void @Print__512(<16 x i32>) #0
5
6define void @bar__512(<16 x i32>* %var) #0 {
7; CHECK-LABEL: bar__512:
8; CHECK:       ## BB#0: ## %allocas
9; CHECK-NEXT:    pushq %rbx
10; CHECK-NEXT:    subq $112, %rsp
11; CHECK-NEXT:    movq %rdi, %rbx
12; CHECK-NEXT:    vmovdqu32 (%rbx), %zmm0
13; CHECK-NEXT:    vmovups %zmm0, (%rsp) ## 64-byte Spill
14; CHECK-NEXT:    vpbroadcastd {{.*}}(%rip), %zmm1
15; CHECK-NEXT:    vmovdqa32 %zmm1, (%rbx)
16; CHECK-NEXT:    callq _Print__512
17; CHECK-NEXT:    vmovups (%rsp), %zmm0 ## 64-byte Reload
18; CHECK-NEXT:    callq _Print__512
19; CHECK-NEXT:    vpbroadcastd {{.*}}(%rip), %zmm0
20; CHECK-NEXT:    vmovdqa32 %zmm0, (%rbx)
21; CHECK-NEXT:    addq $112, %rsp
22; CHECK-NEXT:    popq %rbx
23; CHECK-NEXT:    retq
24allocas:
25  %var_load_load = load <16 x i32>, <16 x i32>* %var, align 1
26  store <16 x i32> <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>, <16 x i32>* %var, align 64
27  call void @Print__512(<16 x i32> %var_load_load)
28 ; %var_load_load value should be reloaded
29  call void @Print__512(<16 x i32> %var_load_load)
30  store <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>, <16 x i32>* %var, align 64
31  ret void
32}
33
34
35attributes #0 = { nounwind }
36