@@ -759,165 +759,125 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86TargetMC() {
759
759
760
760
MCRegister llvm::getX86SubSuperRegister (MCRegister Reg, unsigned Size,
761
761
bool High) {
762
+ #define DEFAULT_NOREG \
763
+ default : \
764
+ return X86::NoRegister;
765
+ #define SUB_SUPER (R1, R2, R3, R4, R ) \
766
+ case X86::R1: \
767
+ case X86::R2: \
768
+ case X86::R3: \
769
+ case X86::R4: \
770
+ return X86::R;
771
+ #define A_SUB_SUPER (R ) \
772
+ case X86::AH: \
773
+ SUB_SUPER (AL, AX, EAX, RAX, R)
774
+ #define D_SUB_SUPER (R ) \
775
+ case X86::DH: \
776
+ SUB_SUPER (DL, DX, EDX, RDX, R)
777
+ #define C_SUB_SUPER (R ) \
778
+ case X86::CH: \
779
+ SUB_SUPER (CL, CX, ECX, RCX, R)
780
+ #define B_SUB_SUPER (R ) \
781
+ case X86::BH: \
782
+ SUB_SUPER (BL, BX, EBX, RBX, R)
783
+ #define SI_SUB_SUPER (R ) SUB_SUPER(SIL, SI, ESI, RSI, R)
784
+ #define DI_SUB_SUPER (R ) SUB_SUPER(DIL, DI, EDI, RDI, R)
785
+ #define BP_SUB_SUPER (R ) SUB_SUPER(BPL, BP, EBP, RBP, R)
786
+ #define SP_SUB_SUPER (R ) SUB_SUPER(SPL, SP, ESP, RSP, R)
787
+ #define NO_SUB_SUPER (NO, REG ) \
788
+ SUB_SUPER (R##NO##B, R##NO##W, R##NO##D, R##NO, REG)
762
789
switch (Size) {
763
- default : llvm_unreachable (" illegal register size" );
790
+ default :
791
+ llvm_unreachable (" illegal register size" );
764
792
case 8 :
765
793
if (High) {
766
794
switch (Reg.id ()) {
767
- default : return X86::NoRegister;
768
- case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX:
769
- return X86::AH;
770
- case X86::DH: case X86::DL: case X86::DX: case X86::EDX: case X86::RDX:
771
- return X86::DH;
772
- case X86::CH: case X86::CL: case X86::CX: case X86::ECX: case X86::RCX:
773
- return X86::CH;
774
- case X86::BH: case X86::BL: case X86::BX: case X86::EBX: case X86::RBX:
775
- return X86::BH;
795
+ DEFAULT_NOREG
796
+ A_SUB_SUPER (AH)
797
+ D_SUB_SUPER (DH)
798
+ C_SUB_SUPER (CH)
799
+ B_SUB_SUPER (BH)
776
800
}
777
801
} else {
778
802
switch (Reg.id ()) {
779
- default : return X86::NoRegister;
780
- case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX:
781
- return X86::AL;
782
- case X86::DH: case X86::DL: case X86::DX: case X86::EDX: case X86::RDX:
783
- return X86::DL;
784
- case X86::CH: case X86::CL: case X86::CX: case X86::ECX: case X86::RCX:
785
- return X86::CL;
786
- case X86::BH: case X86::BL: case X86::BX: case X86::EBX: case X86::RBX:
787
- return X86::BL;
788
- case X86::SIL: case X86::SI: case X86::ESI: case X86::RSI:
789
- return X86::SIL;
790
- case X86::DIL: case X86::DI: case X86::EDI: case X86::RDI:
791
- return X86::DIL;
792
- case X86::BPL: case X86::BP: case X86::EBP: case X86::RBP:
793
- return X86::BPL;
794
- case X86::SPL: case X86::SP: case X86::ESP: case X86::RSP:
795
- return X86::SPL;
796
- case X86::R8B: case X86::R8W: case X86::R8D: case X86::R8:
797
- return X86::R8B;
798
- case X86::R9B: case X86::R9W: case X86::R9D: case X86::R9:
799
- return X86::R9B;
800
- case X86::R10B: case X86::R10W: case X86::R10D: case X86::R10:
801
- return X86::R10B;
802
- case X86::R11B: case X86::R11W: case X86::R11D: case X86::R11:
803
- return X86::R11B;
804
- case X86::R12B: case X86::R12W: case X86::R12D: case X86::R12:
805
- return X86::R12B;
806
- case X86::R13B: case X86::R13W: case X86::R13D: case X86::R13:
807
- return X86::R13B;
808
- case X86::R14B: case X86::R14W: case X86::R14D: case X86::R14:
809
- return X86::R14B;
810
- case X86::R15B: case X86::R15W: case X86::R15D: case X86::R15:
811
- return X86::R15B;
803
+ DEFAULT_NOREG
804
+ A_SUB_SUPER (AL)
805
+ D_SUB_SUPER (DL)
806
+ C_SUB_SUPER (CL)
807
+ B_SUB_SUPER (BL)
808
+ SI_SUB_SUPER (SIL)
809
+ DI_SUB_SUPER (DIL)
810
+ BP_SUB_SUPER (BPL)
811
+ SP_SUB_SUPER (SPL)
812
+ NO_SUB_SUPER (8 , R8B)
813
+ NO_SUB_SUPER (9 , R9B)
814
+ NO_SUB_SUPER (10 , R10B)
815
+ NO_SUB_SUPER (11 , R11B)
816
+ NO_SUB_SUPER (12 , R12B)
817
+ NO_SUB_SUPER (13 , R13B)
818
+ NO_SUB_SUPER (14 , R14B)
819
+ NO_SUB_SUPER (15 , R15B)
812
820
}
813
821
}
814
822
case 16 :
815
823
switch (Reg.id ()) {
816
- default : return X86::NoRegister;
817
- case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX:
818
- return X86::AX;
819
- case X86::DH: case X86::DL: case X86::DX: case X86::EDX: case X86::RDX:
820
- return X86::DX;
821
- case X86::CH: case X86::CL: case X86::CX: case X86::ECX: case X86::RCX:
822
- return X86::CX;
823
- case X86::BH: case X86::BL: case X86::BX: case X86::EBX: case X86::RBX:
824
- return X86::BX;
825
- case X86::SIL: case X86::SI: case X86::ESI: case X86::RSI:
826
- return X86::SI;
827
- case X86::DIL: case X86::DI: case X86::EDI: case X86::RDI:
828
- return X86::DI;
829
- case X86::BPL: case X86::BP: case X86::EBP: case X86::RBP:
830
- return X86::BP;
831
- case X86::SPL: case X86::SP: case X86::ESP: case X86::RSP:
832
- return X86::SP;
833
- case X86::R8B: case X86::R8W: case X86::R8D: case X86::R8:
834
- return X86::R8W;
835
- case X86::R9B: case X86::R9W: case X86::R9D: case X86::R9:
836
- return X86::R9W;
837
- case X86::R10B: case X86::R10W: case X86::R10D: case X86::R10:
838
- return X86::R10W;
839
- case X86::R11B: case X86::R11W: case X86::R11D: case X86::R11:
840
- return X86::R11W;
841
- case X86::R12B: case X86::R12W: case X86::R12D: case X86::R12:
842
- return X86::R12W;
843
- case X86::R13B: case X86::R13W: case X86::R13D: case X86::R13:
844
- return X86::R13W;
845
- case X86::R14B: case X86::R14W: case X86::R14D: case X86::R14:
846
- return X86::R14W;
847
- case X86::R15B: case X86::R15W: case X86::R15D: case X86::R15:
848
- return X86::R15W;
824
+ DEFAULT_NOREG
825
+ A_SUB_SUPER (AX)
826
+ D_SUB_SUPER (DX)
827
+ C_SUB_SUPER (CX)
828
+ B_SUB_SUPER (BX)
829
+ SI_SUB_SUPER (SI)
830
+ DI_SUB_SUPER (DI)
831
+ BP_SUB_SUPER (BP)
832
+ SP_SUB_SUPER (SP)
833
+ NO_SUB_SUPER (8 , R8W)
834
+ NO_SUB_SUPER (9 , R9W)
835
+ NO_SUB_SUPER (10 , R10W)
836
+ NO_SUB_SUPER (11 , R11W)
837
+ NO_SUB_SUPER (12 , R12W)
838
+ NO_SUB_SUPER (13 , R13W)
839
+ NO_SUB_SUPER (14 , R14W)
840
+ NO_SUB_SUPER (15 , R15W)
849
841
}
850
842
case 32 :
851
843
switch (Reg.id ()) {
852
- default : return X86::NoRegister;
853
- case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX:
854
- return X86::EAX;
855
- case X86::DH: case X86::DL: case X86::DX: case X86::EDX: case X86::RDX:
856
- return X86::EDX;
857
- case X86::CH: case X86::CL: case X86::CX: case X86::ECX: case X86::RCX:
858
- return X86::ECX;
859
- case X86::BH: case X86::BL: case X86::BX: case X86::EBX: case X86::RBX:
860
- return X86::EBX;
861
- case X86::SIL: case X86::SI: case X86::ESI: case X86::RSI:
862
- return X86::ESI;
863
- case X86::DIL: case X86::DI: case X86::EDI: case X86::RDI:
864
- return X86::EDI;
865
- case X86::BPL: case X86::BP: case X86::EBP: case X86::RBP:
866
- return X86::EBP;
867
- case X86::SPL: case X86::SP: case X86::ESP: case X86::RSP:
868
- return X86::ESP;
869
- case X86::R8B: case X86::R8W: case X86::R8D: case X86::R8:
870
- return X86::R8D;
871
- case X86::R9B: case X86::R9W: case X86::R9D: case X86::R9:
872
- return X86::R9D;
873
- case X86::R10B: case X86::R10W: case X86::R10D: case X86::R10:
874
- return X86::R10D;
875
- case X86::R11B: case X86::R11W: case X86::R11D: case X86::R11:
876
- return X86::R11D;
877
- case X86::R12B: case X86::R12W: case X86::R12D: case X86::R12:
878
- return X86::R12D;
879
- case X86::R13B: case X86::R13W: case X86::R13D: case X86::R13:
880
- return X86::R13D;
881
- case X86::R14B: case X86::R14W: case X86::R14D: case X86::R14:
882
- return X86::R14D;
883
- case X86::R15B: case X86::R15W: case X86::R15D: case X86::R15:
884
- return X86::R15D;
844
+ DEFAULT_NOREG
845
+ A_SUB_SUPER (EAX)
846
+ D_SUB_SUPER (EDX)
847
+ C_SUB_SUPER (ECX)
848
+ B_SUB_SUPER (EBX)
849
+ SI_SUB_SUPER (ESI)
850
+ DI_SUB_SUPER (EDI)
851
+ BP_SUB_SUPER (EBP)
852
+ SP_SUB_SUPER (ESP)
853
+ NO_SUB_SUPER (8 , R8D)
854
+ NO_SUB_SUPER (9 , R9D)
855
+ NO_SUB_SUPER (10 , R10D)
856
+ NO_SUB_SUPER (11 , R11D)
857
+ NO_SUB_SUPER (12 , R12D)
858
+ NO_SUB_SUPER (13 , R13D)
859
+ NO_SUB_SUPER (14 , R14D)
860
+ NO_SUB_SUPER (15 , R15D)
885
861
}
886
862
case 64 :
887
863
switch (Reg.id ()) {
888
- default : return X86::NoRegister;
889
- case X86::AH: case X86::AL: case X86::AX: case X86::EAX: case X86::RAX:
890
- return X86::RAX;
891
- case X86::DH: case X86::DL: case X86::DX: case X86::EDX: case X86::RDX:
892
- return X86::RDX;
893
- case X86::CH: case X86::CL: case X86::CX: case X86::ECX: case X86::RCX:
894
- return X86::RCX;
895
- case X86::BH: case X86::BL: case X86::BX: case X86::EBX: case X86::RBX:
896
- return X86::RBX;
897
- case X86::SIL: case X86::SI: case X86::ESI: case X86::RSI:
898
- return X86::RSI;
899
- case X86::DIL: case X86::DI: case X86::EDI: case X86::RDI:
900
- return X86::RDI;
901
- case X86::BPL: case X86::BP: case X86::EBP: case X86::RBP:
902
- return X86::RBP;
903
- case X86::SPL: case X86::SP: case X86::ESP: case X86::RSP:
904
- return X86::RSP;
905
- case X86::R8B: case X86::R8W: case X86::R8D: case X86::R8:
906
- return X86::R8;
907
- case X86::R9B: case X86::R9W: case X86::R9D: case X86::R9:
908
- return X86::R9;
909
- case X86::R10B: case X86::R10W: case X86::R10D: case X86::R10:
910
- return X86::R10;
911
- case X86::R11B: case X86::R11W: case X86::R11D: case X86::R11:
912
- return X86::R11;
913
- case X86::R12B: case X86::R12W: case X86::R12D: case X86::R12:
914
- return X86::R12;
915
- case X86::R13B: case X86::R13W: case X86::R13D: case X86::R13:
916
- return X86::R13;
917
- case X86::R14B: case X86::R14W: case X86::R14D: case X86::R14:
918
- return X86::R14;
919
- case X86::R15B: case X86::R15W: case X86::R15D: case X86::R15:
920
- return X86::R15;
864
+ DEFAULT_NOREG
865
+ A_SUB_SUPER (RAX)
866
+ D_SUB_SUPER (RDX)
867
+ C_SUB_SUPER (RCX)
868
+ B_SUB_SUPER (RBX)
869
+ SI_SUB_SUPER (RSI)
870
+ DI_SUB_SUPER (RDI)
871
+ BP_SUB_SUPER (RBP)
872
+ SP_SUB_SUPER (RSP)
873
+ NO_SUB_SUPER (8 , R8)
874
+ NO_SUB_SUPER (9 , R9)
875
+ NO_SUB_SUPER (10 , R10)
876
+ NO_SUB_SUPER (11 , R11)
877
+ NO_SUB_SUPER (12 , R12)
878
+ NO_SUB_SUPER (13 , R13)
879
+ NO_SUB_SUPER (14 , R14)
880
+ NO_SUB_SUPER (15 , R15)
921
881
}
922
882
}
923
883
}
0 commit comments