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