Files
clang-p2996/polly/test/CodeGen/MemAccess/create_arrays.ll
Karthika Devi C 4b3a878e8a [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 <github@meinersbur.de>
2024-12-11 07:40:32 +05:30

94 lines
4.0 KiB
LLVM

; RUN: opt %loadPolly -polly-print-scops -polly-print-import-jscop -polly-import-jscop-postfix=transformed -disable-output < %s 2>&1 | FileCheck %s
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-codegen -S < %s 2>&1 | FileCheck %s --check-prefix=CODEGEN
;
; for (i = 0; i < _PB_NI; i++)
; for (j = 0; j < _PB_NJ; j++)
; for (k = 0; k < _PB_NK; ++k)
; B[i][j] = beta * A[i][k];
;
;
; CHECK: Arrays {
; CHECK: double MemRef_B[*][1024]; // Element size 8
; CHECK: double MemRef_beta; // Element size 8
; CHECK: double MemRef_A[*][1056]; // Element size 8
; CHECK: double D[270336]; // Element size 8
; CHECK: double E[270336][200000]; // Element size 8
; CHECK: i64 F[270336]; // Element size 8
;
; CHECK:New access function '{ Stmt_bb12[i0, i1, i2] -> E[i2, i0] }' detected in JSCOP file
;
; CODEGEN:define internal void @create_arrays(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, ptr %A, ptr %B, ptr %arg7) #0 {
; CODEGEN:bb:
; CODEGEN: %beta.s2a = alloca double
; CODEGEN: %D = alloca [270336 x double]
; CODEGEN: %E = alloca [270336 x [200000 x double]]
; CODEGEN: %F = alloca [270336 x i64]
; CODEGEN: br label %bb8
;
; CODEGEN: %beta.s2a.reload = load double, ptr %beta.s2a
; CODEGEN: %polly.access.mul.E = mul nsw i64 %polly.indvar31, 200000
; CODEGEN: %polly.access.add.E = add nsw i64 %polly.access.mul.E, %polly.indvar
; CODEGEN: {{%.*}} = load double, ptr %polly.access.E, align 8, !alias.scope !4, !noalias !7
; CODEGEN: store double {{%.*}}, ptr %scevgep34, align 8, !alias.scope !12, !noalias !13
;
; CODEGEN: !0 = distinct !{!0, !1}
; CODEGEN: !1 = !{!"llvm.loop.vectorize.enable", i32 0}
; CODEGEN: !2 = distinct !{!2, !1}
; CODEGEN: !3 = distinct !{!3, !1}
; CODEGEN: !4 = !{!5}
; CODEGEN: !5 = distinct !{!5, !6, !"polly.alias.scope.E"}
; CODEGEN: !6 = distinct !{!6, !"polly.alias.scope.domain"}
; CODEGEN: !7 = !{!8, !9, !10, !11}
; CODEGEN: !8 = distinct !{!8, !6, !"polly.alias.scope.MemRef_B"}
; CODEGEN: !9 = distinct !{!9, !6, !"polly.alias.scope.MemRef_A"}
; CODEGEN: !10 = distinct !{!10, !6, !"polly.alias.scope.D"}
; CODEGEN: !11 = distinct !{!11, !6, !"polly.alias.scope.F"}
; CODEGEN: !12 = !{!9}
; CODEGEN: !13 = !{!8, !10, !5, !11}
;
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-unknown"
; Function Attrs: nounwind uwtable
define internal void @create_arrays(i32 %arg, i32 %arg1, i32 %arg2, double %arg3, double %beta, ptr %A, ptr %B, ptr %arg7) #0 {
bb:
br label %bb8
bb8: ; preds = %bb
br label %bb9
bb9: ; preds = %bb23, %bb8
%tmp = phi i64 [ 0, %bb8 ], [ %tmp24, %bb23 ]
br label %bb10
bb10: ; preds = %bb20, %bb9
%tmp11 = phi i64 [ 0, %bb9 ], [ %tmp21, %bb20 ]
br label %bb12
bb12: ; preds = %bb12, %bb10
%tmp13 = phi i64 [ 0, %bb10 ], [ %tmp18, %bb12 ]
%tmp14 = getelementptr inbounds [1024 x double], ptr %B, i64 %tmp, i64 %tmp13
%tmp15 = load double, ptr %tmp14, align 8
%tmp16 = fmul double %tmp15, %beta
%tmp17 = getelementptr inbounds [1056 x double], ptr %A, i64 %tmp, i64 %tmp11
store double %tmp16, ptr %tmp17, align 8
%tmp18 = add nuw nsw i64 %tmp13, 1
%tmp19 = icmp ne i64 %tmp18, 1024
br i1 %tmp19, label %bb12, label %bb20
bb20: ; preds = %bb12
%tmp21 = add nuw nsw i64 %tmp11, 1
%tmp22 = icmp ne i64 %tmp21, 1056
br i1 %tmp22, label %bb10, label %bb23
bb23: ; preds = %bb20
%tmp24 = add nuw nsw i64 %tmp, 1
%tmp25 = icmp ne i64 %tmp24, 1056
br i1 %tmp25, label %bb9, label %bb26
bb26: ; preds = %bb23
ret void
}
attributes #0 = { nounwind uwtable "target-cpu"="x86-64" "target-features"="+aes,+avx,+cmov,+cx16,+fxsr,+mmx,+pclmul,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave,+xsaveopt" }