diff options
author | Erik Verbruggen <erik.verbruggen@me.com> | 2013-10-18 17:02:57 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-12-04 16:42:46 +0100 |
commit | 7e3578728edec27301b71f5ab5d7b43874ae35a2 (patch) | |
tree | 25b66bfd38acd67a2ad032699edf9d00864c50c3 /src/3rdparty/masm/assembler/MacroAssemblerX86Common.h | |
parent | 102f57376f5d1ace2e9a3e0ffa829a1bbc0d002c (diff) |
V4 IR: reverse propagate int32 truncation.
Change-Id: I5cb0c7798d0e530f3137710bf0e723bd7b64dc89
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/3rdparty/masm/assembler/MacroAssemblerX86Common.h')
-rw-r--r-- | src/3rdparty/masm/assembler/MacroAssemblerX86Common.h | 20 |
1 files changed, 20 insertions, 0 deletions
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); |