Home | History | Annotate | Download | only in arm

Lines Matching full:divisor

1009   int32_t divisor = instr->divisor();
1019 int32_t mask = divisor < 0 ? -(divisor + 1) : (divisor - 1);
1042 int32_t divisor = instr->divisor();
1046 if (divisor == 0) {
1051 __ TruncatingDiv(result, dividend, Abs(divisor));
1052 __ mov(ip, Operand(Abs(divisor)));
1128 DwVfpRegister divisor = ToDoubleRegister(instr->temp2());
1129 DCHECK(!divisor.is(dividend));
1132 DCHECK(!quotient.is(divisor));
1143 // Load the arguments in VFP registers. The divisor value is preloaded
1149 __ vcvt_f64_s32(divisor, double_scratch0().low());
1151 // We do not care about the sign of the divisor. Note that we still handle
1153 __ vabs(divisor, divisor);
1155 __ vdiv(quotient, dividend, divisor);
1160 __ vmul(double_scratch0(), divisor, quotient);
1178 int32_t divisor = instr->divisor();
1180 DCHECK(divisor == kMinInt || base::bits::IsPowerOfTwo32(Abs(divisor)));
1185 if (hdiv->CheckFlag(HValue::kBailoutOnMinusZero) && divisor < 0) {
1190 if (hdiv->CheckFlag(HValue::kCanOverflow) && divisor == -1) {
1196 divisor != 1 && divisor != -1) {
1197 int32_t mask = divisor < 0 ? -(divisor + 1) : (divisor - 1);
1202 if (divisor == -1) { // Nice shortcut, not needed for correctness.
1206 int32_t shift = WhichPowerOf2Abs(divisor);
1216 if (divisor < 0) __ rsb(result, result, Operand(0));
1222 int32_t divisor = instr->divisor();
1226 if (divisor == 0) {
1233 if (hdiv->CheckFlag(HValue::kBailoutOnMinusZero) && divisor < 0) {
1238 __ TruncatingDiv(result, dividend, Abs(divisor));
1239 if (divisor < 0) __ rsb(result, result, Operand::Zero());
1242 __ mov(ip, Operand(divisor));
1254 Register divisor = ToRegister(instr->divisor());
1259 __ cmp(divisor, Operand::Zero());
1268 __ cmp(divisor, Operand::Zero());
1283 __ cmp(divisor, Operand(-1), eq);
1289 __ sdiv(result, dividend, divisor);
1295 __ vmov(double_scratch0().low(), divisor);
1305 __ Mls(remainder, result, divisor, dividend);
1339 int32_t divisor = instr->divisor();
1341 // If the divisor is 1, return the dividend.
1342 if (divisor == 1) {
1347 // If the divisor is positive, things are easy: There can be no deopts and we
1349 int32_t shift = WhichPowerOf2Abs(divisor);
1350 if (divisor > 1) {
1355 // If the divisor is negative, we have to negate and handle edge cases.
1362 if (divisor == -1) {
1375 __ mov(result, Operand(kMinInt / divisor), LeaveCC, vs);
1382 int32_t divisor = instr->divisor();
1386 if (divisor == 0) {
1393 if (hdiv->CheckFlag(HValue::kBailoutOnMinusZero) && divisor < 0) {
1400 if ((divisor > 0 && !hdiv->CheckFlag(HValue::kLeftCanBeNegative)) ||
1401 (divisor < 0 && !hdiv->CheckFlag(HValue::kLeftCanBePositive))) {
1402 __ TruncatingDiv(result, dividend, Abs(divisor));
1403 if (divisor < 0) __ rsb(result, result, Operand::Zero());
1413 __ b(divisor > 0 ? lt : gt, &needs_adjustment);
1414 __ TruncatingDiv(result, dividend, Abs(divisor));
1415 if (divisor < 0) __ rsb(result, result, Operand::Zero());
1418 __ add(temp, dividend, Operand(divisor > 0 ? 1 : -1));
1419 __ TruncatingDiv(result, temp, Abs(divisor));
1420 if (divisor < 0) __ rsb(result, result, Operand::Zero());
1430 Register right = ToRegister(instr->divisor());