aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit/qv4assembler_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2017-01-17 16:06:57 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2017-01-31 13:40:03 +0000
commit5e2db52aac1e3c511e1af815ef24775295668d73 (patch)
treefc44bcd9331dae29dd17c4c93935ed368f1e3f90 /src/qml/jit/qv4assembler_p.h
parenta92950743f6589ccdce02ec65c0d6e626ccee211 (diff)
Replace more storeDouble 64/32-bit #ifdef variation with templates
Change-Id: I56159645dd896eff0874129db6c0d53241ad901e Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jit/qv4assembler_p.h')
-rw-r--r--src/qml/jit/qv4assembler_p.h28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/qml/jit/qv4assembler_p.h b/src/qml/jit/qv4assembler_p.h
index ad30955df4..6dc176b82e 100644
--- a/src/qml/jit/qv4assembler_p.h
+++ b/src/qml/jit/qv4assembler_p.h
@@ -139,6 +139,12 @@ struct RegisterSizeDependentAssembler<JITAssembler, MacroAssembler, TargetPlatfo
as->MacroAssembler::storeDouble(source, addr);
}
+ static void storeDouble(JITAssembler *as, FPRegisterID source, IR::Expr* target)
+ {
+ Pointer ptr = as->loadAddress(TargetPlatform::ScratchRegister, target);
+ as->storeDouble(source, ptr);
+ }
+
static void storeReturnValue(JITAssembler *as, FPRegisterID dest)
{
as->moveIntsToDouble(TargetPlatform::LowReturnValueRegister, TargetPlatform::HighReturnValueRegister, dest, TargetPlatform::FPGpr0);
@@ -194,6 +200,15 @@ struct RegisterSizeDependentAssembler<JITAssembler, MacroAssembler, TargetPlatfo
as->store64(TargetPlatform::ReturnValueRegister, addr);
}
+ static void storeDouble(JITAssembler *as, FPRegisterID source, IR::Expr* target)
+ {
+ as->moveDoubleTo64(source, TargetPlatform::ReturnValueRegister);
+ as->move(TrustedImm64(QV4::Value::NaNEncodeMask), TargetPlatform::ScratchRegister);
+ as->xor64(TargetPlatform::ScratchRegister, TargetPlatform::ReturnValueRegister);
+ Pointer ptr = as->loadAddress(TargetPlatform::ScratchRegister, target);
+ as->store64(TargetPlatform::ReturnValueRegister, ptr);
+ }
+
static void storeReturnValue(JITAssembler *as, FPRegisterID dest)
{
as->move(TrustedImm64(QV4::Value::NaNEncodeMask), TargetPlatform::ScratchRegister);
@@ -250,9 +265,7 @@ public:
using MacroAssembler::move;
using MacroAssembler::jump;
#ifdef QV4_USE_64_BIT_VALUE_ENCODING
- using MacroAssembler::moveDoubleTo64;
using MacroAssembler::move64ToDouble;
- using MacroAssembler::xor64;
using MacroAssembler::store64;
using MacroAssembler::load64;
#endif
@@ -804,16 +817,7 @@ public:
moveDouble(source, (FPRegisterID) targetTemp->index);
return;
}
-#ifdef QV4_USE_64_BIT_VALUE_ENCODING
- moveDoubleTo64(source, ReturnValueRegister);
- move(TrustedImm64(QV4::Value::NaNEncodeMask), ScratchRegister);
- xor64(ScratchRegister, ReturnValueRegister);
- Pointer ptr = loadAddress(ScratchRegister, target);
- store64(ReturnValueRegister, ptr);
-#else
- Pointer ptr = loadAddress(ScratchRegister, target);
- storeDouble(source, ptr);
-#endif
+ RegisterSizeDependentOps::storeDouble(this, source, target);
}
void loadDouble(Address addr, FPRegisterID dest)