From 1b84f179cd3fb4f6f49d4c7f2145299b2b3b734a Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 24 Sep 2009 04:07:15 -0500 Subject: [PATCH] cpu.x86: don't generate SSE2 instructions if only SSE1 is available --- basis/cpu/x86/x86.factor | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/basis/cpu/x86/x86.factor b/basis/cpu/x86/x86.factor index 07234ff83c..8585dfa697 100644 --- a/basis/cpu/x86/x86.factor +++ b/basis/cpu/x86/x86.factor @@ -265,8 +265,9 @@ M: x86 %broadcast-vector ( dst src rep -- ) M: x86 %broadcast-vector-reps { - { sse? { float-4-rep } } - { sse2? { double-2-rep } } + ! Can't do this with sse1 since it will want to unbox + ! a double-precision float and convert to single precision + { sse2? { float-4-rep double-2-rep } } } available-reps ; M:: x86 %gather-vector-4 ( dst src1 src2 src3 src4 rep -- ) @@ -284,7 +285,9 @@ M:: x86 %gather-vector-4 ( dst src1 src2 src3 src4 rep -- ) M: x86 %gather-vector-4-reps { - { sse? { float-4-rep } } + ! Can't do this with sse1 since it will want to unbox + ! double-precision floats and convert to single precision + { sse2? { float-4-rep } } } available-reps ; M:: x86 %gather-vector-2 ( dst src1 src2 rep -- )