1.0.38.6: Clear higher order bits for SSE operations that don't
authorPaul Khuong <pvk@pvk.ca>
Thu, 6 May 2010 13:49:24 +0000 (13:49 +0000)
committerPaul Khuong <pvk@pvk.ca>
Thu, 6 May 2010 13:49:24 +0000 (13:49 +0000)
commitf16e93459cd73b1884e3d576c95e422f8e8a000e
tree25726ef02683bfcdcaec06c5541f4314a797e71e
parent94023958a1013881e38745f443240f905c1b4a0b
1.0.38.6: Clear higher order bits for SSE operations that don't

 * SQRTSD, CVT{SS,SD}2{SS,SD} and CVTSI2{SS,SD} leave the high-order
   bits of the result as-is. These are the only (hopefully) operations
   we use that have a single input, so we must explicitly clear out
   the destination register.

 * Probably a performance fix too, as it breaks dependency chains on
   the destination register.

 * The bug was relatively hard to observe. Raymond Toy reported seeing
   and fixing something similar on maxima/CMUCL. Brittle test case
   added.
NEWS
src/compiler/x86-64/float.lisp
tests/float.pure.lisp
version.lisp-expr