diff --git a/test/loopvectorize.c b/test/loopvectorize.c new file mode 100644 index 0000000..a46b633 --- /dev/null +++ b/test/loopvectorize.c @@ -0,0 +1,44 @@ +void ex1(float *A, float* B, float K, int start, int end) { + for (int i = start; i < end; ++i) + A[i] *= B[i] + K; +} + +void ex2(float *A, float* B, float K, int n) { + for (int i = 0; i < n; ++i) + A[i] *= B[i] + K; +} + +int ex3(int *A, int *B, int n) { + unsigned sum = 0; + for (int i = 0; i < n; ++i) + sum += A[i] + 5; + return sum; +} + +void ex4(float *A, float* B, float K, int n) { + for (int i = 0; i < n; ++i) + A[i] = i; +} + +int ex5(int *A, int *B, int n) { + unsigned sum = 0; + for (int i = 0; i < n; ++i) + if (A[i] > B[i]) + sum += A[i] + 5; + return sum; +} + +void ex6(int *A, int *B, int n) { + for (int i = n; i > 0; --i) + A[i] +=1; +} + +void ex7(int *A, int *B, int n, int k) { + for (int i = 0; i < n; ++i) + A[i*7] += B[i*k]; +} + +void ex8(int *A, char *B, int n, int k) { + for (int i = 0; i < n; ++i) + A[i] += 4 * B[i]; +} \ No newline at end of file diff --git a/test/loopvectorize.ll b/test/loopvectorize.ll new file mode 100644 index 0000000..8d651ca --- /dev/null +++ b/test/loopvectorize.ll @@ -0,0 +1,369 @@ +; ModuleID = 'loopvectorize.c' +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" +;target triple = "x86_64-apple-macosx10.8.0" +target triple = "x86-64-unknown-linux-gnu" + +define void @ex1(float* %A, float* %B, float %K, i32 %start, i32 %end) nounwind uwtable ssp { + %1 = alloca float*, align 8 + %2 = alloca float*, align 8 + %3 = alloca float, align 4 + %4 = alloca i32, align 4 + %5 = alloca i32, align 4 + %i = alloca i32, align 4 + store float* %A, float** %1, align 8 + store float* %B, float** %2, align 8 + store float %K, float* %3, align 4 + store i32 %start, i32* %4, align 4 + store i32 %end, i32* %5, align 4 + %6 = load i32* %4, align 4 + store i32 %6, i32* %i, align 4 + br label %7 + +;