diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-07-24 16:45:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-07-30 17:25:12 +0200 |
commit | d68fd71136c58488e620fd8da8f532f1f4bd2ed5 (patch) | |
tree | ea1a7c312012ef224c5f980ea036a8808f1f1917 /src/3rdparty/masm/assembler/MacroAssemblerX86.h | |
parent | c7068dbacb4b0f063baec0c02b99fc46b15b9c8e (diff) |
Added convertUInt32ToDouble for X86(_64)
Change-Id: Ie6c918730d0ece0e9e63254ae97c257ee013f2f4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/3rdparty/masm/assembler/MacroAssemblerX86.h')
-rw-r--r-- | src/3rdparty/masm/assembler/MacroAssemblerX86.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/3rdparty/masm/assembler/MacroAssemblerX86.h b/src/3rdparty/masm/assembler/MacroAssemblerX86.h index 27a030edfd..471bf173f5 100644 --- a/src/3rdparty/masm/assembler/MacroAssemblerX86.h +++ b/src/3rdparty/masm/assembler/MacroAssemblerX86.h @@ -123,6 +123,19 @@ public: m_assembler.cvtsi2sd_mr(src.m_ptr, dest); } +#if 0 // FIXME: UNTESTED! + void convertUInt32ToDouble(RegisterID src, FPRegisterID dest, FPRegisterID scratch) + { + // compare this with what the Clang compiler with -O3 generates for: + // double f(unsigned u) { return (double) u; } + static const double magic = 4.503600e+15; // 0x4330000000000000 + m_assembler.loadDouble(&magic, scratch); + m_assembler.movd_rr(src, dst); + m_assembler.orpd_rr(scratch, dest); + m_assembler.subsd(scratch, dest); + } +#endif + void store32(TrustedImm32 imm, void* address) { m_assembler.movl_i32m(imm.m_value, address); |