llvm-project/polly/test/CodeGen/partial_write_array.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

45 lines
1.2 KiB
LLVM

; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,polly-codegen' -polly-import-jscop-postfix=transformed -S < %s | FileCheck %s
;
; Partial write of an array access.
;
; for (int j = 0; j < n; j += 1)
; A[0] = 42.0
;
define void @partial_write_array(i32 %n, ptr noalias nonnull %A) {
entry:
br label %for
for:
%j = phi i32 [0, %entry], [%j.inc, %inc]
%j.cmp = icmp slt i32 %j, %n
br i1 %j.cmp, label %body, label %exit
body:
store double 42.0, ptr %A
br label %inc
inc:
%j.inc = add nuw nsw i32 %j, 1
br label %for
exit:
br label %return
return:
ret void
}
; CHECK: polly.stmt.body:
; CHECK-NEXT: %1 = icmp sge i64 %polly.indvar, 5
; CHECK-NEXT: %polly.Stmt_body_Write0.cond = icmp ne i1 %1, false
; CHECK-NEXT: br i1 %polly.Stmt_body_Write0.cond, label %polly.stmt.body.Stmt_body_Write0.partial, label %polly.stmt.body.cont
; CHECK: polly.stmt.body.Stmt_body_Write0.partial:
; CHECK-NEXT: %polly.access.A = getelementptr double, ptr %A, i64 0
; CHECK-NEXT: store double 4.200000e+01, ptr %polly.access.A, align 8, !alias.scope !2, !noalias !5
; CHECK-NEXT: br label %polly.stmt.body.cont
; CHECK: polly.stmt.body.cont: