diff options
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp index 093778add49..502913886e3 100644 --- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp @@ -1268,6 +1268,16 @@ bool TargetLowering::SimplifyDemandedBits(      }      break;    } +  case ISD::BITREVERSE: { +    SDValue Src = Op.getOperand(0); +    APInt DemandedSrcBits = DemandedBits.reverseBits(); +    if (SimplifyDemandedBits(Src, DemandedSrcBits, DemandedElts, Known2, TLO, +                             Depth + 1)) +      return true; +    Known.One = Known2.One.reverseBits(); +    Known.Zero = Known2.Zero.reverseBits(); +    break; +  }    case ISD::SIGN_EXTEND_INREG: {      SDValue Op0 = Op.getOperand(0);      EVT ExVT = cast<VTSDNode>(Op.getOperand(1))->getVT(); | 

