Index: lib/Target/AArch64/AArch64ISelLowering.cpp =================================================================== --- lib/Target/AArch64/AArch64ISelLowering.cpp +++ lib/Target/AArch64/AArch64ISelLowering.cpp @@ -634,7 +634,7 @@ } // Prefer likely predicted branches to selects on out-of-order cores. - if (Subtarget->isCortexA57()) + if (Subtarget->isCortexA57() || Subtarget->isKryo()) PredictableSelectIsExpensive = true; } Index: lib/Target/AArch64/AArch64InstrInfo.cpp =================================================================== --- lib/Target/AArch64/AArch64InstrInfo.cpp +++ lib/Target/AArch64/AArch64InstrInfo.cpp @@ -543,7 +543,8 @@ // FIXME: this implementation should be micro-architecture dependent, so a // micro-architecture target hook should be introduced here in future. bool AArch64InstrInfo::isAsCheapAsAMove(const MachineInstr *MI) const { - if (!Subtarget.isCortexA57() && !Subtarget.isCortexA53()) + if (!Subtarget.isCortexA57() && !Subtarget.isCortexA53() && + !Subtarget.isKryo()) return MI->isAsCheapAsAMove(); switch (MI->getOpcode()) { Index: lib/Target/AArch64/AArch64Subtarget.h =================================================================== --- lib/Target/AArch64/AArch64Subtarget.h +++ lib/Target/AArch64/AArch64Subtarget.h @@ -154,7 +154,7 @@ bool isExynosM1() const { return CPUString == "exynos-m1"; } bool isKryo() const { return CPUString == "kryo"; } - bool useAA() const override { return isCortexA53(); } + bool useAA() const override { return isCortexA53() || isKryo(); } /// getMaxInlineSizeThreshold - Returns the maximum memset / memcpy size /// that still makes it profitable to inline the call. Index: lib/Target/AArch64/AArch64TargetTransformInfo.cpp =================================================================== --- lib/Target/AArch64/AArch64TargetTransformInfo.cpp +++ lib/Target/AArch64/AArch64TargetTransformInfo.cpp @@ -472,7 +472,7 @@ } unsigned AArch64TTIImpl::getMaxInterleaveFactor(unsigned VF) { - if (ST->isCortexA57()) + if (ST->isCortexA57() || ST->isKryo()) return 4; return 2; }