Home | History | Annotate | Download | only in arm64

Lines Matching full:dividend

2534   Register dividend = ToRegister32(instr->dividend());
2538 DCHECK(!result.is(dividend));
2543 DeoptimizeIfZero(dividend, instr, Deoptimizer::kDivisionByZero);
2547 // Test dividend for kMinInt by subtracting one (cmp) and checking for
2549 __ Cmp(dividend, 1);
2556 __ Tst(dividend, mask);
2561 __ Neg(result, dividend);
2566 __ Mov(result, dividend);
2568 __ Add(result, dividend, Operand(dividend, LSR, 31));
2570 __ Mov(result, Operand(dividend, ASR, 31));
2571 __ Add(result, dividend, Operand(result, LSR, 32 - shift));
2579 Register dividend = ToRegister32(instr->dividend());
2582 DCHECK(!AreAliased(dividend, result));
2592 DeoptimizeIfZero(dividend, instr, Deoptimizer::kMinusZero);
2595 __ TruncatingDiv(result, dividend, Abs(divisor));
2600 DCHECK(!AreAliased(dividend, result, temp));
2601 __ Sxtw(dividend.X(), dividend);
2603 __ Smsubl(temp.X(), result, temp, dividend.X());
2612 Register dividend = ToRegister32(instr->dividend());
2618 __ Sdiv(result, dividend, divisor);
2634 // If the divisor < 0 (mi), compare the dividend, and deopt if it is
2635 // zero, ie. zero dividend with negative divisor deopts.
2638 __ Ccmp(dividend, 0, NoFlag, mi);
2644 // Test dividend for kMinInt by subtracting one (cmp) and checking for
2646 __ Cmp(dividend, 1);
2647 // If overflow is set, ie. dividend = kMinInt, compare the divisor with
2649 // dividend isn't -1, and thus we shouldn't deopt.
2656 __ Msub(remainder, result, divisor, dividend);
3606 Register dividend = ToRegister32(instr->dividend());
3610 // If the divisor is 1, return the dividend.
3612 __ Mov(result, dividend, kDiscardForSameWReg);
3620 __ Mov(result, Operand(dividend, ASR, shift));
3625 __ Negs(result, dividend);
3640 __ Mov(result, Operand(dividend, ASR, shift));
3650 Register dividend = ToRegister32(instr->dividend());
3653 DCHECK(!AreAliased(dividend, result));
3663 DeoptimizeIfZero(dividend, instr, Deoptimizer::kMinusZero);
3666 // Easy case: We need no dynamic check for the dividend and the flooring
3670 __ TruncatingDiv(result, dividend, Abs(divisor));
3678 DCHECK(!AreAliased(temp, dividend, result));
3680 __ Cmp(dividend, 0);
3682 __ TruncatingDiv(result, dividend, Abs(divisor));
3686 __ Add(temp, dividend, Operand(divisor > 0 ? 1 : -1));
3696 Register dividend = ToRegister32(instr->dividend());
3703 __ Sdiv(result, dividend, divisor);
3710 // The V flag will be set iff dividend == kMinInt.
3711 __ Cmp(dividend, 1);
3719 __ Ccmp(dividend, 0, ZFlag, mi);
3721 // deoptimized. The Z flag is set only if (divisor < 0) and (dividend == 0).
3728 __ Eor(remainder, dividend, divisor);
3732 __ Msub(remainder, result, divisor, dividend);
3951 Register dividend = ToRegister32(instr->dividend());
3953 DCHECK(dividend.is(ToRegister32(instr->result())));
3965 __ Tbz(dividend, kWSignBit, &dividend_is_not_negative);
3967 __ Neg(dividend, dividend);
3968 __ And(dividend, dividend, mask);
3969 __ Negs(dividend, dividend);
3977 __ And(dividend, dividend, mask);
3983 Register dividend = ToRegister32(instr->dividend());
3987 DCHECK(!AreAliased(dividend, result, temp));
3994 __ TruncatingDiv(result, dividend, Abs(divisor));
3995 __ Sxtw(dividend.X(), dividend);
3997 __ Smsubl(result.X(), result, temp, dividend.X());
4004 DeoptimizeIfNegative(dividend, instr, Deoptimizer::kMinusZero);
4011 Register dividend = ToRegister32(instr->left());
4016 // modulo = dividend - quotient * divisor
4017 __ Sdiv(result, dividend, divisor);
4021 __ Msub(result, result, divisor, dividend);
4024 DeoptimizeIfNegative(dividend, instr, Deoptimizer::kMinusZero);