1
1
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2
2
; RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=hawaii -stop-after=legalizer < %s | FileCheck -check-prefix=GCN %s
3
- ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=hawaii -stop-after=legalizer < %s | FileCheck -check-prefix=GCN %s
3
+ ; RUN: llc -global-isel -mtriple=amdgcn-amd-amdpal -mcpu=hawaii -stop-after=legalizer < %s | FileCheck -check-prefix=GCN-PAL %s
4
4
5
5
@external_constant = external addrspace (4 ) constant i32 , align 4
6
6
@external_constant32 = external addrspace (6 ) constant i32 , align 4
14
14
15
15
16
16
define ptr addrspace (4 ) @external_constant_got () {
17
+
17
18
; GCN-LABEL: name: external_constant_got
18
19
; GCN: bb.1 (%ir-block.0):
19
20
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p4) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-gotprel32-lo) @external_constant + 4, target-flags(amdgpu-gotprel32-hi) @external_constant + 12, implicit-def $scc
@@ -22,10 +23,19 @@ define ptr addrspace(4) @external_constant_got() {
22
23
; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)
23
24
; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)
24
25
; GCN-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
26
+ ;
27
+ ; GCN-PAL-LABEL: name: external_constant_got
28
+ ; GCN-PAL: bb.1 (%ir-block.0):
29
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @external_constant
30
+ ; GCN-PAL-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-hi) @external_constant
31
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](s32)
32
+ ; GCN-PAL-NEXT: $vgpr1 = COPY [[S_MOV_B32_1]](s32)
33
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
25
34
ret ptr addrspace (4 ) @external_constant
26
35
}
27
36
28
37
define ptr addrspace (1 ) @external_global_got () {
38
+
29
39
; GCN-LABEL: name: external_global_got
30
40
; GCN: bb.1 (%ir-block.0):
31
41
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p4) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-gotprel32-lo) @external_global + 4, target-flags(amdgpu-gotprel32-hi) @external_global + 12, implicit-def $scc
@@ -34,10 +44,19 @@ define ptr addrspace(1) @external_global_got() {
34
44
; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)
35
45
; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)
36
46
; GCN-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
47
+ ;
48
+ ; GCN-PAL-LABEL: name: external_global_got
49
+ ; GCN-PAL: bb.1 (%ir-block.0):
50
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @external_global
51
+ ; GCN-PAL-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-hi) @external_global
52
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](s32)
53
+ ; GCN-PAL-NEXT: $vgpr1 = COPY [[S_MOV_B32_1]](s32)
54
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
37
55
ret ptr addrspace (1 ) @external_global
38
56
}
39
57
40
58
define ptr addrspace (999 ) @external_other_got () {
59
+
41
60
; GCN-LABEL: name: external_other_got
42
61
; GCN: bb.1 (%ir-block.0):
43
62
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p4) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-gotprel32-lo) @external_other + 4, target-flags(amdgpu-gotprel32-hi) @external_other + 12, implicit-def $scc
@@ -46,59 +65,108 @@ define ptr addrspace(999) @external_other_got() {
46
65
; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)
47
66
; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)
48
67
; GCN-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
68
+ ;
69
+ ; GCN-PAL-LABEL: name: external_other_got
70
+ ; GCN-PAL: bb.1 (%ir-block.0):
71
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @external_other
72
+ ; GCN-PAL-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-hi) @external_other
73
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](s32)
74
+ ; GCN-PAL-NEXT: $vgpr1 = COPY [[S_MOV_B32_1]](s32)
75
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
49
76
ret ptr addrspace (999 ) @external_other
50
77
}
51
78
52
79
define ptr addrspace (4 ) @internal_constant_pcrel () {
80
+
53
81
; GCN-LABEL: name: internal_constant_pcrel
54
82
; GCN: bb.1 (%ir-block.0):
55
83
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p4) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @internal_constant + 4, target-flags(amdgpu-rel32-hi) @internal_constant + 12, implicit-def $scc
56
84
; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SI_PC_ADD_REL_OFFSET]](p4)
57
85
; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)
58
86
; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)
59
87
; GCN-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
88
+ ;
89
+ ; GCN-PAL-LABEL: name: internal_constant_pcrel
90
+ ; GCN-PAL: bb.1 (%ir-block.0):
91
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @internal_constant
92
+ ; GCN-PAL-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-hi) @internal_constant
93
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](s32)
94
+ ; GCN-PAL-NEXT: $vgpr1 = COPY [[S_MOV_B32_1]](s32)
95
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
60
96
ret ptr addrspace (4 ) @internal_constant
61
97
}
62
98
63
99
define ptr addrspace (1 ) @internal_global_pcrel () {
100
+
64
101
; GCN-LABEL: name: internal_global_pcrel
65
102
; GCN: bb.1 (%ir-block.0):
66
103
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p1) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @internal_global + 4, target-flags(amdgpu-rel32-hi) @internal_global + 12, implicit-def $scc
67
104
; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SI_PC_ADD_REL_OFFSET]](p1)
68
105
; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)
69
106
; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)
70
107
; GCN-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
108
+ ;
109
+ ; GCN-PAL-LABEL: name: internal_global_pcrel
110
+ ; GCN-PAL: bb.1 (%ir-block.0):
111
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @internal_global
112
+ ; GCN-PAL-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-hi) @internal_global
113
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](s32)
114
+ ; GCN-PAL-NEXT: $vgpr1 = COPY [[S_MOV_B32_1]](s32)
115
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
71
116
ret ptr addrspace (1 ) @internal_global
72
117
}
73
118
74
119
define ptr addrspace (999 ) @internal_other_pcrel () {
120
+
75
121
; GCN-LABEL: name: internal_other_pcrel
76
122
; GCN: bb.1 (%ir-block.0):
77
123
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p999) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @internal_other + 4, target-flags(amdgpu-rel32-hi) @internal_other + 12, implicit-def $scc
78
124
; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SI_PC_ADD_REL_OFFSET]](p999)
79
125
; GCN-NEXT: $vgpr0 = COPY [[UV]](s32)
80
126
; GCN-NEXT: $vgpr1 = COPY [[UV1]](s32)
81
127
; GCN-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
128
+ ;
129
+ ; GCN-PAL-LABEL: name: internal_other_pcrel
130
+ ; GCN-PAL: bb.1 (%ir-block.0):
131
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @internal_other
132
+ ; GCN-PAL-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32(s32) = S_MOV_B32 target-flags(amdgpu-abs32-hi) @internal_other
133
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](s32)
134
+ ; GCN-PAL-NEXT: $vgpr1 = COPY [[S_MOV_B32_1]](s32)
135
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1
82
136
ret ptr addrspace (999 ) @internal_other
83
137
}
84
138
85
139
define ptr addrspace (6 ) @external_constant32_got () {
140
+
86
141
; GCN-LABEL: name: external_constant32_got
87
142
; GCN: bb.1 (%ir-block.0):
88
143
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p4) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-gotprel32-lo) @external_constant32 + 4, target-flags(amdgpu-gotprel32-hi) @external_constant32 + 12, implicit-def $scc
89
144
; GCN-NEXT: [[LOAD:%[0-9]+]]:_(p4) = G_LOAD [[SI_PC_ADD_REL_OFFSET]](p4) :: (dereferenceable invariant load (p4) from got, addrspace 4)
90
145
; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[LOAD]](p4), 0
91
146
; GCN-NEXT: $vgpr0 = COPY [[EXTRACT]](p6)
92
147
; GCN-NEXT: SI_RETURN implicit $vgpr0
148
+ ;
149
+ ; GCN-PAL-LABEL: name: external_constant32_got
150
+ ; GCN-PAL: bb.1 (%ir-block.0):
151
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(p6) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @external_constant32
152
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](p6)
153
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0
93
154
ret ptr addrspace (6 ) @external_constant32
94
155
}
95
156
96
157
define ptr addrspace (6 ) @internal_constant32_pcrel () {
158
+
97
159
; GCN-LABEL: name: internal_constant32_pcrel
98
160
; GCN: bb.1 (%ir-block.0):
99
161
; GCN-NEXT: [[SI_PC_ADD_REL_OFFSET:%[0-9]+]]:sreg_64(p4) = SI_PC_ADD_REL_OFFSET target-flags(amdgpu-rel32-lo) @internal_constant32 + 4, target-flags(amdgpu-rel32-hi) @internal_constant32 + 12, implicit-def $scc
100
162
; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[SI_PC_ADD_REL_OFFSET]](p4), 0
101
163
; GCN-NEXT: $vgpr0 = COPY [[EXTRACT]](p6)
102
164
; GCN-NEXT: SI_RETURN implicit $vgpr0
165
+ ;
166
+ ; GCN-PAL-LABEL: name: internal_constant32_pcrel
167
+ ; GCN-PAL: bb.1 (%ir-block.0):
168
+ ; GCN-PAL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32(p6) = S_MOV_B32 target-flags(amdgpu-abs32-lo) @internal_constant32
169
+ ; GCN-PAL-NEXT: $vgpr0 = COPY [[S_MOV_B32_]](p6)
170
+ ; GCN-PAL-NEXT: SI_RETURN implicit $vgpr0
103
171
ret ptr addrspace (6 ) @internal_constant32
104
172
}
0 commit comments