Chromium Code Reviews| Index: src/x87/macro-assembler-x87.cc |
| diff --git a/src/x87/macro-assembler-x87.cc b/src/x87/macro-assembler-x87.cc |
| index 0c459ebfd420f5208d8b4b7c05ef6a26d831a4c3..6277ada6f03349a769c029509f02f77d7f64c5b7 100644 |
| --- a/src/x87/macro-assembler-x87.cc |
| +++ b/src/x87/macro-assembler-x87.cc |
| @@ -597,6 +597,27 @@ void MacroAssembler::DebugBreak() { |
| call(ces.GetCode(), RelocInfo::DEBUGGER_STATEMENT); |
| } |
| +void MacroAssembler::PairShl(Register dst, Register src, uint8_t shift) { |
|
ahaas
2016/03/08 07:23:40
On ia32 I will rename the parameters to "high" and
|
| + if (shift >= 32) { |
| + mov(dst, src); |
| + shl(dst, shift - 32); |
| + xor_(src, src); |
| + } else { |
| + shld(dst, src, shift); |
| + shl(src, shift); |
| + } |
| +} |
| + |
| +void MacroAssembler::PairShl_cl(Register dst, Register src) { |
| + shld_cl(dst, src); |
| + shl_cl(src); |
| + Label done; |
| + test(ecx, Immediate(0x20)); |
| + j(equal, &done, Label::kNear); |
| + mov(dst, src); |
| + xor_(src, src); |
| + bind(&done); |
| +} |
| bool MacroAssembler::IsUnsafeImmediate(const Immediate& x) { |
| static const int kMaxImmediateBits = 17; |