@@ -595,6 +595,48 @@ DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
595
595
if (Res)
596
596
break ;
597
597
}
598
+
599
+ if (STI.hasFeature (AMDGPU::FeatureGFX940Insts)) {
600
+ Res = tryDecodeInst (DecoderTableGFX94064, MI, QW, Address, CS);
601
+ if (Res)
602
+ break ;
603
+ }
604
+
605
+ if (STI.hasFeature (AMDGPU::FeatureGFX90AInsts)) {
606
+ Res = tryDecodeInst (DecoderTableGFX90A64, MI, QW, Address, CS);
607
+ if (Res)
608
+ break ;
609
+ }
610
+
611
+ Res = tryDecodeInst (DecoderTableGFX864, MI, QW, Address, CS);
612
+ if (Res)
613
+ break ;
614
+
615
+ Res = tryDecodeInst (DecoderTableGFX964, MI, QW, Address, CS);
616
+ if (Res)
617
+ break ;
618
+
619
+ Res = tryDecodeInst (DecoderTableGFX1064, MI, QW, Address, CS);
620
+ if (Res)
621
+ break ;
622
+
623
+ Res = tryDecodeInst (DecoderTableGFX1264, DecoderTableGFX12_FAKE1664, MI,
624
+ QW, Address, CS);
625
+ if (Res)
626
+ break ;
627
+
628
+ Res = tryDecodeInst (DecoderTableGFX1164, DecoderTableGFX11_FAKE1664, MI,
629
+ QW, Address, CS);
630
+ if (Res)
631
+ break ;
632
+
633
+ Res = tryDecodeInst (DecoderTableGFX11W6464, MI, QW, Address, CS);
634
+ if (Res)
635
+ break ;
636
+
637
+ Res = tryDecodeInst (DecoderTableGFX12W6464, MI, QW, Address, CS);
638
+ if (Res)
639
+ break ;
598
640
}
599
641
600
642
// Reinitialize Bytes as DPP64 could have eaten too much
@@ -632,48 +674,6 @@ DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
632
674
633
675
Res = tryDecodeInst (DecoderTableGFX1232, DecoderTableGFX12_FAKE1632, MI, DW,
634
676
Address, CS);
635
- if (Res)
636
- break ;
637
-
638
- if (Bytes.size () < 4 ) break ;
639
- const uint64_t QW = ((uint64_t )eatBytes<uint32_t >(Bytes) << 32 ) | DW;
640
-
641
- if (STI.hasFeature (AMDGPU::FeatureGFX940Insts)) {
642
- Res = tryDecodeInst (DecoderTableGFX94064, MI, QW, Address, CS);
643
- if (Res)
644
- break ;
645
- }
646
-
647
- if (STI.hasFeature (AMDGPU::FeatureGFX90AInsts)) {
648
- Res = tryDecodeInst (DecoderTableGFX90A64, MI, QW, Address, CS);
649
- if (Res)
650
- break ;
651
- }
652
-
653
- Res = tryDecodeInst (DecoderTableGFX864, MI, QW, Address, CS);
654
- if (Res) break ;
655
-
656
- Res = tryDecodeInst (DecoderTableGFX964, MI, QW, Address, CS);
657
- if (Res) break ;
658
-
659
- Res = tryDecodeInst (DecoderTableGFX1064, MI, QW, Address, CS);
660
- if (Res) break ;
661
-
662
- Res = tryDecodeInst (DecoderTableGFX1264, DecoderTableGFX12_FAKE1664, MI, QW,
663
- Address, CS);
664
- if (Res)
665
- break ;
666
-
667
- Res = tryDecodeInst (DecoderTableGFX1164, DecoderTableGFX11_FAKE1664, MI, QW,
668
- Address, CS);
669
- if (Res)
670
- break ;
671
-
672
- Res = tryDecodeInst (DecoderTableGFX11W6464, MI, QW, Address, CS);
673
- if (Res)
674
- break ;
675
-
676
- Res = tryDecodeInst (DecoderTableGFX12W6464, MI, QW, Address, CS);
677
677
} while (false );
678
678
679
679
if (Res && AMDGPU::isMAC (MI.getOpcode ())) {
0 commit comments