Lines Matching full:divisor
1013 int32_t divisor = instr->divisor();
1023 int32_t mask = divisor < 0 ? -(divisor + 1) : (divisor - 1);
1046 int32_t divisor = instr->divisor();
1049 if (divisor == 0) {
1054 __ TruncatingDiv(dividend, Abs(divisor));
1055 __ imul(edx, edx, Abs(divisor));
1128 int32_t divisor = instr->divisor();
1130 DCHECK(divisor == kMinInt || base::bits::IsPowerOfTwo32(Abs(divisor)));
1135 if (hdiv->CheckFlag(HValue::kBailoutOnMinusZero) && divisor < 0) {
1140 if (hdiv->CheckFlag(HValue::kCanOverflow) && divisor == -1) {
1146 divisor != 1 && divisor != -1) {
1147 int32_t mask = divisor < 0 ? -(divisor + 1) : (divisor - 1);
1152 int32_t shift = WhichPowerOf2Abs(divisor);
1160 if (divisor < 0) __ neg(result);
1166 int32_t divisor = instr->divisor();
1169 if (divisor == 0) {
1176 if (hdiv->CheckFlag(HValue::kBailoutOnMinusZero) && divisor < 0) {
1181 __ TruncatingDiv(dividend, Abs(divisor));
1182 if (divisor < 0) __ neg(edx);
1186 __ imul(eax, eax, divisor);
1197 Register divisor = ToRegister(instr->divisor());
1202 DCHECK(!divisor.is(eax));
1203 DCHECK(!divisor.is(edx));
1207 __ test(divisor, divisor);
1216 __ test(divisor, divisor);
1226 __ cmp(divisor, -1);
1233 __ idiv(divisor);
1245 int32_t divisor = instr->divisor();
1248 // If the divisor is positive, things are easy: There can be no deopts and we
1250 if (divisor == 1) return;
1251 int32_t shift = WhichPowerOf2Abs(divisor);
1252 if (divisor > 1) {
1257 // If the divisor is negative, we have to negate and handle edge cases.
1264 if (divisor == -1) {
1279 __ mov(dividend, Immediate(kMinInt / divisor));
1289 int32_t divisor = instr->divisor();
1292 if (divisor == 0) {
1299 if (hdiv->CheckFlag(HValue::kBailoutOnMinusZero) && divisor < 0) {
1306 if ((divisor > 0 && !hdiv->CheckFlag(HValue::kLeftCanBeNegative)) ||
1307 (divisor < 0 && !hdiv->CheckFlag(HValue::kLeftCanBePositive))) {
1308 __ TruncatingDiv(dividend, Abs(divisor));
1309 if (divisor < 0) __ neg(edx);
1319 __ j(divisor > 0 ? less : greater, &needs_adjustment, Label::kNear);
1320 __ TruncatingDiv(dividend, Abs(divisor));
1321 if (divisor < 0) __ neg(edx);
1324 __ lea(temp, Operand(dividend, divisor > 0 ? 1 : -1));
1325 __ TruncatingDiv(temp, Abs(divisor));
1326 if (divisor < 0) __ neg(edx);
1336 Register divisor = ToRegister(instr->divisor());
1342 DCHECK(!divisor.is(eax));
1343 DCHECK(!divisor.is(edx));
1347 __ test(divisor, divisor);
1356 __ test(divisor, divisor);
1366 __ cmp(divisor, -1);
1373 __ idiv(divisor);
1378 __ xor_(remainder, divisor);