Sanjay Patel | b653de1 | 2014-09-10 17:58:16 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -loop-vectorize -dce -force-vector-interleave=1 -force-vector-width=4 |
Nadav Rotem | 1c7fc71 | 2012-10-22 18:27:56 +0000 | [diff] [blame] | 2 | |
| 3 | ; Check that we don't crash. |
| 4 | |
| 5 | target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" |
Nadav Rotem | 1c7fc71 | 2012-10-22 18:27:56 +0000 | [diff] [blame] | 6 | |
| 7 | module asm "\09.ident\09\22GCC: (GNU) 4.6.3 LLVM: 3.2svn\22" |
| 8 | |
| 9 | @b = common global [32000 x float] zeroinitializer, align 16 |
| 10 | |
| 11 | define i32 @set1ds(i32 %_n, float* nocapture %arr, float %value, i32 %stride) nounwind uwtable { |
| 12 | entry: |
| 13 | %0 = icmp sgt i32 %_n, 0 |
| 14 | br i1 %0, label %"3.lr.ph", label %"5" |
| 15 | |
| 16 | "3.lr.ph": ; preds = %entry |
| 17 | %1 = bitcast float* %arr to i8* |
| 18 | %2 = sext i32 %stride to i64 |
| 19 | br label %"3" |
| 20 | |
| 21 | "3": ; preds = %"3.lr.ph", %"3" |
| 22 | %indvars.iv = phi i64 [ 0, %"3.lr.ph" ], [ %indvars.iv.next, %"3" ] |
| 23 | %3 = shl nsw i64 %indvars.iv, 2 |
David Blaikie | 79e6c74 | 2015-02-27 19:29:02 +0000 | [diff] [blame] | 24 | %4 = getelementptr inbounds i8, i8* %1, i64 %3 |
Nadav Rotem | 1c7fc71 | 2012-10-22 18:27:56 +0000 | [diff] [blame] | 25 | %5 = bitcast i8* %4 to float* |
Manman Ren | 16649b0 | 2013-05-02 18:11:35 +0000 | [diff] [blame] | 26 | store float %value, float* %5, align 4 |
Nadav Rotem | 1c7fc71 | 2012-10-22 18:27:56 +0000 | [diff] [blame] | 27 | %indvars.iv.next = add i64 %indvars.iv, %2 |
| 28 | %6 = trunc i64 %indvars.iv.next to i32 |
| 29 | %7 = icmp slt i32 %6, %_n |
| 30 | br i1 %7, label %"3", label %"5" |
| 31 | |
| 32 | "5": ; preds = %"3", %entry |
| 33 | ret i32 0 |
| 34 | } |
| 35 | |
| 36 | define i32 @init(i8* nocapture %name) unnamed_addr nounwind uwtable { |
| 37 | entry: |
| 38 | br label %"3" |
| 39 | |
| 40 | "3": ; preds = %"3", %entry |
| 41 | %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %"3" ] |
| 42 | %0 = shl nsw i64 %indvars.iv, 2 |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 43 | %1 = getelementptr inbounds i8, i8* bitcast (float* getelementptr inbounds ([32000 x float], [32000 x float]* @b, i64 0, i64 16000) to i8*), i64 %0 |
Nadav Rotem | 1c7fc71 | 2012-10-22 18:27:56 +0000 | [diff] [blame] | 44 | %2 = bitcast i8* %1 to float* |
Manman Ren | 16649b0 | 2013-05-02 18:11:35 +0000 | [diff] [blame] | 45 | store float -1.000000e+00, float* %2, align 4 |
Nadav Rotem | 1c7fc71 | 2012-10-22 18:27:56 +0000 | [diff] [blame] | 46 | %indvars.iv.next = add i64 %indvars.iv, 1 |
| 47 | %lftr.wideiv = trunc i64 %indvars.iv.next to i32 |
| 48 | %exitcond = icmp eq i32 %lftr.wideiv, 16000 |
| 49 | br i1 %exitcond, label %"5", label %"3" |
| 50 | |
| 51 | "5": ; preds = %"3" |
| 52 | ret i32 0 |
| 53 | } |