Commit 0a774c9c authored by whesse@chromium.org's avatar whesse@chromium.org

X64: Use low bits of registers in emit_sse_operand. Enable --stop-at flag.

Review URL: http://codereview.chromium.org/155052

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 9dd35ee2
......@@ -2022,11 +2022,11 @@ void Assembler::emit_sse_operand(XMMRegister reg, const Operand& adr) {
void Assembler::emit_sse_operand(XMMRegister dst, XMMRegister src) {
emit(0xC0 | (dst.code() << 3) | src.code());
emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
}
void Assembler::emit_sse_operand(XMMRegister dst, Register src) {
emit(0xC0 | (dst.code() << 3) | src.code());
emit(0xC0 | (dst.low_bits() << 3) | src.low_bits());
}
......
......@@ -160,6 +160,17 @@ struct XMMRegister {
return code_;
}
// Return the high bit of the register code as a 0 or 1. Used often
// when constructing the REX prefix byte.
int high_bit() const {
return code_ >> 3;
}
// Return the 3 low bits of the register code. Used when encoding registers
// in modR/M, SIB, and opcode bytes.
int low_bits() const {
return code_ & 0x7;
}
int code_;
};
......
......@@ -154,8 +154,7 @@ void CodeGenerator::GenCode(FunctionLiteral* function) {
#ifdef DEBUG
if (strlen(FLAG_stop_at) > 0 &&
// fun->name()->IsEqualTo(CStrVector(FLAG_stop_at))) {
false) {
function->name()->IsEqualTo(CStrVector(FLAG_stop_at))) {
frame_->SpillAll();
__ int3();
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment