1;RUN: llc < %s -march=amdgcn -mtriple=amdgcn-- -verify-machineinstrs | FileCheck -check-prefixes=CHECK,GCN %s
2;RUN: llc < %s -march=r600 -mtriple=r600-- -verify-machineinstrs | FileCheck -check-prefixes=CHECK,R600 %s
3
4%struct.S = type { i32 addrspace(5)*, i32 addrspace(1)*, i32 addrspace(4)*, i32 addrspace(3)*, i32*, i32 addrspace(2)*}
5
6; CHECK-LABEL: nullptr_priv:
7; CHECK-NEXT: .long -1
8@nullptr_priv = global i32 addrspace(5)* addrspacecast (i32* null to i32 addrspace(5)*)
9
10; CHECK-LABEL: nullptr_glob:
11; GCN-NEXT: .quad 0
12; R600-NEXT: .long 0
13@nullptr_glob = global i32 addrspace(1)* addrspacecast (i32* null to i32 addrspace(1)*)
14
15; CHECK-LABEL: nullptr_const:
16; GCN-NEXT: .quad 0
17; R600-NEXT: .long 0
18@nullptr_const = global i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*)
19
20; CHECK-LABEL: nullptr_local:
21; CHECK-NEXT: .long -1
22@nullptr_local = global i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*)
23
24; CHECK-LABEL: nullptr_region:
25; CHECK-NEXT: .long -1
26@nullptr_region = global i32 addrspace(2)* addrspacecast (i32* null to i32 addrspace(2)*)
27
28; CHECK-LABEL: nullptr6:
29; R600-NEXT: .long 0
30@nullptr6 = global i32 addrspace(6)* addrspacecast (i32* null to i32 addrspace(6)*)
31
32; CHECK-LABEL: nullptr7:
33; R600-NEXT: .long 0
34@nullptr7 = global i32 addrspace(7)* addrspacecast (i32* null to i32 addrspace(7)*)
35
36; CHECK-LABEL: nullptr8:
37; R600-NEXT: .long 0
38@nullptr8 = global i32 addrspace(8)* addrspacecast (i32* null to i32 addrspace(8)*)
39
40; CHECK-LABEL: nullptr9:
41; R600-NEXT: .long 0
42@nullptr9 = global i32 addrspace(9)* addrspacecast (i32* null to i32 addrspace(9)*)
43
44; CHECK-LABEL: nullptr10:
45; R600-NEXT: .long 0
46@nullptr10 = global i32 addrspace(10)* addrspacecast (i32* null to i32 addrspace(10)*)
47
48; CHECK-LABEL: nullptr11:
49; R600-NEXT: .long 0
50@nullptr11 = global i32 addrspace(11)* addrspacecast (i32* null to i32 addrspace(11)*)
51
52; CHECK-LABEL: nullptr12:
53; R600-NEXT: .long 0
54@nullptr12 = global i32 addrspace(12)* addrspacecast (i32* null to i32 addrspace(12)*)
55
56; CHECK-LABEL: nullptr13:
57; R600-NEXT: .long 0
58@nullptr13 = global i32 addrspace(13)* addrspacecast (i32* null to i32 addrspace(13)*)
59
60; CHECK-LABEL: nullptr14:
61; R600-NEXT: .long 0
62@nullptr14 = global i32 addrspace(14)* addrspacecast (i32* null to i32 addrspace(14)*)
63
64; CHECK-LABEL: nullptr15:
65; R600-NEXT: .long 0
66@nullptr15 = global i32 addrspace(15)* addrspacecast (i32* null to i32 addrspace(15)*)
67
68; CHECK-LABEL: nullptr16:
69; R600-NEXT: .long 0
70@nullptr16 = global i32 addrspace(16)* addrspacecast (i32* null to i32 addrspace(16)*)
71
72; CHECK-LABEL: nullptr17:
73; R600-NEXT: .long 0
74@nullptr17 = global i32 addrspace(17)* addrspacecast (i32* null to i32 addrspace(17)*)
75
76; CHECK-LABEL: nullptr18:
77; R600-NEXT: .long 0
78@nullptr18 = global i32 addrspace(18)* addrspacecast (i32* null to i32 addrspace(18)*)
79
80; CHECK-LABEL: nullptr19:
81; R600-NEXT: .long 0
82@nullptr19 = global i32 addrspace(19)* addrspacecast (i32* null to i32 addrspace(19)*)
83
84; CHECK-LABEL: nullptr20:
85; R600-NEXT: .long 0
86@nullptr20 = global i32 addrspace(20)* addrspacecast (i32* null to i32 addrspace(20)*)
87
88; CHECK-LABEL: nullptr21:
89; R600-NEXT: .long 0
90@nullptr21 = global i32 addrspace(21)* addrspacecast (i32* null to i32 addrspace(21)*)
91
92; CHECK-LABEL: nullptr22:
93; R600-NEXT: .long 0
94@nullptr22 = global i32 addrspace(22)* addrspacecast (i32* null to i32 addrspace(22)*)
95
96; CHECK-LABEL: nullptr23:
97; R600-NEXT: .long 0
98@nullptr23 = global i32 addrspace(23)* addrspacecast (i32* null to i32 addrspace(23)*)
99
100; CHECK-LABEL: structWithPointers:
101; CHECK-NEXT: .long -1
102; GCN-NEXT:   .zero 4
103; GCN-NEXT:   .quad 0
104; R600-NEXT:  .long 0
105; GCN-NEXT:   .quad 0
106; R600-NEXT:  .long 0
107; CHECK-NEXT: .long -1
108; GCN-NEXT:   .zero 4
109; GCN-NEXT:   .quad 0
110; R600-NEXT:  .long 0
111; CHECK-NEXT: .long -1
112; GCN-NEXT:   .zero 4
113@structWithPointers = addrspace(1) global %struct.S {
114  i32 addrspace(5)* addrspacecast (i32* null to i32 addrspace(5)*),
115  i32 addrspace(1)* addrspacecast (i32* null to i32 addrspace(1)*),
116  i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*),
117  i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*),
118  i32* null,
119  i32 addrspace(2)* addrspacecast (i32* null to i32 addrspace(2)*)}, align 4
120