From 0ffc7410e5c6cada94e3876eab2a9dad0b0cc49a Mon Sep 17 00:00:00 2001 From: sumesh-s-mcw <sumesh.suresh@multicorewareinc.com> Date: Mon, 31 Mar 2025 00:59:28 +0530 Subject: [PATCH 1/2] FEAT : Added InvertedFPClassTest in LegalizerHelper --- llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index ac68eb55a6fd5..093b975fc9154 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -13,6 +13,7 @@ //===----------------------------------------------------------------------===// #include "llvm/CodeGen/GlobalISel/LegalizerHelper.h" +#include "llvm/CodeGen/CodeGenCommonISel.h" #include "llvm/CodeGen/GlobalISel/CallLowering.h" #include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h" #include "llvm/CodeGen/GlobalISel/GISelValueTracking.h" @@ -9100,8 +9101,12 @@ LegalizerHelper::lowerISFPCLASS(MachineInstr &MI) { return Legalized; } - // TODO: Try inverting the test with getInvertedFPClassTest like the DAG - // version + bool isInverted = false; + FPClassTest InvertedTest = llvm::invertFPClassTestIfSimpler(Mask, false); + if (InvertedTest != fcNone) { + Mask = InvertedTest; + isInverted = true; + } unsigned BitSize = SrcTy.getScalarSizeInBits(); const fltSemantics &Semantics = getFltSemanticForLLT(SrcTy.getScalarType()); @@ -9252,7 +9257,9 @@ LegalizerHelper::lowerISFPCLASS(MachineInstr &MI) { } appendToRes(NormalRes); } - + if (isInverted) { + Res = MIRBuilder.buildNot(DstTy, Res); + } MIRBuilder.buildCopy(DstReg, Res); MI.eraseFromParent(); return Legalized; From ba89b42b924d6c33efc0fe34abba78455ab82c18 Mon Sep 17 00:00:00 2001 From: sumesh-s-mcw <sumesh.suresh@multicorewareinc.com> Date: Wed, 16 Apr 2025 11:32:33 +0530 Subject: [PATCH 2/2] Removed braces --- llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index 093b975fc9154..3b0e7220fe635 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -9257,9 +9257,8 @@ LegalizerHelper::lowerISFPCLASS(MachineInstr &MI) { } appendToRes(NormalRes); } - if (isInverted) { + if (isInverted) Res = MIRBuilder.buildNot(DstTy, Res); - } MIRBuilder.buildCopy(DstReg, Res); MI.eraseFromParent(); return Legalized;