-
-
Notifications
You must be signed in to change notification settings - Fork 5.4k
/
propagate-addrspace.ll
64 lines (56 loc) · 2.06 KB
/
propagate-addrspace.ll
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
; This file is a part of Julia. License is MIT: https://julialang.org/license
; RUN: opt -enable-new-pm=1 --opaque-pointers=0 --load-pass-plugin=libjulia-codegen%shlibext -passes='PropagateJuliaAddrspaces,dce' -S %s | FileCheck %s
; RUN: opt -enable-new-pm=1 --opaque-pointers=1 --load-pass-plugin=libjulia-codegen%shlibext -passes='PropagateJuliaAddrspaces,dce' -S %s | FileCheck %s
define i64 @simple() {
; CHECK-LABEL: @simple
; CHECK-NOT: addrspace(11)
%stack = alloca i64
%casted = addrspacecast i64 *%stack to i64 addrspace(11)*
%loaded = load i64, i64 addrspace(11)* %casted
ret i64 %loaded
}
define i64 @twogeps() {
; CHECK-LABEL: @twogeps
; CHECK-NOT: addrspace(11)
%stack = alloca i64
%casted = addrspacecast i64 *%stack to i64 addrspace(11)*
%gep1 = getelementptr i64, i64 addrspace(11)* %casted, i64 1
%gep2 = getelementptr i64, i64 addrspace(11)* %gep1, i64 1
%loaded = load i64, i64 addrspace(11)* %gep2
ret i64 %loaded
}
define i64 @phi(i1 %cond) {
; CHECK-LABEL: @phi
; CHECK-NOT: addrspace(11)
top:
%stack1 = alloca i64
%stack2 = alloca i64
%stack1_casted = addrspacecast i64 *%stack1 to i64 addrspace(11)*
%stack2_casted = addrspacecast i64 *%stack2 to i64 addrspace(11)*
br i1 %cond, label %A, label %B
A:
br label %B
B:
%phi = phi i64 addrspace(11)* [ %stack1_casted, %top ], [ %stack2_casted, %A ]
%load = load i64, i64 addrspace(11)* %phi
ret i64 %load
}
define i64 @select(i1 %cond) {
; CHECK-LABEL: @select
; CHECK-NOT: addrspace(11)
top:
%stack1 = alloca i64
%stack2 = alloca i64
%stack1_casted = addrspacecast i64 *%stack1 to i64 addrspace(11)*
%stack2_casted = addrspacecast i64 *%stack2 to i64 addrspace(11)*
%select = select i1 %cond, i64 addrspace(11)* %stack1_casted, i64 addrspace(11)* %stack2_casted
%load = load i64, i64 addrspace(11)* %select
ret i64 %load
}
define i64 @nullptr() {
; CHECK-LABEL: @nullptr
; CHECK-NOT: addrspace(11)
%casted = addrspacecast i64 *null to i64 addrspace(11)*
%load = load i64, i64 addrspace(11)* %casted
ret i64 %load
}