[llvm] [AArch64] Sub, add, and icmp should have the fact they can be negated in the cost (PR #142844)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 4 13:27:32 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: AZero13 (AZero13)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/142844.diff
1 Files Affected:
- (modified) llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp (+7-1)
``````````diff
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
index 68aec80f07e1d..542b34df8b345 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
@@ -473,7 +473,13 @@ InstructionCost AArch64TTIImpl::getIntImmCostInst(unsigned Opcode, unsigned Idx,
if (Idx == ImmIdx) {
int NumConstants = (BitSize + 63) / 64;
- InstructionCost Cost = AArch64TTIImpl::getIntImmCost(Imm, Ty, CostKind);
+ InstructionCost Cost;
+ if (Opcode == Instruction::Add || Opcode == Instruction::Sub ||
+ Opcode == Instruction::ICmp) {
+ // Add/Sub/ICmp immediates can be flipped.
+ Cost = AArch64TTIImpl::getIntImmCost(Imm.abs(), Ty, CostKind);
+ } else
+ Cost = AArch64TTIImpl::getIntImmCost(Imm, Ty, CostKind);
return (Cost <= NumConstants * TTI::TCC_Basic)
? static_cast<int>(TTI::TCC_Free)
: Cost;
``````````
</details>
https://github.com/llvm/llvm-project/pull/142844
More information about the llvm-commits
mailing list