diff --git a/llvm/lib/Target/AArch64/AArch64SystemOperands.td b/llvm/lib/Target/AArch64/AArch64SystemOperands.td index f22e0242321e7..c76fc8abeedad 100644 --- a/llvm/lib/Target/AArch64/AArch64SystemOperands.td +++ b/llvm/lib/Target/AArch64/AArch64SystemOperands.td @@ -42,10 +42,7 @@ def HasCONTEXTIDREL2 //===----------------------------------------------------------------------===// class AT op1, bits<4> crn, bits<4> crm, - bits<3> op2> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - + bits<3> op2> { string Name = name; bits<14> Encoding; let Encoding{13-11} = op1; @@ -55,6 +52,27 @@ class AT op1, bits<4> crn, bits<4> crm, code Requires = [{ {} }]; } +def ATValues : GenericEnum { + let FilterClass = "AT"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def ATsList : GenericTable { + let FilterClass = "AT"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupATByName : SearchIndex { + let Table = ATsList; + let Key = ["Name"]; +} + +def lookupATByEncoding : SearchIndex { + let Table = ATsList; + let Key = ["Encoding"]; +} + def : AT<"S1E1R", 0b000, 0b0111, 0b1000, 0b000>; def : AT<"S1E2R", 0b100, 0b0111, 0b1000, 0b000>; def : AT<"S1E3R", 0b110, 0b0111, 0b1000, 0b000>; @@ -82,14 +100,32 @@ def : AT<"S1E3A", 0b110, 0b0111, 0b1001, 0b010>; // DMB/DSB (data barrier) instruction options. //===----------------------------------------------------------------------===// -class DB encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class DB encoding> { string Name = name; bits<4> Encoding = encoding; } +def DBValues : GenericEnum { + let FilterClass = "DB"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def DBsList : GenericTable { + let FilterClass = "DB"; + let Fields = ["Name", "Encoding"]; +} + +def lookupDBByName : SearchIndex { + let Table = DBsList; + let Key = ["Name"]; +} + +def lookupDBByEncoding : SearchIndex { + let Table = DBsList; + let Key = ["Encoding"]; +} + def : DB<"oshld", 0x1>; def : DB<"oshst", 0x2>; def : DB<"osh", 0x3>; @@ -103,16 +139,39 @@ def : DB<"ld", 0xd>; def : DB<"st", 0xe>; def : DB<"sy", 0xf>; -class DBnXS encoding, bits<5> immValue> : SearchableTable { - let SearchableFields = ["Name", "Encoding", "ImmValue"]; - let EnumValueField = "Encoding"; - +class DBnXS encoding, bits<5> immValue> { string Name = name; bits<4> Encoding = encoding; bits<5> ImmValue = immValue; code Requires = [{ {AArch64::FeatureXS} }]; } +def DBnXSValues : GenericEnum { + let FilterClass = "DBnXS"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def DBnXSsList : GenericTable { + let FilterClass = "DBnXS"; + let Fields = ["Name", "Encoding", "ImmValue", "Requires"]; +} + +def lookupDBnXSByName : SearchIndex { + let Table = DBnXSsList; + let Key = ["Name"]; +} + +def lookupDBnXSByEncoding : SearchIndex { + let Table = DBnXSsList; + let Key = ["Encoding"]; +} + +def lookupDBnXSByImmValue : SearchIndex { + let Table = DBnXSsList; + let Key = ["ImmValue"]; +} + def : DBnXS<"oshnxs", 0x3, 0x10>; def : DBnXS<"nshnxs", 0x7, 0x14>; def : DBnXS<"ishnxs", 0xb, 0x18>; @@ -123,10 +182,7 @@ def : DBnXS<"synxs", 0xf, 0x1c>; //===----------------------------------------------------------------------===// class DC op1, bits<4> crn, bits<4> crm, - bits<3> op2> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - + bits<3> op2> { string Name = name; bits<14> Encoding; let Encoding{13-11} = op1; @@ -136,6 +192,27 @@ class DC op1, bits<4> crn, bits<4> crm, code Requires = [{ {} }]; } +def DCValues : GenericEnum { + let FilterClass = "DC"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def DCsList : GenericTable { + let FilterClass = "DC"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupDCByName : SearchIndex { + let Table = DCsList; + let Key = ["Name"]; +} + +def lookupDCByEncoding : SearchIndex { + let Table = DCsList; + let Key = ["Encoding"]; +} + def : DC<"ZVA", 0b011, 0b0111, 0b0100, 0b001>; def : DC<"IVAC", 0b000, 0b0111, 0b0110, 0b001>; def : DC<"ISW", 0b000, 0b0111, 0b0110, 0b010>; @@ -193,10 +270,7 @@ def : DC<"CGDVAOC", 0b011, 0b0111, 0b1011, 0b111>; //===----------------------------------------------------------------------===// class IC op1, bits<4> crn, bits<4> crm, bits<3> op2, - bit needsreg> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - + bit needsreg> { string Name = name; bits<14> Encoding; let Encoding{13-11} = op1; @@ -206,6 +280,27 @@ class IC op1, bits<4> crn, bits<4> crm, bits<3> op2, bit NeedsReg = needsreg; } +def ICValues : GenericEnum { + let FilterClass = "IC"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def ICsList : GenericTable { + let FilterClass = "IC"; + let Fields = ["Name", "Encoding", "NeedsReg"]; +} + +def lookupICByName : SearchIndex { + let Table = ICsList; + let Key = ["Name"]; +} + +def lookupICByEncoding : SearchIndex { + let Table = ICsList; + let Key = ["Encoding"]; +} + def : IC<"IALLUIS", 0b000, 0b0111, 0b0001, 0b000, 0>; def : IC<"IALLU", 0b000, 0b0111, 0b0101, 0b000, 0>; def : IC<"IVAU", 0b011, 0b0111, 0b0101, 0b001, 1>; @@ -214,25 +309,40 @@ def : IC<"IVAU", 0b011, 0b0111, 0b0101, 0b001, 1>; // ISB (instruction-fetch barrier) instruction options. //===----------------------------------------------------------------------===// -class ISB encoding> : SearchableTable{ - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class ISB encoding> { string Name = name; bits<4> Encoding; let Encoding = encoding; } +def ISBValues : GenericEnum { + let FilterClass = "ISB"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def ISBsList : GenericTable { + let FilterClass = "ISB"; + let Fields = ["Name", "Encoding"]; +} + +def lookupISBByName : SearchIndex { + let Table = ISBsList; + let Key = ["Name"]; +} + +def lookupISBByEncoding : SearchIndex { + let Table = ISBsList; + let Key = ["Encoding"]; +} + def : ISB<"sy", 0xf>; //===----------------------------------------------------------------------===// // TSB (Trace synchronization barrier) instruction options. //===----------------------------------------------------------------------===// -class TSB encoding> : SearchableTable{ - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class TSB encoding> { string Name = name; bits<4> Encoding; let Encoding = encoding; @@ -240,6 +350,27 @@ class TSB encoding> : SearchableTable{ code Requires = [{ {AArch64::FeatureTRACEV8_4} }]; } +def TSBValues : GenericEnum { + let FilterClass = "TSB"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def TSBsList : GenericTable { + let FilterClass = "TSB"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupTSBByName : SearchIndex { + let Table = TSBsList; + let Key = ["Name"]; +} + +def lookupTSBByEncoding : SearchIndex { + let Table = TSBsList; + let Key = ["Encoding"]; +} + def : TSB<"csync", 0>; //===----------------------------------------------------------------------===// @@ -248,10 +379,7 @@ def : TSB<"csync", 0>; class PRFM type_encoding, string target, bits<2> target_encoding, - string policy, bits<1> policy_encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - + string policy, bits<1> policy_encoding> { string Name = type # target # policy; bits<5> Encoding; let Encoding{4-3} = type_encoding; @@ -261,6 +389,27 @@ class PRFM type_encoding, code Requires = [{ {} }]; } +def PRFMValues : GenericEnum { + let FilterClass = "PRFM"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def PRFMsList : GenericTable { + let FilterClass = "PRFM"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupPRFMByName : SearchIndex { + let Table = PRFMsList; + let Key = ["Name"]; +} + +def lookupPRFMByEncoding : SearchIndex { + let Table = PRFMsList; + let Key = ["Encoding"]; +} + def : PRFM<"pld", 0b00, "l1", 0b00, "keep", 0b0>; def : PRFM<"pld", 0b00, "l1", 0b00, "strm", 0b1>; def : PRFM<"pld", 0b00, "l2", 0b01, "keep", 0b0>; @@ -296,16 +445,34 @@ def : PRFM<"pst", 0b10, "slc", 0b11, "strm", 0b1>; // SVE Prefetch instruction options. //===----------------------------------------------------------------------===// -class SVEPRFM encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class SVEPRFM encoding> { string Name = name; bits<4> Encoding; let Encoding = encoding; code Requires = [{ {} }]; } +def SVEPRFMValues : GenericEnum { + let FilterClass = "SVEPRFM"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def SVEPRFMsList : GenericTable { + let FilterClass = "SVEPRFM"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupSVEPRFMByName : SearchIndex { + let Table = SVEPRFMsList; + let Key = ["Name"]; +} + +def lookupSVEPRFMByEncoding : SearchIndex { + let Table = SVEPRFMsList; + let Key = ["Encoding"]; +} + let Requires = [{ {AArch64::FeatureSVE} }] in { def : SVEPRFM<"pldl1keep", 0x00>; def : SVEPRFM<"pldl1strm", 0x01>; @@ -325,10 +492,7 @@ def : SVEPRFM<"pstl3strm", 0x0d>; // RPRFM (prefetch) instruction options. //===----------------------------------------------------------------------===// -class RPRFM type_encoding, bits<5> policy_encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class RPRFM type_encoding, bits<5> policy_encoding> { string Name = name; bits<6> Encoding; let Encoding{0} = type_encoding; @@ -336,6 +500,27 @@ class RPRFM type_encoding, bits<5> policy_encoding> : Searc code Requires = [{ {} }]; } +def RPRFMValues : GenericEnum { + let FilterClass = "RPRFM"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def RPRFMsList : GenericTable { + let FilterClass = "RPRFM"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupRPRFMByName : SearchIndex { + let Table = RPRFMsList; + let Key = ["Name"]; +} + +def lookupRPRFMByEncoding : SearchIndex { + let Table = RPRFMsList; + let Key = ["Encoding"]; +} + def : RPRFM<"pldkeep", 0b0, 0b00000>; def : RPRFM<"pstkeep", 0b1, 0b00000>; def : RPRFM<"pldstrm", 0b0, 0b00010>; @@ -345,15 +530,33 @@ def : RPRFM<"pststrm", 0b1, 0b00010>; // SVE Predicate patterns //===----------------------------------------------------------------------===// -class SVEPREDPAT encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class SVEPREDPAT encoding> { string Name = name; bits<5> Encoding; let Encoding = encoding; } +def SVEPREDPATValues : GenericEnum { + let FilterClass = "SVEPREDPAT"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def SVEPREDPATsList : GenericTable { + let FilterClass = "SVEPREDPAT"; + let Fields = ["Name", "Encoding"]; +} + +def lookupSVEPREDPATByName : SearchIndex { + let Table = SVEPREDPATsList; + let Key = ["Name"]; +} + +def lookupSVEPREDPATByEncoding : SearchIndex { + let Table = SVEPREDPATsList; + let Key = ["Encoding"]; +} + def : SVEPREDPAT<"pow2", 0x00>; def : SVEPREDPAT<"vl1", 0x01>; def : SVEPREDPAT<"vl2", 0x02>; @@ -376,15 +579,33 @@ def : SVEPREDPAT<"all", 0x1f>; // SVE Predicate-as-counter patterns //===----------------------------------------------------------------------===// -class SVEVECLENSPECIFIER encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class SVEVECLENSPECIFIER encoding> { string Name = name; bits<1> Encoding; let Encoding = encoding; } +def SVEVECLENSPECIFIERValues : GenericEnum { + let FilterClass = "SVEVECLENSPECIFIER"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def SVEVECLENSPECIFIERsList : GenericTable { + let FilterClass = "SVEVECLENSPECIFIER"; + let Fields = ["Name", "Encoding"]; +} + +def lookupSVEVECLENSPECIFIERByName : SearchIndex { + let Table = SVEVECLENSPECIFIERsList; + let Key = ["Name"]; +} + +def lookupSVEVECLENSPECIFIERByEncoding : SearchIndex { + let Table = SVEVECLENSPECIFIERsList; + let Key = ["Encoding"]; +} + def : SVEVECLENSPECIFIER<"vlx2", 0x0>; def : SVEVECLENSPECIFIER<"vlx4", 0x1>; @@ -395,15 +616,33 @@ def : SVEVECLENSPECIFIER<"vlx4", 0x1>; // is used for a few instructions that only accept a limited set of exact FP // immediates values. //===----------------------------------------------------------------------===// -class ExactFPImm enum > : SearchableTable { - let SearchableFields = ["Enum", "Repr"]; - let EnumValueField = "Enum"; - +class ExactFPImm enum > { string Name = name; bits<4> Enum = enum; string Repr = repr; } +def ExactFPImmValues : GenericEnum { + let FilterClass = "ExactFPImm"; + let NameField = "Name"; + let ValueField = "Enum"; +} + +def ExactFPImmsList : GenericTable { + let FilterClass = "ExactFPImm"; + let Fields = ["Name", "Enum", "Repr"]; +} + +def lookupExactFPImmByEnum : SearchIndex { + let Table = ExactFPImmsList; + let Key = ["Enum"]; +} + +def lookupExactFPImmByRepr : SearchIndex { + let Table = ExactFPImmsList; + let Key = ["Repr"]; +} + def : ExactFPImm<"zero", "0.0", 0x0>; def : ExactFPImm<"half", "0.5", 0x1>; def : ExactFPImm<"one", "1.0", 0x2>; @@ -413,10 +652,7 @@ def : ExactFPImm<"two", "2.0", 0x3>; // PState instruction options. //===----------------------------------------------------------------------===// -class PStateImm0_15 op1, bits<3> op2> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class PStateImm0_15 op1, bits<3> op2> { string Name = name; bits<6> Encoding; let Encoding{5-3} = op1; @@ -424,10 +660,28 @@ class PStateImm0_15 op1, bits<3> op2> : SearchableTable { code Requires = [{ {} }]; } -class PStateImm0_1 op1, bits<3> op2, bits<3> crm_high> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; +def PStateImm0_15Values : GenericEnum { + let FilterClass = "PStateImm0_15"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def PStateImm0_15sList : GenericTable { + let FilterClass = "PStateImm0_15"; + let Fields = ["Name", "Encoding", "Requires"]; +} +def lookupPStateImm0_15ByName : SearchIndex { + let Table = PStateImm0_15sList; + let Key = ["Name"]; +} + +def lookupPStateImm0_15ByEncoding : SearchIndex { + let Table = PStateImm0_15sList; + let Key = ["Encoding"]; +} + +class PStateImm0_1 op1, bits<3> op2, bits<3> crm_high> { string Name = name; bits<9> Encoding; let Encoding{8-6} = crm_high; @@ -436,6 +690,27 @@ class PStateImm0_1 op1, bits<3> op2, bits<3> crm_high> : Se code Requires = [{ {} }]; } +def PStateImm0_1Values : GenericEnum { + let FilterClass = "PStateImm0_1"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def PStateImm0_1sList : GenericTable { + let FilterClass = "PStateImm0_1"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupPStateImm0_1ByName : SearchIndex { + let Table = PStateImm0_1sList; + let Key = ["Name"]; +} + +def lookupPStateImm0_1ByEncoding : SearchIndex { + let Table = PStateImm0_1sList; + let Key = ["Encoding"]; +} + // Name, Op1, Op2 def : PStateImm0_15<"SPSel", 0b000, 0b101>; def : PStateImm0_15<"DAIFSet", 0b011, 0b110>; @@ -467,16 +742,34 @@ def : PStateImm0_1<"PM", 0b001, 0b000, 0b001>; // SVCR instruction options. //===----------------------------------------------------------------------===// -class SVCR encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class SVCR encoding> { string Name = name; bits<3> Encoding; let Encoding = encoding; code Requires = [{ {} }]; } +def SVCRValues : GenericEnum { + let FilterClass = "SVCR"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def SVCRsList : GenericTable { + let FilterClass = "SVCR"; + let Fields = ["Name", "Encoding", "Requires"]; +} + +def lookupSVCRByName : SearchIndex { + let Table = SVCRsList; + let Key = ["Name"]; +} + +def lookupSVCRByEncoding : SearchIndex { + let Table = SVCRsList; + let Key = ["Encoding"]; +} + let Requires = [{ {AArch64::FeatureSME} }] in { def : SVCR<"SVCRSM", 0b001>; def : SVCR<"SVCRZA", 0b010>; @@ -487,30 +780,66 @@ def : SVCR<"SVCRSMZA", 0b011>; // PSB instruction options. //===----------------------------------------------------------------------===// -class PSB encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class PSB encoding> { string Name = name; bits<5> Encoding; let Encoding = encoding; } +def PSBValues : GenericEnum { + let FilterClass = "PSB"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def PSBsList : GenericTable { + let FilterClass = "PSB"; + let Fields = ["Name", "Encoding"]; +} + +def lookupPSBByName : SearchIndex { + let Table = PSBsList; + let Key = ["Name"]; +} + +def lookupPSBByEncoding : SearchIndex { + let Table = PSBsList; + let Key = ["Encoding"]; +} + def : PSB<"csync", 0x11>; //===----------------------------------------------------------------------===// // BTI instruction options. //===----------------------------------------------------------------------===// -class BTI encoding> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - +class BTI encoding> { string Name = name; bits<3> Encoding; let Encoding = encoding; } +def BTIValues : GenericEnum { + let FilterClass = "BTI"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def BTIsList : GenericTable { + let FilterClass = "BTI"; + let Fields = ["Name", "Encoding"]; +} + +def lookupBTIByName : SearchIndex { + let Table = BTIsList; + let Key = ["Name"]; +} + +def lookupBTIByEncoding : SearchIndex { + let Table = BTIsList; + let Key = ["Encoding"]; +} + def : BTI<"c", 0b010>; def : BTI<"j", 0b100>; def : BTI<"jc", 0b110>; @@ -667,10 +996,7 @@ defm : TLBI<"VMALLWS2E1OS", 0b100, 0b1000, 0b0101, 0b010, 0>; //===----------------------------------------------------------------------===// class SysReg op0, bits<3> op1, bits<4> crn, bits<4> crm, - bits<3> op2> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - + bits<3> op2> { string Name = name; string AltName = name; bits<16> Encoding; @@ -684,6 +1010,28 @@ class SysReg op0, bits<3> op1, bits<4> crn, bits<4> crm, code Requires = [{ {} }]; } +def SysRegValues : GenericEnum { + let FilterClass = "SysReg"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def SysRegsList : GenericTable { + let FilterClass = "SysReg"; + let Fields = ["Name", "AltName", "Encoding", "Readable", "Writeable", + "Requires"]; +} + +def lookupSysRegByName : SearchIndex { + let Table = SysRegsList; + let Key = ["Name"]; +} + +def lookupSysRegByEncoding : SearchIndex { + let Table = SysRegsList; + let Key = ["Encoding"]; +} + class RWSysReg op0, bits<3> op1, bits<4> crn, bits<4> crm, bits<3> op2> : SysReg { @@ -2026,10 +2374,7 @@ def : RWSysReg<"ACTLRALIAS_EL1", 0b11, 0b000, 0b0001, 0b0100, 0b101>; //===----------------------------------------------------------------------===// class PHint op0, bits<3> op1, bits<4> crn, bits<4> crm, - bits<3> op2, string name> : SearchableTable { - let SearchableFields = ["Name", "Encoding"]; - let EnumValueField = "Encoding"; - + bits<3> op2, string name> { string Name = name; string AltName = name; bits<16> Encoding; @@ -2041,6 +2386,27 @@ class PHint op0, bits<3> op1, bits<4> crn, bits<4> crm, code Requires = [{ {} }]; } +def PHintValues : GenericEnum { + let FilterClass = "PHint"; + let NameField = "Name"; + let ValueField = "Encoding"; +} + +def PHintsList : GenericTable { + let FilterClass = "PHint"; + let Fields = ["Name", "AltName", "Encoding", "Requires"]; +} + +def lookupPHintByName : SearchIndex { + let Table = PHintsList; + let Key = ["Name"]; +} + +def lookupPHintByEncoding : SearchIndex { + let Table = PHintsList; + let Key = ["Encoding"]; +} + let Requires = [{ {AArch64::FeaturePCDPHINT} }] in { def KEEP : PHint<0b00, 0b000, 0b0000, 0b0000, 0b000, "keep">; def STRM : PHint<0b00, 0b000, 0b0000, 0b0000, 0b001, "strm">; diff --git a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp index 49ce0a58f4167..7767028c20bcc 100644 --- a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp +++ b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp @@ -18,7 +18,7 @@ using namespace llvm; namespace llvm { namespace AArch64AT { -#define GET_AT_IMPL +#define GET_ATsList_IMPL #include "AArch64GenSystemOperands.inc" } } @@ -26,121 +26,121 @@ namespace llvm { namespace llvm { namespace AArch64DBnXS { -#define GET_DBNXS_IMPL +#define GET_DBnXSsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64DB { -#define GET_DB_IMPL +#define GET_DBsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64DC { -#define GET_DC_IMPL +#define GET_DCsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64IC { -#define GET_IC_IMPL +#define GET_ICsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64ISB { -#define GET_ISB_IMPL +#define GET_ISBsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64TSB { -#define GET_TSB_IMPL +#define GET_TSBsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64PRFM { -#define GET_PRFM_IMPL +#define GET_PRFMsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64SVEPRFM { -#define GET_SVEPRFM_IMPL +#define GET_SVEPRFMsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64RPRFM { -#define GET_RPRFM_IMPL +#define GET_RPRFMsList_IMPL #include "AArch64GenSystemOperands.inc" } // namespace AArch64RPRFM } // namespace llvm namespace llvm { namespace AArch64SVEPredPattern { -#define GET_SVEPREDPAT_IMPL +#define GET_SVEPREDPATsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64SVEVecLenSpecifier { -#define GET_SVEVECLENSPECIFIER_IMPL +#define GET_SVEVECLENSPECIFIERsList_IMPL #include "AArch64GenSystemOperands.inc" } // namespace AArch64SVEVecLenSpecifier } // namespace llvm namespace llvm { namespace AArch64ExactFPImm { -#define GET_EXACTFPIMM_IMPL +#define GET_ExactFPImmsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64PState { -#define GET_PSTATEIMM0_15_IMPL +#define GET_PStateImm0_15sList_IMPL #include "AArch64GenSystemOperands.inc" -#define GET_PSTATEIMM0_1_IMPL +#define GET_PStateImm0_1sList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64PSBHint { -#define GET_PSB_IMPL +#define GET_PSBsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64PHint { -#define GET_PHINT_IMPL +#define GET_PHintsList_IMPL #include "AArch64GenSystemOperands.inc" } // namespace AArch64PHint } // namespace llvm namespace llvm { namespace AArch64BTIHint { -#define GET_BTI_IMPL +#define GET_BTIsList_IMPL #include "AArch64GenSystemOperands.inc" } } namespace llvm { namespace AArch64SysReg { -#define GET_SYSREG_IMPL +#define GET_SysRegsList_IMPL #include "AArch64GenSystemOperands.inc" } } @@ -187,7 +187,7 @@ namespace llvm { namespace llvm { namespace AArch64SVCR { -#define GET_SVCR_IMPL +#define GET_SVCRsList_IMPL #include "AArch64GenSystemOperands.inc" } } diff --git a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h index e7db9077b6439..94bba4e4c3519 100644 --- a/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h +++ b/llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h @@ -371,79 +371,89 @@ namespace AArch64SVCR { struct SVCR : SysAlias{ using SysAlias::SysAlias; }; - #define GET_SVCR_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_SVCRValues_DECL +#define GET_SVCRsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64AT{ struct AT : SysAlias { using SysAlias::SysAlias; }; - #define GET_AT_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_ATValues_DECL +#define GET_ATsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64DB { struct DB : SysAlias { using SysAlias::SysAlias; }; - #define GET_DB_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_DBValues_DECL +#define GET_DBsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64DBnXS { struct DBnXS : SysAliasImm { using SysAliasImm::SysAliasImm; }; - #define GET_DBNXS_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_DBnXSValues_DECL +#define GET_DBnXSsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64DC { struct DC : SysAlias { using SysAlias::SysAlias; }; - #define GET_DC_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_DCValues_DECL +#define GET_DCsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64IC { struct IC : SysAliasReg { using SysAliasReg::SysAliasReg; }; - #define GET_IC_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_ICValues_DECL +#define GET_ICsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64ISB { struct ISB : SysAlias { using SysAlias::SysAlias; }; - #define GET_ISB_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_ISBValues_DECL +#define GET_ISBsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64TSB { struct TSB : SysAlias { using SysAlias::SysAlias; }; - #define GET_TSB_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_TSBValues_DECL +#define GET_TSBsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64PRFM { struct PRFM : SysAlias { using SysAlias::SysAlias; }; - #define GET_PRFM_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_PRFMValues_DECL +#define GET_PRFMsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64SVEPRFM { struct SVEPRFM : SysAlias { using SysAlias::SysAlias; }; -#define GET_SVEPRFM_DECL +#define GET_SVEPRFMValues_DECL +#define GET_SVEPRFMsList_DECL #include "AArch64GenSystemOperands.inc" } @@ -451,7 +461,8 @@ namespace AArch64RPRFM { struct RPRFM : SysAlias { using SysAlias::SysAlias; }; -#define GET_RPRFM_DECL +#define GET_RPRFMValues_DECL +#define GET_RPRFMsList_DECL #include "AArch64GenSystemOperands.inc" } // namespace AArch64RPRFM @@ -460,7 +471,8 @@ namespace AArch64SVEPredPattern { const char *Name; uint16_t Encoding; }; -#define GET_SVEPREDPAT_DECL +#define GET_SVEPREDPATValues_DECL +#define GET_SVEPREDPATsList_DECL #include "AArch64GenSystemOperands.inc" } @@ -469,7 +481,8 @@ namespace AArch64SVEVecLenSpecifier { const char *Name; uint16_t Encoding; }; -#define GET_SVEVECLENSPECIFIER_DECL +#define GET_SVEVECLENSPECIFIERValues_DECL +#define GET_SVEVECLENSPECIFIERsList_DECL #include "AArch64GenSystemOperands.inc" } // namespace AArch64SVEVecLenSpecifier @@ -556,7 +569,8 @@ namespace AArch64ExactFPImm { int Enum; const char *Repr; }; -#define GET_EXACTFPIMM_DECL +#define GET_ExactFPImmValues_DECL +#define GET_ExactFPImmsList_DECL #include "AArch64GenSystemOperands.inc" } @@ -564,22 +578,25 @@ namespace AArch64PState { struct PStateImm0_15 : SysAlias{ using SysAlias::SysAlias; }; - #define GET_PSTATEIMM0_15_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_PStateImm0_15Values_DECL +#define GET_PStateImm0_15sList_DECL +#include "AArch64GenSystemOperands.inc" struct PStateImm0_1 : SysAlias{ using SysAlias::SysAlias; }; - #define GET_PSTATEIMM0_1_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_PStateImm0_1Values_DECL +#define GET_PStateImm0_1sList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64PSBHint { struct PSB : SysAlias { using SysAlias::SysAlias; }; - #define GET_PSB_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_PSBValues_DECL +#define GET_PSBsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64PHint { @@ -595,7 +612,8 @@ struct PHint { } }; -#define GET_PHINT_DECL +#define GET_PHintValues_DECL +#define GET_PHintsList_DECL #include "AArch64GenSystemOperands.inc" const PHint *lookupPHintByName(StringRef); @@ -606,8 +624,9 @@ namespace AArch64BTIHint { struct BTI : SysAlias { using SysAlias::SysAlias; }; - #define GET_BTI_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_BTIValues_DECL +#define GET_BTIsList_DECL +#include "AArch64GenSystemOperands.inc" } namespace AArch64SME { @@ -713,8 +732,9 @@ namespace AArch64SysReg { } }; - #define GET_SYSREG_DECL - #include "AArch64GenSystemOperands.inc" +#define GET_SysRegsList_DECL +#define GET_SysRegValues_DECL +#include "AArch64GenSystemOperands.inc" const SysReg *lookupSysRegByName(StringRef); const SysReg *lookupSysRegByEncoding(uint16_t);