From fdaf0e99799116b664c990bfa59914e1b1f57f78 Mon Sep 17 00:00:00 2001 From: Gregory Hainaut Date: Sat, 16 Jan 2016 22:16:33 +0100 Subject: [PATCH] x86emitter:group: uses base type Add 64 bits support for free ;) Note: 64b still requires the REX prefix --- common/include/x86emitter/implement/group1.h | 16 ++++------------ common/src/x86emitter/groups.cpp | 4 +--- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/common/include/x86emitter/implement/group1.h b/common/include/x86emitter/implement/group1.h index e5a2ad6dbe..1d749b21b9 100644 --- a/common/include/x86emitter/implement/group1.h +++ b/common/include/x86emitter/implement/group1.h @@ -38,9 +38,7 @@ struct xImpl_Group1 { G1Type InstType; - void operator()( const xRegister8& to, const xRegister8& from ) const; - void operator()( const xRegister16& to, const xRegister16& from ) const; - void operator()( const xRegister32& to, const xRegister32& from ) const; + void operator()( const xRegisterInt& to, const xRegisterInt& from ) const; void operator()( const xIndirectVoid& to, const xRegisterInt& from ) const; void operator()( const xRegisterInt& to, const xIndirectVoid& from ) const; @@ -91,9 +89,7 @@ struct xImpl_G1Logic { G1Type InstType; - void operator()( const xRegister8& to, const xRegister8& from ) const; - void operator()( const xRegister16& to, const xRegister16& from ) const; - void operator()( const xRegister32& to, const xRegister32& from ) const; + void operator()( const xRegisterInt& to, const xRegisterInt& from ) const; void operator()( const xIndirectVoid& to, const xRegisterInt& from ) const; void operator()( const xRegisterInt& to, const xIndirectVoid& from ) const; @@ -112,9 +108,7 @@ struct xImpl_G1Arith { G1Type InstType; - void operator()( const xRegister8& to, const xRegister8& from ) const; - void operator()( const xRegister16& to, const xRegister16& from ) const; - void operator()( const xRegister32& to, const xRegister32& from ) const; + void operator()( const xRegisterInt& to, const xRegisterInt& from ) const; void operator()( const xIndirectVoid& to, const xRegisterInt& from ) const; void operator()( const xRegisterInt& to, const xIndirectVoid& from ) const; @@ -131,9 +125,7 @@ struct xImpl_G1Arith // ------------------------------------------------------------------------ struct xImpl_G1Compare { - void operator()( const xRegister8& to, const xRegister8& from ) const; - void operator()( const xRegister16& to, const xRegister16& from ) const; - void operator()( const xRegister32& to, const xRegister32& from ) const; + void operator()( const xRegisterInt& to, const xRegisterInt& from ) const; void operator()( const xIndirectVoid& to, const xRegisterInt& from ) const; void operator()( const xRegisterInt& to, const xIndirectVoid& from ) const; diff --git a/common/src/x86emitter/groups.cpp b/common/src/x86emitter/groups.cpp index 4bb9772b25..0517525c70 100644 --- a/common/src/x86emitter/groups.cpp +++ b/common/src/x86emitter/groups.cpp @@ -106,9 +106,7 @@ static void _g1_EmitOp( G1Type InstType, const xRegisterInt& to, int imm ) } #define ImplementGroup1( g1type, insttype ) \ - void g1type::operator()( const xRegister8& to, const xRegister8& from ) const { _g1_EmitOp( insttype, to, from ); } \ - void g1type::operator()( const xRegister16& to, const xRegister16& from ) const { _g1_EmitOp( insttype, to, from ); } \ - void g1type::operator()( const xRegister32& to, const xRegister32& from ) const { _g1_EmitOp( insttype, to, from ); } \ + void g1type::operator()( const xRegisterInt& to, const xRegisterInt& from ) const { _g1_EmitOp( insttype, to, from ); } \ void g1type::operator()( const xIndirectVoid& to, const xRegisterInt& from ) const { _g1_EmitOp( insttype, to, from ); } \ void g1type::operator()( const xRegisterInt& to, const xIndirectVoid& from ) const { _g1_EmitOp( insttype, to, from ); } \ void g1type::operator()( const xRegisterInt& to, int imm ) const { _g1_EmitOp( insttype, to, imm ); } \