Chromium Code Reviews| Index: src/arm/macro-assembler-arm.h |
| =================================================================== |
| --- src/arm/macro-assembler-arm.h (revision 6953) |
| +++ src/arm/macro-assembler-arm.h (working copy) |
| @@ -121,6 +121,15 @@ |
| Condition cond = al); |
| void Sbfx(Register dst, Register src, int lsb, int width, |
| Condition cond = al); |
| + // The scratch register is not used for ARMv7. |
| + // scratch can be the same register as src (in which case it is trashed), but |
| + // not the same as dst. |
|
Søren Thygesen Gjesse
2011/02/28 09:54:32
not -> but not
Søren Thygesen Gjesse
2011/03/02 09:33:08
The but was there in the first place.
|
| + void Bfi(Register dst, |
| + Register src, |
| + Register scratch, |
| + int lsb, |
| + int width, |
| + Condition cond = al); |
| void Bfc(Register dst, int lsb, int width, Condition cond = al); |
| void Usat(Register dst, int satpos, const Operand& src, |
| Condition cond = al); |
| @@ -234,6 +243,17 @@ |
| } |
| } |
| + // Pop two registers. Pops rightmost register first (from lower address). |
| + void Pop(Register src1, Register src2, Condition cond = al) { |
| + ASSERT(!src1.is(src2)); |
| + if (src1.code() > src2.code()) { |
| + ldm(ia_w, sp, src1.bit() | src2.bit(), cond); |
| + } else { |
| + ldr(src2, MemOperand(sp, 4, PostIndex), cond); |
| + ldr(src1, MemOperand(sp, 4, PostIndex), cond); |
| + } |
| + } |
| + |
| // Push and pop the registers that can hold pointers, as defined by the |
| // RegList constant kSafepointSavedRegisters. |
| void PushSafepointRegisters(); |
| @@ -613,6 +633,19 @@ |
| DwVfpRegister double_scratch, |
| Label *not_int32); |
| +// Truncates a double using a specific rounding mode. |
| +// Clears the z flag (ne condition) if an overflow occurs. |
| +// If exact_conversion is true, the z flag is also cleared if the conversion |
| +// was inexact, ie. if the double value could not be converted exactly |
| +// to a 32bit integer. |
| + void EmitVFPTruncate(VFPRoundingMode rounding_mode, |
| + SwVfpRegister result, |
| + DwVfpRegister double_input, |
| + Register scratch1, |
| + Register scratch2, |
| + CheckForInexactConversion check |
| + = kDontCheckForInexactConversion); |
| + |
| // Count leading zeros in a 32 bit word. On ARM5 and later it uses the clz |
| // instruction. On pre-ARM5 hardware this routine gives the wrong answer |
| // for 0 (31 instead of 32). Source and scratch can be the same in which case |