mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
Add DAG parameter to ComputeNumSignBitsForTargetNode
This way, you can check the number of sign bits in the operands. The depth parameter it already has is pretty useless without this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205649 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
912154008a
commit
a134cec06b
@ -1905,6 +1905,7 @@ public:
|
||||
/// This method can be implemented by targets that want to expose additional
|
||||
/// information about sign bits to the DAG Combiner.
|
||||
virtual unsigned ComputeNumSignBitsForTargetNode(SDValue Op,
|
||||
const SelectionDAG &DAG,
|
||||
unsigned Depth = 0) const;
|
||||
|
||||
struct DAGCombinerInfo {
|
||||
|
@ -2422,7 +2422,7 @@ unsigned SelectionDAG::ComputeNumSignBits(SDValue Op, unsigned Depth) const{
|
||||
Op.getOpcode() == ISD::INTRINSIC_WO_CHAIN ||
|
||||
Op.getOpcode() == ISD::INTRINSIC_W_CHAIN ||
|
||||
Op.getOpcode() == ISD::INTRINSIC_VOID) {
|
||||
unsigned NumBits = TLI->ComputeNumSignBitsForTargetNode(Op, Depth);
|
||||
unsigned NumBits = TLI->ComputeNumSignBitsForTargetNode(Op, *this, Depth);
|
||||
if (NumBits > 1) FirstAnswer = std::max(FirstAnswer, NumBits);
|
||||
}
|
||||
|
||||
|
@ -1074,6 +1074,7 @@ void TargetLowering::computeMaskedBitsForTargetNode(const SDValue Op,
|
||||
/// targets that want to expose additional information about sign bits to the
|
||||
/// DAG Combiner.
|
||||
unsigned TargetLowering::ComputeNumSignBitsForTargetNode(SDValue Op,
|
||||
const SelectionDAG &,
|
||||
unsigned Depth) const {
|
||||
assert((Op.getOpcode() >= ISD::BUILTIN_OP_END ||
|
||||
Op.getOpcode() == ISD::INTRINSIC_WO_CHAIN ||
|
||||
|
@ -16576,8 +16576,10 @@ void X86TargetLowering::computeMaskedBitsForTargetNode(const SDValue Op,
|
||||
}
|
||||
}
|
||||
|
||||
unsigned X86TargetLowering::ComputeNumSignBitsForTargetNode(SDValue Op,
|
||||
unsigned Depth) const {
|
||||
unsigned X86TargetLowering::ComputeNumSignBitsForTargetNode(
|
||||
SDValue Op,
|
||||
const SelectionDAG &,
|
||||
unsigned Depth) const {
|
||||
// SETCC_CARRY sets the dest to ~0 for true or 0 for false.
|
||||
if (Op.getOpcode() == X86ISD::SETCC_CARRY)
|
||||
return Op.getValueType().getScalarType().getSizeInBits();
|
||||
|
@ -626,6 +626,7 @@ namespace llvm {
|
||||
// ComputeNumSignBitsForTargetNode - Determine the number of bits in the
|
||||
// operation that are sign bits.
|
||||
unsigned ComputeNumSignBitsForTargetNode(SDValue Op,
|
||||
const SelectionDAG &DAG,
|
||||
unsigned Depth) const override;
|
||||
|
||||
bool isGAPlusOffset(SDNode *N, const GlobalValue* &GA,
|
||||
|
Loading…
x
Reference in New Issue
Block a user