mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-24 08:24:33 +00:00
[DAGCombiner] Added BSWAP vector constant folding support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239675 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -255,6 +255,7 @@ namespace {
|
||||
SDValue visitSRA(SDNode *N);
|
||||
SDValue visitSRL(SDNode *N);
|
||||
SDValue visitRotate(SDNode *N);
|
||||
SDValue visitBSWAP(SDNode *N);
|
||||
SDValue visitCTLZ(SDNode *N);
|
||||
SDValue visitCTLZ_ZERO_UNDEF(SDNode *N);
|
||||
SDValue visitCTTZ(SDNode *N);
|
||||
@ -1335,6 +1336,7 @@ SDValue DAGCombiner::visit(SDNode *N) {
|
||||
case ISD::SRL: return visitSRL(N);
|
||||
case ISD::ROTR:
|
||||
case ISD::ROTL: return visitRotate(N);
|
||||
case ISD::BSWAP: return visitBSWAP(N);
|
||||
case ISD::CTLZ: return visitCTLZ(N);
|
||||
case ISD::CTLZ_ZERO_UNDEF: return visitCTLZ_ZERO_UNDEF(N);
|
||||
case ISD::CTTZ: return visitCTTZ(N);
|
||||
@ -4764,6 +4766,16 @@ SDValue DAGCombiner::visitSRL(SDNode *N) {
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
SDValue DAGCombiner::visitBSWAP(SDNode *N) {
|
||||
SDValue N0 = N->getOperand(0);
|
||||
EVT VT = N->getValueType(0);
|
||||
|
||||
// fold (bswap c1) -> c2
|
||||
if (isConstantIntBuildVectorOrConstantInt(N0))
|
||||
return DAG.getNode(ISD::BSWAP, SDLoc(N), VT, N0);
|
||||
return SDValue();
|
||||
}
|
||||
|
||||
SDValue DAGCombiner::visitCTLZ(SDNode *N) {
|
||||
SDValue N0 = N->getOperand(0);
|
||||
EVT VT = N->getValueType(0);
|
||||
|
Reference in New Issue
Block a user