GlobalISel: Add maskedValueIsZero and signBitIsZero to known bits

I dropped the DemandedElts since it seems to be missing from some of
the new interfaces, but not others.

llvm-svn: 370389
diff --git a/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp b/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp
index f67184f..42d676f 100644
--- a/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp
+++ b/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp
@@ -86,3 +86,19 @@
   APInt Zeroes = Info.getKnownZeroes(SrcReg);
   EXPECT_EQ(Known.Zero, Zeroes);
 }
+
+TEST_F(GISelMITest, TestSignBitIsZero) {
+  if (!TM)
+    return;
+
+  const LLT S32 = LLT::scalar(32);
+  auto SignBit = B.buildConstant(S32, 0x8000000);
+  auto Zero = B.buildConstant(S32, 0);
+
+  GISelKnownBits KnownBits(*MF);
+
+  EXPECT_TRUE(KnownBits.signBitIsZero(Zero.getReg(0)));
+  EXPECT_FALSE(KnownBits.signBitIsZero(Zero.getReg(0)));
+  EXPECT_FALSE(KnownBits.signBitIsZero(SignBit.getReg(0)));
+  EXPECT_TRUE(KnownBits.signBitIsZero(SignBit.getReg(0)));
+}