1 ; RUN: opt -S -O3 -force-vector-width=2 -force-vector-interleave=1 < %s | FileCheck --check-prefix=LOOPVEC %s 2 ; RUN: opt -S -O3 -disable-loop-vectorization -force-vector-width=2 -force-vector-interleave=1 < %s | FileCheck --check-prefix=NOLOOPVEC %s 3 4 target 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" 5 target triple = "x86_64-apple-macosx10.8.0" 6 7 ; Make sure we can disable vectorization in opt. 8 9 ; LOOPVEC: add <2 x i32> 10 ; NOLOOPVEC-NOT: add <2 x i32> 11 12 define i32 @vect(i32* %a) { 13 entry: 14 br label %for.body 15 16 for.body: 17 %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] 18 %red.05 = phi i32 [ 0, %entry ], [ %add, %for.body ] 19 %arrayidx = getelementptr inbounds i32, i32* %a, i64 %indvars.iv 20 %0 = load i32, i32* %arrayidx, align 4 21 %add = add nsw i32 %0, %red.05 22 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 23 %exitcond = icmp eq i64 %indvars.iv.next, 255 24 br i1 %exitcond, label %for.end, label %for.body 25 26 for.end: 27 ret i32 %add 28 } 29