diff options
Diffstat (limited to 'src/3rdparty/masm/assembler/MacroAssemblerX86_64.h')
-rw-r--r-- | src/3rdparty/masm/assembler/MacroAssemblerX86_64.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/3rdparty/masm/assembler/MacroAssemblerX86_64.h b/src/3rdparty/masm/assembler/MacroAssemblerX86_64.h index 002caaae78..f4349e1f93 100644 --- a/src/3rdparty/masm/assembler/MacroAssemblerX86_64.h +++ b/src/3rdparty/masm/assembler/MacroAssemblerX86_64.h @@ -243,6 +243,26 @@ public: add64(imm, Address(scratchRegister)); } + void x86Lea64(BaseIndex index, RegisterID dest) + { + if (!index.scale && !index.offset) { + if (index.base == dest) { + add64(index.index, dest); + return; + } + if (index.index == dest) { + add64(index.base, dest); + return; + } + } + m_assembler.leaq_mr(index.offset, index.base, index.index, index.scale, dest); + } + + void getEffectiveAddress(BaseIndex address, RegisterID dest) + { + return x86Lea64(address, dest); + } + void and64(RegisterID src, RegisterID dest) { m_assembler.andq_rr(src, dest); |