@@ -1360,8 +1360,10 @@ class Base_DS_Real_gfx6_gfx7_gfx10_gfx11_gfx12<bits<8> op, DS_Pseudo ps, int ef,
1360
1360
// GFX12.
1361
1361
//===----------------------------------------------------------------------===//
1362
1362
1363
- multiclass DS_Real_gfx12<bits<8> op, string name = !tolower(NAME)> {
1364
- defvar ps = !cast<DS_Pseudo>(NAME);
1363
+ multiclass DS_Real_gfx12<bits<8> op,
1364
+ DS_Pseudo ps = !cast<DS_Pseudo>(NAME),
1365
+ string name = !tolower(NAME)> {
1366
+
1365
1367
let AssemblerPredicate = isGFX12Plus in {
1366
1368
let DecoderNamespace = "GFX12" in
1367
1369
def _gfx12 :
@@ -1372,14 +1374,20 @@ multiclass DS_Real_gfx12<bits<8> op, string name = !tolower(NAME)> {
1372
1374
} // End AssemblerPredicate
1373
1375
}
1374
1376
1375
- defm DS_MIN_F32 : DS_Real_gfx12<0x012, "ds_min_num_f32">;
1376
- defm DS_MAX_F32 : DS_Real_gfx12<0x013, "ds_max_num_f32">;
1377
- defm DS_MIN_RTN_F32 : DS_Real_gfx12<0x032, "ds_min_num_rtn_f32">;
1378
- defm DS_MAX_RTN_F32 : DS_Real_gfx12<0x033, "ds_max_num_rtn_f32">;
1379
- defm DS_MIN_F64 : DS_Real_gfx12<0x052, "ds_min_num_f64">;
1380
- defm DS_MAX_F64 : DS_Real_gfx12<0x053, "ds_max_num_f64">;
1381
- defm DS_MIN_RTN_F64 : DS_Real_gfx12<0x072, "ds_min_num_rtn_f64">;
1382
- defm DS_MAX_RTN_F64 : DS_Real_gfx12<0x073, "ds_max_num_rtn_f64">;
1377
+ // Helper to avoid repeating the pseudo-name if we only need to set
1378
+ // the gfx12 name.
1379
+ multiclass DS_Real_gfx12_with_name<bits<8> op, string name> {
1380
+ defm "" : DS_Real_gfx12<op, !cast<DS_Pseudo>(NAME), name>;
1381
+ }
1382
+
1383
+ defm DS_MIN_F32 : DS_Real_gfx12_with_name<0x012, "ds_min_num_f32">;
1384
+ defm DS_MAX_F32 : DS_Real_gfx12_with_name<0x013, "ds_max_num_f32">;
1385
+ defm DS_MIN_RTN_F32 : DS_Real_gfx12_with_name<0x032, "ds_min_num_rtn_f32">;
1386
+ defm DS_MAX_RTN_F32 : DS_Real_gfx12_with_name<0x033, "ds_max_num_rtn_f32">;
1387
+ defm DS_MIN_F64 : DS_Real_gfx12_with_name<0x052, "ds_min_num_f64">;
1388
+ defm DS_MAX_F64 : DS_Real_gfx12_with_name<0x053, "ds_max_num_f64">;
1389
+ defm DS_MIN_RTN_F64 : DS_Real_gfx12_with_name<0x072, "ds_min_num_rtn_f64">;
1390
+ defm DS_MAX_RTN_F64 : DS_Real_gfx12_with_name<0x073, "ds_max_num_rtn_f64">;
1383
1391
defm DS_COND_SUB_U32 : DS_Real_gfx12<0x098>;
1384
1392
defm DS_SUB_CLAMP_U32 : DS_Real_gfx12<0x099>;
1385
1393
defm DS_COND_SUB_RTN_U32 : DS_Real_gfx12<0x0a8>;
@@ -1395,7 +1403,7 @@ defm DS_LOAD_TR6_B96 : DS_Real_gfx12<0x0fb>;
1395
1403
defm DS_LOAD_TR16_B128 : DS_Real_gfx12<0x0fc>;
1396
1404
defm DS_LOAD_TR8_B64 : DS_Real_gfx12<0x0fd>;
1397
1405
1398
- defm DS_BVH_STACK_RTN_B32 : DS_Real_gfx12 <0x0e0,
1406
+ defm DS_BVH_STACK_RTN_B32 : DS_Real_gfx12_with_name <0x0e0,
1399
1407
"ds_bvh_stack_push4_pop1_rtn_b32">;
1400
1408
defm DS_BVH_STACK_PUSH8_POP1_RTN_B32 : DS_Real_gfx12<0x0e1>;
1401
1409
defm DS_BVH_STACK_PUSH8_POP2_RTN_B64 : DS_Real_gfx12<0x0e2>;
@@ -1424,8 +1432,8 @@ def : MnemonicAlias<"ds_load_tr_b128", "ds_load_tr16_b128">, Requires<[isGFX1250
1424
1432
// GFX11.
1425
1433
//===----------------------------------------------------------------------===//
1426
1434
1427
- multiclass DS_Real_gfx11<bits<8> op, string name = !tolower (NAME)> {
1428
- defvar ps = !cast<DS_Pseudo> (NAME);
1435
+ multiclass DS_Real_gfx11<bits<8> op, DS_Pseudo ps = !cast<DS_Pseudo> (NAME),
1436
+ string name = !tolower (NAME)> {
1429
1437
let AssemblerPredicate = isGFX11Only in {
1430
1438
let DecoderNamespace = "GFX11" in
1431
1439
def _gfx11 :
@@ -1436,8 +1444,11 @@ multiclass DS_Real_gfx11<bits<8> op, string name = !tolower(NAME)> {
1436
1444
} // End AssemblerPredicate
1437
1445
}
1438
1446
1439
- multiclass DS_Real_gfx11_gfx12<bits<8> op, string name = !tolower(NAME)>
1440
- : DS_Real_gfx11<op, name>, DS_Real_gfx12<op, name>;
1447
+ multiclass DS_Real_gfx11_gfx12<bits<8> op,
1448
+ string name = !tolower(NAME),
1449
+ DS_Pseudo ps = !cast<DS_Pseudo>(NAME)>
1450
+ : DS_Real_gfx11<op, ps, name>,
1451
+ DS_Real_gfx12<op, ps, name>;
1441
1452
1442
1453
defm DS_WRITE_B32 : DS_Real_gfx11_gfx12<0x00d, "ds_store_b32">;
1443
1454
defm DS_WRITE2_B32 : DS_Real_gfx11_gfx12<0x00e, "ds_store_2addr_b32">;
0 commit comments