LGTM, if the disassembly is tested in the relevant cctest.
http://codereview.chromium.org/6049008/diff/3001/src/ia32/assembler-ia32.h File src/ia32/assembler-ia32.h (right): http://codereview.chromium.org/6049008/diff/3001/src/ia32/assembler-ia32.h#newcode929 src/ia32/assembler-ia32.h:929: void punpckldq(XMMRegister dst, XMMRegister src); Seems like not all these ended up being needed. We normally don't add them unless we use them somewhere. http://codereview.chromium.org/6049008/diff/3001/src/ia32/lithium-codegen-ia32.cc File src/ia32/lithium-codegen-ia32.cc (right): http://codereview.chromium.org/6049008/diff/3001/src/ia32/lithium-codegen-ia32.cc#newcode2247 src/ia32/lithium-codegen-ia32.cc:2247: ExternalReference one_half = ExternalReference::address_of_one_half(); Here's how to load a constant into an XMM register. http://codereview.chromium.org/6049008/diff/3001/src/ia32/lithium-codegen-ia32.cc#newcode2904 src/ia32/lithium-codegen-ia32.cc:2904: __ psllq(xmm_scratch, kDoubleSize * kBitsPerByte - 1); It might be faster to load xmm_scratch using the technique above? http://codereview.chromium.org/6049008/diff/3001/src/ia32/lithium-codegen-ia32.cc#newcode2925 src/ia32/lithium-codegen-ia32.cc:2925: // Don't handle big (or special) exponents. Could you add a comment describing the range handled? http://codereview.chromium.org/6049008/diff/3001/src/ia32/lithium-codegen-ia32.cc#newcode2938 src/ia32/lithium-codegen-ia32.cc:2938: __ sub(result_reg, Operand(temp_reg)); ooh, nice! http://codereview.chromium.org/6049008/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
