blob: 9dbabf0dc2dda7da3fe700b7c1d6c962408fe512 [file] [log] [blame]
Manman Rene9a52e12013-07-29 18:12:58 +00001; RUN: opt < %s -S -loop-vectorize -force-vector-unroll=1 -force-vector-width=4 -dce -instcombine | FileCheck %s
Arnold Schwaighofer4090b612013-03-09 15:56:34 +00002; Make sure we vectorize with debugging turned on.
3
4target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
5target triple = "x86_64-apple-macosx10.8.0"
6
7@A = global [1024 x i32] zeroinitializer, align 16
8@B = global [1024 x i32] zeroinitializer, align 16
9@C = global [1024 x i32] zeroinitializer, align 16
10
Stephen Linc1c7a132013-07-14 01:42:54 +000011; CHECK-LABEL: @test(
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000012define i32 @test() #0 {
13entry:
14 tail call void @llvm.dbg.value(metadata !1, i64 0, metadata !9), !dbg !18
15 br label %for.body, !dbg !18
16
17for.body:
18 ;CHECK: load <4 x i32>
19 %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
20 %arrayidx = getelementptr inbounds [1024 x i32]* @B, i64 0, i64 %indvars.iv, !dbg !19
Manman Ren1a5ff282013-04-30 17:52:57 +000021 %0 = load i32* %arrayidx, align 4, !dbg !19
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000022 %arrayidx2 = getelementptr inbounds [1024 x i32]* @C, i64 0, i64 %indvars.iv, !dbg !19
Manman Ren1a5ff282013-04-30 17:52:57 +000023 %1 = load i32* %arrayidx2, align 4, !dbg !19
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000024 %add = add nsw i32 %1, %0, !dbg !19
25 %arrayidx4 = getelementptr inbounds [1024 x i32]* @A, i64 0, i64 %indvars.iv, !dbg !19
Manman Ren1a5ff282013-04-30 17:52:57 +000026 store i32 %add, i32* %arrayidx4, align 4, !dbg !19
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000027 %indvars.iv.next = add i64 %indvars.iv, 1, !dbg !18
28 tail call void @llvm.dbg.value(metadata !{null}, i64 0, metadata !9), !dbg !18
29 %lftr.wideiv = trunc i64 %indvars.iv.next to i32, !dbg !18
30 %exitcond = icmp ne i32 %lftr.wideiv, 1024, !dbg !18
31 br i1 %exitcond, label %for.body, label %for.end, !dbg !18
32
33for.end:
34 ret i32 0, !dbg !24
35}
36
37declare void @llvm.dbg.declare(metadata, metadata) #1
38
39declare void @llvm.dbg.value(metadata, i64, metadata) #1
40
41attributes #0 = { nounwind ssp uwtable "fp-contract-model"="standard" "no-frame-pointer-elim" "no-frame-pointer-elim-non-leaf" "realign-stack" "relocation-model"="pic" "ssp-buffers-size"="8" }
42attributes #1 = { nounwind readnone }
43
44!llvm.dbg.cu = !{!0}
45
Manman Rene9a52e12013-07-29 18:12:58 +000046!0 = metadata !{i32 786449, metadata !25, i32 4, metadata !"clang", i1 true, metadata !"", i32 0, metadata !1, metadata !1, metadata !2, metadata !11, null, metadata !""}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000047!1 = metadata !{i32 0}
48!2 = metadata !{metadata !3}
Manman Rene9a52e12013-07-29 18:12:58 +000049!3 = metadata !{i32 786478, metadata !25, metadata !4, metadata !"test", metadata !"test", metadata !"test", i32 5, metadata !5, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, i32 ()* @test, null, null, metadata !8, i32 5}
50!4 = metadata !{i32 786473, metadata !25}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000051!5 = metadata !{i32 786453, i32 0, metadata !"", i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !6, i32 0, i32 0}
52!6 = metadata !{metadata !7}
Manman Rene9a52e12013-07-29 18:12:58 +000053!7 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000054!8 = metadata !{metadata !9}
55!9 = metadata !{i32 786688, metadata !10, metadata !"i", metadata !4, i32 6, metadata !7, i32 0, i32 0}
Manman Rene9a52e12013-07-29 18:12:58 +000056!10 = metadata !{i32 786443, metadata !25, metadata !3, i32 6, i32 0, i32 0}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000057!11 = metadata !{metadata !12, metadata !16, metadata !17}
58!12 = metadata !{i32 786484, i32 0, null, metadata !"A", metadata !"A", metadata !"", metadata !4, i32 1, metadata !13, i32 0, i32 1, [1024 x i32]* @A, null}
59!13 = metadata !{i32 786433, null, metadata !"", null, i32 0, i64 32768, i64 32, i32 0, i32 0, metadata !7, metadata !14, i32 0, i32 0}
60!14 = metadata !{metadata !15}
61!15 = metadata !{i32 786465, i64 0, i64 1024}
62!16 = metadata !{i32 786484, i32 0, null, metadata !"B", metadata !"B", metadata !"", metadata !4, i32 2, metadata !13, i32 0, i32 1, [1024 x i32]* @B, null}
63!17 = metadata !{i32 786484, i32 0, null, metadata !"C", metadata !"C", metadata !"", metadata !4, i32 3, metadata !13, i32 0, i32 1, [1024 x i32]* @C, null}
64!18 = metadata !{i32 6, i32 0, metadata !10, null}
65!19 = metadata !{i32 7, i32 0, metadata !20, null}
Manman Rene9a52e12013-07-29 18:12:58 +000066!20 = metadata !{i32 786443, metadata !25, metadata !10, i32 6, i32 0, i32 1}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000067!24 = metadata !{i32 9, i32 0, metadata !3, null}
Manman Rene9a52e12013-07-29 18:12:58 +000068!25 = metadata !{metadata !"test", metadata !"/path/to/somewhere"}