1
- # RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefix=GFX9 %s
1
+ # RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefixes=GCN,GFX9 %s
2
+ # RUN: llc -mtriple=amdgcn -mcpu=gfx803 -verify-machineinstrs -run-pass si-load-store-opt -o - %s | FileCheck -check-prefixes=GCN,GFX8 %s
2
3
3
- # GFX9 -LABEL: name: diffoporder_add
4
+ # GCN -LABEL: name: diffoporder_add
4
5
# GFX9: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, -2048, 0
5
6
# GFX9: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
6
7
8
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
9
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
10
+
7
11
name : diffoporder_add
8
12
body : |
9
13
bb.0.entry:
@@ -43,7 +47,7 @@ body: |
43
47
...
44
48
---
45
49
46
- # GFX9 -LABEL: name: LowestInMiddle
50
+ # GCN -LABEL: name: LowestInMiddle
47
51
# GFX9: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 11200
48
52
# GFX9: [[BASE_LO:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_5:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_1]]
49
53
# GFX9: [[BASE_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_64_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_5]]
@@ -57,6 +61,11 @@ body: |
57
61
# GFX9: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE3]], 0, 0,
58
62
# GFX9: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0,
59
63
64
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
65
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
66
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
67
+
68
+
60
69
name : LowestInMiddle
61
70
body : |
62
71
bb.0.entry:
@@ -101,7 +110,7 @@ body: |
101
110
...
102
111
---
103
112
104
- # GFX9 -LABEL: name: NegativeDistance
113
+ # GCN -LABEL: name: NegativeDistance
105
114
# GFX9: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 10240
106
115
# GFX9: [[V_ADD_CO_U32_e64_4:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_5:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 %{{[0-9]+}}, [[S_MOV_B32_1]]
107
116
# GFX9: [[BASE_HI:%[0-9]+]]:vgpr_32, dead %{{[0-9]+}}:sreg_64_xexec = V_ADDC_U32_e64 %{{[0-9]+}}, 0, killed [[V_ADD_CO_U32_e64_5]]
@@ -110,6 +119,10 @@ body: |
110
119
# GFX9: [[GLOBAL_LOAD_DWORDX2_1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], -2048, 0
111
120
# GFX9: [[GLOBAL_LOAD_DWORDX2_2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[REG_SEQUENCE2]], 0, 0
112
121
122
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
123
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
124
+ # GFX8: %{{[0-9]+}}:vreg_64 = GLOBAL_LOAD_DWORDX2 %{{[0-9]+}}, 0, 0
125
+
113
126
name : NegativeDistance
114
127
body : |
115
128
bb.0.entry:
@@ -190,10 +203,13 @@ body: |
190
203
...
191
204
---
192
205
193
- # GFX9 -LABEL: name: diffoporder_add_store
206
+ # GCN -LABEL: name: diffoporder_add_store
194
207
# GFX9: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub0, 1000, 0,
195
208
# GFX9: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub1, 0, 0,
196
209
210
+ # GFX8: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub0, 0, 0
211
+ # GFX8: GLOBAL_STORE_DWORD %{{[0-9]+}}, %0.sub1, 0, 0
212
+
197
213
name : diffoporder_add_store
198
214
body : |
199
215
bb.0.entry:
@@ -212,3 +228,57 @@ body: |
212
228
%13:vreg_64 = REG_SEQUENCE %9, %subreg.sub0, %11, %subreg.sub1
213
229
GLOBAL_STORE_DWORD %13, %0.sub1, 0, 0, implicit $exec
214
230
...
231
+ ---
232
+
233
+ # GCN-LABEL: name: diffoporder_add_flat_load
234
+ # GFX9: FLAT_LOAD_DWORD %{{[0-9]+}}, 1000, 0,
235
+ # GFX9: FLAT_LOAD_DWORD %{{[0-9]+}}, 0, 0,
236
+
237
+ # GFX8: FLAT_LOAD_DWORD %{{[0-9]+}}, 0, 0,
238
+ # GFX8: FLAT_LOAD_DWORD %{{[0-9]+}}, 0, 0,
239
+
240
+ name : diffoporder_add_flat_load
241
+ body : |
242
+ bb.0.entry:
243
+
244
+ %0:vreg_64 = COPY $vgpr0_vgpr1
245
+
246
+ %1:sgpr_32 = S_MOV_B32 4000
247
+ %2:vgpr_32, %3:sreg_64_xexec = V_ADD_CO_U32_e64 %0.sub0, %1, 0, implicit $exec
248
+ %4:vgpr_32, dead %5:sreg_64_xexec = V_ADDC_U32_e64 %0.sub1, 0, %3, 0, implicit $exec
249
+ %6:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %4, %subreg.sub1
250
+ %14:vgpr_32 = FLAT_LOAD_DWORD %6, 0, 0, implicit $exec, implicit $flat_scr
251
+
252
+ %8:sgpr_32 = S_MOV_B32 3000
253
+ %9:vgpr_32, %10:sreg_64_xexec = V_ADD_CO_U32_e64 %0.sub0, %8, 0, implicit $exec
254
+ %11:vgpr_32, dead %12:sreg_64_xexec = V_ADDC_U32_e64 %0.sub1, 0, %10, 0, implicit $exec
255
+ %13:vreg_64 = REG_SEQUENCE %9, %subreg.sub0, %11, %subreg.sub1
256
+ %15:vgpr_32 = FLAT_LOAD_DWORD %13, 0, 0, implicit $exec, implicit $flat_scr
257
+ ...
258
+ ---
259
+
260
+ # GCN-LABEL: name: diffoporder_add_flat_store
261
+ # GFX9: FLAT_STORE_DWORD %{{[0-9]+}}, %0.sub0, 1000, 0,
262
+ # GFX9: FLAT_STORE_DWORD %{{[0-9]+}}, %0.sub1, 0, 0,
263
+
264
+ # GFX8: FLAT_STORE_DWORD %{{[0-9]+}}, %0.sub0, 0, 0,
265
+ # GFX8: FLAT_STORE_DWORD %{{[0-9]+}}, %0.sub1, 0, 0,
266
+
267
+ name : diffoporder_add_flat_store
268
+ body : |
269
+ bb.0.entry:
270
+
271
+ %0:vreg_64 = COPY $vgpr0_vgpr1
272
+
273
+ %1:sgpr_32 = S_MOV_B32 4000
274
+ %2:vgpr_32, %3:sreg_64_xexec = V_ADD_CO_U32_e64 %0.sub0, %1, 0, implicit $exec
275
+ %4:vgpr_32, dead %5:sreg_64_xexec = V_ADDC_U32_e64 %0.sub1, 0, %3, 0, implicit $exec
276
+ %6:vreg_64 = REG_SEQUENCE %2, %subreg.sub0, %4, %subreg.sub1
277
+ FLAT_STORE_DWORD %6, %0.sub0, 0, 0, implicit $exec, implicit $flat_scr
278
+
279
+ %8:sgpr_32 = S_MOV_B32 3000
280
+ %9:vgpr_32, %10:sreg_64_xexec = V_ADD_CO_U32_e64 %0.sub0, %8, 0, implicit $exec
281
+ %11:vgpr_32, dead %12:sreg_64_xexec = V_ADDC_U32_e64 %0.sub1, 0, %10, 0, implicit $exec
282
+ %13:vreg_64 = REG_SEQUENCE %9, %subreg.sub0, %11, %subreg.sub1
283
+ FLAT_STORE_DWORD %13, %0.sub1, 0, 0, implicit $exec, implicit $flat_scr
284
+ ...
0 commit comments