blob: 2497b25ea1da9e83fb145b26149a6f240ce10a3a [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
Bill Wendlinga5c536e2013-08-01 21:42:05 +000041attributes #0 = { nounwind ssp uwtable "fp-contract-model"="standard" "no-frame-pointer-elim" "no-frame-pointer-elim-non-leaf" "relocation-model"="pic" "ssp-buffers-size"="8" }
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000042attributes #1 = { nounwind readnone }
43
44!llvm.dbg.cu = !{!0}
Manman Ren409558f2013-11-22 21:49:45 +000045!llvm.module.flags = !{!26}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000046
Manman Rene9a52e12013-07-29 18:12:58 +000047!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 +000048!1 = metadata !{i32 0}
49!2 = metadata !{metadata !3}
Manman Rene9a52e12013-07-29 18:12:58 +000050!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}
51!4 = metadata !{i32 786473, metadata !25}
Manman Renf2a88f32013-09-08 03:11:54 +000052!5 = metadata !{i32 786453, i32 0, null, i32 0, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !6, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000053!6 = metadata !{metadata !7}
Manman Rene9a52e12013-07-29 18:12:58 +000054!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 +000055!8 = metadata !{metadata !9}
56!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 +000057!10 = metadata !{i32 786443, metadata !25, metadata !3, i32 6, i32 0, i32 0}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000058!11 = metadata !{metadata !12, metadata !16, metadata !17}
59!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}
Manman Renf2a88f32013-09-08 03:11:54 +000060!13 = metadata !{i32 786433, null, null, null, i32 0, i64 32768, i64 32, i32 0, i32 0, metadata !7, metadata !14, i32 0, null, null, null} ; [ DW_TAG_array_type ] [line 0, size 32768, align 32, offset 0] [from int]
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000061!14 = metadata !{metadata !15}
62!15 = metadata !{i32 786465, i64 0, i64 1024}
63!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}
64!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}
65!18 = metadata !{i32 6, i32 0, metadata !10, null}
66!19 = metadata !{i32 7, i32 0, metadata !20, null}
Manman Rene9a52e12013-07-29 18:12:58 +000067!20 = metadata !{i32 786443, metadata !25, metadata !10, i32 6, i32 0, i32 1}
Arnold Schwaighofer4090b612013-03-09 15:56:34 +000068!24 = metadata !{i32 9, i32 0, metadata !3, null}
Manman Rene9a52e12013-07-29 18:12:58 +000069!25 = metadata !{metadata !"test", metadata !"/path/to/somewhere"}
Manman Ren409558f2013-11-22 21:49:45 +000070!26 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}