Skip to content

Commit 2e091a0

Browse files
committed
AMDGPU: Add more scalar frame index lowering tests
1 parent fb7d398 commit 2e091a0

File tree

1 file changed

+282
-0
lines changed

1 file changed

+282
-0
lines changed

llvm/test/CodeGen/AMDGPU/eliminate-frame-index-s-add-i32.mir

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,3 +1140,285 @@ body: |
11401140
SI_RETURN implicit $sgpr7, implicit $sgpr8
11411141
11421142
...
1143+
1144+
---
1145+
name: s_add_i32__identity_sgpr__fi_offset0__kernel
1146+
tracksRegLiveness: true
1147+
stack:
1148+
- { id: 0, size: 32, alignment: 16 }
1149+
machineFunctionInfo:
1150+
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
1151+
frameOffsetReg: '$sgpr33'
1152+
stackPtrOffsetReg: '$sgpr32'
1153+
isEntryFunction: true
1154+
body: |
1155+
bb.0:
1156+
liveins: $sgpr8
1157+
1158+
; MUBUFW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1159+
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1160+
; MUBUFW64-NEXT: {{ $}}
1161+
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1162+
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1163+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1164+
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1165+
;
1166+
; MUBUFW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1167+
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1168+
; MUBUFW32-NEXT: {{ $}}
1169+
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1170+
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1171+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1172+
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1173+
;
1174+
; FLATSCRW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1175+
; FLATSCRW64: liveins: $sgpr8
1176+
; FLATSCRW64-NEXT: {{ $}}
1177+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1178+
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1179+
;
1180+
; FLATSCRW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0__kernel
1181+
; FLATSCRW32: liveins: $sgpr8
1182+
; FLATSCRW32-NEXT: {{ $}}
1183+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1184+
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1185+
renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1186+
SI_RETURN implicit $sgpr8
1187+
1188+
...
1189+
1190+
---
1191+
name: s_add_i32__fi_offset0__identity_sgpr__kernel
1192+
tracksRegLiveness: true
1193+
stack:
1194+
- { id: 0, size: 32, alignment: 16 }
1195+
machineFunctionInfo:
1196+
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
1197+
frameOffsetReg: '$sgpr33'
1198+
stackPtrOffsetReg: '$sgpr32'
1199+
isEntryFunction: true
1200+
body: |
1201+
bb.0:
1202+
liveins: $sgpr8
1203+
1204+
; MUBUFW64-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1205+
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1206+
; MUBUFW64-NEXT: {{ $}}
1207+
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1208+
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1209+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1210+
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1211+
;
1212+
; MUBUFW32-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1213+
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1214+
; MUBUFW32-NEXT: {{ $}}
1215+
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1216+
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1217+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1218+
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1219+
;
1220+
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1221+
; FLATSCRW64: liveins: $sgpr8
1222+
; FLATSCRW64-NEXT: {{ $}}
1223+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1224+
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1225+
;
1226+
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset0__identity_sgpr__kernel
1227+
; FLATSCRW32: liveins: $sgpr8
1228+
; FLATSCRW32-NEXT: {{ $}}
1229+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 0, implicit-def dead $scc
1230+
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1231+
renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1232+
SI_RETURN implicit $sgpr8
1233+
1234+
...
1235+
1236+
---
1237+
name: s_add_i32__identity_sgpr__fi_offset32__kernel
1238+
tracksRegLiveness: true
1239+
stack:
1240+
- { id: 0, size: 32, alignment: 16 }
1241+
- { id: 1, size: 64, alignment: 4 }
1242+
machineFunctionInfo:
1243+
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
1244+
frameOffsetReg: '$sgpr33'
1245+
stackPtrOffsetReg: '$sgpr32'
1246+
isEntryFunction: true
1247+
body: |
1248+
bb.0:
1249+
liveins: $sgpr8
1250+
1251+
; MUBUFW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1252+
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1253+
; MUBUFW64-NEXT: {{ $}}
1254+
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1255+
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1256+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1257+
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1258+
;
1259+
; MUBUFW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1260+
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1261+
; MUBUFW32-NEXT: {{ $}}
1262+
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1263+
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1264+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1265+
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1266+
;
1267+
; FLATSCRW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1268+
; FLATSCRW64: liveins: $sgpr8
1269+
; FLATSCRW64-NEXT: {{ $}}
1270+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1271+
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1272+
;
1273+
; FLATSCRW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset32__kernel
1274+
; FLATSCRW32: liveins: $sgpr8
1275+
; FLATSCRW32-NEXT: {{ $}}
1276+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1277+
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1278+
renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
1279+
SI_RETURN implicit $sgpr8
1280+
1281+
...
1282+
1283+
---
1284+
name: s_add_i32__fi_offset32__identity_sgpr__kernel
1285+
tracksRegLiveness: true
1286+
stack:
1287+
- { id: 0, size: 32, alignment: 16 }
1288+
- { id: 1, size: 64, alignment: 4 }
1289+
machineFunctionInfo:
1290+
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
1291+
frameOffsetReg: '$sgpr33'
1292+
stackPtrOffsetReg: '$sgpr32'
1293+
isEntryFunction: true
1294+
body: |
1295+
bb.0:
1296+
liveins: $sgpr8
1297+
1298+
; MUBUFW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1299+
; MUBUFW64: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1300+
; MUBUFW64-NEXT: {{ $}}
1301+
; MUBUFW64-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1302+
; MUBUFW64-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1303+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1304+
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1305+
;
1306+
; MUBUFW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1307+
; MUBUFW32: liveins: $sgpr8, $sgpr0_sgpr1_sgpr2_sgpr3
1308+
; MUBUFW32-NEXT: {{ $}}
1309+
; MUBUFW32-NEXT: $sgpr0 = S_ADD_U32 $sgpr0, $noreg, implicit-def $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1310+
; MUBUFW32-NEXT: $sgpr1 = S_ADDC_U32 $sgpr1, 0, implicit-def dead $scc, implicit $scc, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
1311+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1312+
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1313+
;
1314+
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1315+
; FLATSCRW64: liveins: $sgpr8
1316+
; FLATSCRW64-NEXT: {{ $}}
1317+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1318+
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1319+
;
1320+
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr__kernel
1321+
; FLATSCRW32: liveins: $sgpr8
1322+
; FLATSCRW32-NEXT: {{ $}}
1323+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1324+
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1325+
renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
1326+
SI_RETURN implicit $sgpr8
1327+
1328+
...
1329+
1330+
1331+
---
1332+
name: s_add_i32__identity_sgpr__fi_offset0
1333+
tracksRegLiveness: true
1334+
stack:
1335+
- { id: 0, size: 32, alignment: 16 }
1336+
machineFunctionInfo:
1337+
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
1338+
frameOffsetReg: '$sgpr33'
1339+
stackPtrOffsetReg: '$sgpr32'
1340+
body: |
1341+
bb.0:
1342+
liveins: $sgpr8
1343+
1344+
; MUBUFW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1345+
; MUBUFW64: liveins: $sgpr8
1346+
; MUBUFW64-NEXT: {{ $}}
1347+
; MUBUFW64-NEXT: renamable $sgpr8 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1348+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, $sgpr8, implicit-def dead $scc
1349+
; MUBUFW64-NEXT: renamable $sgpr8 = COPY $sgpr8
1350+
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1351+
;
1352+
; MUBUFW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1353+
; MUBUFW32: liveins: $sgpr8
1354+
; MUBUFW32-NEXT: {{ $}}
1355+
; MUBUFW32-NEXT: renamable $sgpr8 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1356+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, $sgpr8, implicit-def dead $scc
1357+
; MUBUFW32-NEXT: renamable $sgpr8 = COPY $sgpr8
1358+
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1359+
;
1360+
; FLATSCRW64-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1361+
; FLATSCRW64: liveins: $sgpr8
1362+
; FLATSCRW64-NEXT: {{ $}}
1363+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1364+
; FLATSCRW64-NEXT: renamable $sgpr8 = COPY $sgpr8
1365+
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1366+
;
1367+
; FLATSCRW32-LABEL: name: s_add_i32__identity_sgpr__fi_offset0
1368+
; FLATSCRW32: liveins: $sgpr8
1369+
; FLATSCRW32-NEXT: {{ $}}
1370+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1371+
; FLATSCRW32-NEXT: renamable $sgpr8 = COPY $sgpr8
1372+
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1373+
renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.0, implicit-def dead $scc
1374+
SI_RETURN implicit $sgpr8
1375+
1376+
...
1377+
1378+
---
1379+
name: s_add_i32__fi_offset32__identity_sgpr
1380+
tracksRegLiveness: true
1381+
stack:
1382+
- { id: 0, size: 32, alignment: 16 }
1383+
- { id: 1, size: 64, alignment: 4 }
1384+
machineFunctionInfo:
1385+
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
1386+
frameOffsetReg: '$sgpr33'
1387+
stackPtrOffsetReg: '$sgpr32'
1388+
body: |
1389+
bb.0:
1390+
liveins: $sgpr8
1391+
1392+
; MUBUFW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1393+
; MUBUFW64: liveins: $sgpr8
1394+
; MUBUFW64-NEXT: {{ $}}
1395+
; MUBUFW64-NEXT: renamable $sgpr8 = S_LSHR_B32 $sgpr32, 6, implicit-def dead $scc
1396+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, $sgpr8, implicit-def dead $scc
1397+
; MUBUFW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1398+
; MUBUFW64-NEXT: SI_RETURN implicit $sgpr8
1399+
;
1400+
; MUBUFW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1401+
; MUBUFW32: liveins: $sgpr8
1402+
; MUBUFW32-NEXT: {{ $}}
1403+
; MUBUFW32-NEXT: renamable $sgpr8 = S_LSHR_B32 $sgpr32, 5, implicit-def dead $scc
1404+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, $sgpr8, implicit-def dead $scc
1405+
; MUBUFW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1406+
; MUBUFW32-NEXT: SI_RETURN implicit $sgpr8
1407+
;
1408+
; FLATSCRW64-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1409+
; FLATSCRW64: liveins: $sgpr8
1410+
; FLATSCRW64-NEXT: {{ $}}
1411+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1412+
; FLATSCRW64-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1413+
; FLATSCRW64-NEXT: SI_RETURN implicit $sgpr8
1414+
;
1415+
; FLATSCRW32-LABEL: name: s_add_i32__fi_offset32__identity_sgpr
1416+
; FLATSCRW32: liveins: $sgpr8
1417+
; FLATSCRW32-NEXT: {{ $}}
1418+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr32, $sgpr8, implicit-def dead $scc
1419+
; FLATSCRW32-NEXT: renamable $sgpr8 = S_ADD_I32 $sgpr8, 32, implicit-def dead $scc
1420+
; FLATSCRW32-NEXT: SI_RETURN implicit $sgpr8
1421+
renamable $sgpr8 = S_ADD_I32 $sgpr8, %stack.1, implicit-def dead $scc
1422+
SI_RETURN implicit $sgpr8
1423+
1424+
...

0 commit comments

Comments
 (0)