mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
[AArch64] Fix Exynos predicates (NFC)
Fix the logic in the definition of the `ExynosShiftExPred` as a more specific version of `ExynosShiftPred`. But, since `ExynosShiftExPred` is not used yet, this change has NFC. llvm-svn: 349091
This commit is contained in:
parent
a323ae1555
commit
6b61a418d6
@ -12,6 +12,19 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Auxiliary predicates.
|
||||
|
||||
// Check the shift in arithmetic and logic instructions.
|
||||
def ExynosCheckShift : CheckAny<[CheckShiftBy0,
|
||||
CheckAll<
|
||||
[CheckShiftLSL,
|
||||
CheckAny<
|
||||
[CheckShiftBy1,
|
||||
CheckShiftBy2,
|
||||
CheckShiftBy3]>]>]>;
|
||||
|
||||
// Exynos predicates.
|
||||
|
||||
// Identify BLR specifying the LR register as the indirect target register.
|
||||
def ExynosBranchLinkLRPred : MCSchedPredicate<
|
||||
CheckAll<[CheckOpcode<[BLR]>,
|
||||
@ -82,36 +95,32 @@ def ExynosRotateRightImmPred : MCSchedPredicate<
|
||||
CheckAll<[CheckOpcode<[EXTRWrri, EXTRXrri]>,
|
||||
CheckSameRegOperand<1, 2>]>>;
|
||||
|
||||
// Identify arithmetic and logic instructions without or with limited shift.
|
||||
// Identify arithmetic and logic instructions with limited shift.
|
||||
def ExynosShiftFn : TIIPredicate<
|
||||
"isExynosShiftFast",
|
||||
MCOpcodeSwitchStatement<
|
||||
[MCOpcodeSwitchCase<
|
||||
IsArithLogicShiftOp.ValidOpcodes,
|
||||
MCReturnStatement<
|
||||
CheckAny<[CheckShiftBy0,
|
||||
CheckAll<
|
||||
[CheckShiftLSL,
|
||||
CheckAny<
|
||||
[CheckShiftBy1,
|
||||
CheckShiftBy2,
|
||||
CheckShiftBy3]>]>]>>>],
|
||||
MCReturnStatement<ExynosCheckShift>>],
|
||||
MCReturnStatement<FalsePred>>>;
|
||||
def ExynosShiftPred : MCSchedPredicate<ExynosShiftFn>;
|
||||
|
||||
// Identify more arithmetic and logic instructions without or limited shift.
|
||||
// Identify more arithmetic and logic instructions with limited shift.
|
||||
def ExynosShiftExFn : TIIPredicate<
|
||||
"isExynosShiftExFast",
|
||||
MCOpcodeSwitchStatement<
|
||||
[MCOpcodeSwitchCase<
|
||||
IsArithLogicShiftOp.ValidOpcodes,
|
||||
MCReturnStatement<
|
||||
CheckAll<
|
||||
[CheckShiftLSL,
|
||||
CheckShiftBy8]>>>],
|
||||
MCReturnStatement<ExynosShiftFn>>>;
|
||||
CheckAny<
|
||||
[CheckAll<
|
||||
[CheckShiftLSL,
|
||||
CheckShiftBy8]>,
|
||||
ExynosCheckShift]>>>],
|
||||
MCReturnStatement<FalsePred>>>;
|
||||
def ExynosShiftExPred : MCSchedPredicate<ExynosShiftExFn>;
|
||||
|
||||
|
||||
// Identify arithmetic and logic immediate instructions.
|
||||
def ExynosCheapFn : TIIPredicate<
|
||||
"isExynosCheapAsMove",
|
||||
|
Loading…
x
Reference in New Issue
Block a user