forked from OSchip/llvm-project
LegalizeDAG: Implement PROMOTE for ISD::BITREVERSE
Summary: This operation is promoted the same way was ISD::BSWAP. This will prevent a regression in test/Target/AMDGOU/bitreverse.ll when i16 support is implemented. Reviewers: bogner, hfinkel Subscribers: hfinkel, wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D25202 llvm-svn: 284163
This commit is contained in:
parent
c45025e763
commit
f80c1875a3
|
@ -4084,10 +4084,11 @@ void SelectionDAGLegalize::PromoteNode(SDNode *Node) {
|
|||
}
|
||||
Results.push_back(DAG.getNode(ISD::TRUNCATE, dl, OVT, Tmp1));
|
||||
break;
|
||||
case ISD::BITREVERSE:
|
||||
case ISD::BSWAP: {
|
||||
unsigned DiffBits = NVT.getSizeInBits() - OVT.getSizeInBits();
|
||||
Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Node->getOperand(0));
|
||||
Tmp1 = DAG.getNode(ISD::BSWAP, dl, NVT, Tmp1);
|
||||
Tmp1 = DAG.getNode(Node->getOpcode(), dl, NVT, Tmp1);
|
||||
Tmp1 = DAG.getNode(
|
||||
ISD::SRL, dl, NVT, Tmp1,
|
||||
DAG.getConstant(DiffBits, dl,
|
||||
|
|
Loading…
Reference in New Issue