1; RUN: llc -march=amdgcn -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefix=CI -check-prefix=GCN %s
2; RUN: llc -march=amdgcn -mcpu=fiji -mattr=-xnack -verify-machineinstrs < %s | FileCheck -check-prefix=VI-NOXNACK -check-prefix=GCN %s
3
4; RUN: llc -march=amdgcn -mcpu=carrizo -mattr=-xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-NOXNACK,GCN %s
5; RUN: llc -march=amdgcn -mcpu=stoney -mattr=-xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-NOXNACK,GCN %s
6
7; RUN: llc -march=amdgcn -mcpu=carrizo -mattr=+xnack -verify-machineinstrs < %s | FileCheck -check-prefix=VI-XNACK  -check-prefix=GCN %s
8; RUN: llc -march=amdgcn -mcpu=stoney -mattr=+xnack -verify-machineinstrs < %s | FileCheck -check-prefix=VI-XNACK  -check-prefix=GCN %s
9
10; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=kaveri --amdhsa-code-object-version=2 -verify-machineinstrs < %s | FileCheck -check-prefixes=CI,HSA-CI-V2,GCN %s
11; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=carrizo --amdhsa-code-object-version=2 -mattr=+xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-XNACK,HSA-VI-XNACK-V2,GCN %s
12
13; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=kaveri -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN %s
14; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=carrizo -mattr=-xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-NOXNACK,HSA-VI-NOXNACK,GCN %s
15; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=carrizo -mattr=+xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-XNACK,HSA-VI-XNACK,GCN %s
16
17; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN %s
18; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch,-xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=HSA-VI-NOXNACK,GFX9-ARCH-FLAT,GCN %s
19; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=gfx900 -mattr=+architected-flat-scratch,+xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=HSA-VI-XNACK,GFX9-ARCH-FLAT,GCN %s
20
21; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=+architected-flat-scratch -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN %s
22; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=+architected-flat-scratch,-xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=HSA-VI-NOXNACK,GFX10-ARCH-FLAT,GCN %s
23; RUN: llc -march=amdgcn -mtriple=amdgcn--amdhsa -mcpu=gfx1010 -mattr=+architected-flat-scratch,+xnack -verify-machineinstrs < %s | FileCheck -check-prefixes=HSA-VI-XNACK,GFX10-ARCH-FLAT,GCN %s
24
25; GCN-LABEL: {{^}}no_vcc_no_flat:
26
27; HSA-CI-V2: is_xnack_enabled = 0
28; HSA-VI-XNACK-V2: is_xnack_enabled = 1
29
30; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
31; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
32; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
33
34; CI: ; NumSgprs: 8
35; VI-NOXNACK: ; NumSgprs: 8
36; VI-XNACK: ; NumSgprs: 12
37; GFX9-ARCH-FLAT: ; NumSgprs: 14
38; GFX10-ARCH-FLAT: ; NumSgprs: 8
39define amdgpu_kernel void @no_vcc_no_flat() {
40entry:
41  call void asm sideeffect "", "~{s7}"()
42  ret void
43}
44
45; GCN-LABEL: {{^}}vcc_no_flat:
46
47; HSA-CI-V2: is_xnack_enabled = 0
48; HSA-VI-XNACK-V2: is_xnack_enabled = 1
49
50; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
51; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
52; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
53
54; CI: ; NumSgprs: 10
55; VI-NOXNACK: ; NumSgprs: 10
56; VI-XNACK: ; NumSgprs: 12
57; GFX9-ARCH-FLAT: ; NumSgprs: 14
58; GFX10-ARCH-FLAT: ; NumSgprs: 10
59define amdgpu_kernel void @vcc_no_flat() {
60entry:
61  call void asm sideeffect "", "~{s7},~{vcc}"()
62  ret void
63}
64
65; GCN-LABEL: {{^}}no_vcc_flat:
66
67; HSA-CI-V2: is_xnack_enabled = 0
68; HSA-VI-XNACK-V2: is_xnack_enabled = 1
69
70; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
71; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
72; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
73
74; CI: ; NumSgprs: 12
75; VI-NOXNACK: ; NumSgprs: 14
76; VI-XNACK: ; NumSgprs: 14
77; GFX9-ARCH-FLAT: ; NumSgprs: 14
78; GFX10-ARCH-FLAT: ; NumSgprs: 8
79define amdgpu_kernel void @no_vcc_flat() {
80entry:
81  call void asm sideeffect "", "~{s7},~{flat_scratch}"()
82  ret void
83}
84
85; GCN-LABEL: {{^}}vcc_flat:
86
87; HSA-CI-V2: is_xnack_enabled = 0
88; HSA-VI-XNACK-V2: is_xnack_enabled = 1
89
90; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
91; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
92; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
93
94; CI: ; NumSgprs: 12
95; VI-NOXNACK: ; NumSgprs: 14
96; VI-XNACK: ; NumSgprs: 14
97; GFX9-ARCH-FLAT: ; NumSgprs: 14
98; GFX10-ARCH-FLAT: ; NumSgprs: 10
99define amdgpu_kernel void @vcc_flat() {
100entry:
101  call void asm sideeffect "", "~{s7},~{vcc},~{flat_scratch}"()
102  ret void
103}
104
105; Make sure used SGPR count for flat_scr is correct when there is no
106; scratch usage and implicit flat uses.
107
108; GCN-LABEL: {{^}}use_flat_scr:
109
110; HSA-CI-V2: is_xnack_enabled = 0
111; HSA-VI-XNACK-V2: is_xnack_enabled = 1
112
113; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
114; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
115; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
116
117; CI: NumSgprs: 4
118; VI-NOXNACK: NumSgprs: 6
119; VI-XNACK: NumSgprs: 6
120; GFX9-ARCH-FLAT: ; NumSgprs: 6
121; GFX10-ARCH-FLAT: ; NumSgprs: 0
122define amdgpu_kernel void @use_flat_scr() #0 {
123entry:
124  call void asm sideeffect "; clobber ", "~{flat_scratch}"()
125  ret void
126}
127
128; GCN-LABEL: {{^}}use_flat_scr_lo:
129
130; HSA-CI-V2: is_xnack_enabled = 0
131; HSA-VI-XNACK-V2: is_xnack_enabled = 1
132
133; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
134; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
135; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
136
137; CI: NumSgprs: 4
138; VI-NOXNACK: NumSgprs: 6
139; VI-XNACK: NumSgprs: 6
140; GFX9-ARCH-FLAT: ; NumSgprs: 6
141; GFX10-ARCH-FLAT: ; NumSgprs: 0
142define amdgpu_kernel void @use_flat_scr_lo() #0 {
143entry:
144  call void asm sideeffect "; clobber ", "~{flat_scratch_lo}"()
145  ret void
146}
147
148; GCN-LABEL: {{^}}use_flat_scr_hi:
149
150; HSA-CI-V2: is_xnack_enabled = 0
151; HSA-VI-XNACK-V2: is_xnack_enabled = 1
152
153; NOT-HSA-CI: .amdhsa_reserve_xnack_mask
154; HSA-VI-NOXNACK: .amdhsa_reserve_xnack_mask 0
155; HSA-VI-XNACK: .amdhsa_reserve_xnack_mask 1
156
157; CI: NumSgprs: 4
158; VI-NOXNACK: NumSgprs: 6
159; VI-XNACK: NumSgprs: 6
160; GFX9-ARCH-FLAT: ; NumSgprs: 6
161; GFX10-ARCH-FLAT: ; NumSgprs: 0
162define amdgpu_kernel void @use_flat_scr_hi() #0 {
163entry:
164  call void asm sideeffect "; clobber ", "~{flat_scratch_hi}"()
165  ret void
166}
167
168attributes #0 = { nounwind }
169