annotate test/CodeGen/AMDGPU/spill-wide-sgpr.ll @ 146:3fc4d5c3e21e

set tail call flag for code segment in CGCAll
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:23:36 +0900
parents 803732b1fca8
children c2174574ed3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
1 ; RUN: llc -O0 -march=amdgcn -mcpu=fiji -amdgpu-spill-sgpr-to-smem=0 -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=VGPR %s
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
2 ; RUN: llc -O0 -march=amdgcn -mcpu=fiji -amdgpu-spill-sgpr-to-smem=1 -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=SMEM %s
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
3 ; RUN: llc -O0 -march=amdgcn -mcpu=fiji -amdgpu-spill-sgpr-to-smem=0 -amdgpu-spill-sgpr-to-vgpr=0 -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=VMEM %s
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
5 ; ALL-LABEL: {{^}}spill_sgpr_x2:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
6 ; SMEM: s_add_u32 m0, s3, 0x100{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
7 ; SMEM: s_buffer_store_dwordx2 s{{\[[0-9]+:[0-9]+\]}}, s[8:11], m0 ; 8-byte Folded Spill
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
8 ; SMEM: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
9
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
10 ; SMEM: s_add_u32 m0, s3, 0x100{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
11 ; SMEM: s_buffer_load_dwordx2 s{{\[[0-9]+:[0-9]+\]}}, s[8:11], m0 ; 8-byte Folded Reload
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
12
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
13 ; SMEM: s_dcache_wb
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
14 ; SMEM: s_endpgm
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
15
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
16 ; FIXME: Should only need 4 bytes
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
17 ; SMEM: ScratchSize: 12
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
18
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
19
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
20 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
21 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
22 ; VGPR: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
23
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
24 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
25 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
26
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
27 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
28 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
29 ; VMEM: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
30
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
31 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
32 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
33 define amdgpu_kernel void @spill_sgpr_x2(i32 addrspace(1)* %out, i32 %in) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
34 %wide.sgpr = call <2 x i32> asm sideeffect "; def $0", "=s" () #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
35 %cmp = icmp eq i32 %in, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
36 br i1 %cmp, label %bb0, label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
37
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
38 bb0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
39 call void asm sideeffect "; use $0", "s"(<2 x i32> %wide.sgpr) #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
40 br label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
41
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
42 ret:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
43 ret void
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
44 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
45
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
46 ; ALL-LABEL: {{^}}spill_sgpr_x4:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
47 ; SMEM: s_add_u32 m0, s3, 0x100{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
48 ; SMEM: s_buffer_store_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s[12:15], m0 ; 16-byte Folded Spill
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
49 ; SMEM: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
50
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
51 ; SMEM: s_add_u32 m0, s3, 0x100{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
52 ; SMEM: s_buffer_load_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s[12:15], m0 ; 16-byte Folded Reload
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
53 ; SMEM: s_dcache_wb
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
54 ; SMEM: s_endpgm
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
55
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
56 ; FIXME: Should only need 4 bytes
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
57 ; SMEM: ScratchSize: 20
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
58
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
59 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
60 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
61 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
62 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
63 ; VGPR: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
64
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
65 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
66 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
67 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
68 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
69
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
70
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
71 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
72 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
73 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
74 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
75 ; VMEM: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
76
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
77 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
78 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
79 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
80 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
81 define amdgpu_kernel void @spill_sgpr_x4(i32 addrspace(1)* %out, i32 %in) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
82 %wide.sgpr = call <4 x i32> asm sideeffect "; def $0", "=s" () #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
83 %cmp = icmp eq i32 %in, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
84 br i1 %cmp, label %bb0, label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
85
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
86 bb0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
87 call void asm sideeffect "; use $0", "s"(<4 x i32> %wide.sgpr) #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
88 br label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
89
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
90 ret:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
91 ret void
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
92 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
93
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
94 ; ALL-LABEL: {{^}}spill_sgpr_x8:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
95
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
96 ; SMEM: s_add_u32 m0, s3, 0x100{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
97 ; SMEM: s_buffer_store_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s[16:19], m0 ; 16-byte Folded Spill
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
98 ; SMEM: s_add_u32 m0, s3, 0x110{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
99 ; SMEM: s_buffer_store_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s[16:19], m0 ; 16-byte Folded Spill
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
100 ; SMEM: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
101
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
102 ; SMEM: s_add_u32 m0, s3, 0x100{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
103 ; SMEM: s_buffer_load_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s[16:19], m0 ; 16-byte Folded Reload
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
104 ; SMEM: s_add_u32 m0, s3, 0x110{{$}}
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
105 ; SMEM: s_buffer_load_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s[16:19], m0 ; 16-byte Folded Reload
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
106
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
107 ; SMEM: s_dcache_wb
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
108 ; SMEM: s_endpgm
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
109
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
110 ; SMEM: ScratchSize: 36
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
111
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
112 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
113 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
114 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
115 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
116 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
117 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
118 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
119 ; VGPR: v_writelane_b32 v{{[0-9]+}}, s{{[0-9]+}}, 7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
120 ; VGPR: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
121
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
122 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
123 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
124 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 2
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
125 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 3
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
126 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 4
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
127 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 5
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
128 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 6
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
129 ; VGPR: v_readlane_b32 s{{[0-9]+}}, v{{[0-9]+}}, 7
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
130
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
131 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
132 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
133 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
134 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
135 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
136 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
137 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
138 ; VMEM: buffer_store_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
139 ; VMEM: s_cbranch_scc1
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
140
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
141 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
142 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
143 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
144 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
145 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
146 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
147 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
148 ; VMEM: buffer_load_dword
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
149 define amdgpu_kernel void @spill_sgpr_x8(i32 addrspace(1)* %out, i32 %in) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
150 %wide.sgpr = call <8 x i32> asm sideeffect "; def $0", "=s" () #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
151 %cmp = icmp eq i32 %in, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
152 br i1 %cmp, label %bb0, label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
153
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
154 bb0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
155 call void asm sideeffect "; use $0", "s"(<8 x i32> %wide.sgpr) #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
156 br label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
157
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
158 ret:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
159 ret void
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
160 }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
161
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
162 ; FIXME: x16 inlineasm seems broken
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
163 ; define amdgpu_kernel void @spill_sgpr_x16(i32 addrspace(1)* %out, i32 %in) #0 {
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
164 ; %wide.sgpr = call <16 x i32> asm sideeffect "; def $0", "=s" () #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
165 ; %cmp = icmp eq i32 %in, 0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
166 ; br i1 %cmp, label %bb0, label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
167
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
168 ; bb0:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
169 ; call void asm sideeffect "; use $0", "s"(<16 x i32> %wide.sgpr) #0
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
170 ; br label %ret
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
171
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
172 ; ret:
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
173 ; ret void
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
174 ; }
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
175
803732b1fca8 LLVM 5.0
kono
parents:
diff changeset
176 attributes #0 = { nounwind }