diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-10-01 14:53:05 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-03 07:07:14 +0200 |
commit | b5198ce221c67c9772b3a205fd3823a9c516a9ec (patch) | |
tree | d37deb8eff65bdcccc693ecf515577d4e265f223 /src/3rdparty/masm/assembler | |
parent | f4b38392898dfac6be8fa6a7874138a5eb49a32c (diff) |
V4 JIT: implement convertUInt32ToDouble on ARMv7.
Change-Id: I11caf07a8776bb2c6527639f22d47103f4ca1cef
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/3rdparty/masm/assembler')
-rw-r--r-- | src/3rdparty/masm/assembler/ARMv7Assembler.h | 6 | ||||
-rw-r--r-- | src/3rdparty/masm/assembler/MacroAssemblerARMv7.h | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/3rdparty/masm/assembler/ARMv7Assembler.h b/src/3rdparty/masm/assembler/ARMv7Assembler.h index 3a0a435ab9..236d55883d 100644 --- a/src/3rdparty/masm/assembler/ARMv7Assembler.h +++ b/src/3rdparty/masm/assembler/ARMv7Assembler.h @@ -1795,6 +1795,12 @@ public: m_formatter.vfpOp(OP_VCVT_FPIVFP, OP_VCVT_FPIVFPb, true, vcvtOp(true, false, true), rd, rm); } + void vcvt_unsignedToFloatingPoint(FPDoubleRegisterID rd, FPSingleRegisterID rm) + { + // boolean values are 64bit (toInt, unsigned, roundZero) + m_formatter.vfpOp(OP_VCVT_FPIVFP, OP_VCVT_FPIVFPb, true, vcvtOp(false, true, false), rd, rm); + } + void vcvt_floatingPointToUnsigned(FPSingleRegisterID rd, FPDoubleRegisterID rm) { // boolean values are 64bit (toInt, unsigned, roundZero) diff --git a/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h b/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h index 0c5a5fb3ce..61c13acd35 100644 --- a/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h +++ b/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h @@ -1015,6 +1015,12 @@ public: m_assembler.vmov(fpTempRegister, dataTempRegister, dataTempRegister); m_assembler.vcvt_signedToFloatingPoint(dest, fpTempRegisterAsSingle()); } + + void convertUInt32ToDouble(RegisterID src, FPRegisterID dest, RegisterID /*scratch*/) + { + m_assembler.vmov(fpTempRegister, src, src); + m_assembler.vcvt_unsignedToFloatingPoint(dest, fpTempRegisterAsSingle()); + } void convertFloatToDouble(FPRegisterID src, FPRegisterID dst) { |