Skip to content

Commit 1ddea4f

Browse files
committed
[AArch64] NFC: Refactoring of the SubRegIndexes in AArch64RegisterInfo.td
This is just moving some of the definitions around to all have them in the same place. This is preparation for a follow-up patch that redefines the SubRegIndexes to require less bits, and to define the top bits of registers.
1 parent 8ee5e19 commit 1ddea4f

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

llvm/lib/Target/AArch64/AArch64RegisterInfo.td

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,24 @@ class AArch64Reg<bits<16> enc, string n, list<Register> subregs = [],
1919
}
2020

2121
let Namespace = "AArch64" in {
22+
// SubRegIndexes for GPR registers
2223
def sub_32 : SubRegIndex<32>;
24+
def sube64 : SubRegIndex<64>;
25+
def subo64 : SubRegIndex<64>;
26+
def sube32 : SubRegIndex<32>;
27+
def subo32 : SubRegIndex<32>;
2328

29+
// SubRegIndexes for FPR/Vector registers
2430
def bsub : SubRegIndex<8>;
2531
def hsub : SubRegIndex<16>;
2632
def ssub : SubRegIndex<32>;
2733
def dsub : SubRegIndex<64>;
28-
def sube32 : SubRegIndex<32>;
29-
def subo32 : SubRegIndex<32>;
30-
def sube64 : SubRegIndex<64>;
31-
def subo64 : SubRegIndex<64>;
32-
// SVE
33-
def zsub : SubRegIndex<128>;
34+
def zsub : SubRegIndex<128>;
35+
// Note: Code depends on these having consecutive numbers
36+
def zsub0 : SubRegIndex<128, -1>;
37+
def zsub1 : SubRegIndex<128, -1>;
38+
def zsub2 : SubRegIndex<128, -1>;
39+
def zsub3 : SubRegIndex<128, -1>;
3440
// Note: Code depends on these having consecutive numbers
3541
def dsub0 : SubRegIndex<64>;
3642
def dsub1 : SubRegIndex<64>;
@@ -41,7 +47,8 @@ let Namespace = "AArch64" in {
4147
def qsub1 : SubRegIndex<128>;
4248
def qsub2 : SubRegIndex<128>;
4349
def qsub3 : SubRegIndex<128>;
44-
// Note: Code depends on these having consecutive numbers
50+
51+
// SubRegIndexes for SME Matrix tiles
4552
def zasubb : SubRegIndex<2048>; // (16 x 16)/1 bytes = 2048 bits
4653
def zasubh0 : SubRegIndex<1024>; // (16 x 16)/2 bytes = 1024 bits
4754
def zasubh1 : SubRegIndex<1024>; // (16 x 16)/2 bytes = 1024 bits
@@ -52,7 +59,11 @@ let Namespace = "AArch64" in {
5259
def zasubq0 : SubRegIndex<128>; // (16 x 16)/16 bytes = 128 bits
5360
def zasubq1 : SubRegIndex<128>; // (16 x 16)/16 bytes = 128 bits
5461

55-
def psub : SubRegIndex<16>;
62+
// SubRegIndexes for SVE Predicates
63+
def psub : SubRegIndex<16>;
64+
// Note: Code depends on these having consecutive numbers
65+
def psub0 : SubRegIndex<16, -1>;
66+
def psub1 : SubRegIndex<16, -1>;
5667
}
5768

5869
let Namespace = "AArch64" in {
@@ -1026,11 +1037,6 @@ def PNR16_p8to15 : PNRP8to15RegOp<"h", PNRAsmOp16_p8to15, 16, PNR_p8to15>;
10261037
def PNR32_p8to15 : PNRP8to15RegOp<"s", PNRAsmOp32_p8to15, 32, PNR_p8to15>;
10271038
def PNR64_p8to15 : PNRP8to15RegOp<"d", PNRAsmOp64_p8to15, 64, PNR_p8to15>;
10281039

1029-
let Namespace = "AArch64" in {
1030-
def psub0 : SubRegIndex<16, -1>;
1031-
def psub1 : SubRegIndex<16, -1>;
1032-
}
1033-
10341040
class PPRorPNRClass : RegisterClass<
10351041
"AArch64",
10361042
[ nxv16i1, nxv8i1, nxv4i1, nxv2i1, nxv1i1, aarch64svcount ], 16,
@@ -1123,8 +1129,7 @@ let EncoderMethod = "EncodeRegMul_MinMax<2, 0, 14>",
11231129
} // end let EncoderMethod/DecoderMethod
11241130

11251131

1126-
//******************************************************************************
1127-
1132+
//===----------------------------------------------------------------------===//
11281133
// SVE vector register classes
11291134
class ZPRClass<int firstreg, int lastreg, int step = 1> : RegisterClass<"AArch64",
11301135
[nxv16i8, nxv8i16, nxv4i32, nxv2i64,
@@ -1245,13 +1250,6 @@ def FPR32asZPR : FPRasZPROperand<32>;
12451250
def FPR64asZPR : FPRasZPROperand<64>;
12461251
def FPR128asZPR : FPRasZPROperand<128>;
12471252

1248-
let Namespace = "AArch64" in {
1249-
def zsub0 : SubRegIndex<128, -1>;
1250-
def zsub1 : SubRegIndex<128, -1>;
1251-
def zsub2 : SubRegIndex<128, -1>;
1252-
def zsub3 : SubRegIndex<128, -1>;
1253-
}
1254-
12551253
// Pairs, triples, and quads of SVE vector registers.
12561254
def ZSeqPairs : RegisterTuples<[zsub0, zsub1], [(rotl ZPR, 0), (rotl ZPR, 1)]>;
12571255
def ZSeqTriples : RegisterTuples<[zsub0, zsub1, zsub2], [(rotl ZPR, 0), (rotl ZPR, 1), (rotl ZPR, 2)]>;

0 commit comments

Comments
 (0)