[llvm] [AArch64] Extend condition optimizer to support unsigned comparisons (PR #144380)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 10 17:48:43 PDT 2025
================
@@ -227,26 +227,43 @@ static int getComplementOpc(int Opc) {
// Changes form of comparison inclusive <-> exclusive.
static AArch64CC::CondCode getAdjustedCmp(AArch64CC::CondCode Cmp) {
switch (Cmp) {
- case AArch64CC::GT: return AArch64CC::GE;
- case AArch64CC::GE: return AArch64CC::GT;
- case AArch64CC::LT: return AArch64CC::LE;
- case AArch64CC::LE: return AArch64CC::LT;
+ case AArch64CC::GT:
+ return AArch64CC::GE;
+ case AArch64CC::GE:
+ return AArch64CC::GT;
+ case AArch64CC::LT:
+ return AArch64CC::LE;
+ case AArch64CC::LE:
+ return AArch64CC::LT;
+ case AArch64CC::HI:
+ return AArch64CC::HS;
+ case AArch64CC::HS:
+ return AArch64CC::HI;
+ case AArch64CC::LO:
+ return AArch64CC::LS;
+ case AArch64CC::LS:
+ return AArch64CC::LO;
default:
llvm_unreachable("Unexpected condition code");
}
}
// Transforms GT -> GE, GE -> GT, LT -> LE, LE -> LT by updating comparison
// operator and condition code.
-AArch64ConditionOptimizer::CmpInfo AArch64ConditionOptimizer::adjustCmp(
- MachineInstr *CmpMI, AArch64CC::CondCode Cmp) {
+AArch64ConditionOptimizer::CmpInfo
+AArch64ConditionOptimizer::adjustCmp(MachineInstr *CmpMI,
+ AArch64CC::CondCode Cmp) {
unsigned Opc = CmpMI->getOpcode();
+ unsigned OldOpc = Opc;
+
+ bool isSigned = Cmp == AArch64CC::GT || Cmp == AArch64CC::GE ||
----------------
AZero13 wrote:
Done!
https://github.com/llvm/llvm-project/pull/144380
More information about the llvm-commits
mailing list