llvm-project

Форк
0
/
coalesce_3partials.ll 
48 строк · 1.2 Кб
1
; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=polly-import-jscop,print<polly-simplify>' -polly-import-jscop-postfix=transformed -disable-output < %s | FileCheck -match-full-lines %s
2
;
3
; Combine 3 partial accesses into one.
4
;
5
; for (int j = 0; j < n; j += 1) {
6
;   A[0] = 42.0;
7
;   A[0] = 42.0;
8
;   A[0] = 42.0;
9
; }
10
;
11
define void @coalesce_3partials(i32 %n, ptr noalias nonnull %A) {
12
entry:
13
  br label %for
14

15
for:
16
  %j = phi i32 [0, %entry], [%j.inc, %inc]
17
  %j.cmp = icmp slt i32 %j, %n
18
  br i1 %j.cmp, label %body, label %exit
19

20
    body:
21
      store double 42.0, ptr %A
22
      store double 42.0, ptr %A
23
      store double 42.0, ptr %A
24
      br label %inc
25

26
inc:
27
  %j.inc = add nuw nsw i32 %j, 1
28
  br label %for
29

30
exit:
31
  br label %return
32

33
return:
34
  ret void
35
}
36

37

38
; CHECK: Statistics {
39
; CHECK:     Overwrites removed: 0
40
; CHECK:     Partial writes coalesced: 2
41
; CHECK: }
42

43
; CHECK:      After accesses {
44
; CHECK-NEXT:     Stmt_body
45
; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE] [Scalar: 0]
46
; CHECK-NEXT:                 [n] -> { Stmt_body[i0] -> MemRef_A[0] };
47
; CHECK-NEXT:            new: [n] -> { Stmt_body[i0] -> MemRef_A[0] };
48
; CHECK-NEXT: }
49

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.