annotate polly/test/CodeGen/partial_write_mapped_vector.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
236
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
1 ; RUN: opt %loadPolly -basic-aa -polly-stmt-granularity=bb -polly-import-jscop -polly-import-jscop-postfix=transformed -polly-vectorizer=polly -polly-opt-isl -polly-ast -polly-codegen -S < %s | FileCheck %s
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
2 ;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
3 ; Polly's vectorizer does not support partial accesses.
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
4 ;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
5 ; for (int j = 0; j < 4; j += 1) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
6 ;body:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
7 ; val = 21.0 + 21.0;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
8 ; if (j > 1)
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
9 ;user:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
10 ; A[0] = val;
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
11 ; }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
12
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
13 define void @partial_write_mapped_vector(double* noalias nonnull %A) {
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
14 entry:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
15 br label %for
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
16
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
17 for:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
18 %j = phi i32 [0, %entry], [%j.inc, %inc]
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
19 %j.cmp = icmp slt i32 %j, 4
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
20 br i1 %j.cmp, label %body, label %exit
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
21
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
22 body:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
23 %val = fadd double 21.0, 21.0
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
24 %if.cond = icmp sgt i32 %j, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
25 br i1 %if.cond, label %user, label %inc
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
26
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
27 user:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
28 %elt= getelementptr inbounds double, double* %A, i32 %j
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
29 store double %val, double* %elt
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
30 br label %inc
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
31
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
32 inc:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
33 %j.inc = add nuw nsw i32 %j, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
34 br label %for
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
35
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
36 exit:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
37 br label %return
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
38
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
39 return:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
40 ret void
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
41 }
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
42
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
43
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
44 ; CHECK-LABEL: polly.stmt.body:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
45 ; CHECK-NEXT: %p_val = fadd double 2.100000e+01, 2.100000e+01
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
46 ; CHECK-NEXT: %0 = trunc i64 %polly.indvar to i32
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
47 ; CHECK-NEXT: %p_if.cond = icmp sgt i32 %0, 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
48 ; CHECK-NEXT: %1 = icmp sge i64 %polly.indvar, 2
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
49 ; CHECK-NEXT: %polly.Stmt_body_Write0.cond = icmp ne i1 %1, false
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
50 ; CHECK-NEXT: br i1 %polly.Stmt_body_Write0.cond, label %polly.stmt.body.Stmt_body_Write0.partial, label %polly.stmt.body.cont
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
51
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
52 ; CHECK-LABEL: polly.stmt.body.Stmt_body_Write0.partial:
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
53 ; CHECK-NEXT: %polly.access.A = getelementptr double, double* %A, i64 1
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
54 ; CHECK-NEXT: store double %p_val, double* %polly.access.A
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
55 ; CHECK-NEXT: br label %polly.stmt.body.cont
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
56
c4bab56944e8 LLVM 16
kono
parents:
diff changeset
57 ; CHECK-LABEL: polly.stmt.body.cont: