From 0bdf1d8e82843cfcf5e2f2b1b7834278e3f62b2e Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Mon, 30 Nov 2009 22:02:26 -0700 Subject: [PATCH] use thunks for floating point ops if SSE is not available --- src/x86.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/x86.cpp b/src/x86.cpp index 8ca7b9d614..b8290389e4 100644 --- a/src/x86.cpp +++ b/src/x86.cpp @@ -2919,9 +2919,13 @@ class MyArchitecture: public Assembler::Architecture { break; case FloatAbsolute: - *aTypeMask = (1 << RegisterOperand); - *aRegisterMask = (static_cast(FloatRegisterMask) << 32) - | FloatRegisterMask; + if (useSSE(&c)) { + *aTypeMask = (1 << RegisterOperand); + *aRegisterMask = (static_cast(FloatRegisterMask) << 32) + | FloatRegisterMask; + } else { + *thunk = true; + } break; case FloatNegate: @@ -2935,9 +2939,13 @@ class MyArchitecture: public Assembler::Architecture { break; case FloatSquareRoot: - *aTypeMask = (1 << RegisterOperand) | (1 << MemoryOperand); - *aRegisterMask = (static_cast(FloatRegisterMask) << 32) - | FloatRegisterMask; + if (useSSE(&c)) { + *aTypeMask = (1 << RegisterOperand) | (1 << MemoryOperand); + *aRegisterMask = (static_cast(FloatRegisterMask) << 32) + | FloatRegisterMask; + } else { + *thunk = true; + } break; case Float2Float: