[llvm] [AArch64] Remove NoNaNsFPMath uses (PR #180462)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 8 19:51:04 PST 2026
https://github.com/paperchalice created https://github.com/llvm/llvm-project/pull/180462
None
>From a96ddaabdfde711ebf7240130ce12a707a447643 Mon Sep 17 00:00:00 2001
From: PaperChalice <liujunchang97 at outlook.com>
Date: Mon, 9 Feb 2026 11:49:56 +0800
Subject: [PATCH] [AArch64] Remove NoNaNsFPMath uses
---
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 5 ++---
.../Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp | 6 +++---
2 files changed, 5 insertions(+), 6 deletions(-)
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..57ee4dc415b43 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) {
@@ -1045,8 +1045,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;
More information about the llvm-commits
mailing list