1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx600 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX6 %s
3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX7 %s
4 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10-WGP %s
5 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+cumode -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10-CU %s
6 ; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx700 -amdgcn-skip-cache-invalidations -verify-machineinstrs < %s | FileCheck --check-prefixes=SKIP-CACHE-INV %s
7 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX90A-NOTTGSPLIT %s
8 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -mattr=+tgsplit -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX90A-TGSPLIT %s
9 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX940-NOTTGSPLIT %s
10 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -mattr=+tgsplit -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX940-TGSPLIT %s
11 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11-WGP %s
12 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+cumode -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11-CU %s
14 define amdgpu_kernel void @local_nontemporal_load_0(
15 ; GFX6-LABEL: local_nontemporal_load_0:
16 ; GFX6: ; %bb.0: ; %entry
17 ; GFX6-NEXT: s_load_dword s2, s[4:5], 0x0
18 ; GFX6-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2
19 ; GFX6-NEXT: s_mov_b32 m0, -1
20 ; GFX6-NEXT: s_mov_b32 s3, 0x100f000
21 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
22 ; GFX6-NEXT: v_mov_b32_e32 v0, s2
23 ; GFX6-NEXT: ds_read_b32 v0, v0
24 ; GFX6-NEXT: s_mov_b32 s2, -1
25 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
26 ; GFX6-NEXT: buffer_store_dword v0, off, s[0:3], 0
29 ; GFX7-LABEL: local_nontemporal_load_0:
30 ; GFX7: ; %bb.0: ; %entry
31 ; GFX7-NEXT: s_load_dword s2, s[4:5], 0x0
32 ; GFX7-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2
33 ; GFX7-NEXT: s_mov_b32 m0, -1
34 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
35 ; GFX7-NEXT: v_mov_b32_e32 v0, s2
36 ; GFX7-NEXT: ds_read_b32 v2, v0
37 ; GFX7-NEXT: v_mov_b32_e32 v0, s0
38 ; GFX7-NEXT: v_mov_b32_e32 v1, s1
39 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
40 ; GFX7-NEXT: flat_store_dword v[0:1], v2
43 ; GFX10-WGP-LABEL: local_nontemporal_load_0:
44 ; GFX10-WGP: ; %bb.0: ; %entry
45 ; GFX10-WGP-NEXT: s_clause 0x1
46 ; GFX10-WGP-NEXT: s_load_dword s2, s[4:5], 0x0
47 ; GFX10-WGP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
48 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, 0
49 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
50 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s2
51 ; GFX10-WGP-NEXT: ds_read_b32 v0, v0
52 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
53 ; GFX10-WGP-NEXT: global_store_dword v1, v0, s[0:1]
54 ; GFX10-WGP-NEXT: s_endpgm
56 ; GFX10-CU-LABEL: local_nontemporal_load_0:
57 ; GFX10-CU: ; %bb.0: ; %entry
58 ; GFX10-CU-NEXT: s_clause 0x1
59 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
60 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
61 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, 0
62 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
63 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
64 ; GFX10-CU-NEXT: ds_read_b32 v0, v0
65 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
66 ; GFX10-CU-NEXT: global_store_dword v1, v0, s[0:1]
67 ; GFX10-CU-NEXT: s_endpgm
69 ; SKIP-CACHE-INV-LABEL: local_nontemporal_load_0:
70 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
71 ; SKIP-CACHE-INV-NEXT: s_load_dword s2, s[0:1], 0x0
72 ; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x2
73 ; SKIP-CACHE-INV-NEXT: s_mov_b32 m0, -1
74 ; SKIP-CACHE-INV-NEXT: s_mov_b32 s3, 0xf000
75 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
76 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s2
77 ; SKIP-CACHE-INV-NEXT: ds_read_b32 v0, v0
78 ; SKIP-CACHE-INV-NEXT: s_mov_b32 s2, -1
79 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
80 ; SKIP-CACHE-INV-NEXT: buffer_store_dword v0, off, s[0:3], 0
81 ; SKIP-CACHE-INV-NEXT: s_endpgm
83 ; GFX90A-NOTTGSPLIT-LABEL: local_nontemporal_load_0:
84 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
85 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0
86 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
87 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, 0
88 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
89 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
90 ; GFX90A-NOTTGSPLIT-NEXT: ds_read_b32 v0, v0
91 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
92 ; GFX90A-NOTTGSPLIT-NEXT: global_store_dword v1, v0, s[0:1]
93 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
95 ; GFX90A-TGSPLIT-LABEL: local_nontemporal_load_0:
96 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
97 ; GFX90A-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0
98 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
99 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, 0
100 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
101 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
102 ; GFX90A-TGSPLIT-NEXT: ds_read_b32 v0, v0
103 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
104 ; GFX90A-TGSPLIT-NEXT: global_store_dword v1, v0, s[0:1]
105 ; GFX90A-TGSPLIT-NEXT: s_endpgm
107 ; GFX940-NOTTGSPLIT-LABEL: local_nontemporal_load_0:
108 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
109 ; GFX940-NOTTGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x0
110 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x8
111 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, 0
112 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
113 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s4
114 ; GFX940-NOTTGSPLIT-NEXT: ds_read_b32 v0, v0
115 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
116 ; GFX940-NOTTGSPLIT-NEXT: global_store_dword v1, v0, s[2:3] sc0 sc1
117 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
119 ; GFX940-TGSPLIT-LABEL: local_nontemporal_load_0:
120 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
121 ; GFX940-TGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x0
122 ; GFX940-TGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x8
123 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, 0
124 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
125 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s4
126 ; GFX940-TGSPLIT-NEXT: ds_read_b32 v0, v0
127 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
128 ; GFX940-TGSPLIT-NEXT: global_store_dword v1, v0, s[2:3] sc0 sc1
129 ; GFX940-TGSPLIT-NEXT: s_endpgm
131 ; GFX11-WGP-LABEL: local_nontemporal_load_0:
132 ; GFX11-WGP: ; %bb.0: ; %entry
133 ; GFX11-WGP-NEXT: s_clause 0x1
134 ; GFX11-WGP-NEXT: s_load_b32 s2, s[0:1], 0x0
135 ; GFX11-WGP-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
136 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
137 ; GFX11-WGP-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2
138 ; GFX11-WGP-NEXT: ds_load_b32 v0, v0
139 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
140 ; GFX11-WGP-NEXT: global_store_b32 v1, v0, s[0:1]
141 ; GFX11-WGP-NEXT: s_nop 0
142 ; GFX11-WGP-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
143 ; GFX11-WGP-NEXT: s_endpgm
145 ; GFX11-CU-LABEL: local_nontemporal_load_0:
146 ; GFX11-CU: ; %bb.0: ; %entry
147 ; GFX11-CU-NEXT: s_clause 0x1
148 ; GFX11-CU-NEXT: s_load_b32 s2, s[0:1], 0x0
149 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
150 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
151 ; GFX11-CU-NEXT: v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v0, s2
152 ; GFX11-CU-NEXT: ds_load_b32 v0, v0
153 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
154 ; GFX11-CU-NEXT: global_store_b32 v1, v0, s[0:1]
155 ; GFX11-CU-NEXT: s_nop 0
156 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
157 ; GFX11-CU-NEXT: s_endpgm
158 ptr addrspace(3) %in, ptr addrspace(1) %out) {
160 %val = load i32, ptr addrspace(3) %in, align 4, !nontemporal !0
161 store i32 %val, ptr addrspace(1) %out
165 define amdgpu_kernel void @local_nontemporal_load_1(
166 ; GFX6-LABEL: local_nontemporal_load_1:
167 ; GFX6: ; %bb.0: ; %entry
168 ; GFX6-NEXT: s_load_dword s2, s[4:5], 0x0
169 ; GFX6-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2
170 ; GFX6-NEXT: v_lshlrev_b32_e32 v0, 2, v0
171 ; GFX6-NEXT: s_mov_b32 m0, -1
172 ; GFX6-NEXT: s_mov_b32 s3, 0x100f000
173 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
174 ; GFX6-NEXT: v_add_i32_e32 v0, vcc, s2, v0
175 ; GFX6-NEXT: ds_read_b32 v0, v0
176 ; GFX6-NEXT: s_mov_b32 s2, -1
177 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
178 ; GFX6-NEXT: buffer_store_dword v0, off, s[0:3], 0
179 ; GFX6-NEXT: s_endpgm
181 ; GFX7-LABEL: local_nontemporal_load_1:
182 ; GFX7: ; %bb.0: ; %entry
183 ; GFX7-NEXT: s_load_dword s2, s[4:5], 0x0
184 ; GFX7-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2
185 ; GFX7-NEXT: v_lshlrev_b32_e32 v0, 2, v0
186 ; GFX7-NEXT: s_mov_b32 m0, -1
187 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
188 ; GFX7-NEXT: v_add_i32_e32 v0, vcc, s2, v0
189 ; GFX7-NEXT: ds_read_b32 v2, v0
190 ; GFX7-NEXT: v_mov_b32_e32 v0, s0
191 ; GFX7-NEXT: v_mov_b32_e32 v1, s1
192 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
193 ; GFX7-NEXT: flat_store_dword v[0:1], v2
194 ; GFX7-NEXT: s_endpgm
196 ; GFX10-WGP-LABEL: local_nontemporal_load_1:
197 ; GFX10-WGP: ; %bb.0: ; %entry
198 ; GFX10-WGP-NEXT: s_clause 0x1
199 ; GFX10-WGP-NEXT: s_load_dword s2, s[4:5], 0x0
200 ; GFX10-WGP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
201 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, 0
202 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
203 ; GFX10-WGP-NEXT: v_lshl_add_u32 v0, v0, 2, s2
204 ; GFX10-WGP-NEXT: ds_read_b32 v0, v0
205 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
206 ; GFX10-WGP-NEXT: global_store_dword v1, v0, s[0:1]
207 ; GFX10-WGP-NEXT: s_endpgm
209 ; GFX10-CU-LABEL: local_nontemporal_load_1:
210 ; GFX10-CU: ; %bb.0: ; %entry
211 ; GFX10-CU-NEXT: s_clause 0x1
212 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x0
213 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
214 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, 0
215 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
216 ; GFX10-CU-NEXT: v_lshl_add_u32 v0, v0, 2, s2
217 ; GFX10-CU-NEXT: ds_read_b32 v0, v0
218 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
219 ; GFX10-CU-NEXT: global_store_dword v1, v0, s[0:1]
220 ; GFX10-CU-NEXT: s_endpgm
222 ; SKIP-CACHE-INV-LABEL: local_nontemporal_load_1:
223 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
224 ; SKIP-CACHE-INV-NEXT: s_load_dword s2, s[0:1], 0x0
225 ; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[0:1], s[0:1], 0x2
226 ; SKIP-CACHE-INV-NEXT: v_lshlrev_b32_e32 v0, 2, v0
227 ; SKIP-CACHE-INV-NEXT: s_mov_b32 m0, -1
228 ; SKIP-CACHE-INV-NEXT: s_mov_b32 s3, 0xf000
229 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
230 ; SKIP-CACHE-INV-NEXT: v_add_i32_e32 v0, vcc, s2, v0
231 ; SKIP-CACHE-INV-NEXT: ds_read_b32 v0, v0
232 ; SKIP-CACHE-INV-NEXT: s_mov_b32 s2, -1
233 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
234 ; SKIP-CACHE-INV-NEXT: buffer_store_dword v0, off, s[0:3], 0
235 ; SKIP-CACHE-INV-NEXT: s_endpgm
237 ; GFX90A-NOTTGSPLIT-LABEL: local_nontemporal_load_1:
238 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
239 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0
240 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
241 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, 0
242 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
243 ; GFX90A-NOTTGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s2
244 ; GFX90A-NOTTGSPLIT-NEXT: ds_read_b32 v0, v0
245 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
246 ; GFX90A-NOTTGSPLIT-NEXT: global_store_dword v1, v0, s[0:1]
247 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
249 ; GFX90A-TGSPLIT-LABEL: local_nontemporal_load_1:
250 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
251 ; GFX90A-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x0
252 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x8
253 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, 0
254 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
255 ; GFX90A-TGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s2
256 ; GFX90A-TGSPLIT-NEXT: ds_read_b32 v0, v0
257 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
258 ; GFX90A-TGSPLIT-NEXT: global_store_dword v1, v0, s[0:1]
259 ; GFX90A-TGSPLIT-NEXT: s_endpgm
261 ; GFX940-NOTTGSPLIT-LABEL: local_nontemporal_load_1:
262 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
263 ; GFX940-NOTTGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x0
264 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x8
265 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, 0
266 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
267 ; GFX940-NOTTGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s4
268 ; GFX940-NOTTGSPLIT-NEXT: ds_read_b32 v0, v0
269 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
270 ; GFX940-NOTTGSPLIT-NEXT: global_store_dword v1, v0, s[2:3] sc0 sc1
271 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
273 ; GFX940-TGSPLIT-LABEL: local_nontemporal_load_1:
274 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
275 ; GFX940-TGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x0
276 ; GFX940-TGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x8
277 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, 0
278 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
279 ; GFX940-TGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s4
280 ; GFX940-TGSPLIT-NEXT: ds_read_b32 v0, v0
281 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
282 ; GFX940-TGSPLIT-NEXT: global_store_dword v1, v0, s[2:3] sc0 sc1
283 ; GFX940-TGSPLIT-NEXT: s_endpgm
285 ; GFX11-WGP-LABEL: local_nontemporal_load_1:
286 ; GFX11-WGP: ; %bb.0: ; %entry
287 ; GFX11-WGP-NEXT: s_clause 0x1
288 ; GFX11-WGP-NEXT: s_load_b32 s2, s[0:1], 0x0
289 ; GFX11-WGP-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
290 ; GFX11-WGP-NEXT: v_mov_b32_e32 v1, 0
291 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
292 ; GFX11-WGP-NEXT: v_lshl_add_u32 v0, v0, 2, s2
293 ; GFX11-WGP-NEXT: ds_load_b32 v0, v0
294 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
295 ; GFX11-WGP-NEXT: global_store_b32 v1, v0, s[0:1]
296 ; GFX11-WGP-NEXT: s_nop 0
297 ; GFX11-WGP-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
298 ; GFX11-WGP-NEXT: s_endpgm
300 ; GFX11-CU-LABEL: local_nontemporal_load_1:
301 ; GFX11-CU: ; %bb.0: ; %entry
302 ; GFX11-CU-NEXT: s_clause 0x1
303 ; GFX11-CU-NEXT: s_load_b32 s2, s[0:1], 0x0
304 ; GFX11-CU-NEXT: s_load_b64 s[0:1], s[0:1], 0x8
305 ; GFX11-CU-NEXT: v_mov_b32_e32 v1, 0
306 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
307 ; GFX11-CU-NEXT: v_lshl_add_u32 v0, v0, 2, s2
308 ; GFX11-CU-NEXT: ds_load_b32 v0, v0
309 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
310 ; GFX11-CU-NEXT: global_store_b32 v1, v0, s[0:1]
311 ; GFX11-CU-NEXT: s_nop 0
312 ; GFX11-CU-NEXT: s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
313 ; GFX11-CU-NEXT: s_endpgm
314 ptr addrspace(3) %in, ptr addrspace(1) %out) {
316 %tid = call i32 @llvm.amdgcn.workitem.id.x()
317 %val.gep = getelementptr inbounds i32, ptr addrspace(3) %in, i32 %tid
318 %val = load i32, ptr addrspace(3) %val.gep, align 4, !nontemporal !0
319 store i32 %val, ptr addrspace(1) %out
323 define amdgpu_kernel void @local_nontemporal_store_0(
324 ; GFX6-LABEL: local_nontemporal_store_0:
325 ; GFX6: ; %bb.0: ; %entry
326 ; GFX6-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
327 ; GFX6-NEXT: s_load_dword s2, s[4:5], 0x2
328 ; GFX6-NEXT: s_mov_b32 m0, -1
329 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
330 ; GFX6-NEXT: s_load_dword s0, s[0:1], 0x0
331 ; GFX6-NEXT: v_mov_b32_e32 v0, s2
332 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
333 ; GFX6-NEXT: v_mov_b32_e32 v1, s0
334 ; GFX6-NEXT: ds_write_b32 v0, v1
335 ; GFX6-NEXT: s_endpgm
337 ; GFX7-LABEL: local_nontemporal_store_0:
338 ; GFX7: ; %bb.0: ; %entry
339 ; GFX7-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
340 ; GFX7-NEXT: s_load_dword s2, s[4:5], 0x2
341 ; GFX7-NEXT: s_mov_b32 m0, -1
342 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
343 ; GFX7-NEXT: s_load_dword s0, s[0:1], 0x0
344 ; GFX7-NEXT: v_mov_b32_e32 v0, s2
345 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
346 ; GFX7-NEXT: v_mov_b32_e32 v1, s0
347 ; GFX7-NEXT: ds_write_b32 v0, v1
348 ; GFX7-NEXT: s_endpgm
350 ; GFX10-WGP-LABEL: local_nontemporal_store_0:
351 ; GFX10-WGP: ; %bb.0: ; %entry
352 ; GFX10-WGP-NEXT: s_clause 0x1
353 ; GFX10-WGP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
354 ; GFX10-WGP-NEXT: s_load_dword s2, s[4:5], 0x8
355 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
356 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s2
357 ; GFX10-WGP-NEXT: s_load_dword s0, s[0:1], 0x0
358 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
359 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s0
360 ; GFX10-WGP-NEXT: ds_write_b32 v0, v1
361 ; GFX10-WGP-NEXT: s_endpgm
363 ; GFX10-CU-LABEL: local_nontemporal_store_0:
364 ; GFX10-CU: ; %bb.0: ; %entry
365 ; GFX10-CU-NEXT: s_clause 0x1
366 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
367 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
368 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
369 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
370 ; GFX10-CU-NEXT: s_load_dword s0, s[0:1], 0x0
371 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
372 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s0
373 ; GFX10-CU-NEXT: ds_write_b32 v0, v1
374 ; GFX10-CU-NEXT: s_endpgm
376 ; SKIP-CACHE-INV-LABEL: local_nontemporal_store_0:
377 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
378 ; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x0
379 ; SKIP-CACHE-INV-NEXT: s_load_dword s0, s[0:1], 0x2
380 ; SKIP-CACHE-INV-NEXT: s_mov_b32 m0, -1
381 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
382 ; SKIP-CACHE-INV-NEXT: s_load_dword s1, s[2:3], 0x0
383 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s0
384 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
385 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s1
386 ; SKIP-CACHE-INV-NEXT: ds_write_b32 v0, v1
387 ; SKIP-CACHE-INV-NEXT: s_endpgm
389 ; GFX90A-NOTTGSPLIT-LABEL: local_nontemporal_store_0:
390 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
391 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
392 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x8
393 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
394 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
395 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s0, s[0:1], 0x0
396 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
397 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s0
398 ; GFX90A-NOTTGSPLIT-NEXT: ds_write_b32 v0, v1
399 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
401 ; GFX90A-TGSPLIT-LABEL: local_nontemporal_store_0:
402 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
403 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
404 ; GFX90A-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x8
405 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
406 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
407 ; GFX90A-TGSPLIT-NEXT: s_load_dword s0, s[0:1], 0x0
408 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
409 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s0
410 ; GFX90A-TGSPLIT-NEXT: ds_write_b32 v0, v1
411 ; GFX90A-TGSPLIT-NEXT: s_endpgm
413 ; GFX940-NOTTGSPLIT-LABEL: local_nontemporal_store_0:
414 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
415 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x0
416 ; GFX940-NOTTGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x8
417 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
418 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s4
419 ; GFX940-NOTTGSPLIT-NEXT: s_load_dword s0, s[2:3], 0x0
420 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
421 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s0
422 ; GFX940-NOTTGSPLIT-NEXT: ds_write_b32 v0, v1
423 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
425 ; GFX940-TGSPLIT-LABEL: local_nontemporal_store_0:
426 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
427 ; GFX940-TGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x0
428 ; GFX940-TGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x8
429 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
430 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s4
431 ; GFX940-TGSPLIT-NEXT: s_load_dword s0, s[2:3], 0x0
432 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
433 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s0
434 ; GFX940-TGSPLIT-NEXT: ds_write_b32 v0, v1
435 ; GFX940-TGSPLIT-NEXT: s_endpgm
437 ; GFX11-WGP-LABEL: local_nontemporal_store_0:
438 ; GFX11-WGP: ; %bb.0: ; %entry
439 ; GFX11-WGP-NEXT: s_clause 0x1
440 ; GFX11-WGP-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
441 ; GFX11-WGP-NEXT: s_load_b32 s0, s[0:1], 0x8
442 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
443 ; GFX11-WGP-NEXT: s_load_b32 s1, s[2:3], 0x0
444 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
445 ; GFX11-WGP-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
446 ; GFX11-WGP-NEXT: ds_store_b32 v0, v1
447 ; GFX11-WGP-NEXT: s_endpgm
449 ; GFX11-CU-LABEL: local_nontemporal_store_0:
450 ; GFX11-CU: ; %bb.0: ; %entry
451 ; GFX11-CU-NEXT: s_clause 0x1
452 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
453 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
454 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
455 ; GFX11-CU-NEXT: s_load_b32 s1, s[2:3], 0x0
456 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
457 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
458 ; GFX11-CU-NEXT: ds_store_b32 v0, v1
459 ; GFX11-CU-NEXT: s_endpgm
460 ptr addrspace(1) %in, ptr addrspace(3) %out) {
462 %val = load i32, ptr addrspace(1) %in, align 4
463 store i32 %val, ptr addrspace(3) %out, !nontemporal !0
467 define amdgpu_kernel void @local_nontemporal_store_1(
468 ; GFX6-LABEL: local_nontemporal_store_1:
469 ; GFX6: ; %bb.0: ; %entry
470 ; GFX6-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
471 ; GFX6-NEXT: s_load_dword s2, s[4:5], 0x2
472 ; GFX6-NEXT: v_lshlrev_b32_e32 v0, 2, v0
473 ; GFX6-NEXT: s_mov_b32 m0, -1
474 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
475 ; GFX6-NEXT: s_load_dword s0, s[0:1], 0x0
476 ; GFX6-NEXT: v_add_i32_e32 v0, vcc, s2, v0
477 ; GFX6-NEXT: s_waitcnt lgkmcnt(0)
478 ; GFX6-NEXT: v_mov_b32_e32 v1, s0
479 ; GFX6-NEXT: ds_write_b32 v0, v1
480 ; GFX6-NEXT: s_endpgm
482 ; GFX7-LABEL: local_nontemporal_store_1:
483 ; GFX7: ; %bb.0: ; %entry
484 ; GFX7-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
485 ; GFX7-NEXT: s_load_dword s2, s[4:5], 0x2
486 ; GFX7-NEXT: v_lshlrev_b32_e32 v0, 2, v0
487 ; GFX7-NEXT: s_mov_b32 m0, -1
488 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
489 ; GFX7-NEXT: s_load_dword s0, s[0:1], 0x0
490 ; GFX7-NEXT: v_add_i32_e32 v0, vcc, s2, v0
491 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
492 ; GFX7-NEXT: v_mov_b32_e32 v1, s0
493 ; GFX7-NEXT: ds_write_b32 v0, v1
494 ; GFX7-NEXT: s_endpgm
496 ; GFX10-WGP-LABEL: local_nontemporal_store_1:
497 ; GFX10-WGP: ; %bb.0: ; %entry
498 ; GFX10-WGP-NEXT: s_clause 0x1
499 ; GFX10-WGP-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
500 ; GFX10-WGP-NEXT: s_load_dword s2, s[4:5], 0x8
501 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
502 ; GFX10-WGP-NEXT: v_lshl_add_u32 v0, v0, 2, s2
503 ; GFX10-WGP-NEXT: s_load_dword s0, s[0:1], 0x0
504 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
505 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s0
506 ; GFX10-WGP-NEXT: ds_write_b32 v0, v1
507 ; GFX10-WGP-NEXT: s_endpgm
509 ; GFX10-CU-LABEL: local_nontemporal_store_1:
510 ; GFX10-CU: ; %bb.0: ; %entry
511 ; GFX10-CU-NEXT: s_clause 0x1
512 ; GFX10-CU-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
513 ; GFX10-CU-NEXT: s_load_dword s2, s[4:5], 0x8
514 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
515 ; GFX10-CU-NEXT: v_lshl_add_u32 v0, v0, 2, s2
516 ; GFX10-CU-NEXT: s_load_dword s0, s[0:1], 0x0
517 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
518 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s0
519 ; GFX10-CU-NEXT: ds_write_b32 v0, v1
520 ; GFX10-CU-NEXT: s_endpgm
522 ; SKIP-CACHE-INV-LABEL: local_nontemporal_store_1:
523 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
524 ; SKIP-CACHE-INV-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x0
525 ; SKIP-CACHE-INV-NEXT: s_load_dword s0, s[0:1], 0x2
526 ; SKIP-CACHE-INV-NEXT: v_lshlrev_b32_e32 v0, 2, v0
527 ; SKIP-CACHE-INV-NEXT: s_mov_b32 m0, -1
528 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
529 ; SKIP-CACHE-INV-NEXT: s_load_dword s1, s[2:3], 0x0
530 ; SKIP-CACHE-INV-NEXT: v_add_i32_e32 v0, vcc, s0, v0
531 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
532 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s1
533 ; SKIP-CACHE-INV-NEXT: ds_write_b32 v0, v1
534 ; SKIP-CACHE-INV-NEXT: s_endpgm
536 ; GFX90A-NOTTGSPLIT-LABEL: local_nontemporal_store_1:
537 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
538 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
539 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x8
540 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
541 ; GFX90A-NOTTGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s2
542 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dword s0, s[0:1], 0x0
543 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
544 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s0
545 ; GFX90A-NOTTGSPLIT-NEXT: ds_write_b32 v0, v1
546 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
548 ; GFX90A-TGSPLIT-LABEL: local_nontemporal_store_1:
549 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
550 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x0
551 ; GFX90A-TGSPLIT-NEXT: s_load_dword s2, s[4:5], 0x8
552 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
553 ; GFX90A-TGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s2
554 ; GFX90A-TGSPLIT-NEXT: s_load_dword s0, s[0:1], 0x0
555 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
556 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s0
557 ; GFX90A-TGSPLIT-NEXT: ds_write_b32 v0, v1
558 ; GFX90A-TGSPLIT-NEXT: s_endpgm
560 ; GFX940-NOTTGSPLIT-LABEL: local_nontemporal_store_1:
561 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
562 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x0
563 ; GFX940-NOTTGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x8
564 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
565 ; GFX940-NOTTGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s4
566 ; GFX940-NOTTGSPLIT-NEXT: s_load_dword s0, s[2:3], 0x0
567 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
568 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s0
569 ; GFX940-NOTTGSPLIT-NEXT: ds_write_b32 v0, v1
570 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
572 ; GFX940-TGSPLIT-LABEL: local_nontemporal_store_1:
573 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
574 ; GFX940-TGSPLIT-NEXT: s_load_dwordx2 s[2:3], s[0:1], 0x0
575 ; GFX940-TGSPLIT-NEXT: s_load_dword s4, s[0:1], 0x8
576 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
577 ; GFX940-TGSPLIT-NEXT: v_lshl_add_u32 v0, v0, 2, s4
578 ; GFX940-TGSPLIT-NEXT: s_load_dword s0, s[2:3], 0x0
579 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
580 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s0
581 ; GFX940-TGSPLIT-NEXT: ds_write_b32 v0, v1
582 ; GFX940-TGSPLIT-NEXT: s_endpgm
584 ; GFX11-WGP-LABEL: local_nontemporal_store_1:
585 ; GFX11-WGP: ; %bb.0: ; %entry
586 ; GFX11-WGP-NEXT: s_clause 0x1
587 ; GFX11-WGP-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
588 ; GFX11-WGP-NEXT: s_load_b32 s0, s[0:1], 0x8
589 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
590 ; GFX11-WGP-NEXT: s_load_b32 s1, s[2:3], 0x0
591 ; GFX11-WGP-NEXT: v_lshl_add_u32 v0, v0, 2, s0
592 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
593 ; GFX11-WGP-NEXT: v_mov_b32_e32 v1, s1
594 ; GFX11-WGP-NEXT: ds_store_b32 v0, v1
595 ; GFX11-WGP-NEXT: s_endpgm
597 ; GFX11-CU-LABEL: local_nontemporal_store_1:
598 ; GFX11-CU: ; %bb.0: ; %entry
599 ; GFX11-CU-NEXT: s_clause 0x1
600 ; GFX11-CU-NEXT: s_load_b64 s[2:3], s[0:1], 0x0
601 ; GFX11-CU-NEXT: s_load_b32 s0, s[0:1], 0x8
602 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
603 ; GFX11-CU-NEXT: s_load_b32 s1, s[2:3], 0x0
604 ; GFX11-CU-NEXT: v_lshl_add_u32 v0, v0, 2, s0
605 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
606 ; GFX11-CU-NEXT: v_mov_b32_e32 v1, s1
607 ; GFX11-CU-NEXT: ds_store_b32 v0, v1
608 ; GFX11-CU-NEXT: s_endpgm
609 ptr addrspace(1) %in, ptr addrspace(3) %out) {
611 %tid = call i32 @llvm.amdgcn.workitem.id.x()
612 %val = load i32, ptr addrspace(1) %in, align 4
613 %out.gep = getelementptr inbounds i32, ptr addrspace(3) %out, i32 %tid
614 store i32 %val, ptr addrspace(3) %out.gep, !nontemporal !0
619 declare i32 @llvm.amdgcn.workitem.id.x()