@@ -312,6 +312,10 @@ void CodeGen::genCodeForTreeNode(GenTree* treeNode)
312312 case GT_SWAP:
313313 genCodeForSwap (treeNode->AsOp ());
314314 break ;
315+
316+ case GT_BFIZ:
317+ genCodeForBfiz (treeNode->AsOp ());
318+ break ;
315319#endif // TARGET_ARM64
316320
317321 case GT_JMP:
@@ -1614,23 +1618,23 @@ void CodeGen::genCodeForShift(GenTree* tree)
16141618 genTreeOps oper = tree->OperGet ();
16151619 instruction ins = genGetInsForOper (oper, targetType);
16161620 emitAttr size = emitActualTypeSize (tree);
1621+ regNumber dstReg = tree->GetRegNum ();
16171622
1618- assert (tree-> GetRegNum () != REG_NA);
1623+ assert (dstReg != REG_NA);
16191624
16201625 genConsumeOperands (tree->AsOp ());
16211626
16221627 GenTree* operand = tree->gtGetOp1 ();
16231628 GenTree* shiftBy = tree->gtGetOp2 ();
16241629 if (!shiftBy->IsCnsIntOrI ())
16251630 {
1626- GetEmitter ()->emitIns_R_R_R (ins, size, tree-> GetRegNum () , operand->GetRegNum (), shiftBy->GetRegNum ());
1631+ GetEmitter ()->emitIns_R_R_R (ins, size, dstReg , operand->GetRegNum (), shiftBy->GetRegNum ());
16271632 }
16281633 else
16291634 {
16301635 unsigned immWidth = emitter::getBitWidth (size); // For ARM64, immWidth will be set to 32 or 64
16311636 unsigned shiftByImm = (unsigned )shiftBy->AsIntCon ()->gtIconVal & (immWidth - 1 );
1632-
1633- GetEmitter ()->emitIns_R_R_I (ins, size, tree->GetRegNum (), operand->GetRegNum (), shiftByImm);
1637+ GetEmitter ()->emitIns_R_R_I (ins, size, dstReg, operand->GetRegNum (), shiftByImm);
16341638 }
16351639
16361640 genProduceReg (tree);
0 commit comments