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