@@ -1280,6 +1280,602 @@ define <2 x i64> @buffer_load_v2i64__voffset_add(ptr addrspace(8) inreg %rsrc, i
1280
1280
ret <2 x i64 > %data
1281
1281
}
1282
1282
1283
+ define ptr @buffer_load_p0__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1284
+ ; PREGFX10-LABEL: buffer_load_p0__voffset_add:
1285
+ ; PREGFX10: ; %bb.0:
1286
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1287
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1288
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1289
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1290
+ ;
1291
+ ; GFX10-LABEL: buffer_load_p0__voffset_add:
1292
+ ; GFX10: ; %bb.0:
1293
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1294
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1295
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1296
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1297
+ ;
1298
+ ; GFX11-LABEL: buffer_load_p0__voffset_add:
1299
+ ; GFX11: ; %bb.0:
1300
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1301
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1302
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1303
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1304
+ %voffset.add = add i32 %voffset , 60
1305
+ %data = call ptr @llvm.amdgcn.raw.ptr.buffer.load.p0 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1306
+ ret ptr %data
1307
+ }
1308
+
1309
+ define <2 x ptr > @buffer_load_v2p0__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1310
+ ; PREGFX10-LABEL: buffer_load_v2p0__voffset_add:
1311
+ ; PREGFX10: ; %bb.0:
1312
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1313
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1314
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1315
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1316
+ ;
1317
+ ; GFX10-LABEL: buffer_load_v2p0__voffset_add:
1318
+ ; GFX10: ; %bb.0:
1319
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1320
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1321
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1322
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1323
+ ;
1324
+ ; GFX11-LABEL: buffer_load_v2p0__voffset_add:
1325
+ ; GFX11: ; %bb.0:
1326
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1327
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1328
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1329
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1330
+ %voffset.add = add i32 %voffset , 60
1331
+ %data = call <2 x ptr > @llvm.amdgcn.raw.ptr.buffer.load.p0 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1332
+ ret <2 x ptr > %data
1333
+ }
1334
+
1335
+ define ptr addrspace (1 ) @buffer_load_p1__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1336
+ ; PREGFX10-LABEL: buffer_load_p1__voffset_add:
1337
+ ; PREGFX10: ; %bb.0:
1338
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1339
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1340
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1341
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1342
+ ;
1343
+ ; GFX10-LABEL: buffer_load_p1__voffset_add:
1344
+ ; GFX10: ; %bb.0:
1345
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1346
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1347
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1348
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1349
+ ;
1350
+ ; GFX11-LABEL: buffer_load_p1__voffset_add:
1351
+ ; GFX11: ; %bb.0:
1352
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1353
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1354
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1355
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1356
+ %voffset.add = add i32 %voffset , 60
1357
+ %data = call ptr addrspace (1 ) @llvm.amdgcn.raw.ptr.buffer.load.p1 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1358
+ ret ptr addrspace (1 ) %data
1359
+ }
1360
+
1361
+ define <2 x ptr addrspace (1 )> @buffer_load_v2p1__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1362
+ ; PREGFX10-LABEL: buffer_load_v2p1__voffset_add:
1363
+ ; PREGFX10: ; %bb.0:
1364
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1365
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1366
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1367
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1368
+ ;
1369
+ ; GFX10-LABEL: buffer_load_v2p1__voffset_add:
1370
+ ; GFX10: ; %bb.0:
1371
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1372
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1373
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1374
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1375
+ ;
1376
+ ; GFX11-LABEL: buffer_load_v2p1__voffset_add:
1377
+ ; GFX11: ; %bb.0:
1378
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1379
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1380
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1381
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1382
+ %voffset.add = add i32 %voffset , 60
1383
+ %data = call <2 x ptr addrspace (1 )> @llvm.amdgcn.raw.ptr.buffer.load.p1 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1384
+ ret <2 x ptr addrspace (1 )> %data
1385
+ }
1386
+
1387
+ define ptr addrspace (4 ) @buffer_load_p4__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1388
+ ; PREGFX10-LABEL: buffer_load_p4__voffset_add:
1389
+ ; PREGFX10: ; %bb.0:
1390
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1391
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1392
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1393
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1394
+ ;
1395
+ ; GFX10-LABEL: buffer_load_p4__voffset_add:
1396
+ ; GFX10: ; %bb.0:
1397
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1398
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1399
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1400
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1401
+ ;
1402
+ ; GFX11-LABEL: buffer_load_p4__voffset_add:
1403
+ ; GFX11: ; %bb.0:
1404
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1405
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1406
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1407
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1408
+ %voffset.add = add i32 %voffset , 60
1409
+ %data = call ptr addrspace (4 ) @llvm.amdgcn.raw.ptr.buffer.load.p4 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1410
+ ret ptr addrspace (4 ) %data
1411
+ }
1412
+
1413
+ define <2 x ptr addrspace (4 )> @buffer_load_v2p4__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1414
+ ; PREGFX10-LABEL: buffer_load_v2p4__voffset_add:
1415
+ ; PREGFX10: ; %bb.0:
1416
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1417
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1418
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1419
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1420
+ ;
1421
+ ; GFX10-LABEL: buffer_load_v2p4__voffset_add:
1422
+ ; GFX10: ; %bb.0:
1423
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1424
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1425
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1426
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1427
+ ;
1428
+ ; GFX11-LABEL: buffer_load_v2p4__voffset_add:
1429
+ ; GFX11: ; %bb.0:
1430
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1431
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1432
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1433
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1434
+ %voffset.add = add i32 %voffset , 60
1435
+ %data = call <2 x ptr addrspace (4 )> @llvm.amdgcn.raw.ptr.buffer.load.p4 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1436
+ ret <2 x ptr addrspace (4 )> %data
1437
+ }
1438
+
1439
+ define ptr addrspace (999 ) @buffer_load_p999__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1440
+ ; PREGFX10-LABEL: buffer_load_p999__voffset_add:
1441
+ ; PREGFX10: ; %bb.0:
1442
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1443
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1444
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1445
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1446
+ ;
1447
+ ; GFX10-LABEL: buffer_load_p999__voffset_add:
1448
+ ; GFX10: ; %bb.0:
1449
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1450
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1451
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1452
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1453
+ ;
1454
+ ; GFX11-LABEL: buffer_load_p999__voffset_add:
1455
+ ; GFX11: ; %bb.0:
1456
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1457
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1458
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1459
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1460
+ %voffset.add = add i32 %voffset , 60
1461
+ %data = call ptr addrspace (999 ) @llvm.amdgcn.raw.ptr.buffer.load.p999 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1462
+ ret ptr addrspace (999 ) %data
1463
+ }
1464
+
1465
+ define <2 x ptr addrspace (999 )> @buffer_load_v2p999__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1466
+ ; PREGFX10-LABEL: buffer_load_v2p999__voffset_add:
1467
+ ; PREGFX10: ; %bb.0:
1468
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1469
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1470
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1471
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1472
+ ;
1473
+ ; GFX10-LABEL: buffer_load_v2p999__voffset_add:
1474
+ ; GFX10: ; %bb.0:
1475
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1476
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1477
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1478
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1479
+ ;
1480
+ ; GFX11-LABEL: buffer_load_v2p999__voffset_add:
1481
+ ; GFX11: ; %bb.0:
1482
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1483
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1484
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1485
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1486
+ %voffset.add = add i32 %voffset , 60
1487
+ %data = call <2 x ptr addrspace (999 )> @llvm.amdgcn.raw.ptr.buffer.load.p999 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1488
+ ret <2 x ptr addrspace (999 )> %data
1489
+ }
1490
+
1491
+ define ptr addrspace (2 ) @buffer_load_p2__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1492
+ ; PREGFX10-LABEL: buffer_load_p2__voffset_add:
1493
+ ; PREGFX10: ; %bb.0:
1494
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1495
+ ; PREGFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1496
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1497
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1498
+ ;
1499
+ ; GFX10-LABEL: buffer_load_p2__voffset_add:
1500
+ ; GFX10: ; %bb.0:
1501
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1502
+ ; GFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1503
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1504
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1505
+ ;
1506
+ ; GFX11-LABEL: buffer_load_p2__voffset_add:
1507
+ ; GFX11: ; %bb.0:
1508
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1509
+ ; GFX11-NEXT: buffer_load_b32 v0, v0, s[0:3], 0 offen offset:60
1510
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1511
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1512
+ %voffset.add = add i32 %voffset , 60
1513
+ %data = call ptr addrspace (2 ) @llvm.amdgcn.raw.ptr.buffer.load.p2 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1514
+ ret ptr addrspace (2 ) %data
1515
+ }
1516
+
1517
+ define <2 x ptr addrspace (2 )> @buffer_load_v2p2__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1518
+ ; PREGFX10-LABEL: buffer_load_v2p2__voffset_add:
1519
+ ; PREGFX10: ; %bb.0:
1520
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1521
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1522
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1523
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1524
+ ;
1525
+ ; GFX10-LABEL: buffer_load_v2p2__voffset_add:
1526
+ ; GFX10: ; %bb.0:
1527
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1528
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1529
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1530
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1531
+ ;
1532
+ ; GFX11-LABEL: buffer_load_v2p2__voffset_add:
1533
+ ; GFX11: ; %bb.0:
1534
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1535
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1536
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1537
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1538
+ %voffset.add = add i32 %voffset , 60
1539
+ %data = call <2 x ptr addrspace (2 )> @llvm.amdgcn.raw.ptr.buffer.load.v2p2 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1540
+ ret <2 x ptr addrspace (2 )> %data
1541
+ }
1542
+
1543
+ define <3 x ptr addrspace (2 )> @buffer_load_v3p2__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1544
+ ; GFX10-LABEL: buffer_load_v3p2__voffset_add:
1545
+ ; GFX10: ; %bb.0:
1546
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1547
+ ; GFX10-NEXT: buffer_load_dwordx3 v[0:2], v0, s[4:7], 0 offen offset:60
1548
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1549
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1550
+ ;
1551
+ ; GFX11-LABEL: buffer_load_v3p2__voffset_add:
1552
+ ; GFX11: ; %bb.0:
1553
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1554
+ ; GFX11-NEXT: buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:60
1555
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1556
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1557
+ %voffset.add = add i32 %voffset , 60
1558
+ %data = call <3 x ptr addrspace (2 )> @llvm.amdgcn.raw.ptr.buffer.load.v3p2 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1559
+ ret <3 x ptr addrspace (2 )> %data
1560
+ }
1561
+
1562
+ define <4 x ptr addrspace (2 )> @buffer_load_v4p2__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1563
+ ; PREGFX10-LABEL: buffer_load_v4p2__voffset_add:
1564
+ ; PREGFX10: ; %bb.0:
1565
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1566
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1567
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1568
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1569
+ ;
1570
+ ; GFX10-LABEL: buffer_load_v4p2__voffset_add:
1571
+ ; GFX10: ; %bb.0:
1572
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1573
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1574
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1575
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1576
+ ;
1577
+ ; GFX11-LABEL: buffer_load_v4p2__voffset_add:
1578
+ ; GFX11: ; %bb.0:
1579
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1580
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1581
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1582
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1583
+ %voffset.add = add i32 %voffset , 60
1584
+ %data = call <4 x ptr addrspace (2 )> @llvm.amdgcn.raw.ptr.buffer.load.v4p2 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1585
+ ret <4 x ptr addrspace (2 )> %data
1586
+ }
1587
+
1588
+ define ptr addrspace (3 ) @buffer_load_p3__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1589
+ ; PREGFX10-LABEL: buffer_load_p3__voffset_add:
1590
+ ; PREGFX10: ; %bb.0:
1591
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1592
+ ; PREGFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1593
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1594
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1595
+ ;
1596
+ ; GFX10-LABEL: buffer_load_p3__voffset_add:
1597
+ ; GFX10: ; %bb.0:
1598
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1599
+ ; GFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1600
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1601
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1602
+ ;
1603
+ ; GFX11-LABEL: buffer_load_p3__voffset_add:
1604
+ ; GFX11: ; %bb.0:
1605
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1606
+ ; GFX11-NEXT: buffer_load_b32 v0, v0, s[0:3], 0 offen offset:60
1607
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1608
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1609
+ %voffset.add = add i32 %voffset , 60
1610
+ %data = call ptr addrspace (3 ) @llvm.amdgcn.raw.ptr.buffer.load.p3 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1611
+ ret ptr addrspace (3 ) %data
1612
+ }
1613
+
1614
+ define <2 x ptr addrspace (3 )> @buffer_load_v2p3__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1615
+ ; PREGFX10-LABEL: buffer_load_v2p3__voffset_add:
1616
+ ; PREGFX10: ; %bb.0:
1617
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1618
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1619
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1620
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1621
+ ;
1622
+ ; GFX10-LABEL: buffer_load_v2p3__voffset_add:
1623
+ ; GFX10: ; %bb.0:
1624
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1625
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1626
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1627
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1628
+ ;
1629
+ ; GFX11-LABEL: buffer_load_v2p3__voffset_add:
1630
+ ; GFX11: ; %bb.0:
1631
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1632
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1633
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1634
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1635
+ %voffset.add = add i32 %voffset , 60
1636
+ %data = call <2 x ptr addrspace (3 )> @llvm.amdgcn.raw.ptr.buffer.load.v2p3 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1637
+ ret <2 x ptr addrspace (3 )> %data
1638
+ }
1639
+
1640
+ define <3 x ptr addrspace (3 )> @buffer_load_v3p3__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1641
+ ; GFX10-LABEL: buffer_load_v3p3__voffset_add:
1642
+ ; GFX10: ; %bb.0:
1643
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1644
+ ; GFX10-NEXT: buffer_load_dwordx3 v[0:2], v0, s[4:7], 0 offen offset:60
1645
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1646
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1647
+ ;
1648
+ ; GFX11-LABEL: buffer_load_v3p3__voffset_add:
1649
+ ; GFX11: ; %bb.0:
1650
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1651
+ ; GFX11-NEXT: buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:60
1652
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1653
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1654
+ %voffset.add = add i32 %voffset , 60
1655
+ %data = call <3 x ptr addrspace (3 )> @llvm.amdgcn.raw.ptr.buffer.load.v3p3 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1656
+ ret <3 x ptr addrspace (3 )> %data
1657
+ }
1658
+
1659
+ define <4 x ptr addrspace (3 )> @buffer_load_v4p3__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1660
+ ; PREGFX10-LABEL: buffer_load_v4p3__voffset_add:
1661
+ ; PREGFX10: ; %bb.0:
1662
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1663
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1664
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1665
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1666
+ ;
1667
+ ; GFX10-LABEL: buffer_load_v4p3__voffset_add:
1668
+ ; GFX10: ; %bb.0:
1669
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1670
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1671
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1672
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1673
+ ;
1674
+ ; GFX11-LABEL: buffer_load_v4p3__voffset_add:
1675
+ ; GFX11: ; %bb.0:
1676
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1677
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1678
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1679
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1680
+ %voffset.add = add i32 %voffset , 60
1681
+ %data = call <4 x ptr addrspace (3 )> @llvm.amdgcn.raw.ptr.buffer.load.v4p3 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1682
+ ret <4 x ptr addrspace (3 )> %data
1683
+ }
1684
+
1685
+ define ptr addrspace (5 ) @buffer_load_p5__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1686
+ ; PREGFX10-LABEL: buffer_load_p5__voffset_add:
1687
+ ; PREGFX10: ; %bb.0:
1688
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1689
+ ; PREGFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1690
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1691
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1692
+ ;
1693
+ ; GFX10-LABEL: buffer_load_p5__voffset_add:
1694
+ ; GFX10: ; %bb.0:
1695
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1696
+ ; GFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1697
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1698
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1699
+ ;
1700
+ ; GFX11-LABEL: buffer_load_p5__voffset_add:
1701
+ ; GFX11: ; %bb.0:
1702
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1703
+ ; GFX11-NEXT: buffer_load_b32 v0, v0, s[0:3], 0 offen offset:60
1704
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1705
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1706
+ %voffset.add = add i32 %voffset , 60
1707
+ %data = call ptr addrspace (5 ) @llvm.amdgcn.raw.ptr.buffer.load.p5 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1708
+ ret ptr addrspace (5 ) %data
1709
+ }
1710
+
1711
+ define <2 x ptr addrspace (5 )> @buffer_load_v2p5__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1712
+ ; PREGFX10-LABEL: buffer_load_v2p5__voffset_add:
1713
+ ; PREGFX10: ; %bb.0:
1714
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1715
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1716
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1717
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1718
+ ;
1719
+ ; GFX10-LABEL: buffer_load_v2p5__voffset_add:
1720
+ ; GFX10: ; %bb.0:
1721
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1722
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1723
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1724
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1725
+ ;
1726
+ ; GFX11-LABEL: buffer_load_v2p5__voffset_add:
1727
+ ; GFX11: ; %bb.0:
1728
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1729
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1730
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1731
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1732
+ %voffset.add = add i32 %voffset , 60
1733
+ %data = call <2 x ptr addrspace (5 )> @llvm.amdgcn.raw.ptr.buffer.load.v2p5 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1734
+ ret <2 x ptr addrspace (5 )> %data
1735
+ }
1736
+
1737
+ define <3 x ptr addrspace (5 )> @buffer_load_v3p5__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1738
+ ; GFX10-LABEL: buffer_load_v3p5__voffset_add:
1739
+ ; GFX10: ; %bb.0:
1740
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1741
+ ; GFX10-NEXT: buffer_load_dwordx3 v[0:2], v0, s[4:7], 0 offen offset:60
1742
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1743
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1744
+ ;
1745
+ ; GFX11-LABEL: buffer_load_v3p5__voffset_add:
1746
+ ; GFX11: ; %bb.0:
1747
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1748
+ ; GFX11-NEXT: buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:60
1749
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1750
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1751
+ %voffset.add = add i32 %voffset , 60
1752
+ %data = call <3 x ptr addrspace (5 )> @llvm.amdgcn.raw.ptr.buffer.load.v3p5 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1753
+ ret <3 x ptr addrspace (5 )> %data
1754
+ }
1755
+
1756
+ define <4 x ptr addrspace (5 )> @buffer_load_v4p5__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1757
+ ; PREGFX10-LABEL: buffer_load_v4p5__voffset_add:
1758
+ ; PREGFX10: ; %bb.0:
1759
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1760
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1761
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1762
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1763
+ ;
1764
+ ; GFX10-LABEL: buffer_load_v4p5__voffset_add:
1765
+ ; GFX10: ; %bb.0:
1766
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1767
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1768
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1769
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1770
+ ;
1771
+ ; GFX11-LABEL: buffer_load_v4p5__voffset_add:
1772
+ ; GFX11: ; %bb.0:
1773
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1774
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1775
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1776
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1777
+ %voffset.add = add i32 %voffset , 60
1778
+ %data = call <4 x ptr addrspace (5 )> @llvm.amdgcn.raw.ptr.buffer.load.v4p5 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1779
+ ret <4 x ptr addrspace (5 )> %data
1780
+ }
1781
+
1782
+ define ptr addrspace (6 ) @buffer_load_p6__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1783
+ ; PREGFX10-LABEL: buffer_load_p6__voffset_add:
1784
+ ; PREGFX10: ; %bb.0:
1785
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1786
+ ; PREGFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1787
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1788
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1789
+ ;
1790
+ ; GFX10-LABEL: buffer_load_p6__voffset_add:
1791
+ ; GFX10: ; %bb.0:
1792
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1793
+ ; GFX10-NEXT: buffer_load_dword v0, v0, s[4:7], 0 offen offset:60
1794
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1795
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1796
+ ;
1797
+ ; GFX11-LABEL: buffer_load_p6__voffset_add:
1798
+ ; GFX11: ; %bb.0:
1799
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1800
+ ; GFX11-NEXT: buffer_load_b32 v0, v0, s[0:3], 0 offen offset:60
1801
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1802
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1803
+ %voffset.add = add i32 %voffset , 60
1804
+ %data = call ptr addrspace (6 ) @llvm.amdgcn.raw.ptr.buffer.load.p6 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1805
+ ret ptr addrspace (6 ) %data
1806
+ }
1807
+
1808
+ define <2 x ptr addrspace (6 )> @buffer_load_v2p6__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1809
+ ; PREGFX10-LABEL: buffer_load_v2p6__voffset_add:
1810
+ ; PREGFX10: ; %bb.0:
1811
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1812
+ ; PREGFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1813
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1814
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1815
+ ;
1816
+ ; GFX10-LABEL: buffer_load_v2p6__voffset_add:
1817
+ ; GFX10: ; %bb.0:
1818
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1819
+ ; GFX10-NEXT: buffer_load_dwordx2 v[0:1], v0, s[4:7], 0 offen offset:60
1820
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1821
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1822
+ ;
1823
+ ; GFX11-LABEL: buffer_load_v2p6__voffset_add:
1824
+ ; GFX11: ; %bb.0:
1825
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1826
+ ; GFX11-NEXT: buffer_load_b64 v[0:1], v0, s[0:3], 0 offen offset:60
1827
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1828
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1829
+ %voffset.add = add i32 %voffset , 60
1830
+ %data = call <2 x ptr addrspace (6 )> @llvm.amdgcn.raw.ptr.buffer.load.v2p6 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1831
+ ret <2 x ptr addrspace (6 )> %data
1832
+ }
1833
+
1834
+ define <3 x ptr addrspace (6 )> @buffer_load_v3p6__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1835
+ ; GFX10-LABEL: buffer_load_v3p6__voffset_add:
1836
+ ; GFX10: ; %bb.0:
1837
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1838
+ ; GFX10-NEXT: buffer_load_dwordx3 v[0:2], v0, s[4:7], 0 offen offset:60
1839
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1840
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1841
+ ;
1842
+ ; GFX11-LABEL: buffer_load_v3p6__voffset_add:
1843
+ ; GFX11: ; %bb.0:
1844
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1845
+ ; GFX11-NEXT: buffer_load_b96 v[0:2], v0, s[0:3], 0 offen offset:60
1846
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1847
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1848
+ %voffset.add = add i32 %voffset , 60
1849
+ %data = call <3 x ptr addrspace (6 )> @llvm.amdgcn.raw.ptr.buffer.load.v3p6 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1850
+ ret <3 x ptr addrspace (6 )> %data
1851
+ }
1852
+
1853
+ define <4 x ptr addrspace (6 )> @buffer_load_v4p6__voffset_add (ptr addrspace (8 ) inreg %rsrc , i32 %voffset ) {
1854
+ ; PREGFX10-LABEL: buffer_load_v4p6__voffset_add:
1855
+ ; PREGFX10: ; %bb.0:
1856
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1857
+ ; PREGFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1858
+ ; PREGFX10-NEXT: s_waitcnt vmcnt(0)
1859
+ ; PREGFX10-NEXT: s_setpc_b64 s[30:31]
1860
+ ;
1861
+ ; GFX10-LABEL: buffer_load_v4p6__voffset_add:
1862
+ ; GFX10: ; %bb.0:
1863
+ ; GFX10-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1864
+ ; GFX10-NEXT: buffer_load_dwordx4 v[0:3], v0, s[4:7], 0 offen offset:60
1865
+ ; GFX10-NEXT: s_waitcnt vmcnt(0)
1866
+ ; GFX10-NEXT: s_setpc_b64 s[30:31]
1867
+ ;
1868
+ ; GFX11-LABEL: buffer_load_v4p6__voffset_add:
1869
+ ; GFX11: ; %bb.0:
1870
+ ; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1871
+ ; GFX11-NEXT: buffer_load_b128 v[0:3], v0, s[0:3], 0 offen offset:60
1872
+ ; GFX11-NEXT: s_waitcnt vmcnt(0)
1873
+ ; GFX11-NEXT: s_setpc_b64 s[30:31]
1874
+ %voffset.add = add i32 %voffset , 60
1875
+ %data = call <4 x ptr addrspace (6 )> @llvm.amdgcn.raw.ptr.buffer.load.v4p6 (ptr addrspace (8 ) %rsrc , i32 %voffset.add , i32 0 , i32 0 )
1876
+ ret <4 x ptr addrspace (6 )> %data
1877
+ }
1878
+
1283
1879
declare float @llvm.amdgcn.raw.ptr.buffer.load.f32 (ptr addrspace (8 ), i32 , i32 , i32 ) #0
1284
1880
declare <2 x float > @llvm.amdgcn.raw.ptr.buffer.load.v2f32 (ptr addrspace (8 ), i32 , i32 , i32 ) #0
1285
1881
declare <4 x float > @llvm.amdgcn.raw.ptr.buffer.load.v4f32 (ptr addrspace (8 ), i32 , i32 , i32 ) #0
0 commit comments