- Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Tmp1);
- Tmp1 = DAG.getNode(ISD::BSWAP, dl, NVT, Tmp1);
- Tmp1 = DAG.getNode(ISD::SRL, dl, NVT, Tmp1,
- DAG.getConstant(DiffBits, TLI.getShiftAmountTy()));
- Results.push_back(Tmp1);
+ Tmp1 = DAG.getNode(ISD::ZERO_EXTEND, dl, NVT, Node->getOperand(0));
+ Tmp2 = DAG.getNode(ISD::BSWAP, dl, NVT, Tmp1);
+ Tmp3 = DAG.getNode(ISD::SRL, dl, NVT, Tmp2,
+ DAG.getConstant(DiffBits, TLI.getShiftAmountTy()));
+ Results.push_back(Tmp3);
+
+ if (DisableScheduling) {
+ DAG.AssignOrdering(Tmp1.getNode(), Order);
+ DAG.AssignOrdering(Tmp2.getNode(), Order);
+ DAG.AssignOrdering(Tmp3.getNode(), Order);
+ }
+