Index: lib/Target/Hexagon/HexagonRegisterInfo.td =================================================================== --- lib/Target/Hexagon/HexagonRegisterInfo.td +++ lib/Target/Hexagon/HexagonRegisterInfo.td @@ -13,46 +13,48 @@ let Namespace = "Hexagon" in { - class HexagonReg : Register { + class HexagonReg num, string n> : Register { field bits<5> Num; + let HWEncoding{4-0} = num; } - class HexagonDoubleReg subregs> : + class HexagonDoubleReg num, string n, list subregs> : RegisterWithSubRegs { field bits<5> Num; + let HWEncoding{4-0} = num; } // Registers are identified with 5-bit ID numbers. // Ri - 32-bit integer registers. - class Ri num, string n> : HexagonReg { + class Ri num, string n> : HexagonReg { let Num = num; } // Rf - 32-bit floating-point registers. - class Rf num, string n> : HexagonReg { + class Rf num, string n> : HexagonReg { let Num = num; } // Rd - 64-bit registers. class Rd num, string n, list subregs> : - HexagonDoubleReg { + HexagonDoubleReg { let Num = num; let SubRegs = subregs; } // Rp - predicate registers - class Rp num, string n> : HexagonReg { + class Rp num, string n> : HexagonReg { let Num = num; } // Rc - control registers - class Rc num, string n> : HexagonReg { + class Rc num, string n> : HexagonReg { let Num = num; } // Rj - aliased integer registers - class Rj: HexagonReg { + class Rj: HexagonReg { let Num = R.Num; let Aliases = [R]; }