; A[i] += A[0] + A[0];
; }
;
-; CHECK: %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds
+; CHECK: %polly.subfn.storeaddr.polly.access.A.load = getelementptr inbounds
; CHECK: store float %polly.access.A.load, float* %polly.subfn.storeaddr.polly.access.A.load
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
;
; CHECK-LABEL: polly.preload.begin:
; CHECK-NEXT: %polly.access.B = getelementptr i32, i32 addrspace(1)* %B, i64 0
-; CHECK-NOT: addrspacecast
+; CHECK-NOT: addrspacecast
; CHECK-NEXT: %polly.access.B.load = load i32, i32 addrspace(1)* %polly.access.B
;
; CHECK-LABEL: polly.stmt.bb2:
;
; int f(int *A, int *B) {
; // Possible aliasing between A and B but if not then *B would be
-; // invariant. We assume this and hoist *B but need to use a merged
+; // invariant. We assume this and hoist *B but need to use a merged
; // version in the return.
; int i = 0;
; int x = 0;
ret void
}
-!0 = !{!"polly_split_after"}
+!0 = !{!"polly_split_after"}
; RUN: opt %loadPolly -polly-scops -polly-delicm -analyze < %s | FileCheck %s
;
; llvm.org/PR41656
-;
+;
; This test case has an InvalidContext such that part of the predecessors
; of for.body.us.i lie within the invalid context. This causes a
; consistency check withing the invalid context of PR41656 to fail.
fill_samples.exit: ; preds = %for.cond2.for.end_crit_edge.us.i, %for.body.us.i.us
ret void
}
-
+
declare dso_local i32 @av_get_channel_layout_nb_channels() local_unnamed_addr #0
; Function Attrs: nounwind readnone speculatable
-; RUN: opt %loadPolly -polly-codegen -polly-allow-nonaffine-loops -polly-allow-nonaffine -debug-only=polly-dependence < %s 2>&1 | FileCheck %s
+; RUN: opt %loadPolly -polly-codegen -polly-allow-nonaffine-loops -polly-allow-nonaffine -debug-only=polly-dependence < %s 2>&1 | FileCheck %s
; REQUIRES: asserts
; CHECK: MayWriteAccess := [Reduction Type: NONE] [Scalar: 0]
; #pragma scop
; for(int i = 0; i < 1000; i++) {
; XLoopInit: x = 0;
-;
+;
; if (control1 > 2)
; C1Add: x += 10;
; if (control2 > 3)
; C2Add: x += A[i];
-;
+;
; BLoopAccumX: B[i] += x;
; }
-;
+;
; #pragma endscop
; }
; ModuleID = 'test.ll'
;
; https://reviews.llvm.org/D35630 removes this debug metadata before the
; instruction is copied to the GPUModule.
-;
+;
; vec_add_1.c:
; void vec_add_1(int N, int arr[N]) {
; int i=0;
; }
-; RUN: opt %loadPolly -polly-codegen-ppcg -S < %s
+; RUN: opt %loadPolly -polly-codegen-ppcg -S < %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; This declaration would not have been generated unless a kernel launch exists.
; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
-;
+;
; void f(int *begin, int *arr) {
; for (int i = *begin; i < 100; i++) {
; arr[i] = 0;
; x = 0;
; if(control) x = C[i];
; B[i] = x * A[i];
-;
+;
; }
; #pragma endscop
; }
; the declare would not be generated unless a call to a kernel exists.
; HOST-IR: declare void @polly_launchKernel(i8*, i32, i32, i32, i32, i32, i8*)
-;
+;
;
; void checkPrivatization(int A[], int B[], int C[], int control) {
; int x;
;
; #define Ni 2000
; #define Nj 3000
-;
+;
; double mse(double A[Ni], double B[Nj]) {
; int i;
; double tmp = 6;
; for (int j = 2; j<Nj; j++) {
; B[j-1] = j;
; }
-; A[i] = B[i];
+; A[i] = B[i];
; }
; return tmp;
; }
;
; #define Ni 2000
; #define Nj 2000
-;
+;
; double mse(double A[Ni], double B[Nj]) {
; int i;
; double tmp = 6;
; for (i = 0; i < Ni; i++) {
-; B[i] = 2;
+; B[i] = 2;
; for (int j = 0; j<Nj; j++) {
; B[j] = j;
; }
-; A[i] = B[i];
+; A[i] = B[i];
; }
; return tmp;
; }
;
; #define Ni 2000
; #define Nj 3000
-;
+;
; void tmp3(double A[Ni], double B[Nj]) {
; int i,j;
; double tmp = 6;
; for (i = 0; i < Ni; i++) {
;
; for(int h = 0; h<Nj; h++)
-; B[h] = h;
-;
+; B[h] = h;
+;
; for(j = 0; j < Nj; j++) {
; for(int k=0; k<Nj; k++) {
; tmp = i+k+j;
;
; #define Ni 2000
; #define Nj 3000
-;
+;
; void tmp3(double A[Ni], double B[Nj]) {
; int i,j;
; double tmp = 6;
; for (i = 0; i < Ni; i++) {
-;
+;
; for(int h = 0; h<Nj; h++)
; B[h] = h;
-;
+;
; for(j = 0; j < Nj; j++) {
; for(int k=0; k<Nj; k++) {
; tmp = tmp+i+k+j;
;
; #define Ni 2000
; #define Nj 3000
-;
+;
; double mse(double A[Ni], double B[Nj]) {
; int i;
; double tmp = 6;
; for (int j = 0; j<Nj; j++) {
; B[j] = j;
; }
-; A[i] = B[i];
+; A[i] = B[i];
; }
; return tmp;
; }
; for (j = 0; j < Ni; j++) {
; for (int i = 0; i<Nj; i++)
; B[i] = i;
-;
+;
; for (int i = 0; i<Nj; i++)
; D[i] = i;
-;
+;
; A[j] = B[j];
; C[j] = D[j];
; }
; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-mse -analyze < %s | FileCheck %s
;
-; Verify that the accesses are correctly expanded
+; Verify that the accesses are correctly expanded
;
; Original source code :
;
; CHECK-NOT: new: { Stmt_for_inc4[i0] -> MemRef_tmp_05__phi_Stmt_for_body_expanded[1 + i0] : i0 <= 9998 };
; CHECK: new: { Stmt_for_inc4[i0] -> MemRef_conv_lcssa__phi_Stmt_for_inc4_expanded[i0] };
; CHECK: new: { Stmt_for_inc4[i0] -> MemRef_add_lcssa__phi_Stmt_for_inc4_expanded[i0] };
-;
+;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
;
; Check that the disable_nonforced metadata is honored; optimization
; heuristics/rescheduling must not be applied.
-;
+;
define void @func(i32 %n, double* noalias nonnull %A) {
entry:
br label %for
; RUN: opt -S %loadPolly -basic-aa -polly-opt-isl \
; RUN: -polly-pattern-matching-based-opts=false -polly-vectorizer=polly \
-; RUN: -polly-ast -analyze < %s | FileCheck %s
+; RUN: -polly-ast -analyze < %s | FileCheck %s
; RUN: opt -S %loadPolly -basic-aa -polly-opt-isl \
; RUN: -polly-pattern-matching-based-opts=false -polly-vectorizer=stripmine \
; RUN: -polly-ast -analyze < %s | FileCheck %s
bb.nph:
%0 = tail call i32 (...) @rnd() nounwind ; <i32> [#uses=1]
%1 = icmp eq i32 %0, 0 ; <i1> [#uses=1]
- %sel.b = getelementptr inbounds i32, i32* %b, i64 4
+ %sel.b = getelementptr inbounds i32, i32* %b, i64 4
%iftmp.0.0 = select i1 %1, i32* %sel.b, i32* %a ; <i32*> [#uses=2]
br label %bb3
; CHECK-NEXT: Schedule :=
; CHECK-NEXT: [n] -> { Stmt_bb2[i0] -> [i0] };
; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0]
-; CHECK-NEXT: [n] -> { Stmt_bb2[i0] -> MemRef_A[o0] : (-n + o0) mod 42 = 0 and -41 <= o0 <= 41 and ((n > 0 and o0 >= 0) or (n <= 0 and o0 <= 0)) };
+; CHECK-NEXT: [n] -> { Stmt_bb2[i0] -> MemRef_A[o0] : (-n + o0) mod 42 = 0 and -41 <= o0 <= 41 and ((n > 0 and o0 >= 0) or (n <= 0 and o0 <= 0)) };
; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
; CHECK-NEXT: [n] -> { Stmt_bb2[i0] -> MemRef_A[o0] : (-n + o0) mod 42 = 0 and -41 <= o0 <= 41 and ((n > 0 and o0 >= 0) or (n <= 0 and o0 <= 0)) };
; CHECK-NEXT: }
; CHECK-NEXT: ReadAccess := [Reduction Type: +] [Scalar: 0]
; CHECK-NEXT: [N] -> { Stmt_for_body[i0] -> MemRef_A[1] : (1 + i0) mod 2 = 0; Stmt_for_body[i0] -> MemRef_A[0] : (i0) mod 2 = 0 }
; CHECK-NEXT: MustWriteAccess := [Reduction Type: +] [Scalar: 0]
-; CHECK-NEXT: [N] -> { Stmt_for_body[i0] -> MemRef_A[1] : (1 + i0) mod 2 = 0; Stmt_for_body[i0] -> MemRef_A[0] : (i0) mod 2 = 0 };
+; CHECK-NEXT: [N] -> { Stmt_for_body[i0] -> MemRef_A[1] : (1 + i0) mod 2 = 0; Stmt_for_body[i0] -> MemRef_A[0] : (i0) mod 2 = 0 };
; CHECK-NEXT: }
;
; void f(int *A, int N) {
; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 1]
; CHECK-NEXT: [tmp180, tmp177, tmp183, tmp162, tmp157, tmp150, tmp146, tmp140, tmp] -> { Stmt_bb203[i0, i1, i2] -> MemRef_tmp194[] };
; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0]
-; CHECK-NEXT: [tmp180, tmp177, tmp183, tmp162, tmp157, tmp150, tmp146, tmp140, tmp] -> { Stmt_bb203[i0, i1, i2] -> MemRef_tmp173[o0, 1 + i1, 1 + i2] : (1 - i0 + o0) mod 3 = 0 and 0 <= o0 <= 2 }
+; CHECK-NEXT: [tmp180, tmp177, tmp183, tmp162, tmp157, tmp150, tmp146, tmp140, tmp] -> { Stmt_bb203[i0, i1, i2] -> MemRef_tmp173[o0, 1 + i1, 1 + i2] : (1 - i0 + o0) mod 3 = 0 and 0 <= o0 <= 2 }
; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0]
; CHECK-NEXT: [tmp180, tmp177, tmp183, tmp162, tmp157, tmp150, tmp146, tmp140, tmp] -> { Stmt_bb203[i0, i1, i2] -> MemRef_arg56[1 + i0, 1 + i1, 1 + i2] };
; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0]
-; RUN: opt %loadPolly -polly-scops -disable-output < %s
+; RUN: opt %loadPolly -polly-scops -disable-output < %s
;
; Check that we do not crash with unsized (opaque) types.
;
; }
;
; CHECK: Invalid Context:
-; CHECK-NEXT: [A, B] -> { : (4*floor((A - B)/4) < A - B) or ((-A + B) mod 4 = 0 and B >= 9223372036854775808 + A) or ((-A + B) mod 4 = 0 and B <= -4 + A) }
+; CHECK-NEXT: [A, B] -> { : (4*floor((A - B)/4) < A - B) or ((-A + B) mod 4 = 0 and B >= 9223372036854775808 + A) or ((-A + B) mod 4 = 0 and B <= -4 + A) }
;
; CHECK: Domain :=
; CHECK-NEXT: [A, B] -> { Stmt_while_body[i0] : (-A + B) mod 4 = 0 and i0 >= 0 and 4i0 <= -4 - A + B }
; CHECK: { Stmt_for_body[i0] -> MemRef_prod[0] };
;
; int sum, prod;
-;
+;
; void f() {
; int i;
; for (int i = 0; i < 100; i++) {
; The constraint that r2 has to be bigger than r1 is implicitly containted in
; the domain, hence we do not want to see it explicitly.
;
-; CHECK-NOT: r2 >= 1 + r1
+; CHECK-NOT: r2 >= 1 + r1
;
; void wraps(int *A, int p, short q, char r1, char r2) {
; for (char i = r1; i < r2; i++)
; Derived from test-suite/SingleSource/UnitTests/Vector/SSE/sse.stepfft.c
-; The values %mul.i44 is simplified to constant 4 by ScalarEvolution, but
+; The values %mul.i44 is simplified to constant 4 by ScalarEvolution, but
; SCEVAffinator used to check whether the sdiv's argument was constant.
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; CHECK-NEXT: [N] -> { Stmt_sw_bb_5[i0] -> MemRef_A[i0] };
; CHECK-NEXT: Stmt_sw_bb_9
; CHECK-NEXT: Domain :=
-; CHECK-NEXT: [N] -> { Stmt_sw_bb_9[i0] : (1 + i0) mod 4 = 0 and 3 <= i0 < N };
+; CHECK-NEXT: [N] -> { Stmt_sw_bb_9[i0] : (1 + i0) mod 4 = 0 and 3 <= i0 < N };
; CHECK-NEXT: Schedule :=
; CHECK-NEXT: [N] -> { Stmt_sw_bb_9[i0] -> [i0, 0] };
; CHECK-NEXT: ReadAccess := [Reduction Type: +] [Scalar: 0]
define void @foo(i32* noalias nocapture readonly %xxx, i32* noalias nocapture readonly %yyy, i8*** nocapture readonly %zzz, i32 %conv6) {
while.body.us.preheader:
- %a2 = load i8**, i8*** %zzz, align 4
- %sub = add nsw i32 %conv6, -1
+ %a2 = load i8**, i8*** %zzz, align 4
+ %sub = add nsw i32 %conv6, -1
br label %while.body.us
while.body.us: ; preds = %while.body.us.preheader, %if.then.us
; for (int j = 0; j < n; j += 1) {
; body:
; double phi = 42;
-;
+;
; body_succ:
; A[0] = 42.0;
; }
body:
br label %body_succ
-
+
body_succ:
%phi = phi double [42.0, %body]
store double 42.0, double* %A
; for (int j = 0; j < n; j += 1) {
; body:
; double val = 12.5 + 12.5;
-;
+;
; body_succ:
; double unused = val + 21.0;
; A[0] = 42.0;
body:
%val = fadd double 12.5, 12.5
br label %body_succ
-
+
body_succ:
%unused = fadd double %val, 21.0
store double 42.0, double* %A
-; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-simplify -analyze < %s | FileCheck -match-full-lines %s
-; RUN: opt %loadPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s
+; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-simplify -analyze < %s | FileCheck -match-full-lines %s
+; RUN: opt %loadPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s
;
; Remove a store that is overwritten by another store in the same statement.
;
-; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-simplify -analyze < %s | FileCheck -match-full-lines %s
-; RUN: opt %loadPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s
+; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-simplify -analyze < %s | FileCheck -match-full-lines %s
+; RUN: opt %loadPolly -polly-stmt-granularity=bb "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s
;
; Remove a store that is overwritten by another store in the same statement.
; Check that even multiple stores are removed.
-; RUN: opt %loadPolly -polly-simplify -analyze < %s | FileCheck -match-full-lines %s
-; RUN: opt %loadPolly "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s
+; RUN: opt %loadPolly -polly-simplify -analyze < %s | FileCheck -match-full-lines %s
+; RUN: opt %loadPolly "-passes=scop(print<polly-simplify>)" -disable-output -aa-pipeline=basic-aa < %s | FileCheck -match-full-lines %s
;
; Do not remove overwrites when the value is read before.
;