| Index: src/x64/assembler-x64.cc
|
| ===================================================================
|
| --- src/x64/assembler-x64.cc (revision 2261)
|
| +++ src/x64/assembler-x64.cc (working copy)
|
| @@ -504,18 +504,34 @@
|
|
|
|
|
| void Assembler::immediate_arithmetic_op_8(byte subcode,
|
| - const Operand& dst,
|
| - Immediate src) {
|
| + const Operand& dst,
|
| + Immediate src) {
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
| emit_optional_rex_32(dst);
|
| - ASSERT(is_int8(src.value_));
|
| + ASSERT(is_int8(src.value_) || is_uint8(src.value_));
|
| emit(0x80);
|
| emit_operand(subcode, dst);
|
| emit(src.value_);
|
| }
|
|
|
|
|
| +void Assembler::immediate_arithmetic_op_8(byte subcode,
|
| + Register dst,
|
| + Immediate src) {
|
| + EnsureSpace ensure_space(this);
|
| + last_pc_ = pc_;
|
| + if (dst.code() > 3) {
|
| + // Use 64-bit mode byte registers.
|
| + emit_rex_64(dst);
|
| + }
|
| + ASSERT(is_int8(src.value_) || is_uint8(src.value_));
|
| + emit(0x80);
|
| + emit_modrm(subcode, dst);
|
| + emit(src.value_);
|
| +}
|
| +
|
| +
|
| void Assembler::shift(Register dst, Immediate shift_amount, int subcode) {
|
| EnsureSpace ensure_space(this);
|
| last_pc_ = pc_;
|
|
|