[llvm] [AArch64] Remove NoNaNsFPMath uses (PR #180462)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 8 21:29:44 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: None (paperchalice)
<details>
<summary>Changes</summary>
Remove `NoNaNsFPMath`, users should use `nnan` only.
---
Full diff: https://github.com/llvm/llvm-project/pull/180462.diff
2 Files Affected:
- (modified) llvm/lib/Target/AArch64/AArch64ISelLowering.cpp (+2-3)
- (modified) llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp (+3-4)
``````````diff
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
index add3a92343943..c3f257b0ea461 100644
--- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
@@ -12440,7 +12440,7 @@ SDValue AArch64TargetLowering::LowerSELECT_CC(
return true;
}
})) {
- bool NoNaNs = getTargetMachine().Options.NoNaNsFPMath || Flags.hasNoNaNs();
+ bool NoNaNs = Flags.hasNoNaNs();
SDValue VectorCmp =
emitFloatCompareMask(LHS, RHS, TVal, FVal, CC, NoNaNs, DL, DAG);
if (VectorCmp)
@@ -17088,8 +17088,7 @@ SDValue AArch64TargetLowering::LowerVSETCC(SDValue Op,
bool ShouldInvert;
changeVectorFPCCToAArch64CC(CC, CC1, CC2, ShouldInvert);
- bool NoNaNs =
- getTargetMachine().Options.NoNaNsFPMath || Op->getFlags().hasNoNaNs();
+ bool NoNaNs = Op->getFlags().hasNoNaNs();
SDValue Cmp = emitVectorComparison(LHS, RHS, CC1, NoNaNs, CmpVT, DL, DAG);
if (!Cmp.getNode())
return SDValue();
diff --git a/llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp b/llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp
index 221a7bcd881bb..e73ff042c00f0 100644
--- a/llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp
+++ b/llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp
@@ -954,7 +954,7 @@ void applySwapICmpOperands(MachineInstr &MI, GISelChangeObserver &Observer) {
/// \returns a function which builds a vector floating point compare instruction
/// for a condition code \p CC.
-/// \param [in] NoNans - True if the target has NoNansFPMath.
+/// \param [in] NoNans - True if the instruction has nnan flag.
std::function<Register(MachineIRBuilder &)>
getVectorFCMP(AArch64CC::CondCode CC, Register LHS, Register RHS, bool NoNans,
MachineRegisterInfo &MRI) {
@@ -1016,7 +1016,6 @@ bool matchLowerVectorFCMP(MachineInstr &MI, MachineRegisterInfo &MRI,
void applyLowerVectorFCMP(MachineInstr &MI, MachineRegisterInfo &MRI,
MachineIRBuilder &MIB) {
assert(MI.getOpcode() == TargetOpcode::G_FCMP);
- const auto &ST = MI.getMF()->getSubtarget<AArch64Subtarget>();
const auto &CmpMI = cast<GFCmp>(MI);
@@ -1045,8 +1044,8 @@ void applyLowerVectorFCMP(MachineInstr &MI, MachineRegisterInfo &MRI,
// Instead of having an apply function, just build here to simplify things.
MIB.setInstrAndDebugLoc(MI);
- const bool NoNans =
- ST.getTargetLowering()->getTargetMachine().Options.NoNaNsFPMath;
+ // TODO: Also consider GISelValueTracking result if eligible.
+ const bool NoNans = MI.getFlag(MachineInstr::FmNoNans);
auto Cmp = getVectorFCMP(CC, LHS, RHS, NoNans, MRI);
Register CmpRes;
``````````
</details>
https://github.com/llvm/llvm-project/pull/180462
More information about the llvm-commits
mailing list