Skip to content

Commit 4b3a878

Browse files
kartcqMeinersbur
andauthored
[Polly] Disable vectorization for Polly's fallback loops (#119188)
The patch sets the vectorization metadata to false for Polly's fallback loops. These are the loops executed when RTCs fail. This minimizes the multiple loop versioning carried out by Polly and subsequently by the Loop Vectorizer. --------- Co-authored-by: Michael Kruse <[email protected]>
1 parent 51a0c1b commit 4b3a878

20 files changed

+83
-68
lines changed

polly/lib/CodeGen/CodeGeneration.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
#include "llvm/Support/Debug.h"
4242
#include "llvm/Support/ErrorHandling.h"
4343
#include "llvm/Support/raw_ostream.h"
44+
#include "llvm/Transforms/Utils/LoopUtils.h"
4445
#include "isl/ast.h"
4546
#include <cassert>
4647

@@ -233,6 +234,15 @@ static bool generateCode(Scop &S, IslAstInfo &AI, LoopInfo &LI,
233234
NodeBuilder.allocateNewArrays(StartExitBlocks);
234235
Annotator.buildAliasScopes(S);
235236

237+
// The code below annotates the "llvm.loop.vectorize.enable" to false
238+
// for the code flow taken when RTCs fail. Because we don't want the
239+
// Loop Vectorizer to come in later and vectorize the original fall back
240+
// loop when Polly is enabled.
241+
for (Loop *L : LI.getLoopsInPreorder()) {
242+
if (S.contains(L))
243+
addStringMetadataToLoop(L, "llvm.loop.vectorize.enable", 0);
244+
}
245+
236246
if (PerfMonitoring) {
237247
PerfMonitor P(S, EnteringBB->getParent()->getParent());
238248
P.initialize();

polly/test/CodeGen/LoopParallelMD/single_loop_param_parallel.ll

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ ret:
3636
; SEQUENTIAL-LABEL: @test-one
3737
; SEQUENTIAL-NOT: !llvm.mem.parallel_loop_access
3838
; SEQUENTIAL-NOT: !llvm.access.group
39-
; SEQUENTIAL-NOT: !llvm.loop
4039

4140
; PARALLEL: @test-one
4241
; PARALLEL: store i32 1, ptr %scevgep1, {{[ ._!,a-zA-Z0-9]*}}, !llvm.access.group ![[GROUPID3:[0-9]+]]
@@ -81,14 +80,12 @@ ret:
8180
; SEQUENTIAL-LABEL: @test-two
8281
; SEQUENTIAL-NOT: !llvm.mem.parallel_loop_access
8382
; SEQUENTIAL-NOT: !llvm.access.group
84-
; SEQUENTIAL-NOT: !llvm.loop
8583

8684
; PARALLEL: @test-two
8785
; PARALLEL: %val_p_scalar_ = load i32, ptr %scevgep, {{[ ._!,a-zA-Z0-9]*}}, !llvm.access.group ![[GROUPID8:[0-9]*]]
8886
; PARALLEL: store i32 %val_p_scalar_, ptr %scevgep1, {{[ ._!,a-zA-Z0-9]*}}, !llvm.access.group ![[GROUPID8]]
8987
; PARALLEL: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit, !llvm.loop ![[LoopID9:[0-9]*]]
9088

91-
9289
; PARALLEL: ![[LoopID4]] = distinct !{![[LoopID4]], ![[PARACC5:[0-9]+]]}
9390
; PARALLEL: ![[PARACC5]] = !{!"llvm.loop.parallel_accesses", ![[GROUPID3]]}
9491
; PARALLEL: ![[LoopID9]] = distinct !{![[LoopID9]], ![[PARACC10:[0-9]+]]}

polly/test/CodeGen/MemAccess/codegen_address_space.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,4 @@ for.end: ; preds = %for.cond
4040
}
4141

4242
; CHECK: %polly.access.A = getelementptr i32, ptr addrspace(5) %A, i64 0
43-
; CHECK: %tmp2_p_scalar_ = load i32, ptr addrspace(5) %polly.access.A, align 4, !alias.scope !0, !noalias !3
43+
; CHECK: %tmp2_p_scalar_ = load i32, ptr addrspace(5) %polly.access.A, align 4, !alias.scope !2, !noalias !5

polly/test/CodeGen/MemAccess/create_arrays.ll

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,23 @@
2828
; CODEGEN: %beta.s2a.reload = load double, ptr %beta.s2a
2929
; CODEGEN: %polly.access.mul.E = mul nsw i64 %polly.indvar31, 200000
3030
; CODEGEN: %polly.access.add.E = add nsw i64 %polly.access.mul.E, %polly.indvar
31-
; CODEGEN: {{%.*}} = load double, ptr %polly.access.E, align 8, !alias.scope !0, !noalias !3
32-
; CODEGEN: store double {{%.*}}, ptr %scevgep34, align 8, !alias.scope !8, !noalias !9
31+
; CODEGEN: {{%.*}} = load double, ptr %polly.access.E, align 8, !alias.scope !4, !noalias !7
32+
; CODEGEN: store double {{%.*}}, ptr %scevgep34, align 8, !alias.scope !12, !noalias !13
3333
;
34-
; CODEGEN: !0 = !{!1}
35-
; CODEGEN: !1 = distinct !{!1, !2, !"polly.alias.scope.E"}
36-
; CODEGEN: !2 = distinct !{!2, !"polly.alias.scope.domain"}
37-
; CODEGEN: !3 = !{!4, !5, !6, !7}
38-
; CODEGEN: !4 = distinct !{!4, !2, !"polly.alias.scope.MemRef_B"}
39-
; CODEGEN: !5 = distinct !{!5, !2, !"polly.alias.scope.MemRef_A"}
40-
; CODEGEN: !6 = distinct !{!6, !2, !"polly.alias.scope.D"}
41-
; CODEGEN: !7 = distinct !{!7, !2, !"polly.alias.scope.F"}
42-
; CODEGEN: !8 = !{!5}
43-
; CODEGEN: !9 = !{!4, !6, !1, !7}
34+
; CODEGEN: !0 = distinct !{!0, !1}
35+
; CODEGEN: !1 = !{!"llvm.loop.vectorize.enable", i32 0}
36+
; CODEGEN: !2 = distinct !{!2, !1}
37+
; CODEGEN: !3 = distinct !{!3, !1}
38+
; CODEGEN: !4 = !{!5}
39+
; CODEGEN: !5 = distinct !{!5, !6, !"polly.alias.scope.E"}
40+
; CODEGEN: !6 = distinct !{!6, !"polly.alias.scope.domain"}
41+
; CODEGEN: !7 = !{!8, !9, !10, !11}
42+
; CODEGEN: !8 = distinct !{!8, !6, !"polly.alias.scope.MemRef_B"}
43+
; CODEGEN: !9 = distinct !{!9, !6, !"polly.alias.scope.MemRef_A"}
44+
; CODEGEN: !10 = distinct !{!10, !6, !"polly.alias.scope.D"}
45+
; CODEGEN: !11 = distinct !{!11, !6, !"polly.alias.scope.F"}
46+
; CODEGEN: !12 = !{!9}
47+
; CODEGEN: !13 = !{!8, !10, !5, !11}
4448
;
4549
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4650
target triple = "x86_64-unknown-unknown"

polly/test/CodeGen/MemAccess/different_types.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
; CHECK: %[[R1:[._0-9]*]] = sub nsw i64 0, %polly.indvar7
1313
; CHECK: %[[R2:[._0-9]*]] = add nsw i64 %[[R1]], 99
1414
; CHECK: %polly.access.A10 = getelementptr i32, ptr %A, i64 %[[R2]]
15-
; CHECK: %tmp14_p_scalar_ = load float, ptr %polly.access.A10, align 4, !alias.scope !3, !noalias !0
15+
; CHECK: %tmp14_p_scalar_ = load float, ptr %polly.access.A10, align 4, !alias.scope !6, !noalias !3
1616

1717
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
1818

polly/test/CodeGen/MemAccess/generate-all.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@
1313
; SCEV-NEXT: %1 = zext i2 %0 to i64
1414
; SCEV-NEXT: %2 = shl nuw nsw i64 %1, 2
1515
; SCEV-NEXT: %scevgep = getelementptr i8, ptr %A, i64 %2
16-
; SCEV-NEXT: %tmp4_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !0, !noalias !3
16+
; SCEV-NEXT: %tmp4_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !2, !noalias !5
1717
; SCEV-NEXT: %p_tmp5 = fadd float %tmp4_p_scalar_, 1.000000e+01
18-
; SCEV-NEXT: store float %p_tmp5, ptr %scevgep, align 4, !alias.scope !0, !noalias !3
18+
; SCEV-NEXT: store float %p_tmp5, ptr %scevgep, align 4, !alias.scope !2, !noalias !5
1919
; SCEV-NEXT: %polly.indvar_next = add nsw i64 %polly.indvar, 1
2020
; SCEV-NEXT: %polly.loop_cond = icmp sle i64 %polly.indvar_next, 99
2121
; SCEV-NEXT: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit
2222

2323
; ASTEXPR: polly.stmt.bb2: ; preds = %polly.loop_header
2424
; ASTEXPR-NEXT: %pexp.pdiv_r = urem i64 %polly.indvar, 4
2525
; ASTEXPR-NEXT: %polly.access.A = getelementptr float, ptr %A, i64 %pexp.pdiv_r
26-
; ASTEXPR-NEXT: %tmp4_p_scalar_ = load float, ptr %polly.access.A, align 4, !alias.scope !0, !noalias !3
26+
; ASTEXPR-NEXT: %tmp4_p_scalar_ = load float, ptr %polly.access.A, align 4, !alias.scope !2, !noalias !5
2727
; ASTEXPR-NEXT: %p_tmp5 = fadd float %tmp4_p_scalar_, 1.000000e+01
2828
; ASTEXPR-NEXT: %pexp.pdiv_r1 = urem i64 %polly.indvar, 4
2929
; ASTEXPR-NEXT: %polly.access.A2 = getelementptr float, ptr %A, i64 %pexp.pdiv_r1
30-
; ASTEXPR-NEXT: store float %p_tmp5, ptr %polly.access.A2, align 4, !alias.scope !0, !noalias !3
30+
; ASTEXPR-NEXT: store float %p_tmp5, ptr %polly.access.A2, align 4, !alias.scope !2, !noalias !5
3131
; ASTEXPR-NEXT: %polly.indvar_next = add nsw i64 %polly.indvar, 1
3232
; ASTEXPR-NEXT: %polly.loop_cond = icmp sle i64 %polly.indvar_next, 99
3333
; ASTEXPR-NEXT: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit

polly/test/CodeGen/OpenMP/alias-metadata.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ bb5: ; preds = %bb4
3232
%tmp7 = getelementptr inbounds float, ptr %A, i64 %i.0
3333
%tmp6 = load float, ptr %tmp, align 4
3434
store float %tmp6, ptr %tmp7, align 4
35-
; CHECK: %tmp6_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !0, !noalias !3
36-
; CHECK: store float %tmp6_p_scalar_, ptr %scevgep7, align 4, !alias.scope !3, !noalias !0
35+
; CHECK: %tmp6_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !3, !noalias !6
36+
; CHECK: store float %tmp6_p_scalar_, ptr %scevgep7, align 4, !alias.scope !6, !noalias !3
3737
br label %bb8
3838

3939
bb8: ; preds = %bb5

polly/test/CodeGen/OpenMP/new_multidim_access.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
; IR: %6 = add nsw i64 %polly.indvar4, 13
2424
; IR: %polly.access.add.polly.subfunc.arg.A = add nsw i64 %polly.access.mul.polly.subfunc.arg.A, %6
2525
; IR: %polly.access.polly.subfunc.arg.A = getelementptr float, ptr %polly.subfunc.arg.A, i64 %polly.access.add.polly.subfunc.arg.A
26-
; IR: %tmp10_p_scalar_ = load float, ptr %polly.access.polly.subfunc.arg.A, align 4, !alias.scope !0, !noalias !3, !llvm.access.group !4
26+
; IR: %tmp10_p_scalar_ = load float, ptr %polly.access.polly.subfunc.arg.A, align 4, !alias.scope !3, !noalias !6, !llvm.access.group !7
2727

2828
; IR: %polly.access.mul.polly.subfunc.arg.A7 = mul nsw i64 %polly.indvar, %polly.subfunc.arg.m
2929
; IR: %7 = add nsw i64 %polly.indvar4, 43
3030
; IR: %polly.access.add.polly.subfunc.arg.A8 = add nsw i64 %polly.access.mul.polly.subfunc.arg.A7, %7
3131
; IR: %polly.access.polly.subfunc.arg.A9 = getelementptr float, ptr %polly.subfunc.arg.A, i64 %polly.access.add.polly.subfunc.arg.A8
32-
; IR: store float %p_tmp11, ptr %polly.access.polly.subfunc.arg.A9, align 4, !alias.scope !0, !noalias !3, !llvm.access.group !4
32+
; IR: store float %p_tmp11, ptr %polly.access.polly.subfunc.arg.A9, align 4, !alias.scope !3, !noalias !6, !llvm.access.group !7
3333
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
3434

3535
define void @new_multidim_access(i64 %n, i64 %m, ptr %A) {

polly/test/CodeGen/RuntimeDebugBuilder/combine_different_values.ll

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@
5353

5454
; CHECK: %0 = shl nuw nsw i64 %polly.indvar, 3
5555
; CHECK: %scevgep = getelementptr i8, ptr %B, i64 %0
56-
; CHECK: %tmp3_p_scalar_ = load double, ptr %scevgep, align 8, !alias.scope !0, !noalias !3
56+
; CHECK: %tmp3_p_scalar_ = load double, ptr %scevgep, align 8, !alias.scope !2, !noalias !5
5757
; CHECK: %1 = ptrtoint ptr %scevgep to i64
5858
; CHECK: %2 = call i32 (...) @printf(ptr @3, ptr addrspace(4) @0, i64 %1, ptr addrspace(4) @1, double %tmp3_p_scalar_, ptr addrspace(4) @2)
5959
; CHECK: %3 = call i32 @fflush(ptr null)
6060
; CHECK: %scevgep1 = getelementptr i8, ptr %C, i64 %polly.indvar
61-
; CHECK: %tmp5_p_scalar_ = load i8, ptr %scevgep1, align 1, !alias.scope !8, !noalias !9
61+
; CHECK: %tmp5_p_scalar_ = load i8, ptr %scevgep1, align 1, !alias.scope !10, !noalias !11
6262
; CHECK: %4 = ptrtoint ptr %scevgep1 to i64
6363
; CHECK: %5 = sext i8 %tmp5_p_scalar_ to i64
6464
; CHECK: %6 = call i32 (...) @printf(ptr @7, ptr addrspace(4) @4, i64 %4, ptr addrspace(4) @5, i64 %5, ptr addrspace(4) @6)
@@ -67,7 +67,7 @@
6767
; CHECK: %p_tmp7 = fadd double %tmp3_p_scalar_, %p_tmp6
6868
; CHECK: %8 = shl nuw nsw i64 %polly.indvar, 2
6969
; CHECK: %scevgep2 = getelementptr i8, ptr %D, i64 %8
70-
; CHECK: %tmp9_p_scalar_ = load i32, ptr %scevgep2, align 4, !alias.scope !10, !noalias !11
70+
; CHECK: %tmp9_p_scalar_ = load i32, ptr %scevgep2, align 4, !alias.scope !12, !noalias !13
7171
; CHECK: %9 = ptrtoint ptr %scevgep2 to i64
7272
; CHECK: %10 = sext i32 %tmp9_p_scalar_ to i64
7373
; CHECK: %11 = call i32 (...) @printf(ptr @11, ptr addrspace(4) @8, i64 %9, ptr addrspace(4) @9, i64 %10, ptr addrspace(4) @10)
@@ -76,15 +76,15 @@
7676
; CHECK: %p_tmp11 = fadd double %p_tmp7, %p_tmp10
7777
; CHECK: %13 = shl nuw nsw i64 %polly.indvar, 3
7878
; CHECK: %scevgep3 = getelementptr i8, ptr %E, i64 %13
79-
; CHECK: %tmp13_p_scalar_ = load i64, ptr %scevgep3, align 8, !alias.scope !12, !noalias !13
79+
; CHECK: %tmp13_p_scalar_ = load i64, ptr %scevgep3, align 8, !alias.scope !14, !noalias !15
8080
; CHECK: %14 = ptrtoint ptr %scevgep3 to i64
8181
; CHECK: %15 = call i32 (...) @printf(ptr @15, ptr addrspace(4) @12, i64 %14, ptr addrspace(4) @13, i64 %tmp13_p_scalar_, ptr addrspace(4) @14)
8282
; CHECK: %16 = call i32 @fflush(ptr null)
8383
; CHECK: %p_tmp14 = sitofp i64 %tmp13_p_scalar_ to double
8484
; CHECK: %p_tmp15 = fadd double %p_tmp11, %p_tmp14
8585
; CHECK: %17 = shl nuw nsw i64 %polly.indvar, 2
8686
; CHECK: %scevgep4 = getelementptr i8, ptr %A, i64 %17
87-
; CHECK: %tmp17_p_scalar_ = load float, ptr %scevgep4, align 4, !alias.scope !14, !noalias !15
87+
; CHECK: %tmp17_p_scalar_ = load float, ptr %scevgep4, align 4, !alias.scope !16, !noalias !17
8888
; CHECK: %18 = ptrtoint ptr %scevgep4 to i64
8989
; CHECK: %19 = fpext float %tmp17_p_scalar_ to double
9090
; CHECK: %20 = call i32 (...) @printf(ptr @19, ptr addrspace(4) @16, i64 %18, ptr addrspace(4) @17, double %19, ptr addrspace(4) @18)

polly/test/CodeGen/annotated_alias_scopes.ll

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,24 @@
44
;
55
; SCOPES-LABEL: polly.stmt.for.body:
66
; SCOPES: %[[BIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} ptr %B, i64 %{{.*}}
7-
; SCOPES: load i32, ptr %[[BIdx]], align 4, !alias.scope !0, !noalias !3
7+
; SCOPES: load i32, ptr %[[BIdx]], align 4, !alias.scope !2, !noalias !5
88
; SCOPES: %[[CIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} ptr %C, i64 %{{.*}}
9-
; SCOPES: load float, ptr %[[CIdx]], align 4, !alias.scope !6, !noalias !7
9+
; SCOPES: load float, ptr %[[CIdx]], align 4, !alias.scope !8, !noalias !9
1010
; SCOPES: %[[AIdx:[._a-zA-Z0-9]*]] = getelementptr{{.*}} ptr %A, i64 %{{.*}}
11-
; SCOPES: store i32 %{{[._a-zA-Z0-9]*}}, ptr %[[AIdx]], align 4, !alias.scope !8, !noalias !9
11+
; SCOPES: store i32 %{{[._a-zA-Z0-9]*}}, ptr %[[AIdx]], align 4, !alias.scope !10, !noalias !11
1212
;
13-
; SCOPES: !0 = !{!1}
14-
; SCOPES: !1 = distinct !{!1, !2, !"polly.alias.scope.MemRef_B"}
15-
; SCOPES: !2 = distinct !{!2, !"polly.alias.scope.domain"}
16-
; SCOPES: !3 = !{!4, !5}
17-
; SCOPES: !4 = distinct !{!4, !2, !"polly.alias.scope.MemRef_C"}
18-
; SCOPES: !5 = distinct !{!5, !2, !"polly.alias.scope.MemRef_A"}
19-
; SCOPES: !6 = !{!4}
20-
; SCOPES: !7 = !{!1, !5}
21-
; SCOPES: !8 = !{!5}
22-
; SCOPES: !9 = !{!1, !4}
13+
; SCOPES: !0 = distinct !{!0, !1}
14+
; SCOPES: !1 = !{!"llvm.loop.vectorize.enable", i32 0}
15+
; SCOPES: !2 = !{!3}
16+
; SCOPES: !3 = distinct !{!3, !4, !"polly.alias.scope.MemRef_B"}
17+
; SCOPES: !4 = distinct !{!4, !"polly.alias.scope.domain"}
18+
; SCOPES: !5 = !{!6, !7}
19+
; SCOPES: !6 = distinct !{!6, !4, !"polly.alias.scope.MemRef_C"}
20+
; SCOPES: !7 = distinct !{!7, !4, !"polly.alias.scope.MemRef_A"}
21+
; SCOPES: !8 = !{!6}
22+
; SCOPES: !9 = !{!3, !7}
23+
; SCOPES: !10 = !{!7}
24+
; SCOPES: !11 = !{!3, !6}
2325
;
2426
; void jd(int *A, int *B, float *C) {
2527
; for (int i = 0; i < 1024; i++)

polly/test/CodeGen/non-affine-phi-node-expansion-2.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
44

55

66
; CHECK: polly.stmt.bb3: ; preds = %polly.stmt.bb3.entry
7-
; CHECK: %tmp6_p_scalar_ = load double, ptr %arg1{{[0-9]*}}, align 8, !alias.scope !0, !noalias !3
7+
; CHECK: %tmp6_p_scalar_ = load double, ptr %arg1{{[0-9]*}}, align 8, !alias.scope !2, !noalias !5
88
; CHECK: %p_tmp7 = fadd double 1.000000e+00, %tmp6_p_scalar_
99
; CHECK: %p_tmp8 = fcmp olt double 1.400000e+01, %p_tmp7
1010
; CHECK: br i1 %p_tmp8, label %polly.stmt.bb9, label %polly.stmt.bb10

polly/test/CodeGen/non_affine_float_compare.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@
1313
; CHECK: polly.stmt.bb2:
1414
; CHECK: %[[offset:.*]] = shl nuw nsw i64 %polly.indvar, 2
1515
; CHECK: %scevgep[[R0:[0-9]*]] = getelementptr i8, ptr %A, i64 %[[offset]]
16-
; CHECK: %tmp3_p_scalar_ = load float, ptr %scevgep[[R0]], align 4, !alias.scope !0, !noalias !3
16+
; CHECK: %tmp3_p_scalar_ = load float, ptr %scevgep[[R0]], align 4, !alias.scope !2, !noalias !5
1717
; CHECK: %[[offset2:.*]] = shl nuw nsw i64 %polly.indvar, 2
1818
; CHECK: %scevgep[[R2:[0-9]*]] = getelementptr i8, ptr %scevgep{{[0-9]*}}, i64 %[[offset2]]
19-
; CHECK: %tmp6_p_scalar_ = load float, ptr %scevgep[[R2]], align 4, !alias.scope !0, !noalias !3
19+
; CHECK: %tmp6_p_scalar_ = load float, ptr %scevgep[[R2]], align 4, !alias.scope !2, !noalias !5
2020
; CHECK: %p_tmp7 = fcmp oeq float %tmp3_p_scalar_, %tmp6_p_scalar_
2121
; CHECK: br i1 %p_tmp7, label %polly.stmt.bb8, label %polly.stmt.bb12.[[R:[a-zA-Z_.0-9]*]]
2222

2323
; CHECK: polly.stmt.bb8:
2424
; CHECK: %[[offset3:.*]] = shl nuw nsw i64 %polly.indvar, 2
2525
; CHECK: %scevgep[[R3:[0-9]*]] = getelementptr i8, ptr %A, i64 %[[offset3]]
26-
; CHECK: %tmp10_p_scalar_ = load float, ptr %scevgep[[R3]], align 4, !alias.scope !0, !noalias !3
26+
; CHECK: %tmp10_p_scalar_ = load float, ptr %scevgep[[R3]], align 4, !alias.scope !2, !noalias !5
2727
; CHECK: %p_tmp11 = fadd float %tmp10_p_scalar_, 1.000000e+00
28-
; CHECK: store float %p_tmp11, ptr %scevgep[[R3]], align 4, !alias.scope !0, !noalias !3
28+
; CHECK: store float %p_tmp11, ptr %scevgep[[R3]], align 4, !alias.scope !2, !noalias !5
2929
; CHECK: br label %polly.stmt.bb12.[[R]]
3030

3131
; CHECK: polly.stmt.bb12.[[R]]:
@@ -34,9 +34,9 @@
3434
; CHECK: polly.stmt.bb12:
3535
; CHECK: %[[offset4:.*]] = shl nuw nsw i64 %polly.indvar, 2
3636
; CHECK: %scevgep[[R4:[0-9]*]] = getelementptr i8, ptr %A, i64 %[[offset4]]
37-
; CHECK: %tmp10b_p_scalar_ = load float, ptr %scevgep[[R4]], align 4, !alias.scope !0, !noalias !3
37+
; CHECK: %tmp10b_p_scalar_ = load float, ptr %scevgep[[R4]], align 4, !alias.scope !2, !noalias !5
3838
; CHECK: %p_tmp11b = fadd float %tmp10b_p_scalar_, 1.000000e+00
39-
; CHECK: store float %p_tmp11b, ptr %scevgep[[R4]], align 4, !alias.scope !0, !noalias !3
39+
; CHECK: store float %p_tmp11b, ptr %scevgep[[R4]], align 4, !alias.scope !2, !noalias !5
4040
; CHECK: %polly.indvar_next = add nsw i64 %polly.indvar, 1
4141
; CHECK: %polly.loop_cond = icmp sle i64 %polly.indvar_next, 1023
4242
; CHECK: br i1 %polly.loop_cond, label %polly.loop_header, label %polly.loop_exit

polly/test/CodeGen/partial_write_array.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ return:
3838

3939
; CHECK: polly.stmt.body.Stmt_body_Write0.partial:
4040
; CHECK-NEXT: %polly.access.A = getelementptr double, ptr %A, i64 0
41-
; CHECK-NEXT: store double 4.200000e+01, ptr %polly.access.A, align 8, !alias.scope !0, !noalias !3
41+
; CHECK-NEXT: store double 4.200000e+01, ptr %polly.access.A, align 8, !alias.scope !2, !noalias !5
4242
; CHECK-NEXT: br label %polly.stmt.body.cont
4343

4444
; CHECK: polly.stmt.body.cont:

polly/test/CodeGen/partial_write_impossible_restriction.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ if.then.i.i1141.loopexit: ; preds = %cond.end
4949

5050
; CHECK-LABEL: polly.stmt.cond.false:
5151
; CHECK: %polly.access..pn{{[0-9]*}} = getelementptr i32, ptr %.pn, i64 %polly.indvar
52-
; CHECK: store i32 %cond.in.sroa.speculate.load.cond.false_p_scalar_, ptr %polly.access..pn{{[0-9]*}}, align 4, !alias.scope !0, !noalias !3
52+
; CHECK: store i32 %cond.in.sroa.speculate.load.cond.false_p_scalar_, ptr %polly.access..pn{{[0-9]*}}, align 4, !alias.scope !2, !noalias !5
5353
; CHECK: br label %polly.merge
5454

5555
; CHECK-LABEL: polly.stmt.cond.false{{[0-9]*}}:
5656
; CHECK: %polly.access..pn{{[0-9]*}} = getelementptr i32, ptr %.pn, i64 0
57-
; CHECK: store i32 %cond.in.sroa.speculate.load.cond.false_p_scalar_{{[0-9]*}}, ptr %polly.access..pn{{[0-9]*}}, align 4, !alias.scope !0, !noalias !3
57+
; CHECK: store i32 %cond.in.sroa.speculate.load.cond.false_p_scalar_{{[0-9]*}}, ptr %polly.access..pn{{[0-9]*}}, align 4, !alias.scope !2, !noalias !5
5858
; CHECK: br label %polly.stmt.cond.end{{[0-9]*}}

polly/test/CodeGen/phi_loop_carried_float.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
; CHECK-LABEL: polly.stmt.bb4:
3131
; CHECK: %tmp.0.s2a.reload[[R3:[0-9]*]] = load float, ptr %tmp.0.s2a
32-
; CHECK: %tmp[[R5:[0-9]*]]_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !0, !noalias !3
32+
; CHECK: %tmp[[R5:[0-9]*]]_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !2, !noalias !5
3333
; CHECK: %p_tmp[[R4:[0-9]*]] = fadd float %tmp.0.s2a.reload[[R3]], %tmp[[R5]]_p_scalar_
3434
; CHECK: store float %p_tmp[[R4]], ptr %tmp.0.phiops
3535

polly/test/CodeGen/phi_loop_carried_float_escape.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
; CHECK-LABEL: polly.stmt.bb4:
3131
; CHECK: %tmp.0.s2a.reload[[R3:[0-9]*]] = load float, ptr %tmp.0.s2a
32-
; CHECK: %tmp[[R5:[0-9]*]]_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !0, !noalias !3
32+
; CHECK: %tmp[[R5:[0-9]*]]_p_scalar_ = load float, ptr %scevgep, align 4, !alias.scope !2, !noalias !5
3333
; CHECK: %p_tmp[[R4:[0-9]*]] = fadd float %tmp.0.s2a.reload[[R3]], %tmp[[R5]]_p_scalar_
3434
; CHECK: store float %p_tmp[[R4]], ptr %tmp.0.phiops
3535

polly/test/CodeGen/scev-backedgetaken.ll

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,11 @@ for.cond.cleanup.loopexit:
4141

4242
; CHECK-LABEL: @func(
4343
; CHECK: polly.stmt.omp.inner.for.body.us.us.us.preheader:
44-
; CHECK: load i32, ptr %scevgep, align 4, !alias.scope !0, !noalias !3
45-
46-
; CHECK: !0 = !{!1}
47-
; CHECK: !1 = distinct !{!1, !2, !"polly.alias.scope.MemRef_d"}
48-
; CHECK: !2 = distinct !{!2, !"polly.alias.scope.domain"}
49-
; CHECK: !3 = !{}
44+
; CHECK: load i32, ptr %scevgep, align 4, !alias.scope !2, !noalias !5
45+
46+
; CHECK: !0 = distinct !{!0, !1}
47+
; CHECK: !1 = !{!"llvm.loop.vectorize.enable", i32 0}
48+
; CHECK: !2 = !{!3}
49+
; CHECK: !3 = distinct !{!3, !4, !"polly.alias.scope.MemRef_d"}
50+
; CHECK: !4 = distinct !{!4, !"polly.alias.scope.domain"}
51+
; CHECK: !5 = !{}

polly/test/CodeGen/stmt_split_no_dependence.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
; RUN: opt %loadNPMPolly -passes=polly-codegen -S < %s | FileCheck %s
22
;
3-
; CHECK: store i32 %9, ptr %scevgep, align 4, !alias.scope !1, !noalias !4
4-
; CHECK: store i32 %11, ptr %scevgep4, align 4, !alias.scope !4, !noalias !1
3+
; CHECK: store i32 %9, ptr %scevgep, align 4, !alias.scope !3, !noalias !6
4+
; CHECK: store i32 %11, ptr %scevgep4, align 4, !alias.scope !6, !noalias !3
55
;
66
; void func(int *A, int *B){
77
; for (int i = 0; i < 1024; i+=1) {

0 commit comments

Comments
 (0)