@@ -28,10 +28,8 @@ declare hidden void @external_void_func_v2p5_inreg(<2 x ptr addrspace(5)> inreg)
28
28
29
29
declare hidden void @external_void_func_i64_inreg_i32_inreg_i64_inreg (i64 inreg , i32 inreg , i64 inreg ) #0
30
30
31
- declare hidden void @external_void_func_a15i32_inreg ([15 x i32 ] inreg ) #0
32
- declare hidden void @external_void_func_a16i32_inreg ([16 x i32 ] inreg ) #0
33
- declare hidden void @external_void_func_a15i32_inreg_i32_inreg ([15 x i32 ] inreg , i32 inreg ) #0
34
- declare hidden void @external_void_func_a15i32_inreg_i32_inreg__noimplicit ([15 x i32 ] inreg , i32 inreg ) #1
31
+ declare hidden void @external_void_func_a15i32_inreg ([13 x i32 ] inreg ) #0
32
+ declare hidden void @external_void_func_a15i32_inreg_i32_inreg__noimplicit ([13 x i32 ] inreg , i32 inreg ) #1
35
33
36
34
define void @test_call_external_void_func_i8_inreg (i8 inreg %arg ) #0 {
37
35
; GFX9-LABEL: test_call_external_void_func_i8_inreg:
@@ -534,12 +532,6 @@ define void @test_call_external_void_func_v8i32_inreg(<8 x i32> inreg %arg) #0 {
534
532
ret void
535
533
}
536
534
537
- ; FIXME:
538
- ; define void @test_call_external_void_func_v16i32_inreg(<16 x i32> inreg %arg) #0 {
539
- ; call void @external_void_func_v16i32_inreg(<16 x i32> inreg %arg)
540
- ; ret void
541
- ; }
542
-
543
535
define void @test_call_external_void_func_f16_inreg (half inreg %arg ) #0 {
544
536
; GFX9-LABEL: test_call_external_void_func_f16_inreg:
545
537
; GFX9: ; %bb.0:
@@ -1402,16 +1394,16 @@ define void @test_call_external_void_func_i64_inreg_i32_inreg_i64_inreg(i64 inre
1402
1394
ret void
1403
1395
}
1404
1396
1405
- define void @test_call_external_void_func_a15i32_inreg ([15 x i32 ] inreg %arg0 ) #0 {
1397
+ define void @test_call_external_void_func_a15i32_inreg ([13 x i32 ] inreg %arg0 ) #0 {
1406
1398
; GFX9-LABEL: test_call_external_void_func_a15i32_inreg:
1407
1399
; GFX9: ; %bb.0:
1408
1400
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1409
- ; GFX9-NEXT: s_mov_b32 s29 , s33
1401
+ ; GFX9-NEXT: s_mov_b32 s27 , s33
1410
1402
; GFX9-NEXT: s_mov_b32 s33, s32
1411
- ; GFX9-NEXT: s_or_saveexec_b64 vcc , -1
1403
+ ; GFX9-NEXT: s_or_saveexec_b64 s[28:29] , -1
1412
1404
; GFX9-NEXT: buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
1413
- ; GFX9-NEXT: s_mov_b64 exec, vcc
1414
- ; GFX9-NEXT: v_writelane_b32 v40, s29 , 2
1405
+ ; GFX9-NEXT: s_mov_b64 exec, s[28:29]
1406
+ ; GFX9-NEXT: v_writelane_b32 v40, s27 , 2
1415
1407
; GFX9-NEXT: s_addk_i32 s32, 0x400
1416
1408
; GFX9-NEXT: v_writelane_b32 v40, s30, 0
1417
1409
; GFX9-NEXT: s_mov_b32 s3, s17
@@ -1427,13 +1419,11 @@ define void @test_call_external_void_func_a15i32_inreg([15 x i32] inreg %arg0) #
1427
1419
; GFX9-NEXT: s_mov_b32 s22, s24
1428
1420
; GFX9-NEXT: s_mov_b32 s23, s25
1429
1421
; GFX9-NEXT: s_mov_b32 s24, s26
1430
- ; GFX9-NEXT: s_mov_b32 s25, s27
1431
- ; GFX9-NEXT: s_mov_b32 s26, s28
1432
1422
; GFX9-NEXT: v_writelane_b32 v40, s31, 1
1433
- ; GFX9-NEXT: s_getpc_b64 vcc
1434
- ; GFX9-NEXT: s_add_u32 vcc_lo, vcc_lo , external_void_func_a15i32_inreg@rel32@lo+4
1435
- ; GFX9-NEXT: s_addc_u32 vcc_hi, vcc_hi , external_void_func_a15i32_inreg@rel32@hi+12
1436
- ; GFX9-NEXT: s_swappc_b64 s[30:31], vcc
1423
+ ; GFX9-NEXT: s_getpc_b64 s[28:29]
1424
+ ; GFX9-NEXT: s_add_u32 s28, s28 , external_void_func_a15i32_inreg@rel32@lo+4
1425
+ ; GFX9-NEXT: s_addc_u32 s29, s29 , external_void_func_a15i32_inreg@rel32@hi+12
1426
+ ; GFX9-NEXT: s_swappc_b64 s[30:31], s[28:29]
1437
1427
; GFX9-NEXT: v_readlane_b32 s31, v40, 1
1438
1428
; GFX9-NEXT: v_readlane_b32 s30, v40, 0
1439
1429
; GFX9-NEXT: v_readlane_b32 s4, v40, 2
@@ -1448,31 +1438,29 @@ define void @test_call_external_void_func_a15i32_inreg([15 x i32] inreg %arg0) #
1448
1438
; GFX11-LABEL: test_call_external_void_func_a15i32_inreg:
1449
1439
; GFX11: ; %bb.0:
1450
1440
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1451
- ; GFX11-NEXT: s_mov_b32 s25 , s33
1441
+ ; GFX11-NEXT: s_mov_b32 s23 , s33
1452
1442
; GFX11-NEXT: s_mov_b32 s33, s32
1453
- ; GFX11-NEXT: s_or_saveexec_b32 s26 , -1
1443
+ ; GFX11-NEXT: s_or_saveexec_b32 s24 , -1
1454
1444
; GFX11-NEXT: scratch_store_b32 off, v40, s33 ; 4-byte Folded Spill
1455
- ; GFX11-NEXT: s_mov_b32 exec_lo, s26
1456
- ; GFX11-NEXT: v_writelane_b32 v40, s25, 2
1457
- ; GFX11-NEXT: s_mov_b32 s26, s24
1458
- ; GFX11-NEXT: s_mov_b32 s25, s23
1445
+ ; GFX11-NEXT: s_mov_b32 exec_lo, s24
1446
+ ; GFX11-NEXT: v_writelane_b32 v40, s23, 2
1459
1447
; GFX11-NEXT: s_mov_b32 s24, s22
1460
1448
; GFX11-NEXT: s_mov_b32 s23, s21
1461
- ; GFX11-NEXT: v_writelane_b32 v40, s30, 0
1462
1449
; GFX11-NEXT: s_mov_b32 s22, s20
1463
1450
; GFX11-NEXT: s_mov_b32 s21, s19
1451
+ ; GFX11-NEXT: v_writelane_b32 v40, s30, 0
1464
1452
; GFX11-NEXT: s_mov_b32 s20, s18
1465
1453
; GFX11-NEXT: s_mov_b32 s19, s17
1466
1454
; GFX11-NEXT: s_mov_b32 s18, s16
1467
1455
; GFX11-NEXT: s_mov_b32 s17, s7
1468
1456
; GFX11-NEXT: s_mov_b32 s16, s6
1469
1457
; GFX11-NEXT: s_add_i32 s32, s32, 16
1470
1458
; GFX11-NEXT: v_writelane_b32 v40, s31, 1
1471
- ; GFX11-NEXT: s_getpc_b64 s[28:29 ]
1472
- ; GFX11-NEXT: s_add_u32 s28, s28 , external_void_func_a15i32_inreg@rel32@lo+4
1473
- ; GFX11-NEXT: s_addc_u32 s29, s29 , external_void_func_a15i32_inreg@rel32@hi+12
1459
+ ; GFX11-NEXT: s_getpc_b64 s[26:27 ]
1460
+ ; GFX11-NEXT: s_add_u32 s26, s26 , external_void_func_a15i32_inreg@rel32@lo+4
1461
+ ; GFX11-NEXT: s_addc_u32 s27, s27 , external_void_func_a15i32_inreg@rel32@hi+12
1474
1462
; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
1475
- ; GFX11-NEXT: s_swappc_b64 s[30:31], s[28:29 ]
1463
+ ; GFX11-NEXT: s_swappc_b64 s[30:31], s[26:27 ]
1476
1464
; GFX11-NEXT: v_readlane_b32 s31, v40, 1
1477
1465
; GFX11-NEXT: v_readlane_b32 s30, v40, 0
1478
1466
; GFX11-NEXT: v_readlane_b32 s0, v40, 2
@@ -1483,34 +1471,22 @@ define void @test_call_external_void_func_a15i32_inreg([15 x i32] inreg %arg0) #
1483
1471
; GFX11-NEXT: s_mov_b32 s33, s0
1484
1472
; GFX11-NEXT: s_waitcnt vmcnt(0)
1485
1473
; GFX11-NEXT: s_setpc_b64 s[30:31]
1486
- call void @external_void_func_a15i32_inreg ([15 x i32 ] inreg %arg0 )
1474
+ call void @external_void_func_a15i32_inreg ([13 x i32 ] inreg %arg0 )
1487
1475
ret void
1488
1476
}
1489
1477
1490
- ; FIXME:
1491
- ; define void @test_call_external_void_func_a16i32_inreg([16 x i32] inreg %arg0) #0 {
1492
- ; call void @external_void_func_a16i32_inreg([16 x i32] inreg %arg0)
1493
- ; ret void
1494
- ; }
1495
-
1496
- ; FIXME:
1497
- ; define void @test_call_external_void_func_a15i32_inreg_i32_inreg([15 x i32] inreg %arg0, i32 inreg %arg1) #0 {
1498
- ; call void @external_void_func_a15i32_inreg_i32_inreg([15 x i32] inreg %arg0, i32 inreg %arg1)
1499
- ; ret void
1500
- ; }
1501
-
1502
1478
1503
1479
; FIXME: This should also fail
1504
- define void @test_call_external_void_func_a15i32_inreg_i32_inreg ([15 x i32 ] inreg %arg0 , i32 inreg %arg1 ) #1 {
1480
+ define void @test_call_external_void_func_a15i32_inreg_i32_inreg ([13 x i32 ] inreg %arg0 , i32 inreg %arg1 ) #1 {
1505
1481
; GFX9-LABEL: test_call_external_void_func_a15i32_inreg_i32_inreg:
1506
1482
; GFX9: ; %bb.0:
1507
1483
; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1508
- ; GFX9-NEXT: s_mov_b32 s23 , s33
1484
+ ; GFX9-NEXT: s_mov_b32 s21 , s33
1509
1485
; GFX9-NEXT: s_mov_b32 s33, s32
1510
- ; GFX9-NEXT: s_or_saveexec_b64 s[24:25 ], -1
1486
+ ; GFX9-NEXT: s_or_saveexec_b64 s[22:23 ], -1
1511
1487
; GFX9-NEXT: buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
1512
- ; GFX9-NEXT: s_mov_b64 exec, s[24:25 ]
1513
- ; GFX9-NEXT: v_writelane_b32 v40, s23 , 2
1488
+ ; GFX9-NEXT: s_mov_b64 exec, s[22:23 ]
1489
+ ; GFX9-NEXT: v_writelane_b32 v40, s21 , 2
1514
1490
; GFX9-NEXT: s_addk_i32 s32, 0x400
1515
1491
; GFX9-NEXT: v_writelane_b32 v40, s30, 0
1516
1492
; GFX9-NEXT: s_mov_b32 s3, s7
@@ -1527,13 +1503,11 @@ define void @test_call_external_void_func_a15i32_inreg_i32_inreg([15 x i32] inre
1527
1503
; GFX9-NEXT: s_mov_b32 s11, s18
1528
1504
; GFX9-NEXT: s_mov_b32 s15, s19
1529
1505
; GFX9-NEXT: s_mov_b32 s16, s20
1530
- ; GFX9-NEXT: s_mov_b32 s17, s21
1531
- ; GFX9-NEXT: s_mov_b32 s18, s22
1532
1506
; GFX9-NEXT: v_writelane_b32 v40, s31, 1
1533
- ; GFX9-NEXT: s_getpc_b64 s[24:25 ]
1534
- ; GFX9-NEXT: s_add_u32 s24, s24 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@lo+4
1535
- ; GFX9-NEXT: s_addc_u32 s25, s25 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@hi+12
1536
- ; GFX9-NEXT: s_swappc_b64 s[30:31], s[24:25 ]
1507
+ ; GFX9-NEXT: s_getpc_b64 s[22:23 ]
1508
+ ; GFX9-NEXT: s_add_u32 s22, s22 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@lo+4
1509
+ ; GFX9-NEXT: s_addc_u32 s23, s23 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@hi+12
1510
+ ; GFX9-NEXT: s_swappc_b64 s[30:31], s[22:23 ]
1537
1511
; GFX9-NEXT: v_readlane_b32 s31, v40, 1
1538
1512
; GFX9-NEXT: v_readlane_b32 s30, v40, 0
1539
1513
; GFX9-NEXT: v_readlane_b32 s4, v40, 2
@@ -1548,19 +1522,19 @@ define void @test_call_external_void_func_a15i32_inreg_i32_inreg([15 x i32] inre
1548
1522
; GFX11-LABEL: test_call_external_void_func_a15i32_inreg_i32_inreg:
1549
1523
; GFX11: ; %bb.0:
1550
1524
; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1551
- ; GFX11-NEXT: s_mov_b32 s19 , s33
1525
+ ; GFX11-NEXT: s_mov_b32 s17 , s33
1552
1526
; GFX11-NEXT: s_mov_b32 s33, s32
1553
- ; GFX11-NEXT: s_or_saveexec_b32 s20 , -1
1527
+ ; GFX11-NEXT: s_or_saveexec_b32 s18 , -1
1554
1528
; GFX11-NEXT: scratch_store_b32 off, v40, s33 ; 4-byte Folded Spill
1555
- ; GFX11-NEXT: s_mov_b32 exec_lo, s20
1556
- ; GFX11-NEXT: v_writelane_b32 v40, s19 , 2
1529
+ ; GFX11-NEXT: s_mov_b32 exec_lo, s18
1530
+ ; GFX11-NEXT: v_writelane_b32 v40, s17 , 2
1557
1531
; GFX11-NEXT: s_add_i32 s32, s32, 16
1558
- ; GFX11-NEXT: s_getpc_b64 s[20:21 ]
1559
- ; GFX11-NEXT: s_add_u32 s20, s20 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@lo+4
1560
- ; GFX11-NEXT: s_addc_u32 s21, s21 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@hi+12
1532
+ ; GFX11-NEXT: s_getpc_b64 s[18:19 ]
1533
+ ; GFX11-NEXT: s_add_u32 s18, s18 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@lo+4
1534
+ ; GFX11-NEXT: s_addc_u32 s19, s19 , external_void_func_a15i32_inreg_i32_inreg__noimplicit@rel32@hi+12
1561
1535
; GFX11-NEXT: v_writelane_b32 v40, s30, 0
1562
1536
; GFX11-NEXT: v_writelane_b32 v40, s31, 1
1563
- ; GFX11-NEXT: s_swappc_b64 s[30:31], s[20:21 ]
1537
+ ; GFX11-NEXT: s_swappc_b64 s[30:31], s[18:19 ]
1564
1538
; GFX11-NEXT: s_delay_alu instid0(VALU_DEP_1)
1565
1539
; GFX11-NEXT: v_readlane_b32 s31, v40, 1
1566
1540
; GFX11-NEXT: v_readlane_b32 s30, v40, 0
@@ -1572,7 +1546,7 @@ define void @test_call_external_void_func_a15i32_inreg_i32_inreg([15 x i32] inre
1572
1546
; GFX11-NEXT: s_mov_b32 s33, s0
1573
1547
; GFX11-NEXT: s_waitcnt vmcnt(0)
1574
1548
; GFX11-NEXT: s_setpc_b64 s[30:31]
1575
- call void @external_void_func_a15i32_inreg_i32_inreg__noimplicit ([15 x i32 ] inreg %arg0 , i32 inreg %arg1 )
1549
+ call void @external_void_func_a15i32_inreg_i32_inreg__noimplicit ([13 x i32 ] inreg %arg0 , i32 inreg %arg1 )
1576
1550
ret void
1577
1551
}
1578
1552
0 commit comments