[llvm] 564332e - [X86] computeKnownBitsForTargetNode - add X86ISD::FAND coverage (#182204)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 19 01:59:55 PST 2026
Author: Xinlong Chen
Date: 2026-02-19T09:59:49Z
New Revision: 564332e4e872ecc3047c5b9bb08a70ea27e66d7b
URL: https://github.com/llvm/llvm-project/commit/564332e4e872ecc3047c5b9bb08a70ea27e66d7b
DIFF: https://github.com/llvm/llvm-project/commit/564332e4e872ecc3047c5b9bb08a70ea27e66d7b.diff
LOG: [X86] computeKnownBitsForTargetNode - add X86ISD::FAND coverage (#182204)
Fixes #182043
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/unittests/Target/X86/X86SelectionDAGTest.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 3678327627b97..c8154b51e4687 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -39312,6 +39312,7 @@ void X86TargetLowering::computeKnownBitsForTargetNode(const SDValue Op,
}
break;
}
+ case X86ISD::FAND:
case X86ISD::AND: {
if (Op.getResNo() == 0) {
KnownBits Known2;
diff --git a/llvm/unittests/Target/X86/X86SelectionDAGTest.cpp b/llvm/unittests/Target/X86/X86SelectionDAGTest.cpp
index b546908a48931..1099e00ca6ef7 100644
--- a/llvm/unittests/Target/X86/X86SelectionDAGTest.cpp
+++ b/llvm/unittests/Target/X86/X86SelectionDAGTest.cpp
@@ -76,6 +76,30 @@ class X86SelectionDAGTest : public testing::Test {
std::unique_ptr<SelectionDAG> DAG;
};
+TEST_F(X86SelectionDAGTest, computeKnownBits_FAND) {
+ SDLoc Loc;
+
+ auto SrcF32 = DAG->getCopyFromReg(DAG->getEntryNode(), Loc, 1, MVT::f32);
+ auto ZeroF32 = DAG->getConstantFP(+0.0, Loc, MVT::f32);
+ auto OpF32 = DAG->getNode(X86ISD::FAND, Loc, MVT::f32, ZeroF32, SrcF32);
+ KnownBits KnownF32 = DAG->computeKnownBits(OpF32);
+ EXPECT_TRUE(KnownF32.isZero());
+
+ auto Src2xF64 = DAG->getCopyFromReg(DAG->getEntryNode(), Loc, 1, MVT::v2f64);
+ auto ZeroF64 = DAG->getConstantFP(+0.0, Loc, MVT::f64);
+ auto SignBitF64 = DAG->getConstantFP(-0.0, Loc, MVT::f64);
+ auto LoZeroHiSign2xF64 =
+ DAG->getBuildVector(MVT::v2f64, Loc, {ZeroF64, SignBitF64});
+ auto Op2xF64 =
+ DAG->getNode(X86ISD::FAND, Loc, MVT::v2f64, LoZeroHiSign2xF64, Src2xF64);
+ KnownBits KnownAll2xF64 = DAG->computeKnownBits(Op2xF64);
+ KnownBits KnownLo2xF64 = DAG->computeKnownBits(Op2xF64, APInt(2, 1));
+ KnownBits KnownHi2xF64 = DAG->computeKnownBits(Op2xF64, APInt(2, 2));
+ EXPECT_FALSE(KnownAll2xF64.isZero());
+ EXPECT_TRUE(KnownLo2xF64.isZero());
+ EXPECT_FALSE(KnownHi2xF64.isZero());
+}
+
TEST_F(X86SelectionDAGTest, computeKnownBits_FANDN) {
SDLoc Loc;
More information about the llvm-commits
mailing list