diff options
Diffstat (limited to 'llvm/lib/Target/RISCV/RISCVSystemOperands.td')
-rw-r--r-- | llvm/lib/Target/RISCV/RISCVSystemOperands.td | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index a46a32c4e7f25..8e75647bd4a9e 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -20,6 +20,8 @@ include "llvm/TableGen/SearchableTable.td" class SysReg<string name, bits<12> op> { string Name = name; bits<12> Encoding = op; + // A maximum of one alias is supported right now. + string AltName = name; // FIXME: add these additional fields when needed. // Privilege Access: Read and Write = 0, 1, 2; Read-Only = 3. // Privilege Mode: User = 0, System = 1 or Machine = 3. @@ -36,7 +38,7 @@ class SysReg<string name, bits<12> op> { def SysRegsList : GenericTable { let FilterClass = "SysReg"; // FIXME: add "ReadWrite", "Mode", "Extra", "Number" fields when needed. - let Fields = [ "Name", "Encoding", "FeaturesRequired", "isRV32Only" ]; + let Fields = [ "Name", "Encoding", "AltName", "FeaturesRequired", "isRV32Only" ]; let PrimaryKey = [ "Encoding" ]; let PrimaryKeyName = "lookupSysRegByEncoding"; @@ -47,6 +49,11 @@ def lookupSysRegByName : SearchIndex { let Key = [ "Name" ]; } +def lookupSysRegByAltName : SearchIndex { + let Table = SysRegsList; + let Key = [ "AltName" ]; +} + // The following CSR encodings match those given in Tables 2.2, // 2.3, 2.4 and 2.5 in the RISC-V Instruction Set Manual // Volume II: Privileged Architecture. @@ -303,6 +310,7 @@ def: SysReg<"mhpmcounter31h", 0xB9F>; //===-------------------------- // Machine Counter Setup //===-------------------------- +def : SysReg<"mcountinhibit", 0x320>; def : SysReg<"mhpmevent3", 0x323>; def : SysReg<"mhpmevent4", 0x324>; def : SysReg<"mhpmevent5", 0x325>; @@ -346,4 +354,19 @@ def : SysReg<"tdata3", 0x7A3>; //===----------------------------------------------- def : SysReg<"dcsr", 0x7B0>; def : SysReg<"dpc", 0x7B1>; -def : SysReg<"dscratch", 0x7B2>; + +// "dscratch" is an alternative name for "dscratch0" which appeared in earlier +// drafts of the RISC-V debug spec +let AltName = "dscratch" in +def : SysReg<"dscratch0", 0x7B2>; +def : SysReg<"dscratch1", 0x7B3>; + +//===----------------------------------------------- +// User Vector CSRs +//===----------------------------------------------- +def : SysReg<"vstart", 0x008>; +def : SysReg<"vxsat", 0x009>; +def : SysReg<"vxrm", 0x00A>; +def : SysReg<"vl", 0xC20>; +def : SysReg<"vtype", 0xC21>; +def : SysReg<"vlenb", 0xC22>; |