+2006-07-06 Aleksey Demakov <ademakov@gmail.com>
+
+ * jit/jit-rules-x86.ins: fix division by power of two.
+
2006-07-05 Aleksey Demakov <ademakov@gmail.com>
* configure.in: make new register allocator the default.
}
[reg, imm, if("(((jit_nuint)$2) & (((jit_nuint)$2) - 1)) == 0")] -> {
/* x & (x - 1) is equal to zero if x is a power of 2 */
- jit_nuint shift, value;
- for(shift = 0, value = $2; value; value >>= 1)
+ jit_nuint shift, value = $2 >> 1;
+ for(shift = 0; value; value >>= 1)
{
++shift;
}
}
[reg, imm, if("(((jit_nuint)$2) & (((jit_nuint)$2) - 1)) == 0")] -> {
/* x & (x - 1) is equal to zero if x is a power of 2 */
- jit_nuint shift, value;
- for(shift = 0, value = $2; value; value >>= 1)
+ jit_nuint shift, value = $2 >> 1;
+ for(shift = 0; value; value >>= 1)
{
++shift;
}
- x86_shift_reg_imm(inst, X86_SAR, $1, shift);
+ x86_shift_reg_imm(inst, X86_SHR, $1, shift);
}
[reg("eax"), imm, scratch("?", "edx")] -> {
x86_mov_reg_imm(inst, $3, $2);