blob: b7811064fb2352db6bff0a146b3ac719a58e32ab [file] [log] [blame]
Yaxun Liudcb60672017-11-27 20:48:21 +00001;RUN: llc < %s -march=amdgcn -mtriple=amdgcn---amdgiz -verify-machineinstrs | FileCheck -check-prefixes=CHECK,GCN %s
2;RUN: llc < %s -march=r600 -mtriple=r600---amdgiz -verify-machineinstrs | FileCheck -check-prefixes=CHECK,R600 %s
Yaxun Liu8f844f32017-02-07 00:43:21 +00003
Yaxun Liudcb60672017-11-27 20:48:21 +00004%struct.S = type { i32 addrspace(5)*, i32 addrspace(1)*, i32 addrspace(2)*, i32 addrspace(3)*, i32*, i32 addrspace(4)*}
Yaxun Liu8f844f32017-02-07 00:43:21 +00005
6; CHECK-LABEL: nullptr_priv:
Matt Arsenault971c85e2017-03-13 19:47:31 +00007; CHECK-NEXT: .long 0
Yaxun Liudcb60672017-11-27 20:48:21 +00008@nullptr_priv = global i32 addrspace(5)* addrspacecast (i32* null to i32 addrspace(5)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +00009
10; CHECK-LABEL: nullptr_glob:
Yaxun Liudcb60672017-11-27 20:48:21 +000011; GCN-NEXT: .quad 0
12; R600-NEXT: .long 0
13@nullptr_glob = global i32 addrspace(1)* addrspacecast (i32* null to i32 addrspace(1)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000014
15; CHECK-LABEL: nullptr_const:
Yaxun Liudcb60672017-11-27 20:48:21 +000016; GCN-NEXT: .quad 0
17; R600-NEXT: .long 0
18@nullptr_const = global i32 addrspace(2)* addrspacecast (i32* null to i32 addrspace(2)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000019
20; CHECK-LABEL: nullptr_local:
21; CHECK-NEXT: .long -1
Yaxun Liudcb60672017-11-27 20:48:21 +000022@nullptr_local = global i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000023
24; CHECK-LABEL: nullptr_region:
25; CHECK-NEXT: .long -1
Yaxun Liudcb60672017-11-27 20:48:21 +000026@nullptr_region = global i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000027
28; CHECK-LABEL: nullptr6:
Yaxun Liudcb60672017-11-27 20:48:21 +000029; R600-NEXT: .long 0
30@nullptr6 = global i32 addrspace(6)* addrspacecast (i32* null to i32 addrspace(6)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000031
32; CHECK-LABEL: nullptr7:
Yaxun Liudcb60672017-11-27 20:48:21 +000033; R600-NEXT: .long 0
34@nullptr7 = global i32 addrspace(7)* addrspacecast (i32* null to i32 addrspace(7)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000035
36; CHECK-LABEL: nullptr8:
Yaxun Liudcb60672017-11-27 20:48:21 +000037; R600-NEXT: .long 0
38@nullptr8 = global i32 addrspace(8)* addrspacecast (i32* null to i32 addrspace(8)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000039
40; CHECK-LABEL: nullptr9:
Yaxun Liudcb60672017-11-27 20:48:21 +000041; R600-NEXT: .long 0
42@nullptr9 = global i32 addrspace(9)* addrspacecast (i32* null to i32 addrspace(9)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000043
44; CHECK-LABEL: nullptr10:
Yaxun Liudcb60672017-11-27 20:48:21 +000045; R600-NEXT: .long 0
46@nullptr10 = global i32 addrspace(10)* addrspacecast (i32* null to i32 addrspace(10)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000047
48; CHECK-LABEL: nullptr11:
Yaxun Liudcb60672017-11-27 20:48:21 +000049; R600-NEXT: .long 0
50@nullptr11 = global i32 addrspace(11)* addrspacecast (i32* null to i32 addrspace(11)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000051
52; CHECK-LABEL: nullptr12:
Yaxun Liudcb60672017-11-27 20:48:21 +000053; R600-NEXT: .long 0
54@nullptr12 = global i32 addrspace(12)* addrspacecast (i32* null to i32 addrspace(12)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000055
56; CHECK-LABEL: nullptr13:
Yaxun Liudcb60672017-11-27 20:48:21 +000057; R600-NEXT: .long 0
58@nullptr13 = global i32 addrspace(13)* addrspacecast (i32* null to i32 addrspace(13)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000059
60; CHECK-LABEL: nullptr14:
Yaxun Liudcb60672017-11-27 20:48:21 +000061; R600-NEXT: .long 0
62@nullptr14 = global i32 addrspace(14)* addrspacecast (i32* null to i32 addrspace(14)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000063
64; CHECK-LABEL: nullptr15:
Yaxun Liudcb60672017-11-27 20:48:21 +000065; R600-NEXT: .long 0
66@nullptr15 = global i32 addrspace(15)* addrspacecast (i32* null to i32 addrspace(15)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000067
68; CHECK-LABEL: nullptr16:
Yaxun Liudcb60672017-11-27 20:48:21 +000069; R600-NEXT: .long 0
70@nullptr16 = global i32 addrspace(16)* addrspacecast (i32* null to i32 addrspace(16)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000071
72; CHECK-LABEL: nullptr17:
Yaxun Liudcb60672017-11-27 20:48:21 +000073; R600-NEXT: .long 0
74@nullptr17 = global i32 addrspace(17)* addrspacecast (i32* null to i32 addrspace(17)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000075
76; CHECK-LABEL: nullptr18:
Yaxun Liudcb60672017-11-27 20:48:21 +000077; R600-NEXT: .long 0
78@nullptr18 = global i32 addrspace(18)* addrspacecast (i32* null to i32 addrspace(18)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000079
80; CHECK-LABEL: nullptr19:
Yaxun Liudcb60672017-11-27 20:48:21 +000081; R600-NEXT: .long 0
82@nullptr19 = global i32 addrspace(19)* addrspacecast (i32* null to i32 addrspace(19)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000083
84; CHECK-LABEL: nullptr20:
Yaxun Liudcb60672017-11-27 20:48:21 +000085; R600-NEXT: .long 0
86@nullptr20 = global i32 addrspace(20)* addrspacecast (i32* null to i32 addrspace(20)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000087
88; CHECK-LABEL: nullptr21:
Yaxun Liudcb60672017-11-27 20:48:21 +000089; R600-NEXT: .long 0
90@nullptr21 = global i32 addrspace(21)* addrspacecast (i32* null to i32 addrspace(21)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000091
92; CHECK-LABEL: nullptr22:
Yaxun Liudcb60672017-11-27 20:48:21 +000093; R600-NEXT: .long 0
94@nullptr22 = global i32 addrspace(22)* addrspacecast (i32* null to i32 addrspace(22)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000095
96; CHECK-LABEL: nullptr23:
Yaxun Liudcb60672017-11-27 20:48:21 +000097; R600-NEXT: .long 0
98@nullptr23 = global i32 addrspace(23)* addrspacecast (i32* null to i32 addrspace(23)*)
Yaxun Liu8f844f32017-02-07 00:43:21 +000099
100; CHECK-LABEL: structWithPointers:
Matt Arsenault971c85e2017-03-13 19:47:31 +0000101; CHECK-NEXT: .long 0
Yaxun Liudcb60672017-11-27 20:48:21 +0000102; GCN-NEXT: .zero 4
103; GCN-NEXT: .quad 0
104; R600-NEXT: .long 0
105; GCN-NEXT: .quad 0
106; R600-NEXT: .long 0
Yaxun Liu8f844f32017-02-07 00:43:21 +0000107; CHECK-NEXT: .long -1
Yaxun Liudcb60672017-11-27 20:48:21 +0000108; GCN-NEXT: .zero 4
109; GCN-NEXT: .quad 0
110; R600-NEXT: .long 0
Yaxun Liu8f844f32017-02-07 00:43:21 +0000111; CHECK-NEXT: .long -1
Yaxun Liudcb60672017-11-27 20:48:21 +0000112; GCN-NEXT: .zero 4
Yaxun Liu8f844f32017-02-07 00:43:21 +0000113@structWithPointers = addrspace(1) global %struct.S {
Yaxun Liudcb60672017-11-27 20:48:21 +0000114 i32 addrspace(5)* addrspacecast (i32* null to i32 addrspace(5)*),
115 i32 addrspace(1)* addrspacecast (i32* null to i32 addrspace(1)*),
116 i32 addrspace(2)* addrspacecast (i32* null to i32 addrspace(2)*),
117 i32 addrspace(3)* addrspacecast (i32* null to i32 addrspace(3)*),
118 i32* null,
119 i32 addrspace(4)* addrspacecast (i32* null to i32 addrspace(4)*)}, align 4