| Index: src/x64/assembler-x64.h
|
| diff --git a/src/x64/assembler-x64.h b/src/x64/assembler-x64.h
|
| index 7e309346402446c441d90a86a1c590ddcbb6e1c2..e8953329bffb8fbed0dcee02e39bcb931e4ac2eb 100644
|
| --- a/src/x64/assembler-x64.h
|
| +++ b/src/x64/assembler-x64.h
|
| @@ -690,11 +690,22 @@ class Assembler : public Malloced {
|
| shift(dst, shift_amount, 0x7);
|
| }
|
|
|
| + // Shifts dst right, duplicating sign bit, by shift_amount bits.
|
| + // Shifting by 1 is handled efficiently.
|
| + void sarl(Register dst, Immediate shift_amount) {
|
| + shift_32(dst, shift_amount, 0x7);
|
| + }
|
| +
|
| // Shifts dst right, duplicating sign bit, by cl % 64 bits.
|
| void sar(Register dst) {
|
| shift(dst, 0x7);
|
| }
|
|
|
| + // Shifts dst right, duplicating sign bit, by cl % 64 bits.
|
| + void sarl(Register dst) {
|
| + shift_32(dst, 0x7);
|
| + }
|
| +
|
| void shl(Register dst, Immediate shift_amount) {
|
| shift(dst, shift_amount, 0x4);
|
| }
|
| @@ -1123,6 +1134,7 @@ class Assembler : public Malloced {
|
| Immediate src);
|
| // Emit machine code for a shift operation.
|
| void shift(Register dst, Immediate shift_amount, int subcode);
|
| + void shift_32(Register dst, Immediate shift_amount, int subcode);
|
| // Shift dst by cl % 64 bits.
|
| void shift(Register dst, int subcode);
|
| void shift_32(Register dst, int subcode);
|
|
|