[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / lower-buffer-fat-pointers-nontemporal-metadata.ll
bloba5f6c2fe5d264411b00c1c368b18043e9996d2ed
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=0 -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX9,GFX9-SDAG %s
3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=1 -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX9,GFX9-GISEL %s
4 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=0 -mcpu=gfx940 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX940,GFX940-SDAG %s
5 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=1 -mcpu=gfx940 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX940,GFX940-GISEL %s
6 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=0 -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10,GFX10-SDAG %s
7 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=1 -mcpu=gfx1010 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX10,GFX10-GISEL %s
8 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=0 -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11,GFX11-SDAG %s
9 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=1 -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX11,GFX11-GISEL %s
10 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=0 -mcpu=gfx1200 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX12,GFX12-SDAG %s
11 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel=1 -mcpu=gfx1200 -verify-machineinstrs < %s | FileCheck --check-prefixes=GFX12,GFX12-GISEL %s
13 define amdgpu_kernel void @buffer_nontemporal_load_store(ptr addrspace(7) %in, ptr addrspace(7) %out) {
14 ; GFX9-SDAG-LABEL: buffer_nontemporal_load_store:
15 ; GFX9-SDAG:       ; %bb.0: ; %entry
16 ; GFX9-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x0
17 ; GFX9-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x10
18 ; GFX9-SDAG-NEXT:    s_mov_b32 s10, 0
19 ; GFX9-SDAG-NEXT:    s_add_u32 s0, s0, s15
20 ; GFX9-SDAG-NEXT:    s_mov_b32 s15, s10
21 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
22 ; GFX9-SDAG-NEXT:    s_mov_b32 s14, s7
23 ; GFX9-SDAG-NEXT:    s_addc_u32 s1, s1, 0
24 ; GFX9-SDAG-NEXT:    s_mov_b32 s12, s5
25 ; GFX9-SDAG-NEXT:    s_or_b64 s[14:15], s[14:15], s[10:11]
26 ; GFX9-SDAG-NEXT:    s_mov_b32 s13, s6
27 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s4
28 ; GFX9-SDAG-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc slc
29 ; GFX9-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x30
30 ; GFX9-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x20
31 ; GFX9-SDAG-NEXT:    s_mov_b32 s9, s10
32 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
33 ; GFX9-SDAG-NEXT:    s_mov_b32 s8, s7
34 ; GFX9-SDAG-NEXT:    s_or_b64 s[10:11], s[8:9], s[10:11]
35 ; GFX9-SDAG-NEXT:    s_mov_b32 s8, s5
36 ; GFX9-SDAG-NEXT:    s_mov_b32 s9, s6
37 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s4
38 ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
39 ; GFX9-SDAG-NEXT:    buffer_store_dword v0, v1, s[8:11], 0 offen glc slc
40 ; GFX9-SDAG-NEXT:    s_endpgm
42 ; GFX9-GISEL-LABEL: buffer_nontemporal_load_store:
43 ; GFX9-GISEL:       ; %bb.0: ; %entry
44 ; GFX9-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0
45 ; GFX9-GISEL-NEXT:    s_load_dword s7, s[8:9], 0x10
46 ; GFX9-GISEL-NEXT:    s_mov_b32 s11, 0
47 ; GFX9-GISEL-NEXT:    s_mov_b32 s4, s11
48 ; GFX9-GISEL-NEXT:    s_mov_b32 s6, s11
49 ; GFX9-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
50 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s1
51 ; GFX9-GISEL-NEXT:    s_mov_b32 s5, s2
52 ; GFX9-GISEL-NEXT:    s_or_b64 s[4:5], s[10:11], s[4:5]
53 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s3
54 ; GFX9-GISEL-NEXT:    s_or_b64 s[6:7], s[10:11], s[6:7]
55 ; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s0
56 ; GFX9-GISEL-NEXT:    buffer_load_dword v0, v0, s[4:7], 0 offen glc slc
57 ; GFX9-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x20
58 ; GFX9-GISEL-NEXT:    s_load_dword s7, s[8:9], 0x30
59 ; GFX9-GISEL-NEXT:    s_mov_b32 s4, s11
60 ; GFX9-GISEL-NEXT:    s_mov_b32 s6, s11
61 ; GFX9-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
62 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s1
63 ; GFX9-GISEL-NEXT:    s_mov_b32 s5, s2
64 ; GFX9-GISEL-NEXT:    s_or_b64 s[4:5], s[10:11], s[4:5]
65 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s3
66 ; GFX9-GISEL-NEXT:    s_or_b64 s[6:7], s[10:11], s[6:7]
67 ; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s0
68 ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0)
69 ; GFX9-GISEL-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen glc slc
70 ; GFX9-GISEL-NEXT:    s_endpgm
72 ; GFX940-SDAG-LABEL: buffer_nontemporal_load_store:
73 ; GFX940-SDAG:       ; %bb.0: ; %entry
74 ; GFX940-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
75 ; GFX940-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x10
76 ; GFX940-SDAG-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x20
77 ; GFX940-SDAG-NEXT:    s_load_dword s7, s[4:5], 0x30
78 ; GFX940-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
79 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
80 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
81 ; GFX940-SDAG-NEXT:    scratch_store_dwordx4 off, v[0:3], off offset:32 sc0 sc1
82 ; GFX940-SDAG-NEXT:    scratch_load_dwordx2 v[10:11], off, off offset:40
83 ; GFX940-SDAG-NEXT:    scratch_load_dword v4, off, off offset:36
84 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[0:1], s[8:9]
85 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[10:11]
86 ; GFX940-SDAG-NEXT:    scratch_store_dwordx4 off, v[0:3], off sc0 sc1
87 ; GFX940-SDAG-NEXT:    scratch_load_dwordx2 v[12:13], off, off offset:8
88 ; GFX940-SDAG-NEXT:    s_nop 0
89 ; GFX940-SDAG-NEXT:    scratch_load_dword v0, off, off offset:4
90 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v7, s6
91 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v3, s7
92 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v9, s0
93 ; GFX940-SDAG-NEXT:    s_mov_b64 s[2:3], exec
94 ; GFX940-SDAG-NEXT:    s_waitcnt vmcnt(4)
95 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v5, v10
96 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v6, v11
97 ; GFX940-SDAG-NEXT:    s_waitcnt vmcnt(1)
98 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v1, v12
99 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v2, v13
100 ; GFX940-SDAG-NEXT:  .LBB0_1: ; =>This Inner Loop Header: Depth=1
101 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s4, v4
102 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s5, v5
103 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s6, v6
104 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s7, v7
105 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc, s[4:5], v[4:5]
106 ; GFX940-SDAG-NEXT:    s_nop 0
107 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e64 s[0:1], s[6:7], v[6:7]
108 ; GFX940-SDAG-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
109 ; GFX940-SDAG-NEXT:    s_and_saveexec_b64 s[0:1], s[0:1]
110 ; GFX940-SDAG-NEXT:    buffer_load_dword v8, v9, s[4:7], 0 offen nt
111 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
112 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr9
113 ; GFX940-SDAG-NEXT:    s_xor_b64 exec, exec, s[0:1]
114 ; GFX940-SDAG-NEXT:    s_cbranch_execnz .LBB0_1
115 ; GFX940-SDAG-NEXT:  ; %bb.2:
116 ; GFX940-SDAG-NEXT:    s_mov_b64 exec, s[2:3]
117 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v4, s8
118 ; GFX940-SDAG-NEXT:    s_mov_b64 s[0:1], exec
119 ; GFX940-SDAG-NEXT:    s_waitcnt vmcnt(0)
120 ; GFX940-SDAG-NEXT:  .LBB0_3: ; =>This Inner Loop Header: Depth=1
121 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
122 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
123 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
124 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s7, v3
125 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc, s[4:5], v[0:1]
126 ; GFX940-SDAG-NEXT:    s_nop 0
127 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e64 s[0:1], s[6:7], v[2:3]
128 ; GFX940-SDAG-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
129 ; GFX940-SDAG-NEXT:    s_and_saveexec_b64 s[0:1], s[0:1]
130 ; GFX940-SDAG-NEXT:    buffer_store_dword v8, v4, s[4:7], 0 offen sc0 nt sc1
131 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
132 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr8
133 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr4
134 ; GFX940-SDAG-NEXT:    s_xor_b64 exec, exec, s[0:1]
135 ; GFX940-SDAG-NEXT:    s_cbranch_execnz .LBB0_3
136 ; GFX940-SDAG-NEXT:  ; %bb.4:
137 ; GFX940-SDAG-NEXT:    s_endpgm
139 ; GFX940-GISEL-LABEL: buffer_nontemporal_load_store:
140 ; GFX940-GISEL:       ; %bb.0: ; %entry
141 ; GFX940-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
142 ; GFX940-GISEL-NEXT:    s_load_dword s11, s[4:5], 0x10
143 ; GFX940-GISEL-NEXT:    s_mov_b32 s7, 0
144 ; GFX940-GISEL-NEXT:    s_mov_b32 s8, s7
145 ; GFX940-GISEL-NEXT:    s_mov_b32 s10, s7
146 ; GFX940-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
147 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s1
148 ; GFX940-GISEL-NEXT:    s_mov_b32 s9, s2
149 ; GFX940-GISEL-NEXT:    s_or_b64 s[8:9], s[6:7], s[8:9]
150 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s3
151 ; GFX940-GISEL-NEXT:    s_or_b64 s[10:11], s[6:7], s[10:11]
152 ; GFX940-GISEL-NEXT:    v_mov_b32_e32 v0, s0
153 ; GFX940-GISEL-NEXT:    buffer_load_dword v0, v0, s[8:11], 0 offen nt
154 ; GFX940-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x20
155 ; GFX940-GISEL-NEXT:    s_load_dword s9, s[4:5], 0x30
156 ; GFX940-GISEL-NEXT:    s_mov_b32 s4, s7
157 ; GFX940-GISEL-NEXT:    s_mov_b32 s8, s7
158 ; GFX940-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
159 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s1
160 ; GFX940-GISEL-NEXT:    s_mov_b32 s5, s2
161 ; GFX940-GISEL-NEXT:    s_or_b64 s[4:5], s[6:7], s[4:5]
162 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s3
163 ; GFX940-GISEL-NEXT:    s_or_b64 s[6:7], s[6:7], s[8:9]
164 ; GFX940-GISEL-NEXT:    v_mov_b32_e32 v1, s0
165 ; GFX940-GISEL-NEXT:    s_waitcnt vmcnt(0)
166 ; GFX940-GISEL-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen sc0 nt sc1
167 ; GFX940-GISEL-NEXT:    s_endpgm
169 ; GFX10-SDAG-LABEL: buffer_nontemporal_load_store:
170 ; GFX10-SDAG:       ; %bb.0: ; %entry
171 ; GFX10-SDAG-NEXT:    s_clause 0x1
172 ; GFX10-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x0
173 ; GFX10-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x10
174 ; GFX10-SDAG-NEXT:    s_mov_b32 s10, 0
175 ; GFX10-SDAG-NEXT:    s_add_u32 s0, s0, s15
176 ; GFX10-SDAG-NEXT:    s_mov_b32 s13, s10
177 ; GFX10-SDAG-NEXT:    s_addc_u32 s1, s1, 0
178 ; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
179 ; GFX10-SDAG-NEXT:    v_mov_b32_e32 v0, s4
180 ; GFX10-SDAG-NEXT:    s_mov_b32 s12, s7
181 ; GFX10-SDAG-NEXT:    s_or_b64 s[14:15], s[12:13], s[10:11]
182 ; GFX10-SDAG-NEXT:    s_mov_b32 s12, s5
183 ; GFX10-SDAG-NEXT:    s_mov_b32 s13, s6
184 ; GFX10-SDAG-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen slc
185 ; GFX10-SDAG-NEXT:    s_clause 0x1
186 ; GFX10-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x30
187 ; GFX10-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x20
188 ; GFX10-SDAG-NEXT:    s_mov_b32 s9, s10
189 ; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
190 ; GFX10-SDAG-NEXT:    v_mov_b32_e32 v1, s4
191 ; GFX10-SDAG-NEXT:    s_mov_b32 s8, s7
192 ; GFX10-SDAG-NEXT:    s_or_b64 s[10:11], s[8:9], s[10:11]
193 ; GFX10-SDAG-NEXT:    s_mov_b32 s8, s5
194 ; GFX10-SDAG-NEXT:    s_mov_b32 s9, s6
195 ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0)
196 ; GFX10-SDAG-NEXT:    buffer_store_dword v0, v1, s[8:11], 0 offen glc slc
197 ; GFX10-SDAG-NEXT:    s_endpgm
199 ; GFX10-GISEL-LABEL: buffer_nontemporal_load_store:
200 ; GFX10-GISEL:       ; %bb.0: ; %entry
201 ; GFX10-GISEL-NEXT:    s_clause 0x1
202 ; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0
203 ; GFX10-GISEL-NEXT:    s_load_dword s5, s[8:9], 0x10
204 ; GFX10-GISEL-NEXT:    s_mov_b32 s7, 0
205 ; GFX10-GISEL-NEXT:    s_mov_b32 s10, s7
206 ; GFX10-GISEL-NEXT:    s_mov_b32 s4, s7
207 ; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
208 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s1
209 ; GFX10-GISEL-NEXT:    s_mov_b32 s11, s2
210 ; GFX10-GISEL-NEXT:    v_mov_b32_e32 v0, s0
211 ; GFX10-GISEL-NEXT:    s_or_b64 s[0:1], s[6:7], s[10:11]
212 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s3
213 ; GFX10-GISEL-NEXT:    s_or_b64 s[2:3], s[6:7], s[4:5]
214 ; GFX10-GISEL-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen slc
215 ; GFX10-GISEL-NEXT:    s_clause 0x1
216 ; GFX10-GISEL-NEXT:    s_waitcnt_depctr 0xffe3
217 ; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x20
218 ; GFX10-GISEL-NEXT:    s_load_dword s11, s[8:9], 0x30
219 ; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
220 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s1
221 ; GFX10-GISEL-NEXT:    s_mov_b32 s5, s2
222 ; GFX10-GISEL-NEXT:    v_mov_b32_e32 v1, s0
223 ; GFX10-GISEL-NEXT:    s_or_b64 s[4:5], s[6:7], s[4:5]
224 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s3
225 ; GFX10-GISEL-NEXT:    s_or_b64 s[6:7], s[6:7], s[10:11]
226 ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0)
227 ; GFX10-GISEL-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen glc slc
228 ; GFX10-GISEL-NEXT:    s_endpgm
230 ; GFX11-SDAG-LABEL: buffer_nontemporal_load_store:
231 ; GFX11-SDAG:       ; %bb.0: ; %entry
232 ; GFX11-SDAG-NEXT:    s_clause 0x2
233 ; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
234 ; GFX11-SDAG-NEXT:    s_load_b128 s[8:11], s[4:5], 0x20
235 ; GFX11-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x10
236 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
237 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
238 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
239 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v7, s8 :: v_dual_mov_b32 v8, s9
240 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v9, s10 :: v_dual_mov_b32 v10, s11
241 ; GFX11-SDAG-NEXT:    scratch_store_b128 off, v[0:3], off offset:32
242 ; GFX11-SDAG-NEXT:    s_clause 0x1
243 ; GFX11-SDAG-NEXT:    scratch_load_b64 v[5:6], off, off offset:40
244 ; GFX11-SDAG-NEXT:    scratch_load_b32 v4, off, off offset:36
245 ; GFX11-SDAG-NEXT:    s_load_b32 s1, s[4:5], 0x30
246 ; GFX11-SDAG-NEXT:    scratch_store_b128 off, v[7:10], off
247 ; GFX11-SDAG-NEXT:    s_clause 0x1
248 ; GFX11-SDAG-NEXT:    scratch_load_b64 v[1:2], off, off offset:8
249 ; GFX11-SDAG-NEXT:    scratch_load_b32 v0, off, off offset:4
250 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v7, s6
251 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v9, s0
252 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
253 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v3, s1
254 ; GFX11-SDAG-NEXT:    s_mov_b32 s1, exec_lo
255 ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)
256 ; GFX11-SDAG-NEXT:  .LBB0_1: ; =>This Inner Loop Header: Depth=1
257 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s4, v4
258 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s5, v5
259 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v6
260 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s7, v7
261 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
262 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[4:5]
263 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[6:7]
264 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
265 ; GFX11-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
266 ; GFX11-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
267 ; GFX11-SDAG-NEXT:    buffer_load_b32 v8, v9, s[4:7], 0 offen slc dlc
268 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
269 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr9
270 ; GFX11-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
271 ; GFX11-SDAG-NEXT:    s_cbranch_execnz .LBB0_1
272 ; GFX11-SDAG-NEXT:  ; %bb.2:
273 ; GFX11-SDAG-NEXT:    s_mov_b32 exec_lo, s1
274 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v4, s8
275 ; GFX11-SDAG-NEXT:    s_mov_b32 s0, exec_lo
276 ; GFX11-SDAG-NEXT:  .LBB0_3: ; =>This Inner Loop Header: Depth=1
277 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
278 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
279 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
280 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s7, v3
281 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
282 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]
283 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]
284 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
285 ; GFX11-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
286 ; GFX11-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
287 ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)
288 ; GFX11-SDAG-NEXT:    buffer_store_b32 v8, v4, s[4:7], 0 offen glc slc dlc
289 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
290 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr8
291 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr4
292 ; GFX11-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
293 ; GFX11-SDAG-NEXT:    s_cbranch_execnz .LBB0_3
294 ; GFX11-SDAG-NEXT:  ; %bb.4:
295 ; GFX11-SDAG-NEXT:    s_endpgm
297 ; GFX11-GISEL-LABEL: buffer_nontemporal_load_store:
298 ; GFX11-GISEL:       ; %bb.0: ; %entry
299 ; GFX11-GISEL-NEXT:    s_clause 0x1
300 ; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
301 ; GFX11-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x10
302 ; GFX11-GISEL-NEXT:    s_mov_b32 s9, 0
303 ; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
304 ; GFX11-GISEL-NEXT:    s_mov_b32 s10, s9
305 ; GFX11-GISEL-NEXT:    s_mov_b32 s6, s9
306 ; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
307 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s1
308 ; GFX11-GISEL-NEXT:    s_mov_b32 s11, s2
309 ; GFX11-GISEL-NEXT:    v_mov_b32_e32 v0, s0
310 ; GFX11-GISEL-NEXT:    s_or_b64 s[0:1], s[8:9], s[10:11]
311 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s3
312 ; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
313 ; GFX11-GISEL-NEXT:    s_or_b64 s[2:3], s[8:9], s[6:7]
314 ; GFX11-GISEL-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen slc dlc
315 ; GFX11-GISEL-NEXT:    s_clause 0x1
316 ; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x20
317 ; GFX11-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x30
318 ; GFX11-GISEL-NEXT:    s_mov_b32 s4, s9
319 ; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
320 ; GFX11-GISEL-NEXT:    v_mov_b32_e32 v1, s0
321 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s1
322 ; GFX11-GISEL-NEXT:    s_mov_b32 s5, s2
323 ; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
324 ; GFX11-GISEL-NEXT:    s_or_b64 s[4:5], s[8:9], s[4:5]
325 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s3
326 ; GFX11-GISEL-NEXT:    s_or_b64 s[6:7], s[8:9], s[6:7]
327 ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0)
328 ; GFX11-GISEL-NEXT:    buffer_store_b32 v0, v1, s[4:7], 0 offen glc slc dlc
329 ; GFX11-GISEL-NEXT:    s_endpgm
331 ; GFX12-SDAG-LABEL: buffer_nontemporal_load_store:
332 ; GFX12-SDAG:       ; %bb.0: ; %entry
333 ; GFX12-SDAG-NEXT:    s_clause 0x2
334 ; GFX12-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
335 ; GFX12-SDAG-NEXT:    s_load_b128 s[8:11], s[4:5], 0x20
336 ; GFX12-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x10
337 ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0
338 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
339 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
340 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v7, s8 :: v_dual_mov_b32 v8, s9
341 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v9, s10 :: v_dual_mov_b32 v10, s11
342 ; GFX12-SDAG-NEXT:    scratch_store_b128 off, v[0:3], off offset:32
343 ; GFX12-SDAG-NEXT:    s_clause 0x1
344 ; GFX12-SDAG-NEXT:    scratch_load_b64 v[5:6], off, off offset:40
345 ; GFX12-SDAG-NEXT:    scratch_load_b32 v4, off, off offset:36
346 ; GFX12-SDAG-NEXT:    s_load_b32 s1, s[4:5], 0x30
347 ; GFX12-SDAG-NEXT:    scratch_store_b128 off, v[7:10], off
348 ; GFX12-SDAG-NEXT:    s_clause 0x1
349 ; GFX12-SDAG-NEXT:    scratch_load_b64 v[1:2], off, off offset:8
350 ; GFX12-SDAG-NEXT:    scratch_load_b32 v0, off, off offset:4
351 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v7, s6
352 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v9, s0
353 ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0
354 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v3, s1
355 ; GFX12-SDAG-NEXT:    s_mov_b32 s1, exec_lo
356 ; GFX12-SDAG-NEXT:  .LBB0_1: ; =>This Inner Loop Header: Depth=1
357 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x2
358 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s4, v4
359 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s5, v5
360 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s6, v6
361 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s7, v7
362 ; GFX12-SDAG-NEXT:    s_wait_alu 0xf1ff
363 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
364 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[4:5]
365 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[6:7]
366 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
367 ; GFX12-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
368 ; GFX12-SDAG-NEXT:    s_wait_alu 0xfffe
369 ; GFX12-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
370 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0
371 ; GFX12-SDAG-NEXT:    buffer_load_b32 v8, v9, s[4:7], null offen th:TH_LOAD_NT
372 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
373 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr9
374 ; GFX12-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
375 ; GFX12-SDAG-NEXT:    s_cbranch_execnz .LBB0_1
376 ; GFX12-SDAG-NEXT:  ; %bb.2:
377 ; GFX12-SDAG-NEXT:    s_mov_b32 exec_lo, s1
378 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v4, s8
379 ; GFX12-SDAG-NEXT:    s_mov_b32 s0, exec_lo
380 ; GFX12-SDAG-NEXT:  .LBB0_3: ; =>This Inner Loop Header: Depth=1
381 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x1
382 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
383 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
384 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
385 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s7, v3
386 ; GFX12-SDAG-NEXT:    s_wait_alu 0xf1ff
387 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
388 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]
389 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]
390 ; GFX12-SDAG-NEXT:    s_wait_alu 0xfffe
391 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
392 ; GFX12-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
393 ; GFX12-SDAG-NEXT:    s_wait_alu 0xfffe
394 ; GFX12-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
395 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0
396 ; GFX12-SDAG-NEXT:    buffer_store_b32 v8, v4, s[4:7], null offen th:TH_STORE_NT
397 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
398 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr8
399 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr4
400 ; GFX12-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
401 ; GFX12-SDAG-NEXT:    s_cbranch_execnz .LBB0_3
402 ; GFX12-SDAG-NEXT:  ; %bb.4:
403 ; GFX12-SDAG-NEXT:    s_endpgm
405 ; GFX12-GISEL-LABEL: buffer_nontemporal_load_store:
406 ; GFX12-GISEL:       ; %bb.0: ; %entry
407 ; GFX12-GISEL-NEXT:    s_clause 0x1
408 ; GFX12-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
409 ; GFX12-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x10
410 ; GFX12-GISEL-NEXT:    s_mov_b32 s9, 0
411 ; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
412 ; GFX12-GISEL-NEXT:    s_mov_b32 s10, s9
413 ; GFX12-GISEL-NEXT:    s_mov_b32 s6, s9
414 ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0
415 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s1
416 ; GFX12-GISEL-NEXT:    s_mov_b32 s11, s2
417 ; GFX12-GISEL-NEXT:    v_mov_b32_e32 v0, s0
418 ; GFX12-GISEL-NEXT:    s_or_b64 s[0:1], s[8:9], s[10:11]
419 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s3
420 ; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
421 ; GFX12-GISEL-NEXT:    s_or_b64 s[2:3], s[8:9], s[6:7]
422 ; GFX12-GISEL-NEXT:    buffer_load_b32 v0, v0, s[0:3], null offen th:TH_LOAD_NT
423 ; GFX12-GISEL-NEXT:    s_clause 0x1
424 ; GFX12-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x20
425 ; GFX12-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x30
426 ; GFX12-GISEL-NEXT:    s_mov_b32 s4, s9
427 ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0
428 ; GFX12-GISEL-NEXT:    v_mov_b32_e32 v1, s0
429 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s1
430 ; GFX12-GISEL-NEXT:    s_mov_b32 s5, s2
431 ; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
432 ; GFX12-GISEL-NEXT:    s_or_b64 s[4:5], s[8:9], s[4:5]
433 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s3
434 ; GFX12-GISEL-NEXT:    s_or_b64 s[6:7], s[8:9], s[6:7]
435 ; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x0
436 ; GFX12-GISEL-NEXT:    buffer_store_b32 v0, v1, s[4:7], null offen th:TH_STORE_NT
437 ; GFX12-GISEL-NEXT:    s_endpgm
438 entry:
439   %val = load i32, ptr addrspace(7) %in, !nontemporal !0
440   store i32 %val, ptr addrspace(7) %out, !nontemporal !0
441   ret void
444 define amdgpu_kernel void @buffer_nontemporal_and_volatile_load_store(ptr addrspace(7) %in, ptr addrspace(7) %out) {
445 ; GFX9-SDAG-LABEL: buffer_nontemporal_and_volatile_load_store:
446 ; GFX9-SDAG:       ; %bb.0: ; %entry
447 ; GFX9-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x0
448 ; GFX9-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x10
449 ; GFX9-SDAG-NEXT:    s_mov_b32 s10, 0
450 ; GFX9-SDAG-NEXT:    s_add_u32 s0, s0, s15
451 ; GFX9-SDAG-NEXT:    s_mov_b32 s15, s10
452 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
453 ; GFX9-SDAG-NEXT:    s_mov_b32 s14, s7
454 ; GFX9-SDAG-NEXT:    s_addc_u32 s1, s1, 0
455 ; GFX9-SDAG-NEXT:    s_mov_b32 s12, s5
456 ; GFX9-SDAG-NEXT:    s_or_b64 s[14:15], s[14:15], s[10:11]
457 ; GFX9-SDAG-NEXT:    s_mov_b32 s13, s6
458 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v0, s4
459 ; GFX9-SDAG-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc
460 ; GFX9-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x30
461 ; GFX9-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x20
462 ; GFX9-SDAG-NEXT:    s_mov_b32 s9, s10
463 ; GFX9-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
464 ; GFX9-SDAG-NEXT:    s_mov_b32 s8, s7
465 ; GFX9-SDAG-NEXT:    s_or_b64 s[10:11], s[8:9], s[10:11]
466 ; GFX9-SDAG-NEXT:    s_mov_b32 s8, s5
467 ; GFX9-SDAG-NEXT:    s_mov_b32 s9, s6
468 ; GFX9-SDAG-NEXT:    v_mov_b32_e32 v1, s4
469 ; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
470 ; GFX9-SDAG-NEXT:    buffer_store_dword v0, v1, s[8:11], 0 offen
471 ; GFX9-SDAG-NEXT:    s_endpgm
473 ; GFX9-GISEL-LABEL: buffer_nontemporal_and_volatile_load_store:
474 ; GFX9-GISEL:       ; %bb.0: ; %entry
475 ; GFX9-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0
476 ; GFX9-GISEL-NEXT:    s_load_dword s7, s[8:9], 0x10
477 ; GFX9-GISEL-NEXT:    s_mov_b32 s11, 0
478 ; GFX9-GISEL-NEXT:    s_mov_b32 s4, s11
479 ; GFX9-GISEL-NEXT:    s_mov_b32 s6, s11
480 ; GFX9-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
481 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s1
482 ; GFX9-GISEL-NEXT:    s_mov_b32 s5, s2
483 ; GFX9-GISEL-NEXT:    s_or_b64 s[4:5], s[10:11], s[4:5]
484 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s3
485 ; GFX9-GISEL-NEXT:    s_or_b64 s[6:7], s[10:11], s[6:7]
486 ; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, s0
487 ; GFX9-GISEL-NEXT:    buffer_load_dword v0, v0, s[4:7], 0 offen glc
488 ; GFX9-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x20
489 ; GFX9-GISEL-NEXT:    s_load_dword s7, s[8:9], 0x30
490 ; GFX9-GISEL-NEXT:    s_mov_b32 s4, s11
491 ; GFX9-GISEL-NEXT:    s_mov_b32 s6, s11
492 ; GFX9-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
493 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s1
494 ; GFX9-GISEL-NEXT:    s_mov_b32 s5, s2
495 ; GFX9-GISEL-NEXT:    s_or_b64 s[4:5], s[10:11], s[4:5]
496 ; GFX9-GISEL-NEXT:    s_mov_b32 s10, s3
497 ; GFX9-GISEL-NEXT:    s_or_b64 s[6:7], s[10:11], s[6:7]
498 ; GFX9-GISEL-NEXT:    v_mov_b32_e32 v1, s0
499 ; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0)
500 ; GFX9-GISEL-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen
501 ; GFX9-GISEL-NEXT:    s_endpgm
503 ; GFX940-SDAG-LABEL: buffer_nontemporal_and_volatile_load_store:
504 ; GFX940-SDAG:       ; %bb.0: ; %entry
505 ; GFX940-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
506 ; GFX940-SDAG-NEXT:    s_load_dword s6, s[4:5], 0x10
507 ; GFX940-SDAG-NEXT:    s_load_dwordx4 s[8:11], s[4:5], 0x20
508 ; GFX940-SDAG-NEXT:    s_load_dword s7, s[4:5], 0x30
509 ; GFX940-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
510 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[0:1], s[0:1]
511 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[2:3]
512 ; GFX940-SDAG-NEXT:    scratch_store_dwordx4 off, v[0:3], off offset:32 sc0 sc1
513 ; GFX940-SDAG-NEXT:    scratch_load_dwordx2 v[10:11], off, off offset:40
514 ; GFX940-SDAG-NEXT:    scratch_load_dword v4, off, off offset:36
515 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[0:1], s[8:9]
516 ; GFX940-SDAG-NEXT:    v_mov_b64_e32 v[2:3], s[10:11]
517 ; GFX940-SDAG-NEXT:    scratch_store_dwordx4 off, v[0:3], off sc0 sc1
518 ; GFX940-SDAG-NEXT:    scratch_load_dwordx2 v[12:13], off, off offset:8
519 ; GFX940-SDAG-NEXT:    s_nop 0
520 ; GFX940-SDAG-NEXT:    scratch_load_dword v0, off, off offset:4
521 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v7, s6
522 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v3, s7
523 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v9, s0
524 ; GFX940-SDAG-NEXT:    s_mov_b64 s[2:3], exec
525 ; GFX940-SDAG-NEXT:    s_waitcnt vmcnt(4)
526 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v5, v10
527 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v6, v11
528 ; GFX940-SDAG-NEXT:    s_waitcnt vmcnt(1)
529 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v1, v12
530 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v2, v13
531 ; GFX940-SDAG-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1
532 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s4, v4
533 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s5, v5
534 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s6, v6
535 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s7, v7
536 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc, s[4:5], v[4:5]
537 ; GFX940-SDAG-NEXT:    s_nop 0
538 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e64 s[0:1], s[6:7], v[6:7]
539 ; GFX940-SDAG-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
540 ; GFX940-SDAG-NEXT:    s_and_saveexec_b64 s[0:1], s[0:1]
541 ; GFX940-SDAG-NEXT:    buffer_load_dword v8, v9, s[4:7], 0 offen sc0 sc1
542 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
543 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr9
544 ; GFX940-SDAG-NEXT:    s_xor_b64 exec, exec, s[0:1]
545 ; GFX940-SDAG-NEXT:    s_cbranch_execnz .LBB1_1
546 ; GFX940-SDAG-NEXT:  ; %bb.2:
547 ; GFX940-SDAG-NEXT:    s_mov_b64 exec, s[2:3]
548 ; GFX940-SDAG-NEXT:    v_mov_b32_e32 v4, s8
549 ; GFX940-SDAG-NEXT:    s_mov_b64 s[0:1], exec
550 ; GFX940-SDAG-NEXT:    s_waitcnt vmcnt(0)
551 ; GFX940-SDAG-NEXT:  .LBB1_3: ; =>This Inner Loop Header: Depth=1
552 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
553 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
554 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
555 ; GFX940-SDAG-NEXT:    v_readfirstlane_b32 s7, v3
556 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc, s[4:5], v[0:1]
557 ; GFX940-SDAG-NEXT:    s_nop 0
558 ; GFX940-SDAG-NEXT:    v_cmp_eq_u64_e64 s[0:1], s[6:7], v[2:3]
559 ; GFX940-SDAG-NEXT:    s_and_b64 s[0:1], vcc, s[0:1]
560 ; GFX940-SDAG-NEXT:    s_and_saveexec_b64 s[0:1], s[0:1]
561 ; GFX940-SDAG-NEXT:    buffer_store_dword v8, v4, s[4:7], 0 offen sc0 sc1
562 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
563 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr8
564 ; GFX940-SDAG-NEXT:    ; implicit-def: $vgpr4
565 ; GFX940-SDAG-NEXT:    s_xor_b64 exec, exec, s[0:1]
566 ; GFX940-SDAG-NEXT:    s_cbranch_execnz .LBB1_3
567 ; GFX940-SDAG-NEXT:  ; %bb.4:
568 ; GFX940-SDAG-NEXT:    s_endpgm
570 ; GFX940-GISEL-LABEL: buffer_nontemporal_and_volatile_load_store:
571 ; GFX940-GISEL:       ; %bb.0: ; %entry
572 ; GFX940-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x0
573 ; GFX940-GISEL-NEXT:    s_load_dword s11, s[4:5], 0x10
574 ; GFX940-GISEL-NEXT:    s_mov_b32 s7, 0
575 ; GFX940-GISEL-NEXT:    s_mov_b32 s8, s7
576 ; GFX940-GISEL-NEXT:    s_mov_b32 s10, s7
577 ; GFX940-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
578 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s1
579 ; GFX940-GISEL-NEXT:    s_mov_b32 s9, s2
580 ; GFX940-GISEL-NEXT:    s_or_b64 s[8:9], s[6:7], s[8:9]
581 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s3
582 ; GFX940-GISEL-NEXT:    s_or_b64 s[10:11], s[6:7], s[10:11]
583 ; GFX940-GISEL-NEXT:    v_mov_b32_e32 v0, s0
584 ; GFX940-GISEL-NEXT:    buffer_load_dword v0, v0, s[8:11], 0 offen sc0 sc1
585 ; GFX940-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x20
586 ; GFX940-GISEL-NEXT:    s_load_dword s9, s[4:5], 0x30
587 ; GFX940-GISEL-NEXT:    s_mov_b32 s4, s7
588 ; GFX940-GISEL-NEXT:    s_mov_b32 s8, s7
589 ; GFX940-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
590 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s1
591 ; GFX940-GISEL-NEXT:    s_mov_b32 s5, s2
592 ; GFX940-GISEL-NEXT:    s_or_b64 s[4:5], s[6:7], s[4:5]
593 ; GFX940-GISEL-NEXT:    s_mov_b32 s6, s3
594 ; GFX940-GISEL-NEXT:    s_or_b64 s[6:7], s[6:7], s[8:9]
595 ; GFX940-GISEL-NEXT:    v_mov_b32_e32 v1, s0
596 ; GFX940-GISEL-NEXT:    s_waitcnt vmcnt(0)
597 ; GFX940-GISEL-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen sc0 sc1
598 ; GFX940-GISEL-NEXT:    s_endpgm
600 ; GFX10-SDAG-LABEL: buffer_nontemporal_and_volatile_load_store:
601 ; GFX10-SDAG:       ; %bb.0: ; %entry
602 ; GFX10-SDAG-NEXT:    s_clause 0x1
603 ; GFX10-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x0
604 ; GFX10-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x10
605 ; GFX10-SDAG-NEXT:    s_mov_b32 s10, 0
606 ; GFX10-SDAG-NEXT:    s_add_u32 s0, s0, s15
607 ; GFX10-SDAG-NEXT:    s_mov_b32 s13, s10
608 ; GFX10-SDAG-NEXT:    s_addc_u32 s1, s1, 0
609 ; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
610 ; GFX10-SDAG-NEXT:    v_mov_b32_e32 v0, s4
611 ; GFX10-SDAG-NEXT:    s_mov_b32 s12, s7
612 ; GFX10-SDAG-NEXT:    s_or_b64 s[14:15], s[12:13], s[10:11]
613 ; GFX10-SDAG-NEXT:    s_mov_b32 s12, s5
614 ; GFX10-SDAG-NEXT:    s_mov_b32 s13, s6
615 ; GFX10-SDAG-NEXT:    buffer_load_dword v0, v0, s[12:15], 0 offen glc dlc
616 ; GFX10-SDAG-NEXT:    s_clause 0x1
617 ; GFX10-SDAG-NEXT:    s_load_dword s11, s[8:9], 0x30
618 ; GFX10-SDAG-NEXT:    s_load_dwordx4 s[4:7], s[8:9], 0x20
619 ; GFX10-SDAG-NEXT:    s_mov_b32 s9, s10
620 ; GFX10-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
621 ; GFX10-SDAG-NEXT:    v_mov_b32_e32 v1, s4
622 ; GFX10-SDAG-NEXT:    s_mov_b32 s8, s7
623 ; GFX10-SDAG-NEXT:    s_or_b64 s[10:11], s[8:9], s[10:11]
624 ; GFX10-SDAG-NEXT:    s_mov_b32 s8, s5
625 ; GFX10-SDAG-NEXT:    s_mov_b32 s9, s6
626 ; GFX10-SDAG-NEXT:    s_waitcnt vmcnt(0)
627 ; GFX10-SDAG-NEXT:    buffer_store_dword v0, v1, s[8:11], 0 offen
628 ; GFX10-SDAG-NEXT:    s_endpgm
630 ; GFX10-GISEL-LABEL: buffer_nontemporal_and_volatile_load_store:
631 ; GFX10-GISEL:       ; %bb.0: ; %entry
632 ; GFX10-GISEL-NEXT:    s_clause 0x1
633 ; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x0
634 ; GFX10-GISEL-NEXT:    s_load_dword s5, s[8:9], 0x10
635 ; GFX10-GISEL-NEXT:    s_mov_b32 s7, 0
636 ; GFX10-GISEL-NEXT:    s_mov_b32 s10, s7
637 ; GFX10-GISEL-NEXT:    s_mov_b32 s4, s7
638 ; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
639 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s1
640 ; GFX10-GISEL-NEXT:    s_mov_b32 s11, s2
641 ; GFX10-GISEL-NEXT:    v_mov_b32_e32 v0, s0
642 ; GFX10-GISEL-NEXT:    s_or_b64 s[0:1], s[6:7], s[10:11]
643 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s3
644 ; GFX10-GISEL-NEXT:    s_or_b64 s[2:3], s[6:7], s[4:5]
645 ; GFX10-GISEL-NEXT:    buffer_load_dword v0, v0, s[0:3], 0 offen glc dlc
646 ; GFX10-GISEL-NEXT:    s_clause 0x1
647 ; GFX10-GISEL-NEXT:    s_waitcnt_depctr 0xffe3
648 ; GFX10-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[8:9], 0x20
649 ; GFX10-GISEL-NEXT:    s_load_dword s11, s[8:9], 0x30
650 ; GFX10-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
651 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s1
652 ; GFX10-GISEL-NEXT:    s_mov_b32 s5, s2
653 ; GFX10-GISEL-NEXT:    v_mov_b32_e32 v1, s0
654 ; GFX10-GISEL-NEXT:    s_or_b64 s[4:5], s[6:7], s[4:5]
655 ; GFX10-GISEL-NEXT:    s_mov_b32 s6, s3
656 ; GFX10-GISEL-NEXT:    s_or_b64 s[6:7], s[6:7], s[10:11]
657 ; GFX10-GISEL-NEXT:    s_waitcnt vmcnt(0)
658 ; GFX10-GISEL-NEXT:    buffer_store_dword v0, v1, s[4:7], 0 offen
659 ; GFX10-GISEL-NEXT:    s_endpgm
661 ; GFX11-SDAG-LABEL: buffer_nontemporal_and_volatile_load_store:
662 ; GFX11-SDAG:       ; %bb.0: ; %entry
663 ; GFX11-SDAG-NEXT:    s_clause 0x2
664 ; GFX11-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
665 ; GFX11-SDAG-NEXT:    s_load_b128 s[8:11], s[4:5], 0x20
666 ; GFX11-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x10
667 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
668 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
669 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
670 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v7, s8 :: v_dual_mov_b32 v8, s9
671 ; GFX11-SDAG-NEXT:    v_dual_mov_b32 v9, s10 :: v_dual_mov_b32 v10, s11
672 ; GFX11-SDAG-NEXT:    scratch_store_b128 off, v[0:3], off offset:32
673 ; GFX11-SDAG-NEXT:    s_clause 0x1
674 ; GFX11-SDAG-NEXT:    scratch_load_b64 v[5:6], off, off offset:40
675 ; GFX11-SDAG-NEXT:    scratch_load_b32 v4, off, off offset:36
676 ; GFX11-SDAG-NEXT:    s_load_b32 s1, s[4:5], 0x30
677 ; GFX11-SDAG-NEXT:    scratch_store_b128 off, v[7:10], off
678 ; GFX11-SDAG-NEXT:    s_clause 0x1
679 ; GFX11-SDAG-NEXT:    scratch_load_b64 v[1:2], off, off offset:8
680 ; GFX11-SDAG-NEXT:    scratch_load_b32 v0, off, off offset:4
681 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v7, s6
682 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v9, s0
683 ; GFX11-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
684 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v3, s1
685 ; GFX11-SDAG-NEXT:    s_mov_b32 s1, exec_lo
686 ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)
687 ; GFX11-SDAG-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1
688 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s4, v4
689 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s5, v5
690 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v6
691 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s7, v7
692 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
693 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[4:5]
694 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[6:7]
695 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
696 ; GFX11-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
697 ; GFX11-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
698 ; GFX11-SDAG-NEXT:    buffer_load_b32 v8, v9, s[4:7], 0 offen glc dlc
699 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
700 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr9
701 ; GFX11-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
702 ; GFX11-SDAG-NEXT:    s_cbranch_execnz .LBB1_1
703 ; GFX11-SDAG-NEXT:  ; %bb.2:
704 ; GFX11-SDAG-NEXT:    s_mov_b32 exec_lo, s1
705 ; GFX11-SDAG-NEXT:    v_mov_b32_e32 v4, s8
706 ; GFX11-SDAG-NEXT:    s_mov_b32 s0, exec_lo
707 ; GFX11-SDAG-NEXT:  .LBB1_3: ; =>This Inner Loop Header: Depth=1
708 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
709 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
710 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
711 ; GFX11-SDAG-NEXT:    v_readfirstlane_b32 s7, v3
712 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
713 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]
714 ; GFX11-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]
715 ; GFX11-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)
716 ; GFX11-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
717 ; GFX11-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
718 ; GFX11-SDAG-NEXT:    s_waitcnt vmcnt(0)
719 ; GFX11-SDAG-NEXT:    buffer_store_b32 v8, v4, s[4:7], 0 offen dlc
720 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
721 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr8
722 ; GFX11-SDAG-NEXT:    ; implicit-def: $vgpr4
723 ; GFX11-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
724 ; GFX11-SDAG-NEXT:    s_cbranch_execnz .LBB1_3
725 ; GFX11-SDAG-NEXT:  ; %bb.4:
726 ; GFX11-SDAG-NEXT:    s_endpgm
728 ; GFX11-GISEL-LABEL: buffer_nontemporal_and_volatile_load_store:
729 ; GFX11-GISEL:       ; %bb.0: ; %entry
730 ; GFX11-GISEL-NEXT:    s_clause 0x1
731 ; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
732 ; GFX11-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x10
733 ; GFX11-GISEL-NEXT:    s_mov_b32 s9, 0
734 ; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
735 ; GFX11-GISEL-NEXT:    s_mov_b32 s10, s9
736 ; GFX11-GISEL-NEXT:    s_mov_b32 s6, s9
737 ; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
738 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s1
739 ; GFX11-GISEL-NEXT:    s_mov_b32 s11, s2
740 ; GFX11-GISEL-NEXT:    v_mov_b32_e32 v0, s0
741 ; GFX11-GISEL-NEXT:    s_or_b64 s[0:1], s[8:9], s[10:11]
742 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s3
743 ; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
744 ; GFX11-GISEL-NEXT:    s_or_b64 s[2:3], s[8:9], s[6:7]
745 ; GFX11-GISEL-NEXT:    buffer_load_b32 v0, v0, s[0:3], 0 offen glc dlc
746 ; GFX11-GISEL-NEXT:    s_clause 0x1
747 ; GFX11-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x20
748 ; GFX11-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x30
749 ; GFX11-GISEL-NEXT:    s_mov_b32 s4, s9
750 ; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
751 ; GFX11-GISEL-NEXT:    v_mov_b32_e32 v1, s0
752 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s1
753 ; GFX11-GISEL-NEXT:    s_mov_b32 s5, s2
754 ; GFX11-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
755 ; GFX11-GISEL-NEXT:    s_or_b64 s[4:5], s[8:9], s[4:5]
756 ; GFX11-GISEL-NEXT:    s_mov_b32 s8, s3
757 ; GFX11-GISEL-NEXT:    s_or_b64 s[6:7], s[8:9], s[6:7]
758 ; GFX11-GISEL-NEXT:    s_waitcnt vmcnt(0)
759 ; GFX11-GISEL-NEXT:    buffer_store_b32 v0, v1, s[4:7], 0 offen dlc
760 ; GFX11-GISEL-NEXT:    s_endpgm
762 ; GFX12-SDAG-LABEL: buffer_nontemporal_and_volatile_load_store:
763 ; GFX12-SDAG:       ; %bb.0: ; %entry
764 ; GFX12-SDAG-NEXT:    s_clause 0x2
765 ; GFX12-SDAG-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
766 ; GFX12-SDAG-NEXT:    s_load_b128 s[8:11], s[4:5], 0x20
767 ; GFX12-SDAG-NEXT:    s_load_b32 s6, s[4:5], 0x10
768 ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0
769 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s1
770 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v2, s2 :: v_dual_mov_b32 v3, s3
771 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v7, s8 :: v_dual_mov_b32 v8, s9
772 ; GFX12-SDAG-NEXT:    v_dual_mov_b32 v9, s10 :: v_dual_mov_b32 v10, s11
773 ; GFX12-SDAG-NEXT:    scratch_store_b128 off, v[0:3], off offset:32
774 ; GFX12-SDAG-NEXT:    s_clause 0x1
775 ; GFX12-SDAG-NEXT:    scratch_load_b64 v[5:6], off, off offset:40
776 ; GFX12-SDAG-NEXT:    scratch_load_b32 v4, off, off offset:36
777 ; GFX12-SDAG-NEXT:    s_load_b32 s1, s[4:5], 0x30
778 ; GFX12-SDAG-NEXT:    scratch_store_b128 off, v[7:10], off
779 ; GFX12-SDAG-NEXT:    s_clause 0x1
780 ; GFX12-SDAG-NEXT:    scratch_load_b64 v[1:2], off, off offset:8
781 ; GFX12-SDAG-NEXT:    scratch_load_b32 v0, off, off offset:4
782 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v7, s6
783 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v9, s0
784 ; GFX12-SDAG-NEXT:    s_wait_kmcnt 0x0
785 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v3, s1
786 ; GFX12-SDAG-NEXT:    s_mov_b32 s1, exec_lo
787 ; GFX12-SDAG-NEXT:  .LBB1_1: ; =>This Inner Loop Header: Depth=1
788 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x2
789 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s4, v4
790 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s5, v5
791 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s6, v6
792 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s7, v7
793 ; GFX12-SDAG-NEXT:    s_wait_alu 0xf1ff
794 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
795 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[4:5]
796 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[6:7]
797 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
798 ; GFX12-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
799 ; GFX12-SDAG-NEXT:    s_wait_alu 0xfffe
800 ; GFX12-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
801 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0
802 ; GFX12-SDAG-NEXT:    buffer_load_b32 v8, v9, s[4:7], null offen th:TH_LOAD_NT scope:SCOPE_SYS
803 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr4_vgpr5_vgpr6_vgpr7
804 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr9
805 ; GFX12-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
806 ; GFX12-SDAG-NEXT:    s_cbranch_execnz .LBB1_1
807 ; GFX12-SDAG-NEXT:  ; %bb.2:
808 ; GFX12-SDAG-NEXT:    s_mov_b32 exec_lo, s1
809 ; GFX12-SDAG-NEXT:    v_mov_b32_e32 v4, s8
810 ; GFX12-SDAG-NEXT:    s_mov_b32 s0, exec_lo
811 ; GFX12-SDAG-NEXT:  .LBB1_3: ; =>This Inner Loop Header: Depth=1
812 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x1
813 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s4, v0
814 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s5, v1
815 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s6, v2
816 ; GFX12-SDAG-NEXT:    v_readfirstlane_b32 s7, v3
817 ; GFX12-SDAG-NEXT:    s_wait_alu 0xf1ff
818 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(NEXT) | instid1(VALU_DEP_2)
819 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e32 vcc_lo, s[4:5], v[0:1]
820 ; GFX12-SDAG-NEXT:    v_cmp_eq_u64_e64 s0, s[6:7], v[2:3]
821 ; GFX12-SDAG-NEXT:    s_wait_alu 0xfffe
822 ; GFX12-SDAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)
823 ; GFX12-SDAG-NEXT:    s_and_b32 s0, vcc_lo, s0
824 ; GFX12-SDAG-NEXT:    s_wait_alu 0xfffe
825 ; GFX12-SDAG-NEXT:    s_and_saveexec_b32 s0, s0
826 ; GFX12-SDAG-NEXT:    s_wait_loadcnt 0x0
827 ; GFX12-SDAG-NEXT:    s_wait_storecnt 0x0
828 ; GFX12-SDAG-NEXT:    buffer_store_b32 v8, v4, s[4:7], null offen th:TH_STORE_NT scope:SCOPE_SYS
829 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr0_vgpr1_vgpr2_vgpr3
830 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr8
831 ; GFX12-SDAG-NEXT:    ; implicit-def: $vgpr4
832 ; GFX12-SDAG-NEXT:    s_xor_b32 exec_lo, exec_lo, s0
833 ; GFX12-SDAG-NEXT:    s_cbranch_execnz .LBB1_3
834 ; GFX12-SDAG-NEXT:  ; %bb.4:
835 ; GFX12-SDAG-NEXT:    s_endpgm
837 ; GFX12-GISEL-LABEL: buffer_nontemporal_and_volatile_load_store:
838 ; GFX12-GISEL:       ; %bb.0: ; %entry
839 ; GFX12-GISEL-NEXT:    s_clause 0x1
840 ; GFX12-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x0
841 ; GFX12-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x10
842 ; GFX12-GISEL-NEXT:    s_mov_b32 s9, 0
843 ; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
844 ; GFX12-GISEL-NEXT:    s_mov_b32 s10, s9
845 ; GFX12-GISEL-NEXT:    s_mov_b32 s6, s9
846 ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0
847 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s1
848 ; GFX12-GISEL-NEXT:    s_mov_b32 s11, s2
849 ; GFX12-GISEL-NEXT:    v_mov_b32_e32 v0, s0
850 ; GFX12-GISEL-NEXT:    s_or_b64 s[0:1], s[8:9], s[10:11]
851 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s3
852 ; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1)
853 ; GFX12-GISEL-NEXT:    s_or_b64 s[2:3], s[8:9], s[6:7]
854 ; GFX12-GISEL-NEXT:    buffer_load_b32 v0, v0, s[0:3], null offen th:TH_LOAD_NT scope:SCOPE_SYS
855 ; GFX12-GISEL-NEXT:    s_clause 0x1
856 ; GFX12-GISEL-NEXT:    s_load_b128 s[0:3], s[4:5], 0x20
857 ; GFX12-GISEL-NEXT:    s_load_b32 s7, s[4:5], 0x30
858 ; GFX12-GISEL-NEXT:    s_mov_b32 s4, s9
859 ; GFX12-GISEL-NEXT:    s_wait_kmcnt 0x0
860 ; GFX12-GISEL-NEXT:    v_mov_b32_e32 v1, s0
861 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s1
862 ; GFX12-GISEL-NEXT:    s_mov_b32 s5, s2
863 ; GFX12-GISEL-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
864 ; GFX12-GISEL-NEXT:    s_or_b64 s[4:5], s[8:9], s[4:5]
865 ; GFX12-GISEL-NEXT:    s_mov_b32 s8, s3
866 ; GFX12-GISEL-NEXT:    s_or_b64 s[6:7], s[8:9], s[6:7]
867 ; GFX12-GISEL-NEXT:    s_wait_loadcnt 0x0
868 ; GFX12-GISEL-NEXT:    buffer_store_b32 v0, v1, s[4:7], null offen th:TH_STORE_NT scope:SCOPE_SYS
869 ; GFX12-GISEL-NEXT:    s_endpgm
870 entry:
871   %val = load volatile i32, ptr addrspace(7) %in, !nontemporal !0
872   store volatile i32 %val, ptr addrspace(7) %out, !nontemporal !0
873   ret void
876 !0 = !{i32 1}
877 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
878 ; GFX10: {{.*}}
879 ; GFX11: {{.*}}
880 ; GFX12: {{.*}}
881 ; GFX9: {{.*}}
882 ; GFX940: {{.*}}