diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-08-29 17:24:36 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-08-29 17:24:36 +0000 |
commit | b2b9a2375848d37f6104ce01bd34bf2a3ddc9d2e (patch) | |
tree | 9d3a3fa385ed7ee064dd32cd75524b45388da027 /llvm/unittests/CodeGen | |
parent | caff0a88dd21e045712d843a3d3c90ea12944e96 (diff) | |
download | bcm5719-llvm-b2b9a2375848d37f6104ce01bd34bf2a3ddc9d2e.tar.gz bcm5719-llvm-b2b9a2375848d37f6104ce01bd34bf2a3ddc9d2e.zip |
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
Diffstat (limited to 'llvm/unittests/CodeGen')
-rw-r--r-- | llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp b/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp index f67184fc208..42d676f4a00 100644 --- a/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp +++ b/llvm/unittests/CodeGen/GlobalISel/KnownBitsTest.cpp @@ -86,3 +86,19 @@ TEST_F(GISelMITest, TestKnownBits) { 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))); +} |