File: update_access_functions.ll

package info (click to toggle)
llvm-toolchain-3.9 1%3A3.9.1-9
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 441,144 kB
  • ctags: 428,836
  • sloc: cpp: 2,546,577; ansic: 538,318; asm: 119,677; objc: 103,316; python: 102,148; sh: 27,847; pascal: 5,626; ml: 5,510; perl: 5,293; lisp: 4,801; makefile: 2,177; xml: 686; cs: 362; php: 212; csh: 117
file content (46 lines) | stat: -rw-r--r-- 1,744 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
; RUN: opt %loadPolly -polly-import-jscop -polly-import-jscop-dir=%S \
; RUN:                -polly-import-jscop-postfix=transformed -polly-codegen \
; RUN:                 < %s -S | FileCheck %s

; CHECK: polly.stmt.loop2:
; CHECK-NEXT:   %polly.access.A = getelementptr double, double* %A, i64 42
; CHECK-NEXT:   %val_p_scalar_ = load double, double* %polly.access.A

; CHECK: polly.stmt.loop3:
; CHECK-NEXT:   %val.s2a.reload = load double, double* %val.s2a
; CHECK-NEXT:   %scevgep[[R21:[0-9]*]] = getelementptr double, double* %scevgep{{[0-9]*}}, i64 %polly.indvar16
; CHECK-NEXT:   store double %val.s2a.reload, double* %scevgep[[R21]]

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

define void @update_access_functions(i64 %arg, double* %A) {
bb3:
  br label %loop1

loop1:
  %indvar = phi i64 [ %indvar.next, %loop1 ], [ 1, %bb3 ]
  %ptr1 = getelementptr inbounds double, double* %A, i64 %indvar
  store double 42.0, double* %ptr1, align 8
  %indvar.next = add nuw nsw i64 %indvar, 1
  %cmp = icmp ne i64 %indvar.next, %arg
  br i1 %cmp, label %loop1, label %loop2

loop2:
  %indvar.2 = phi i64 [ %indvar.2.next, %loop2 ], [ 1, %loop1 ]
  %ptr2 = getelementptr inbounds double, double* %A, i64 %indvar.2
  %val = load double, double* %ptr2, align 8
  %indvar.2.next = add nuw nsw i64 %indvar.2, 1
  %cmp.2 = icmp ne i64 %indvar.2.next, %arg
  br i1 %cmp.2, label %loop2, label %loop3

loop3:
  %indvar.3 = phi i64 [ %indvar.3.next, %loop3 ], [ 1, %loop2 ]
  %ptr3 = getelementptr inbounds double, double* %A, i64 %indvar.3
  store double %val, double* %ptr3, align 8
  %indvar.3.next = add nuw nsw i64 %indvar.3, 1
  %cmp.3 = icmp ne i64 %indvar.3.next, %arg
  br i1 %cmp.3, label %loop3, label %exit

exit:
  ret void
}