[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