/[pcsx2_0.9.7]/trunk/common/include/x86emitter/implement/dwshift.h
ViewVC logotype

Annotation of /trunk/common/include/x86emitter/implement/dwshift.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations) (download)
Tue Sep 7 03:24:11 2010 UTC (9 years, 10 months ago) by william
File MIME type: text/plain
File size: 2009 byte(s)
committing r3113 initial commit again...
1 william 31 /* PCSX2 - PS2 Emulator for PCs
2     * Copyright (C) 2002-2010 PCSX2 Dev Team
3     *
4     * PCSX2 is free software: you can redistribute it and/or modify it under the terms
5     * of the GNU Lesser General Public License as published by the Free Software Found-
6     * ation, either version 3 of the License, or (at your option) any later version.
7     *
8     * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
9     * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
10     * PURPOSE. See the GNU General Public License for more details.
11     *
12     * You should have received a copy of the GNU General Public License along with PCSX2.
13     * If not, see <http://www.gnu.org/licenses/>.
14     */
15    
16     #pragma once
17    
18     namespace x86Emitter {
19    
20     // Implementations here cover SHLD and SHRD.
21    
22     // --------------------------------------------------------------------------------------
23     // xImpl_DowrdShift
24     // --------------------------------------------------------------------------------------
25     // I use explicit method declarations here instead of templates, in order to provide
26     // *only* 32 and 16 bit register operand forms (8 bit registers are not valid in SHLD/SHRD).
27     //
28     // Optimization Note: Imm shifts by 0 are ignore (no code generated). This is a safe optimization
29     // because shifts by 0 do *not* affect flags status (intel docs cited).
30     //
31     struct xImpl_DwordShift
32     {
33     u16 OpcodeBase;
34    
35     void operator()( const xRegister32& to, const xRegister32& from, const xRegisterCL& clreg ) const;
36     void operator()( const xRegister16& to, const xRegister16& from, const xRegisterCL& clreg ) const;
37     void operator()( const xRegister32& to, const xRegister32& from, u8 shiftcnt ) const;
38     void operator()( const xRegister16& to, const xRegister16& from, u8 shiftcnt ) const;
39    
40     void operator()( const ModSibBase& dest,const xRegister16or32& from, const xRegisterCL& clreg ) const;
41     void operator()( const ModSibBase& dest,const xRegister16or32& from, u8 shiftcnt ) const;
42     };
43    
44     } // End namespace x86Emitter

  ViewVC Help
Powered by ViewVC 1.1.22