[llvm] [AArch64] Remove NoNaNsFPMath uses (PR #180462)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 8 20:56:12 PST 2026
https://github.com/paperchalice updated https://github.com/llvm/llvm-project/pull/180462
>From a183fad2516dc39b0cbfdb595697f3f2f9729ec9 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 | 7 +++----
2 files changed, 5 insertions(+), 7 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..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;
More information about the llvm-commits
mailing list