From 7e3578728edec27301b71f5ab5d7b43874ae35a2 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Fri, 18 Oct 2013 17:02:57 +0200 Subject: V4 IR: reverse propagate int32 truncation. Change-Id: I5cb0c7798d0e530f3137710bf0e723bd7b64dc89 Reviewed-by: Simon Hausmann --- src/3rdparty/masm/assembler/MacroAssemblerARMv7.h | 10 ++++++++++ .../masm/assembler/MacroAssemblerX86Common.h | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+) (limited to 'src/3rdparty') diff --git a/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h b/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h index 61c13acd35..9a8dc1f358 100644 --- a/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h +++ b/src/3rdparty/masm/assembler/MacroAssemblerARMv7.h @@ -177,6 +177,11 @@ public: } } + void add32(RegisterID op1, RegisterID op2, RegisterID dest) + { + m_assembler.add(dest, op1, op2); + } + void add32(TrustedImm32 imm, Address address) { load32(address, dataTempRegister); @@ -310,6 +315,11 @@ public: m_assembler.smull(dest, dataTempRegister, src, dataTempRegister); } + void mul32(RegisterID op1, RegisterID op2, RegisterID dest) + { + m_assembler.smull(dest, dataTempRegister, op1, op2); + } + void neg32(RegisterID srcDest) { m_assembler.neg(srcDest, srcDest); diff --git a/src/3rdparty/masm/assembler/MacroAssemblerX86Common.h b/src/3rdparty/masm/assembler/MacroAssemblerX86Common.h index 520cf915fa..94771be6a7 100644 --- a/src/3rdparty/masm/assembler/MacroAssemblerX86Common.h +++ b/src/3rdparty/masm/assembler/MacroAssemblerX86Common.h @@ -146,6 +146,16 @@ public: m_assembler.andl_rr(src, dest); } + void add32(RegisterID op1, RegisterID op2, RegisterID dest) + { + if (op2 == dest) { + add32(op1, dest); + } else { + move(op1, dest); + add32(op2, dest); + } + } + void and32(TrustedImm32 imm, RegisterID dest) { m_assembler.andl_ir(imm.m_value, dest); @@ -226,6 +236,16 @@ public: m_assembler.imull_rr(src, dest); } + void mul32(RegisterID op1, RegisterID op2, RegisterID dest) + { + if (op2 == dest) { + mul32(op1, dest); + } else { + move(op1, dest); + mul32(op2, dest); + } + } + void mul32(Address src, RegisterID dest) { m_assembler.imull_mr(src.offset, src.base, dest); -- cgit v1.2.3