diff options
| author | Richard Osborne <richard@xmos.com> | 2014-02-27 13:20:06 +0000 |
|---|---|---|
| committer | Richard Osborne <richard@xmos.com> | 2014-02-27 13:20:06 +0000 |
| commit | 2d3a2bee41663b058802c270597e5700256c3244 (patch) | |
| tree | 35f5b523ea0f5094640dca3ca7b2bd09e54aec75 /llvm/lib/Target/XCore/XCoreISelLowering.cpp | |
| parent | cb9272fe66d32ec8da26b489c2e9d16b597401ce (diff) | |
| download | bcm5719-llvm-2d3a2bee41663b058802c270597e5700256c3244.tar.gz bcm5719-llvm-2d3a2bee41663b058802c270597e5700256c3244.zip | |
[XCore] Provide information about known zero bits of resource instructions.
llvm-svn: 202393
Diffstat (limited to 'llvm/lib/Target/XCore/XCoreISelLowering.cpp')
| -rw-r--r-- | llvm/lib/Target/XCore/XCoreISelLowering.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/lib/Target/XCore/XCoreISelLowering.cpp b/llvm/lib/Target/XCore/XCoreISelLowering.cpp index 7af0165329f..930a4d19ba0 100644 --- a/llvm/lib/Target/XCore/XCoreISelLowering.cpp +++ b/llvm/lib/Target/XCore/XCoreISelLowering.cpp @@ -1770,6 +1770,34 @@ void XCoreTargetLowering::computeMaskedBitsForTargetNode(const SDValue Op, KnownZero.getBitWidth() - 1); } break; + case ISD::INTRINSIC_W_CHAIN: + { + unsigned IntNo = cast<ConstantSDNode>(Op.getOperand(1))->getZExtValue(); + switch (IntNo) { + case Intrinsic::xcore_getts: + // High bits are known to be zero. + KnownZero = APInt::getHighBitsSet(KnownZero.getBitWidth(), + KnownZero.getBitWidth() - 16); + break; + case Intrinsic::xcore_int: + case Intrinsic::xcore_inct: + // High bits are known to be zero. + KnownZero = APInt::getHighBitsSet(KnownZero.getBitWidth(), + KnownZero.getBitWidth() - 8); + break; + case Intrinsic::xcore_testct: + // Result is either 0 or 1. + KnownZero = APInt::getHighBitsSet(KnownZero.getBitWidth(), + KnownZero.getBitWidth() - 1); + break; + case Intrinsic::xcore_testwct: + // Result is in the range 0 - 4. + KnownZero = APInt::getHighBitsSet(KnownZero.getBitWidth(), + KnownZero.getBitWidth() - 3); + break; + } + } + break; } } |

