[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / Hexagon / v6-unaligned-spill.ll
blob56977a1041bd64856543fc62b585074517c08f64
1 ; RUN: llc -march=hexagon -disable-cgp-delete-phis < %s | FileCheck %s
3 ; Test that we no longer generate an unaligned vector store for a spill when
4 ; a function has an alloca.
6 ; CHECK: vmem({{.*}}) =
8 %s.0 = type { [5 x [4 x i8]], i32, i32, i32, i32 }
10 ; Function Attrs: nounwind
11 define i32 @f0(ptr nocapture readonly %a0, ptr nocapture %a1, ptr nocapture readonly %a2, ptr nocapture readonly %a3, i32 %a4, i32 %a5, i32 %a6, ptr nocapture readonly %a7) #0 {
12 b0:
13   %v0 = alloca i8, i32 %a4, align 128
14   br i1 undef, label %b1, label %b5
16 b1:                                               ; preds = %b0
17   %v1 = icmp sgt i32 %a5, 2
18   br label %b2
20 b2:                                               ; preds = %b3, %b2, %b1
21   br i1 undef, label %b3, label %b2
23 b3:                                               ; preds = %b2
24   call void @f1(ptr undef, ptr undef, ptr nonnull %v0, i32 %a4, i32 %a5, ptr %a7)
25   %v2 = tail call <32 x i32> @llvm.hexagon.V6.vd0.128B() #2
26   br i1 %v1, label %b4, label %b2
28 b4:                                               ; preds = %b4, %b3
29   %v3 = phi <32 x i32> [ %v5, %b4 ], [ undef, %b3 ]
30   %v4 = tail call <32 x i32> @llvm.hexagon.V6.vsubhnq.128B(<128 x i1> undef, <32 x i32> undef, <32 x i32> %v3) #2
31   %v5 = tail call <32 x i32> @llvm.hexagon.V6.vavguh.128B(<32 x i32> %v3, <32 x i32> %v2) #2
32   br label %b4
34 b5:                                               ; preds = %b0
35   ret i32 0
38 ; Function Attrs: nounwind
39 declare void @f1(ptr nocapture readonly, ptr nocapture readonly, ptr nocapture, i32, i32, ptr nocapture readonly) #0
41 ; Function Attrs: nounwind readnone
42 declare <32 x i32> @llvm.hexagon.V6.vd0.128B() #1
44 ; Function Attrs: nounwind readnone
45 declare <32 x i32> @llvm.hexagon.V6.vsubhnq.128B(<128 x i1>, <32 x i32>, <32 x i32>) #1
47 ; Function Attrs: nounwind readnone
48 declare <32 x i32> @llvm.hexagon.V6.vavguh.128B(<32 x i32>, <32 x i32>) #1
50 attributes #0 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length128b" }
51 attributes #1 = { nounwind readnone }
52 attributes #2 = { nounwind }