1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx700 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX7 %s
3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10-WGP %s
4 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+cumode -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10-CU %s
5 ; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx700 -amdgcn-skip-cache-invalidations -verify-machineinstrs < %s | FileCheck --check-prefixes=SKIP-CACHE-INV %s
6 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX90A-NOTTGSPLIT %s
7 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -mattr=+tgsplit -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX90A-TGSPLIT %s
8 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX940-NOTTGSPLIT %s
9 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx940 -mattr=+tgsplit -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX940-TGSPLIT %s
10 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11-WGP %s
11 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -mattr=+cumode -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11-CU %s
13 define amdgpu_kernel void @flat_nontemporal_load_0(
14 ; GFX7-LABEL: flat_nontemporal_load_0:
15 ; GFX7: ; %bb.0: ; %entry
16 ; GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
17 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
18 ; GFX7-NEXT: v_mov_b32_e32 v0, s0
19 ; GFX7-NEXT: v_mov_b32_e32 v1, s1
20 ; GFX7-NEXT: flat_load_dword v2, v[0:1] glc slc
21 ; GFX7-NEXT: v_mov_b32_e32 v0, s2
22 ; GFX7-NEXT: v_mov_b32_e32 v1, s3
23 ; GFX7-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
24 ; GFX7-NEXT: flat_store_dword v[0:1], v2
27 ; GFX10-WGP-LABEL: flat_nontemporal_load_0:
28 ; GFX10-WGP: ; %bb.0: ; %entry
29 ; GFX10-WGP-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
30 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
31 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s0
32 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s1
33 ; GFX10-WGP-NEXT: flat_load_dword v2, v[0:1] slc
34 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s2
35 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s3
36 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
37 ; GFX10-WGP-NEXT: flat_store_dword v[0:1], v2
38 ; GFX10-WGP-NEXT: s_endpgm
40 ; GFX10-CU-LABEL: flat_nontemporal_load_0:
41 ; GFX10-CU: ; %bb.0: ; %entry
42 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
43 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
44 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
45 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
46 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1] slc
47 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
48 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
49 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
50 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
51 ; GFX10-CU-NEXT: s_endpgm
53 ; SKIP-CACHE-INV-LABEL: flat_nontemporal_load_0:
54 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
55 ; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
56 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
57 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s0
58 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s1
59 ; SKIP-CACHE-INV-NEXT: flat_load_dword v2, v[0:1] glc slc
60 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s2
61 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s3
62 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
63 ; SKIP-CACHE-INV-NEXT: flat_store_dword v[0:1], v2
64 ; SKIP-CACHE-INV-NEXT: s_endpgm
66 ; GFX90A-NOTTGSPLIT-LABEL: flat_nontemporal_load_0:
67 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
68 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
69 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
70 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s0
71 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s1
72 ; GFX90A-NOTTGSPLIT-NEXT: flat_load_dword v2, v[0:1] glc slc
73 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
74 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
75 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
76 ; GFX90A-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2
77 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
79 ; GFX90A-TGSPLIT-LABEL: flat_nontemporal_load_0:
80 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
81 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
82 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
83 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s0
84 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s1
85 ; GFX90A-TGSPLIT-NEXT: flat_load_dword v2, v[0:1] glc slc
86 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
87 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
88 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
89 ; GFX90A-TGSPLIT-NEXT: flat_store_dword v[0:1], v2
90 ; GFX90A-TGSPLIT-NEXT: s_endpgm
92 ; GFX940-NOTTGSPLIT-LABEL: flat_nontemporal_load_0:
93 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
94 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
95 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
96 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s0
97 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s1
98 ; GFX940-NOTTGSPLIT-NEXT: flat_load_dword v2, v[0:1] nt
99 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
100 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
101 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
102 ; GFX940-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 sc1
103 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
105 ; GFX940-TGSPLIT-LABEL: flat_nontemporal_load_0:
106 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
107 ; GFX940-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
108 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
109 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s0
110 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s1
111 ; GFX940-TGSPLIT-NEXT: flat_load_dword v2, v[0:1] nt
112 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
113 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
114 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
115 ; GFX940-TGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 sc1
116 ; GFX940-TGSPLIT-NEXT: s_endpgm
118 ; GFX11-WGP-LABEL: flat_nontemporal_load_0:
119 ; GFX11-WGP: ; %bb.0: ; %entry
120 ; GFX11-WGP-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
121 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
122 ; GFX11-WGP-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
123 ; GFX11-WGP-NEXT: flat_load_b32 v2, v[0:1] slc dlc
124 ; GFX11-WGP-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
125 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
126 ; GFX11-WGP-NEXT: flat_store_b32 v[0:1], v2
127 ; GFX11-WGP-NEXT: s_endpgm
129 ; GFX11-CU-LABEL: flat_nontemporal_load_0:
130 ; GFX11-CU: ; %bb.0: ; %entry
131 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
132 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
133 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
134 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1] slc dlc
135 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
136 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
137 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
138 ; GFX11-CU-NEXT: s_endpgm
141 %val = load i32, ptr %in, align 4, !nontemporal !0
142 store i32 %val, ptr %out
146 define amdgpu_kernel void @flat_nontemporal_load_1(
147 ; GFX7-LABEL: flat_nontemporal_load_1:
148 ; GFX7: ; %bb.0: ; %entry
149 ; GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
150 ; GFX7-NEXT: v_lshlrev_b32_e32 v0, 2, v0
151 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
152 ; GFX7-NEXT: v_mov_b32_e32 v1, s1
153 ; GFX7-NEXT: v_add_i32_e32 v0, vcc, s0, v0
154 ; GFX7-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc
155 ; GFX7-NEXT: flat_load_dword v2, v[0:1] glc slc
156 ; GFX7-NEXT: v_mov_b32_e32 v0, s2
157 ; GFX7-NEXT: v_mov_b32_e32 v1, s3
158 ; GFX7-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
159 ; GFX7-NEXT: flat_store_dword v[0:1], v2
160 ; GFX7-NEXT: s_endpgm
162 ; GFX10-WGP-LABEL: flat_nontemporal_load_1:
163 ; GFX10-WGP: ; %bb.0: ; %entry
164 ; GFX10-WGP-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
165 ; GFX10-WGP-NEXT: v_lshlrev_b32_e32 v0, 2, v0
166 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
167 ; GFX10-WGP-NEXT: v_add_co_u32 v0, s0, s0, v0
168 ; GFX10-WGP-NEXT: v_add_co_ci_u32_e64 v1, s0, s1, 0, s0
169 ; GFX10-WGP-NEXT: flat_load_dword v2, v[0:1] slc
170 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s2
171 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s3
172 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
173 ; GFX10-WGP-NEXT: flat_store_dword v[0:1], v2
174 ; GFX10-WGP-NEXT: s_endpgm
176 ; GFX10-CU-LABEL: flat_nontemporal_load_1:
177 ; GFX10-CU: ; %bb.0: ; %entry
178 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
179 ; GFX10-CU-NEXT: v_lshlrev_b32_e32 v0, 2, v0
180 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
181 ; GFX10-CU-NEXT: v_add_co_u32 v0, s0, s0, v0
182 ; GFX10-CU-NEXT: v_add_co_ci_u32_e64 v1, s0, s1, 0, s0
183 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1] slc
184 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
185 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
186 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
187 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2
188 ; GFX10-CU-NEXT: s_endpgm
190 ; SKIP-CACHE-INV-LABEL: flat_nontemporal_load_1:
191 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
192 ; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
193 ; SKIP-CACHE-INV-NEXT: v_lshlrev_b32_e32 v0, 2, v0
194 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
195 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s1
196 ; SKIP-CACHE-INV-NEXT: v_add_i32_e32 v0, vcc, s0, v0
197 ; SKIP-CACHE-INV-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc
198 ; SKIP-CACHE-INV-NEXT: flat_load_dword v2, v[0:1] glc slc
199 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s2
200 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s3
201 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
202 ; SKIP-CACHE-INV-NEXT: flat_store_dword v[0:1], v2
203 ; SKIP-CACHE-INV-NEXT: s_endpgm
205 ; GFX90A-NOTTGSPLIT-LABEL: flat_nontemporal_load_1:
206 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
207 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
208 ; GFX90A-NOTTGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
209 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
210 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s1
211 ; GFX90A-NOTTGSPLIT-NEXT: v_add_co_u32_e32 v0, vcc, s0, v0
212 ; GFX90A-NOTTGSPLIT-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
213 ; GFX90A-NOTTGSPLIT-NEXT: flat_load_dword v2, v[0:1] glc slc
214 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
215 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
216 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
217 ; GFX90A-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2
218 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
220 ; GFX90A-TGSPLIT-LABEL: flat_nontemporal_load_1:
221 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
222 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
223 ; GFX90A-TGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
224 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
225 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s1
226 ; GFX90A-TGSPLIT-NEXT: v_add_co_u32_e32 v0, vcc, s0, v0
227 ; GFX90A-TGSPLIT-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
228 ; GFX90A-TGSPLIT-NEXT: flat_load_dword v2, v[0:1] glc slc
229 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
230 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
231 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
232 ; GFX90A-TGSPLIT-NEXT: flat_store_dword v[0:1], v2
233 ; GFX90A-TGSPLIT-NEXT: s_endpgm
235 ; GFX940-NOTTGSPLIT-LABEL: flat_nontemporal_load_1:
236 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
237 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
238 ; GFX940-NOTTGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
239 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, 0
240 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
241 ; GFX940-NOTTGSPLIT-NEXT: v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
242 ; GFX940-NOTTGSPLIT-NEXT: flat_load_dword v2, v[0:1] nt
243 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
244 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
245 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
246 ; GFX940-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 sc1
247 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
249 ; GFX940-TGSPLIT-LABEL: flat_nontemporal_load_1:
250 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
251 ; GFX940-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
252 ; GFX940-TGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
253 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, 0
254 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
255 ; GFX940-TGSPLIT-NEXT: v_lshl_add_u64 v[0:1], s[0:1], 0, v[0:1]
256 ; GFX940-TGSPLIT-NEXT: flat_load_dword v2, v[0:1] nt
257 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
258 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
259 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
260 ; GFX940-TGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 sc1
261 ; GFX940-TGSPLIT-NEXT: s_endpgm
263 ; GFX11-WGP-LABEL: flat_nontemporal_load_1:
264 ; GFX11-WGP: ; %bb.0: ; %entry
265 ; GFX11-WGP-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
266 ; GFX11-WGP-NEXT: v_lshlrev_b32_e32 v0, 2, v0
267 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
268 ; GFX11-WGP-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
269 ; GFX11-WGP-NEXT: v_add_co_u32 v0, s0, s0, v0
270 ; GFX11-WGP-NEXT: v_add_co_ci_u32_e64 v1, null, s1, 0, s0
271 ; GFX11-WGP-NEXT: flat_load_b32 v2, v[0:1] slc dlc
272 ; GFX11-WGP-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mov_b32 v0, s2
273 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
274 ; GFX11-WGP-NEXT: flat_store_b32 v[0:1], v2
275 ; GFX11-WGP-NEXT: s_endpgm
277 ; GFX11-CU-LABEL: flat_nontemporal_load_1:
278 ; GFX11-CU: ; %bb.0: ; %entry
279 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
280 ; GFX11-CU-NEXT: v_lshlrev_b32_e32 v0, 2, v0
281 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
282 ; GFX11-CU-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)
283 ; GFX11-CU-NEXT: v_add_co_u32 v0, s0, s0, v0
284 ; GFX11-CU-NEXT: v_add_co_ci_u32_e64 v1, null, s1, 0, s0
285 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1] slc dlc
286 ; GFX11-CU-NEXT: v_dual_mov_b32 v1, s3 :: v_dual_mov_b32 v0, s2
287 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
288 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2
289 ; GFX11-CU-NEXT: s_endpgm
292 %tid = call i32 @llvm.amdgcn.workitem.id.x()
293 %val.gep = getelementptr inbounds i32, ptr %in, i32 %tid
294 %val = load i32, ptr %val.gep, align 4, !nontemporal !0
295 store i32 %val, ptr %out
299 define amdgpu_kernel void @flat_nontemporal_store_0(
300 ; GFX7-LABEL: flat_nontemporal_store_0:
301 ; GFX7: ; %bb.0: ; %entry
302 ; GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
303 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
304 ; GFX7-NEXT: v_mov_b32_e32 v0, s0
305 ; GFX7-NEXT: v_mov_b32_e32 v1, s1
306 ; GFX7-NEXT: flat_load_dword v2, v[0:1]
307 ; GFX7-NEXT: v_mov_b32_e32 v0, s2
308 ; GFX7-NEXT: v_mov_b32_e32 v1, s3
309 ; GFX7-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
310 ; GFX7-NEXT: flat_store_dword v[0:1], v2 glc slc
311 ; GFX7-NEXT: s_endpgm
313 ; GFX10-WGP-LABEL: flat_nontemporal_store_0:
314 ; GFX10-WGP: ; %bb.0: ; %entry
315 ; GFX10-WGP-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
316 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
317 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s0
318 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s1
319 ; GFX10-WGP-NEXT: flat_load_dword v2, v[0:1]
320 ; GFX10-WGP-NEXT: v_mov_b32_e32 v0, s2
321 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s3
322 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
323 ; GFX10-WGP-NEXT: flat_store_dword v[0:1], v2 glc slc
324 ; GFX10-WGP-NEXT: s_endpgm
326 ; GFX10-CU-LABEL: flat_nontemporal_store_0:
327 ; GFX10-CU: ; %bb.0: ; %entry
328 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
329 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
330 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s0
331 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s1
332 ; GFX10-CU-NEXT: flat_load_dword v2, v[0:1]
333 ; GFX10-CU-NEXT: v_mov_b32_e32 v0, s2
334 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s3
335 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
336 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2 glc slc
337 ; GFX10-CU-NEXT: s_endpgm
339 ; SKIP-CACHE-INV-LABEL: flat_nontemporal_store_0:
340 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
341 ; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
342 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
343 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s0
344 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s1
345 ; SKIP-CACHE-INV-NEXT: flat_load_dword v2, v[0:1]
346 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v0, s2
347 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s3
348 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
349 ; SKIP-CACHE-INV-NEXT: flat_store_dword v[0:1], v2 glc slc
350 ; SKIP-CACHE-INV-NEXT: s_endpgm
352 ; GFX90A-NOTTGSPLIT-LABEL: flat_nontemporal_store_0:
353 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
354 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
355 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
356 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s0
357 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s1
358 ; GFX90A-NOTTGSPLIT-NEXT: flat_load_dword v2, v[0:1]
359 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
360 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
361 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
362 ; GFX90A-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2 glc slc
363 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
365 ; GFX90A-TGSPLIT-LABEL: flat_nontemporal_store_0:
366 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
367 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
368 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
369 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s0
370 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s1
371 ; GFX90A-TGSPLIT-NEXT: flat_load_dword v2, v[0:1]
372 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
373 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
374 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
375 ; GFX90A-TGSPLIT-NEXT: flat_store_dword v[0:1], v2 glc slc
376 ; GFX90A-TGSPLIT-NEXT: s_endpgm
378 ; GFX940-NOTTGSPLIT-LABEL: flat_nontemporal_store_0:
379 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
380 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
381 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
382 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s0
383 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s1
384 ; GFX940-NOTTGSPLIT-NEXT: flat_load_dword v2, v[0:1]
385 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v0, s2
386 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
387 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
388 ; GFX940-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 nt sc1
389 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
391 ; GFX940-TGSPLIT-LABEL: flat_nontemporal_store_0:
392 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
393 ; GFX940-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
394 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
395 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s0
396 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s1
397 ; GFX940-TGSPLIT-NEXT: flat_load_dword v2, v[0:1]
398 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v0, s2
399 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
400 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
401 ; GFX940-TGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 nt sc1
402 ; GFX940-TGSPLIT-NEXT: s_endpgm
404 ; GFX11-WGP-LABEL: flat_nontemporal_store_0:
405 ; GFX11-WGP: ; %bb.0: ; %entry
406 ; GFX11-WGP-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
407 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
408 ; GFX11-WGP-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
409 ; GFX11-WGP-NEXT: flat_load_b32 v2, v[0:1]
410 ; GFX11-WGP-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
411 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
412 ; GFX11-WGP-NEXT: flat_store_b32 v[0:1], v2 glc slc dlc
413 ; GFX11-WGP-NEXT: s_endpgm
415 ; GFX11-CU-LABEL: flat_nontemporal_store_0:
416 ; GFX11-CU: ; %bb.0: ; %entry
417 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
418 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
419 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
420 ; GFX11-CU-NEXT: flat_load_b32 v2, v[0:1]
421 ; GFX11-CU-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
422 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
423 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2 glc slc dlc
424 ; GFX11-CU-NEXT: s_endpgm
427 %val = load i32, ptr %in, align 4
428 store i32 %val, ptr %out, !nontemporal !0
432 define amdgpu_kernel void @flat_nontemporal_store_1(
433 ; GFX7-LABEL: flat_nontemporal_store_1:
434 ; GFX7: ; %bb.0: ; %entry
435 ; GFX7-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
436 ; GFX7-NEXT: v_lshlrev_b32_e32 v0, 2, v0
437 ; GFX7-NEXT: s_waitcnt lgkmcnt(0)
438 ; GFX7-NEXT: v_mov_b32_e32 v1, s0
439 ; GFX7-NEXT: v_mov_b32_e32 v2, s1
440 ; GFX7-NEXT: flat_load_dword v2, v[1:2]
441 ; GFX7-NEXT: v_mov_b32_e32 v1, s3
442 ; GFX7-NEXT: v_add_i32_e32 v0, vcc, s2, v0
443 ; GFX7-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc
444 ; GFX7-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
445 ; GFX7-NEXT: flat_store_dword v[0:1], v2 glc slc
446 ; GFX7-NEXT: s_endpgm
448 ; GFX10-WGP-LABEL: flat_nontemporal_store_1:
449 ; GFX10-WGP: ; %bb.0: ; %entry
450 ; GFX10-WGP-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
451 ; GFX10-WGP-NEXT: v_lshlrev_b32_e32 v0, 2, v0
452 ; GFX10-WGP-NEXT: s_waitcnt lgkmcnt(0)
453 ; GFX10-WGP-NEXT: v_mov_b32_e32 v1, s0
454 ; GFX10-WGP-NEXT: v_mov_b32_e32 v2, s1
455 ; GFX10-WGP-NEXT: v_add_co_u32 v0, s0, s2, v0
456 ; GFX10-WGP-NEXT: flat_load_dword v2, v[1:2]
457 ; GFX10-WGP-NEXT: v_add_co_ci_u32_e64 v1, s0, s3, 0, s0
458 ; GFX10-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
459 ; GFX10-WGP-NEXT: flat_store_dword v[0:1], v2 glc slc
460 ; GFX10-WGP-NEXT: s_endpgm
462 ; GFX10-CU-LABEL: flat_nontemporal_store_1:
463 ; GFX10-CU: ; %bb.0: ; %entry
464 ; GFX10-CU-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
465 ; GFX10-CU-NEXT: v_lshlrev_b32_e32 v0, 2, v0
466 ; GFX10-CU-NEXT: s_waitcnt lgkmcnt(0)
467 ; GFX10-CU-NEXT: v_mov_b32_e32 v1, s0
468 ; GFX10-CU-NEXT: v_mov_b32_e32 v2, s1
469 ; GFX10-CU-NEXT: v_add_co_u32 v0, s0, s2, v0
470 ; GFX10-CU-NEXT: flat_load_dword v2, v[1:2]
471 ; GFX10-CU-NEXT: v_add_co_ci_u32_e64 v1, s0, s3, 0, s0
472 ; GFX10-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
473 ; GFX10-CU-NEXT: flat_store_dword v[0:1], v2 glc slc
474 ; GFX10-CU-NEXT: s_endpgm
476 ; SKIP-CACHE-INV-LABEL: flat_nontemporal_store_1:
477 ; SKIP-CACHE-INV: ; %bb.0: ; %entry
478 ; SKIP-CACHE-INV-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
479 ; SKIP-CACHE-INV-NEXT: v_lshlrev_b32_e32 v0, 2, v0
480 ; SKIP-CACHE-INV-NEXT: s_waitcnt lgkmcnt(0)
481 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s0
482 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v2, s1
483 ; SKIP-CACHE-INV-NEXT: flat_load_dword v2, v[1:2]
484 ; SKIP-CACHE-INV-NEXT: v_mov_b32_e32 v1, s3
485 ; SKIP-CACHE-INV-NEXT: v_add_i32_e32 v0, vcc, s2, v0
486 ; SKIP-CACHE-INV-NEXT: v_addc_u32_e32 v1, vcc, 0, v1, vcc
487 ; SKIP-CACHE-INV-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
488 ; SKIP-CACHE-INV-NEXT: flat_store_dword v[0:1], v2 glc slc
489 ; SKIP-CACHE-INV-NEXT: s_endpgm
491 ; GFX90A-NOTTGSPLIT-LABEL: flat_nontemporal_store_1:
492 ; GFX90A-NOTTGSPLIT: ; %bb.0: ; %entry
493 ; GFX90A-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
494 ; GFX90A-NOTTGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
495 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
496 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v2, s0
497 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v3, s1
498 ; GFX90A-NOTTGSPLIT-NEXT: flat_load_dword v2, v[2:3]
499 ; GFX90A-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, s3
500 ; GFX90A-NOTTGSPLIT-NEXT: v_add_co_u32_e32 v0, vcc, s2, v0
501 ; GFX90A-NOTTGSPLIT-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
502 ; GFX90A-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
503 ; GFX90A-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2 glc slc
504 ; GFX90A-NOTTGSPLIT-NEXT: s_endpgm
506 ; GFX90A-TGSPLIT-LABEL: flat_nontemporal_store_1:
507 ; GFX90A-TGSPLIT: ; %bb.0: ; %entry
508 ; GFX90A-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x0
509 ; GFX90A-TGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
510 ; GFX90A-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
511 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v2, s0
512 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v3, s1
513 ; GFX90A-TGSPLIT-NEXT: flat_load_dword v2, v[2:3]
514 ; GFX90A-TGSPLIT-NEXT: v_mov_b32_e32 v1, s3
515 ; GFX90A-TGSPLIT-NEXT: v_add_co_u32_e32 v0, vcc, s2, v0
516 ; GFX90A-TGSPLIT-NEXT: v_addc_co_u32_e32 v1, vcc, 0, v1, vcc
517 ; GFX90A-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
518 ; GFX90A-TGSPLIT-NEXT: flat_store_dword v[0:1], v2 glc slc
519 ; GFX90A-TGSPLIT-NEXT: s_endpgm
521 ; GFX940-NOTTGSPLIT-LABEL: flat_nontemporal_store_1:
522 ; GFX940-NOTTGSPLIT: ; %bb.0: ; %entry
523 ; GFX940-NOTTGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
524 ; GFX940-NOTTGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
525 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v1, 0
526 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
527 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v2, s0
528 ; GFX940-NOTTGSPLIT-NEXT: v_mov_b32_e32 v3, s1
529 ; GFX940-NOTTGSPLIT-NEXT: flat_load_dword v2, v[2:3]
530 ; GFX940-NOTTGSPLIT-NEXT: v_lshl_add_u64 v[0:1], s[2:3], 0, v[0:1]
531 ; GFX940-NOTTGSPLIT-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
532 ; GFX940-NOTTGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 nt sc1
533 ; GFX940-NOTTGSPLIT-NEXT: s_endpgm
535 ; GFX940-TGSPLIT-LABEL: flat_nontemporal_store_1:
536 ; GFX940-TGSPLIT: ; %bb.0: ; %entry
537 ; GFX940-TGSPLIT-NEXT: s_load_dwordx4 s[0:3], s[0:1], 0x0
538 ; GFX940-TGSPLIT-NEXT: v_lshlrev_b32_e32 v0, 2, v0
539 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v1, 0
540 ; GFX940-TGSPLIT-NEXT: s_waitcnt lgkmcnt(0)
541 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v2, s0
542 ; GFX940-TGSPLIT-NEXT: v_mov_b32_e32 v3, s1
543 ; GFX940-TGSPLIT-NEXT: flat_load_dword v2, v[2:3]
544 ; GFX940-TGSPLIT-NEXT: v_lshl_add_u64 v[0:1], s[2:3], 0, v[0:1]
545 ; GFX940-TGSPLIT-NEXT: s_waitcnt vmcnt(0)
546 ; GFX940-TGSPLIT-NEXT: flat_store_dword v[0:1], v2 sc0 nt sc1
547 ; GFX940-TGSPLIT-NEXT: s_endpgm
549 ; GFX11-WGP-LABEL: flat_nontemporal_store_1:
550 ; GFX11-WGP: ; %bb.0: ; %entry
551 ; GFX11-WGP-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
552 ; GFX11-WGP-NEXT: s_waitcnt lgkmcnt(0)
553 ; GFX11-WGP-NEXT: v_dual_mov_b32 v1, s0 :: v_dual_lshlrev_b32 v0, 2, v0
554 ; GFX11-WGP-NEXT: v_mov_b32_e32 v2, s1
555 ; GFX11-WGP-NEXT: s_delay_alu instid0(VALU_DEP_2)
556 ; GFX11-WGP-NEXT: v_add_co_u32 v0, s0, s2, v0
557 ; GFX11-WGP-NEXT: flat_load_b32 v2, v[1:2]
558 ; GFX11-WGP-NEXT: v_add_co_ci_u32_e64 v1, null, s3, 0, s0
559 ; GFX11-WGP-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
560 ; GFX11-WGP-NEXT: flat_store_b32 v[0:1], v2 glc slc dlc
561 ; GFX11-WGP-NEXT: s_endpgm
563 ; GFX11-CU-LABEL: flat_nontemporal_store_1:
564 ; GFX11-CU: ; %bb.0: ; %entry
565 ; GFX11-CU-NEXT: s_load_b128 s[0:3], s[0:1], 0x0
566 ; GFX11-CU-NEXT: s_waitcnt lgkmcnt(0)
567 ; GFX11-CU-NEXT: v_dual_mov_b32 v1, s0 :: v_dual_lshlrev_b32 v0, 2, v0
568 ; GFX11-CU-NEXT: v_mov_b32_e32 v2, s1
569 ; GFX11-CU-NEXT: s_delay_alu instid0(VALU_DEP_2)
570 ; GFX11-CU-NEXT: v_add_co_u32 v0, s0, s2, v0
571 ; GFX11-CU-NEXT: flat_load_b32 v2, v[1:2]
572 ; GFX11-CU-NEXT: v_add_co_ci_u32_e64 v1, null, s3, 0, s0
573 ; GFX11-CU-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
574 ; GFX11-CU-NEXT: flat_store_b32 v[0:1], v2 glc slc dlc
575 ; GFX11-CU-NEXT: s_endpgm
578 %tid = call i32 @llvm.amdgcn.workitem.id.x()
579 %val = load i32, ptr %in, align 4
580 %out.gep = getelementptr inbounds i32, ptr %out, i32 %tid
581 store i32 %val, ptr %out.gep, !nontemporal !0
586 declare i32 @llvm.amdgcn.workitem.id.x()