@@ -418,103 +418,103 @@ def V_MFMA_F32_32X32X4BF16 : VOP3Inst<"v_mfma_f32_32x32x4bf16", VOPProfileMAI_F3
418
418
def : MnemonicAlias<"v_accvgpr_read", "v_accvgpr_read_b32">;
419
419
def : MnemonicAlias<"v_accvgpr_write", "v_accvgpr_write_b32">;
420
420
421
- multiclass VOP3P_Real_vi<bits<10 > op> {
421
+ multiclass VOP3P_Real_vi<bits<7 > op> {
422
422
def _vi : VOP3P_Real<!cast<VOP3_Pseudo>(NAME), SIEncodingFamily.VI>,
423
423
VOP3Pe <op, !cast<VOP3_Pseudo>(NAME).Pfl> {
424
424
let AssemblerPredicate = HasVOP3PInsts;
425
425
let DecoderNamespace = "GFX8";
426
426
}
427
427
}
428
428
429
- multiclass VOP3P_Real_MAI<bits<10 > op> {
429
+ multiclass VOP3P_Real_MAI<bits<7 > op> {
430
430
def _vi : VOP3P_Real<!cast<VOP3_Pseudo>(NAME), SIEncodingFamily.VI>,
431
431
VOP3Pe_MAI <op, !cast<VOP3_Pseudo>(NAME).Pfl> {
432
432
let AssemblerPredicate = HasMAIInsts;
433
433
let DecoderNamespace = "GFX8";
434
434
}
435
435
}
436
436
437
- defm V_PK_MAD_I16 : VOP3P_Real_vi <0x380 >;
438
- defm V_PK_MUL_LO_U16 : VOP3P_Real_vi <0x381 >;
439
- defm V_PK_ADD_I16 : VOP3P_Real_vi <0x382 >;
440
- defm V_PK_SUB_I16 : VOP3P_Real_vi <0x383 >;
441
- defm V_PK_LSHLREV_B16 : VOP3P_Real_vi <0x384 >;
442
- defm V_PK_LSHRREV_B16 : VOP3P_Real_vi <0x385 >;
443
- defm V_PK_ASHRREV_I16 : VOP3P_Real_vi <0x386 >;
444
- defm V_PK_MAX_I16 : VOP3P_Real_vi <0x387 >;
445
- defm V_PK_MIN_I16 : VOP3P_Real_vi <0x388 >;
446
- defm V_PK_MAD_U16 : VOP3P_Real_vi <0x389 >;
447
-
448
- defm V_PK_ADD_U16 : VOP3P_Real_vi <0x38a >;
449
- defm V_PK_SUB_U16 : VOP3P_Real_vi <0x38b >;
450
- defm V_PK_MAX_U16 : VOP3P_Real_vi <0x38c >;
451
- defm V_PK_MIN_U16 : VOP3P_Real_vi <0x38d >;
452
- defm V_PK_FMA_F16 : VOP3P_Real_vi <0x38e >;
453
- defm V_PK_ADD_F16 : VOP3P_Real_vi <0x38f >;
454
- defm V_PK_MUL_F16 : VOP3P_Real_vi <0x390 >;
455
- defm V_PK_MIN_F16 : VOP3P_Real_vi <0x391 >;
456
- defm V_PK_MAX_F16 : VOP3P_Real_vi <0x392 >;
437
+ defm V_PK_MAD_I16 : VOP3P_Real_vi <0x00 >;
438
+ defm V_PK_MUL_LO_U16 : VOP3P_Real_vi <0x01 >;
439
+ defm V_PK_ADD_I16 : VOP3P_Real_vi <0x02 >;
440
+ defm V_PK_SUB_I16 : VOP3P_Real_vi <0x03 >;
441
+ defm V_PK_LSHLREV_B16 : VOP3P_Real_vi <0x04 >;
442
+ defm V_PK_LSHRREV_B16 : VOP3P_Real_vi <0x05 >;
443
+ defm V_PK_ASHRREV_I16 : VOP3P_Real_vi <0x06 >;
444
+ defm V_PK_MAX_I16 : VOP3P_Real_vi <0x07 >;
445
+ defm V_PK_MIN_I16 : VOP3P_Real_vi <0x08 >;
446
+ defm V_PK_MAD_U16 : VOP3P_Real_vi <0x09 >;
447
+
448
+ defm V_PK_ADD_U16 : VOP3P_Real_vi <0x0a >;
449
+ defm V_PK_SUB_U16 : VOP3P_Real_vi <0x0b >;
450
+ defm V_PK_MAX_U16 : VOP3P_Real_vi <0x0c >;
451
+ defm V_PK_MIN_U16 : VOP3P_Real_vi <0x0d >;
452
+ defm V_PK_FMA_F16 : VOP3P_Real_vi <0x0e >;
453
+ defm V_PK_ADD_F16 : VOP3P_Real_vi <0x0f >;
454
+ defm V_PK_MUL_F16 : VOP3P_Real_vi <0x10 >;
455
+ defm V_PK_MIN_F16 : VOP3P_Real_vi <0x11 >;
456
+ defm V_PK_MAX_F16 : VOP3P_Real_vi <0x12 >;
457
457
458
458
459
459
let SubtargetPredicate = HasMadMixInsts in {
460
- defm V_MAD_MIX_F32 : VOP3P_Real_vi <0x3a0 >;
461
- defm V_MAD_MIXLO_F16 : VOP3P_Real_vi <0x3a1 >;
462
- defm V_MAD_MIXHI_F16 : VOP3P_Real_vi <0x3a2 >;
460
+ defm V_MAD_MIX_F32 : VOP3P_Real_vi <0x20 >;
461
+ defm V_MAD_MIXLO_F16 : VOP3P_Real_vi <0x21 >;
462
+ defm V_MAD_MIXHI_F16 : VOP3P_Real_vi <0x22 >;
463
463
}
464
464
465
465
let SubtargetPredicate = HasFmaMixInsts in {
466
466
let DecoderNamespace = "GFX9_DL" in {
467
467
// The mad_mix instructions were renamed and their behaviors changed,
468
468
// but the opcode stayed the same so we need to put these in a
469
469
// different DecoderNamespace to avoid the ambiguity.
470
- defm V_FMA_MIX_F32 : VOP3P_Real_vi <0x3a0 >;
471
- defm V_FMA_MIXLO_F16 : VOP3P_Real_vi <0x3a1 >;
472
- defm V_FMA_MIXHI_F16 : VOP3P_Real_vi <0x3a2 >;
470
+ defm V_FMA_MIX_F32 : VOP3P_Real_vi <0x20 >;
471
+ defm V_FMA_MIXLO_F16 : VOP3P_Real_vi <0x21 >;
472
+ defm V_FMA_MIXHI_F16 : VOP3P_Real_vi <0x22 >;
473
473
}
474
474
}
475
475
476
476
477
477
let SubtargetPredicate = HasDot2Insts in {
478
478
479
- defm V_DOT2_F32_F16 : VOP3P_Real_vi <0x3a3 >;
480
- defm V_DOT2_I32_I16 : VOP3P_Real_vi <0x3a6 >;
481
- defm V_DOT2_U32_U16 : VOP3P_Real_vi <0x3a7 >;
482
- defm V_DOT4_U32_U8 : VOP3P_Real_vi <0x3a9 >;
483
- defm V_DOT8_U32_U4 : VOP3P_Real_vi <0x3ab >;
479
+ defm V_DOT2_F32_F16 : VOP3P_Real_vi <0x23 >;
480
+ defm V_DOT2_I32_I16 : VOP3P_Real_vi <0x26 >;
481
+ defm V_DOT2_U32_U16 : VOP3P_Real_vi <0x27 >;
482
+ defm V_DOT4_U32_U8 : VOP3P_Real_vi <0x29 >;
483
+ defm V_DOT8_U32_U4 : VOP3P_Real_vi <0x2b >;
484
484
485
485
} // End SubtargetPredicate = HasDot2Insts
486
486
487
487
let SubtargetPredicate = HasDot1Insts in {
488
488
489
- defm V_DOT4_I32_I8 : VOP3P_Real_vi <0x3a8 >;
490
- defm V_DOT8_I32_I4 : VOP3P_Real_vi <0x3aa >;
489
+ defm V_DOT4_I32_I8 : VOP3P_Real_vi <0x28 >;
490
+ defm V_DOT8_I32_I4 : VOP3P_Real_vi <0x2a >;
491
491
492
492
} // End SubtargetPredicate = HasDot1Insts
493
493
494
494
let SubtargetPredicate = HasMAIInsts in {
495
495
496
- defm V_ACCVGPR_READ_B32 : VOP3P_Real_MAI <0x3d8 >;
497
- defm V_ACCVGPR_WRITE_B32 : VOP3P_Real_MAI <0x3d9 >;
498
- defm V_MFMA_F32_32X32X1F32 : VOP3P_Real_MAI <0x3c0 >;
499
- defm V_MFMA_F32_16X16X1F32 : VOP3P_Real_MAI <0x3c1 >;
500
- defm V_MFMA_F32_4X4X1F32 : VOP3P_Real_MAI <0x3c2 >;
501
- defm V_MFMA_F32_32X32X2F32 : VOP3P_Real_MAI <0x3c4 >;
502
- defm V_MFMA_F32_16X16X4F32 : VOP3P_Real_MAI <0x3c5 >;
503
- defm V_MFMA_F32_32X32X4F16 : VOP3P_Real_MAI <0x3c8 >;
504
- defm V_MFMA_F32_16X16X4F16 : VOP3P_Real_MAI <0x3c9 >;
505
- defm V_MFMA_F32_4X4X4F16 : VOP3P_Real_MAI <0x3ca >;
506
- defm V_MFMA_F32_32X32X8F16 : VOP3P_Real_MAI <0x3cc >;
507
- defm V_MFMA_F32_16X16X16F16 : VOP3P_Real_MAI <0x3cd >;
508
- defm V_MFMA_I32_32X32X4I8 : VOP3P_Real_MAI <0x3d0 >;
509
- defm V_MFMA_I32_16X16X4I8 : VOP3P_Real_MAI <0x3d1 >;
510
- defm V_MFMA_I32_4X4X4I8 : VOP3P_Real_MAI <0x3d2 >;
511
- defm V_MFMA_I32_32X32X8I8 : VOP3P_Real_MAI <0x3d4 >;
512
- defm V_MFMA_I32_16X16X16I8 : VOP3P_Real_MAI <0x3d5 >;
513
- defm V_MFMA_F32_32X32X2BF16 : VOP3P_Real_MAI <0x3e8 >;
514
- defm V_MFMA_F32_16X16X2BF16 : VOP3P_Real_MAI <0x3e9 >;
515
- defm V_MFMA_F32_4X4X2BF16 : VOP3P_Real_MAI <0x3eb >;
516
- defm V_MFMA_F32_32X32X4BF16 : VOP3P_Real_MAI <0x3ec >;
517
- defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MAI <0x3ed >;
496
+ defm V_ACCVGPR_READ_B32 : VOP3P_Real_MAI <0x58 >;
497
+ defm V_ACCVGPR_WRITE_B32 : VOP3P_Real_MAI <0x59 >;
498
+ defm V_MFMA_F32_32X32X1F32 : VOP3P_Real_MAI <0x40 >;
499
+ defm V_MFMA_F32_16X16X1F32 : VOP3P_Real_MAI <0x41 >;
500
+ defm V_MFMA_F32_4X4X1F32 : VOP3P_Real_MAI <0x42 >;
501
+ defm V_MFMA_F32_32X32X2F32 : VOP3P_Real_MAI <0x44 >;
502
+ defm V_MFMA_F32_16X16X4F32 : VOP3P_Real_MAI <0x45 >;
503
+ defm V_MFMA_F32_32X32X4F16 : VOP3P_Real_MAI <0x48 >;
504
+ defm V_MFMA_F32_16X16X4F16 : VOP3P_Real_MAI <0x49 >;
505
+ defm V_MFMA_F32_4X4X4F16 : VOP3P_Real_MAI <0x4a >;
506
+ defm V_MFMA_F32_32X32X8F16 : VOP3P_Real_MAI <0x4c >;
507
+ defm V_MFMA_F32_16X16X16F16 : VOP3P_Real_MAI <0x4d >;
508
+ defm V_MFMA_I32_32X32X4I8 : VOP3P_Real_MAI <0x50 >;
509
+ defm V_MFMA_I32_16X16X4I8 : VOP3P_Real_MAI <0x51 >;
510
+ defm V_MFMA_I32_4X4X4I8 : VOP3P_Real_MAI <0x52 >;
511
+ defm V_MFMA_I32_32X32X8I8 : VOP3P_Real_MAI <0x54 >;
512
+ defm V_MFMA_I32_16X16X16I8 : VOP3P_Real_MAI <0x55 >;
513
+ defm V_MFMA_F32_32X32X2BF16 : VOP3P_Real_MAI <0x68 >;
514
+ defm V_MFMA_F32_16X16X2BF16 : VOP3P_Real_MAI <0x69 >;
515
+ defm V_MFMA_F32_4X4X2BF16 : VOP3P_Real_MAI <0x6b >;
516
+ defm V_MFMA_F32_32X32X4BF16 : VOP3P_Real_MAI <0x6c >;
517
+ defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MAI <0x6d >;
518
518
519
519
} // End SubtargetPredicate = HasMAIInsts
520
520
@@ -523,48 +523,48 @@ defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MAI <0x3ed>;
523
523
//===----------------------------------------------------------------------===//
524
524
525
525
let AssemblerPredicate = isGFX10Plus, DecoderNamespace = "GFX10" in {
526
- multiclass VOP3P_Real_gfx10<bits<10 > op> {
526
+ multiclass VOP3P_Real_gfx10<bits<7 > op> {
527
527
def _gfx10 : VOP3P_Real<!cast<VOP3P_Pseudo>(NAME), SIEncodingFamily.GFX10>,
528
528
VOP3Pe_gfx10 <op, !cast<VOP3P_Pseudo>(NAME).Pfl>;
529
529
}
530
530
} // End AssemblerPredicate = isGFX10Plus, DecoderNamespace = "GFX10"
531
531
532
- defm V_PK_MAD_I16 : VOP3P_Real_gfx10<0x000 >;
533
- defm V_PK_MUL_LO_U16 : VOP3P_Real_gfx10<0x001 >;
534
- defm V_PK_ADD_I16 : VOP3P_Real_gfx10<0x002 >;
535
- defm V_PK_SUB_I16 : VOP3P_Real_gfx10<0x003 >;
536
- defm V_PK_LSHLREV_B16 : VOP3P_Real_gfx10<0x004 >;
537
- defm V_PK_LSHRREV_B16 : VOP3P_Real_gfx10<0x005 >;
538
- defm V_PK_ASHRREV_I16 : VOP3P_Real_gfx10<0x006 >;
539
- defm V_PK_MAX_I16 : VOP3P_Real_gfx10<0x007 >;
540
- defm V_PK_MIN_I16 : VOP3P_Real_gfx10<0x008 >;
541
- defm V_PK_MAD_U16 : VOP3P_Real_gfx10<0x009 >;
542
- defm V_PK_ADD_U16 : VOP3P_Real_gfx10<0x00a >;
543
- defm V_PK_SUB_U16 : VOP3P_Real_gfx10<0x00b >;
544
- defm V_PK_MAX_U16 : VOP3P_Real_gfx10<0x00c >;
545
- defm V_PK_MIN_U16 : VOP3P_Real_gfx10<0x00d >;
546
- defm V_PK_FMA_F16 : VOP3P_Real_gfx10<0x00e >;
547
- defm V_PK_ADD_F16 : VOP3P_Real_gfx10<0x00f >;
548
- defm V_PK_MUL_F16 : VOP3P_Real_gfx10<0x010 >;
549
- defm V_PK_MIN_F16 : VOP3P_Real_gfx10<0x011 >;
550
- defm V_PK_MAX_F16 : VOP3P_Real_gfx10<0x012 >;
551
- defm V_FMA_MIX_F32 : VOP3P_Real_gfx10<0x020 >;
552
- defm V_FMA_MIXLO_F16 : VOP3P_Real_gfx10<0x021 >;
553
- defm V_FMA_MIXHI_F16 : VOP3P_Real_gfx10<0x022 >;
532
+ defm V_PK_MAD_I16 : VOP3P_Real_gfx10<0x00 >;
533
+ defm V_PK_MUL_LO_U16 : VOP3P_Real_gfx10<0x01 >;
534
+ defm V_PK_ADD_I16 : VOP3P_Real_gfx10<0x02 >;
535
+ defm V_PK_SUB_I16 : VOP3P_Real_gfx10<0x03 >;
536
+ defm V_PK_LSHLREV_B16 : VOP3P_Real_gfx10<0x04 >;
537
+ defm V_PK_LSHRREV_B16 : VOP3P_Real_gfx10<0x05 >;
538
+ defm V_PK_ASHRREV_I16 : VOP3P_Real_gfx10<0x06 >;
539
+ defm V_PK_MAX_I16 : VOP3P_Real_gfx10<0x07 >;
540
+ defm V_PK_MIN_I16 : VOP3P_Real_gfx10<0x08 >;
541
+ defm V_PK_MAD_U16 : VOP3P_Real_gfx10<0x09 >;
542
+ defm V_PK_ADD_U16 : VOP3P_Real_gfx10<0x0a >;
543
+ defm V_PK_SUB_U16 : VOP3P_Real_gfx10<0x0b >;
544
+ defm V_PK_MAX_U16 : VOP3P_Real_gfx10<0x0c >;
545
+ defm V_PK_MIN_U16 : VOP3P_Real_gfx10<0x0d >;
546
+ defm V_PK_FMA_F16 : VOP3P_Real_gfx10<0x0e >;
547
+ defm V_PK_ADD_F16 : VOP3P_Real_gfx10<0x0f >;
548
+ defm V_PK_MUL_F16 : VOP3P_Real_gfx10<0x10 >;
549
+ defm V_PK_MIN_F16 : VOP3P_Real_gfx10<0x11 >;
550
+ defm V_PK_MAX_F16 : VOP3P_Real_gfx10<0x12 >;
551
+ defm V_FMA_MIX_F32 : VOP3P_Real_gfx10<0x20 >;
552
+ defm V_FMA_MIXLO_F16 : VOP3P_Real_gfx10<0x21 >;
553
+ defm V_FMA_MIXHI_F16 : VOP3P_Real_gfx10<0x22 >;
554
554
555
555
let SubtargetPredicate = HasDot2Insts in {
556
556
557
- defm V_DOT2_F32_F16 : VOP3P_Real_gfx10 <0x013 >;
558
- defm V_DOT2_I32_I16 : VOP3P_Real_gfx10 <0x014 >;
559
- defm V_DOT2_U32_U16 : VOP3P_Real_gfx10 <0x015 >;
560
- defm V_DOT4_U32_U8 : VOP3P_Real_gfx10 <0x017 >;
561
- defm V_DOT8_U32_U4 : VOP3P_Real_gfx10 <0x019 >;
557
+ defm V_DOT2_F32_F16 : VOP3P_Real_gfx10 <0x13 >;
558
+ defm V_DOT2_I32_I16 : VOP3P_Real_gfx10 <0x14 >;
559
+ defm V_DOT2_U32_U16 : VOP3P_Real_gfx10 <0x15 >;
560
+ defm V_DOT4_U32_U8 : VOP3P_Real_gfx10 <0x17 >;
561
+ defm V_DOT8_U32_U4 : VOP3P_Real_gfx10 <0x19 >;
562
562
563
563
} // End SubtargetPredicate = HasDot2Insts
564
564
565
565
let SubtargetPredicate = HasDot1Insts in {
566
566
567
- defm V_DOT4_I32_I8 : VOP3P_Real_gfx10 <0x016 >;
568
- defm V_DOT8_I32_I4 : VOP3P_Real_gfx10 <0x018 >;
567
+ defm V_DOT4_I32_I8 : VOP3P_Real_gfx10 <0x16 >;
568
+ defm V_DOT8_I32_I4 : VOP3P_Real_gfx10 <0x18 >;
569
569
570
570
} // End SubtargetPredicate = HasDot1Insts
0 commit comments