| Index: src/arm/assembler-arm.cc
|
| ===================================================================
|
| --- src/arm/assembler-arm.cc (revision 4724)
|
| +++ src/arm/assembler-arm.cc (working copy)
|
| @@ -1363,46 +1363,25 @@
|
| }
|
|
|
|
|
| -void Assembler::ldrd(Register dst1,
|
| - Register dst2,
|
| +void Assembler::ldrd(Register dst1, Register dst2,
|
| const MemOperand& src, Condition cond) {
|
| + ASSERT(CpuFeatures::IsEnabled(ARMv7));
|
| ASSERT(src.rm().is(no_reg));
|
| ASSERT(!dst1.is(lr)); // r14.
|
| ASSERT_EQ(0, dst1.code() % 2);
|
| ASSERT_EQ(dst1.code() + 1, dst2.code());
|
| -#ifdef CAN_USE_ARMV7_INSTRUCTIONS
|
| addrmod3(cond | B7 | B6 | B4, dst1, src);
|
| -#else
|
| - // Generate two ldr instructions if ldrd is not available.
|
| - MemOperand src2(src);
|
| - src2.set_offset(src2.offset() + 4);
|
| - if (dst1.is(src.rn())) {
|
| - ldr(dst2, src2, cond);
|
| - ldr(dst1, src, cond);
|
| - } else {
|
| - ldr(dst1, src, cond);
|
| - ldr(dst2, src2, cond);
|
| - }
|
| -#endif
|
| }
|
|
|
|
|
| -void Assembler::strd(Register src1,
|
| - Register src2,
|
| +void Assembler::strd(Register src1, Register src2,
|
| const MemOperand& dst, Condition cond) {
|
| ASSERT(dst.rm().is(no_reg));
|
| ASSERT(!src1.is(lr)); // r14.
|
| ASSERT_EQ(0, src1.code() % 2);
|
| ASSERT_EQ(src1.code() + 1, src2.code());
|
| -#ifdef CAN_USE_ARMV7_INSTRUCTIONS
|
| + ASSERT(CpuFeatures::IsEnabled(ARMv7));
|
| addrmod3(cond | B7 | B6 | B5 | B4, src1, dst);
|
| -#else
|
| - // Generate two str instructions if strd is not available.
|
| - MemOperand dst2(dst);
|
| - dst2.set_offset(dst2.offset() + 4);
|
| - str(src1, dst, cond);
|
| - str(src2, dst2, cond);
|
| -#endif
|
| }
|
|
|
| // Load/Store multiple instructions.
|
|
|