Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/PowerPC/PPCRegisterInfo.td
Show First 20 Lines • Show All 167 Lines • ▼ Show 20 Lines | foreach Index = 32-63 in { | ||||
def VSX#Index : VSXReg<Index, "vs"#Index>; | def VSX#Index : VSXReg<Index, "vs"#Index>; | ||||
} | } | ||||
let SubRegIndices = [sub_vsx0, sub_vsx1] in { | let SubRegIndices = [sub_vsx0, sub_vsx1] in { | ||||
// VSR pairs 0 - 15 (corresponding to VSRs 0 - 30 paired with 1 - 31). | // VSR pairs 0 - 15 (corresponding to VSRs 0 - 30 paired with 1 - 31). | ||||
foreach Index = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 } in { | foreach Index = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 } in { | ||||
def VSRp#!srl(Index, 1) : VSRPair<!srl(Index, 1), "vsp"#Index, | def VSRp#!srl(Index, 1) : VSRPair<!srl(Index, 1), "vsp"#Index, | ||||
[!cast<VSRL>("VSL"#Index), !cast<VSRL>("VSL"#!add(Index, 1))]>, | [!cast<VSRL>("VSL"#Index), !cast<VSRL>("VSL"#!add(Index, 1))]>, | ||||
DwarfRegNum<[0, 0]>; | DwarfRegNum<[-1, -1]>; | ||||
} | } | ||||
// VSR pairs 16 - 31 (corresponding to VSRs 32 - 62 paired with 33 - 63). | // VSR pairs 16 - 31 (corresponding to VSRs 32 - 62 paired with 33 - 63). | ||||
foreach Index = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 } in { | foreach Index = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 } in { | ||||
def VSRp#!add(!srl(Index, 1), 16) : | def VSRp#!add(!srl(Index, 1), 16) : | ||||
VSRPair<!add(!srl(Index, 1), 16), "vsp"#!add(Index, 32), | VSRPair<!add(!srl(Index, 1), 16), "vsp"#!add(Index, 32), | ||||
[!cast<VR>("V"#Index), !cast<VR>("V"#!add(Index, 1))]>, | [!cast<VR>("V"#Index), !cast<VR>("V"#!add(Index, 1))]>, | ||||
DwarfRegNum<[0, 0]>; | DwarfRegNum<[-1, -1]>; | ||||
} | } | ||||
} | } | ||||
// The representation of r0 when treated as the constant 0. | // The representation of r0 when treated as the constant 0. | ||||
def ZERO : GPR<0, "0">, DwarfRegAlias<R0>; | def ZERO : GPR<0, "0">, DwarfRegAlias<R0>; | ||||
def ZERO8 : GP8<ZERO, "0">, DwarfRegAlias<X0>; | def ZERO8 : GP8<ZERO, "0">, DwarfRegAlias<X0>; | ||||
// Representations of the frame pointer used by ISD::FRAMEADDR. | // Representations of the frame pointer used by ISD::FRAMEADDR. | ||||
▲ Show 20 Lines • Show All 224 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
def VRSAVERC : RegisterClass<"PPC", [i32], 32, (add VRSAVE)>; | def VRSAVERC : RegisterClass<"PPC", [i32], 32, (add VRSAVE)>; | ||||
def CARRYRC : RegisterClass<"PPC", [i32], 32, (add CARRY, XER)> { | def CARRYRC : RegisterClass<"PPC", [i32], 32, (add CARRY, XER)> { | ||||
let CopyCost = -1; | let CopyCost = -1; | ||||
} | } | ||||
let SubRegIndices = [sub_pair0, sub_pair1] in { | let SubRegIndices = [sub_pair0, sub_pair1] in { | ||||
def ACC0 : ACC<0, "acc0", [VSRp0, VSRp1]>, DwarfRegNum<[0, 0]>; | def ACC0 : ACC<0, "acc0", [VSRp0, VSRp1]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC1 : ACC<1, "acc1", [VSRp2, VSRp3]>, DwarfRegNum<[0, 0]>; | def ACC1 : ACC<1, "acc1", [VSRp2, VSRp3]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC2 : ACC<2, "acc2", [VSRp4, VSRp5]>, DwarfRegNum<[0, 0]>; | def ACC2 : ACC<2, "acc2", [VSRp4, VSRp5]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC3 : ACC<3, "acc3", [VSRp6, VSRp7]>, DwarfRegNum<[0, 0]>; | def ACC3 : ACC<3, "acc3", [VSRp6, VSRp7]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC4 : ACC<4, "acc4", [VSRp8, VSRp9]>, DwarfRegNum<[0, 0]>; | def ACC4 : ACC<4, "acc4", [VSRp8, VSRp9]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC5 : ACC<5, "acc5", [VSRp10, VSRp11]>, DwarfRegNum<[0, 0]>; | def ACC5 : ACC<5, "acc5", [VSRp10, VSRp11]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC6 : ACC<6, "acc6", [VSRp12, VSRp13]>, DwarfRegNum<[0, 0]>; | def ACC6 : ACC<6, "acc6", [VSRp12, VSRp13]>, DwarfRegNum<[-1, -1]>; | ||||
def ACC7 : ACC<7, "acc7", [VSRp14, VSRp15]>, DwarfRegNum<[0, 0]>; | def ACC7 : ACC<7, "acc7", [VSRp14, VSRp15]>, DwarfRegNum<[-1, -1]>; | ||||
} | } | ||||
def ACCRC : RegisterClass<"PPC", [v512i1], 128, (add ACC0, ACC1, ACC2, ACC3, | def ACCRC : RegisterClass<"PPC", [v512i1], 128, (add ACC0, ACC1, ACC2, ACC3, | ||||
ACC4, ACC5, ACC6, ACC7)> { | ACC4, ACC5, ACC6, ACC7)> { | ||||
let Size = 512; | let Size = 512; | ||||
} | } | ||||
let SubRegIndices = [sub_pair0, sub_pair1] in { | let SubRegIndices = [sub_pair0, sub_pair1] in { | ||||
def UACC0 : UACC<0, "acc0", [VSRp0, VSRp1]>, DwarfRegNum<[0, 0]>; | def UACC0 : UACC<0, "acc0", [VSRp0, VSRp1]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC1 : UACC<1, "acc1", [VSRp2, VSRp3]>, DwarfRegNum<[0, 0]>; | def UACC1 : UACC<1, "acc1", [VSRp2, VSRp3]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC2 : UACC<2, "acc2", [VSRp4, VSRp5]>, DwarfRegNum<[0, 0]>; | def UACC2 : UACC<2, "acc2", [VSRp4, VSRp5]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC3 : UACC<3, "acc3", [VSRp6, VSRp7]>, DwarfRegNum<[0, 0]>; | def UACC3 : UACC<3, "acc3", [VSRp6, VSRp7]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC4 : UACC<4, "acc4", [VSRp8, VSRp9]>, DwarfRegNum<[0, 0]>; | def UACC4 : UACC<4, "acc4", [VSRp8, VSRp9]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC5 : UACC<5, "acc5", [VSRp10, VSRp11]>, DwarfRegNum<[0, 0]>; | def UACC5 : UACC<5, "acc5", [VSRp10, VSRp11]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC6 : UACC<6, "acc6", [VSRp12, VSRp13]>, DwarfRegNum<[0, 0]>; | def UACC6 : UACC<6, "acc6", [VSRp12, VSRp13]>, DwarfRegNum<[-1, -1]>; | ||||
def UACC7 : UACC<7, "acc7", [VSRp14, VSRp15]>, DwarfRegNum<[0, 0]>; | def UACC7 : UACC<7, "acc7", [VSRp14, VSRp15]>, DwarfRegNum<[-1, -1]>; | ||||
} | } | ||||
def UACCRC : RegisterClass<"PPC", [v512i1], 128, | def UACCRC : RegisterClass<"PPC", [v512i1], 128, | ||||
(add UACC0, UACC1, UACC2, UACC3, | (add UACC0, UACC1, UACC2, UACC3, | ||||
UACC4, UACC5, UACC6, UACC7)> { | UACC4, UACC5, UACC6, UACC7)> { | ||||
let Size = 512; | let Size = 512; | ||||
} | } | ||||
// Allocate in the same order as the underlying VSX registers. | // Allocate in the same order as the underlying VSX registers. | ||||
Show All 9 Lines |