Skip to content

Commit f2511ab

Browse files
author
Evandro Menezes
committed
[AArch64] Simplify the scheduling predicates (NFC)
The instruction encodings make it unnecessary to distinguish extended W-form from X-form instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@349185 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent a5a1eba commit f2511ab

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

lib/Target/AArch64/AArch64SchedPredExynos.td

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,34 @@ def ExynosExtFn : TIIPredicate<
3535
"isExynosExtFast",
3636
MCOpcodeSwitchStatement<
3737
[MCOpcodeSwitchCase<
38-
IsArithExt32Op.ValidOpcodes,
38+
IsArithExtOp.ValidOpcodes,
3939
MCReturnStatement<
4040
CheckAny<[CheckExtBy0,
4141
CheckAll<
42-
[CheckExtUXTW,
43-
CheckAny<
44-
[CheckExtBy1,
45-
CheckExtBy2,
46-
CheckExtBy3]>]>]>>>,
47-
MCOpcodeSwitchCase<
48-
IsArithExt64Op.ValidOpcodes,
49-
MCReturnStatement<
50-
CheckAny<[CheckExtBy0,
51-
CheckAll<
52-
[CheckExtUXTX,
42+
[CheckAny<
43+
[CheckExtUXTW,
44+
CheckExtUXTX]>,
5345
CheckAny<
5446
[CheckExtBy1,
5547
CheckExtBy2,
5648
CheckExtBy3]>]>]>>>],
5749
MCReturnStatement<FalsePred>>>;
5850
def ExynosExtPred : MCSchedPredicate<ExynosExtFn>;
5951

52+
// Identify a load or store using the register offset addressing mode
53+
// with a scaled non-extended register.
54+
def ExynosScaledIdxFn : TIIPredicate<"isExynosScaledAddr",
55+
MCOpcodeSwitchStatement<
56+
[MCOpcodeSwitchCase<
57+
IsLoadStoreRegOffsetOp.ValidOpcodes,
58+
MCReturnStatement<
59+
CheckAny<
60+
[CheckMemExtSXTW,
61+
CheckMemExtUXTW,
62+
CheckMemScaled]>>>],
63+
MCReturnStatement<FalsePred>>>;
64+
def ExynosScaledIdxPred : MCSchedPredicate<ExynosScaledIdxFn>;
65+
6066
// Identify FP instructions.
6167
def ExynosFPPred : MCSchedPredicate<CheckAny<[CheckDForm, CheckQForm]>>;
6268

lib/Target/AArch64/AArch64SchedPredicates.td

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,12 +132,10 @@ def CheckQForm : CheckAll<[CheckIsRegOperand<0>,
132132
CheckRegOperand<0, Q31>]>]>;
133133

134134
// Identify arithmetic instructions with extend.
135-
def IsArithExt32Op : CheckOpcode<[ADDWrx, ADDXrx, ADDSWrx, ADDSXrx,
136-
SUBWrx, SUBXrx, SUBSWrx, SUBSXrx]>;
137-
def IsArithExt64Op : CheckOpcode<[ADDXrx64, ADDSXrx64,
135+
def IsArithExtOp : CheckOpcode<[ADDWrx, ADDXrx, ADDSWrx, ADDSXrx,
136+
SUBWrx, SUBXrx, SUBSWrx, SUBSXrx,
137+
ADDXrx64, ADDSXrx64,
138138
SUBXrx64, SUBSXrx64]>;
139-
def IsArithExtOp : CheckOpcode<!listconcat(IsArithExt32Op.ValidOpcodes,
140-
IsArithExt64Op.ValidOpcodes)>;
141139

142140
// Identify arithmetic immediate instructions.
143141
def IsArithImmOp : CheckOpcode<[ADDWri, ADDXri, ADDSWri, ADDSXri,

0 commit comments

Comments
 (0)