Skip to content

Commit b766ba1

Browse files
jacobly0adriweb
authored andcommitted
Cleanup jacobly0#6.
1 parent d40b9f7 commit b766ba1

File tree

1 file changed

+58
-58
lines changed

1 file changed

+58
-58
lines changed

Diff for: llvm/lib/Target/Z80/Z80RegisterInfo.td

+58-58
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,42 @@
1414
//===----------------------------------------------------------------------===//
1515

1616
let Namespace = "Z80" in {
17-
class Z80Reg<string n, bits<16> Enc = -1> : Register<n> {
18-
let HWEncoding = Enc;
17+
class Z80Reg<string name, bits<16> enc = -1> : Register<name> {
18+
let HWEncoding = enc;
19+
}
20+
21+
// Subregister indices.
22+
def sub_low : SubRegIndex<8>;
23+
def sub_high : SubRegIndex<8, 8>;
24+
def sub_short : SubRegIndex<16>;
25+
26+
class Z80RegPair<Z80Reg high, Z80Reg low,
27+
bits<16> enc, bits<16> dwarf = enc>
28+
: Z80Reg<!cond(!and(!eq(!size(high.AsmName), 1),
29+
!eq(!size( low.AsmName), 1))
30+
: !strconcat(high.AsmName, low.AsmName),
31+
!and(!gt(!size(high.AsmName), 1),
32+
!gt(!size( low.AsmName), 1),
33+
!eq(!substr(high.AsmName,
34+
0, !sub(!size(high.AsmName), 1)),
35+
!substr( low.AsmName,
36+
0, !sub(!size( low.AsmName), 1))))
37+
: !substr(high.AsmName, 0, !sub(!size(high.AsmName), 1))),
38+
enc>
39+
, DwarfRegNum<[dwarf]> {
40+
let SubRegs = [high, low];
41+
let SubRegIndices = [sub_high, sub_low];
42+
let CoveredBySubRegs = 1;
43+
}
44+
45+
class EZ80ExtReg<Z80Reg short>
46+
: Z80Reg<short.AsmName, short.HWEncoding>
47+
, DwarfRegAlias<short> {
48+
let SubRegs = [short];
49+
let SubRegIndices = [sub_short];
50+
}
1951
}
2052

21-
// Subregister indices.
22-
def sub_low : SubRegIndex<8>;
23-
def sub_high : SubRegIndex<8, 8>;
24-
def sub_short : SubRegIndex<16>;
25-
26-
class Z80RegWithSubRegs<string n, list<Register> sub = [], bits<16> enc = -1>
27-
: Z80Reg<n, enc> {
28-
let SubRegs = sub;
29-
let SubRegIndices = [sub_high, sub_low];
30-
let CoveredBySubRegs = 1;
31-
}
32-
33-
class EZ80RegPair<Z80Reg subreg>
34-
: Register<""> {
35-
let HWEncoding{1-0} = subreg.HWEncoding{1-0};
36-
let SubRegs = [subreg];
37-
let SubRegIndices = [sub_short];
38-
let AsmName = subreg.AsmName;
39-
//let AltNames = subreg.AltNames;
40-
}
41-
}
4253
//===----------------------------------------------------------------------===//
4354
// Register definitions...
4455
//
@@ -55,43 +66,42 @@ def L : Z80Reg<"l", 5>;
5566

5667
// 8-bit index registers
5768
let CostPerUse = [1] in {
58-
def IXH : Z80Reg<"ixh", 4>;
59-
def IXL : Z80Reg<"ixl", 5>;
60-
def IYH : Z80Reg<"iyh", 4>;
61-
def IYL : Z80Reg<"iyl", 5>;
69+
def IXH : Z80Reg<"ixh", 4>;
70+
def IXL : Z80Reg<"ixl", 5>;
71+
def IYH : Z80Reg<"iyh", 4>;
72+
def IYL : Z80Reg<"iyl", 5>;
6273
}
6374

6475
// 16-bit registers
65-
def AF : Z80RegWithSubRegs<"af", [A,F], 3>, DwarfRegNum<[3]>;
66-
def BC : Z80RegWithSubRegs<"bc", [B,C], 0>, DwarfRegNum<[0]>;
67-
def DE : Z80RegWithSubRegs<"de", [D,E], 1>, DwarfRegNum<[1]>;
68-
def HL : Z80RegWithSubRegs<"hl", [H,L], 2>, DwarfRegNum<[2]>;
76+
def AF : Z80RegPair<A, F, 3>;
77+
def BC : Z80RegPair<B, C, 0>;
78+
def DE : Z80RegPair<D, E, 1>;
79+
def HL : Z80RegPair<H, L, 2>;
80+
6981
// 16-bit index registers
70-
let CostPerUse = 1 in {
71-
def IX : Z80RegWithSubRegs<"ix", [IXH,IXL], 2>;
72-
def IY : Z80RegWithSubRegs<"iy", [IYH,IYL], 2>;
82+
let CostPerUse = [1] in {
83+
def IX : Z80RegPair<IXH, IXL, 2, 4>;
84+
def IY : Z80RegPair<IYH, IYL, 2, 5>;
7385
}
7486

75-
def SPS : Z80Reg<"sp", 3>;
87+
// 16-bit misc registers
88+
def SPS : Z80Reg<"sp", 3>, DwarfRegNum<[6]>;
7689

7790
// 24-bit registers
78-
def UBC : EZ80RegPair<BC>;
79-
def UDE : EZ80RegPair<DE>;
80-
def UHL : EZ80RegPair<HL>;
91+
def UBC : EZ80ExtReg<BC>;
92+
def UDE : EZ80ExtReg<DE>;
93+
def UHL : EZ80ExtReg<HL>;
8194
// 24-bit index registers
82-
let CostPerUse = 1 in {
83-
def UIX : EZ80RegPair<IX>;
84-
def UIY : EZ80RegPair<IY>;
95+
let CostPerUse = [1] in {
96+
def UIX : EZ80ExtReg<IX>;
97+
def UIY : EZ80ExtReg<IY>;
8598
}
8699

87-
//definition of SPL register for EZ80 ADL mode.
88-
//It havn't common part with SPS register, so this definition is not 100%
89-
//correct, but SPS and SPL cannot be used within one function. Moreover, ADL=1
90-
//and ADL=0 instructions cannot be mixed within one ELF section, because no one
91-
//disassembler which may correctly disassemble result code.
92-
def SPL : EZ80RegPair<SPS>;
100+
// 24-bit misc registers
101+
def SPL : Z80Reg<"sp", 3>, DwarfRegNum<[7]>;
93102

94-
def PC : Z80Reg<"pc">;
103+
// misc registers
104+
def PC : Z80Reg<"pc">, DwarfRegNum<[8]>;
95105

96106
//===----------------------------------------------------------------------===//
97107
// Register Class Definitions...
@@ -119,11 +129,6 @@ def A16 : Z80RC16<(add HL, I16)>;
119129
def R16 : Z80RC16<(add G16, I16)>;
120130
let CopyCost = -1 in
121131
def Z16 : Z80RC16<(add SPS, AF)>;
122-
//def S16 : Z80RC16<(add R16, AF)>;
123-
//def L16 : Z80RC16<(add G16, I16)>;
124-
//def R16 : Z80RC16<(add L16, SPS)>;
125-
//def S16 : Z80RC16<(add L16, AF)>;
126-
//def C16 : Z80RC16<(add R16, SPS)>;
127132

128133
def O24 : Z80RC24<(add UDE, UBC)>;
129134
def G24 : Z80RC24<(add UHL, O24)>;
@@ -134,8 +139,3 @@ def A24 : Z80RC24<(add UHL, I24)>;
134139
def R24 : Z80RC24<(add G24, I24)>;
135140
let CopyCost = -1 in
136141
def Z24 : Z80RC24<(add SPL, PC)>;
137-
//def S24 : Z80RC24<(add R24, AF)>;
138-
//def L24 : Z80RC24<(add G24, I24)>;
139-
//def R24 : Z80RC24<(add L24, SPL)>;
140-
//def S24 : Z80RC24<(add L24, AF)>;
141-
//def C24 : Z80RC24<(add R24, SPL)>;

0 commit comments

Comments
 (0)