Annotation of hatari/src/cpu/jit/codegen_x86.h, revision 1.1

1.1     ! root        1: /******************** -*- mode: C; tab-width: 8 -*- ********************
        !             2:  *
        !             3:  *     Run-time assembler for IA-32 and AMD64
        !             4:  *
        !             5:  ***********************************************************************/
        !             6: 
        !             7: 
        !             8: /***********************************************************************
        !             9:  *
        !            10:  *  This file is derived from CCG.
        !            11:  *
        !            12:  *  Copyright 1999, 2000, 2001, 2002, 2003 Ian Piumarta
        !            13:  *
        !            14:  *  Adaptations and enhancements for AMD64 support, Copyright 2003-2008
        !            15:  *    Gwenole Beauchesne
        !            16:  *
        !            17:  *  Basilisk II (C) 1997-2008 Christian Bauer
        !            18:  *  
        !            19:  *  This program is free software; you can redistribute it and/or modify
        !            20:  *  it under the terms of the GNU General Public License as published by
        !            21:  *  the Free Software Foundation; either version 2 of the License, or
        !            22:  *  (at your option) any later version.
        !            23:  *
        !            24:  *  This program is distributed in the hope that it will be useful,
        !            25:  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            26:  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            27:  *  GNU General Public License for more details.
        !            28:  *
        !            29:  *  You should have received a copy of the GNU General Public License
        !            30:  *  along with this program; if not, write to the Free Software
        !            31:  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        !            32:  *
        !            33:  ***********************************************************************/
        !            34: 
        !            35: #ifndef X86_RTASM_H
        !            36: #define X86_RTASM_H
        !            37: 
        !            38: /* NOTES
        !            39:  *
        !            40:  *     o Best viewed on a 1024x768 screen with fixed-6x10 font ;-)
        !            41:  *
        !            42:  * TODO
        !            43:  *
        !            44:  *     o Fix FIXMEs
        !            45:  *     o i387 FPU instructions
        !            46:  *     o SSE instructions
        !            47:  *     o Optimize for cases where register numbers are not integral constants
        !            48:  */
        !            49: 
        !            50: /* --- Configuration ------------------------------------------------------- */
        !            51: 
        !            52: /* Define to settle a "flat" register set, i.e. different regno for
        !            53:    each size variant.  */
        !            54: #ifndef X86_FLAT_REGISTERS
        !            55: #define X86_FLAT_REGISTERS     1
        !            56: #endif
        !            57: 
        !            58: /* Define to generate x86-64 code.  */
        !            59: #ifndef X86_TARGET_64BIT
        !            60: #define X86_TARGET_64BIT       0
        !            61: #endif
        !            62: 
        !            63: /* Define to optimize ALU instructions.  */
        !            64: #ifndef X86_OPTIMIZE_ALU
        !            65: #define X86_OPTIMIZE_ALU       1
        !            66: #endif
        !            67: 
        !            68: /* Define to optimize rotate/shift instructions.  */
        !            69: #ifndef X86_OPTIMIZE_ROTSHI
        !            70: #define X86_OPTIMIZE_ROTSHI    1
        !            71: #endif
        !            72: 
        !            73: /* Define to optimize absolute addresses for RIP relative addressing.  */
        !            74: #ifndef X86_RIP_RELATIVE_ADDR
        !            75: #define X86_RIP_RELATIVE_ADDR  1
        !            76: #endif 
        !            77: 
        !            78: 
        !            79: /* --- Macros -------------------------------------------------------------- */
        !            80: 
        !            81: /* Functions used to emit code.
        !            82:  *
        !            83:  *     x86_emit_byte(B)
        !            84:  *     x86_emit_word(W)
        !            85:  *     x86_emit_long(L)
        !            86:  */
        !            87: 
        !            88: /* Get pointer to current code
        !            89:  *
        !            90:  *     x86_get_target()
        !            91:  */
        !            92: 
        !            93: /* Abort assembler, fatal failure.
        !            94:  *
        !            95:  *     x86_emit_failure(MSG)
        !            96:  */
        !            97: 
        !            98: #define x86_emit_failure0(MSG) (x86_emit_failure(MSG),0)
        !            99: 
        !           100: 
        !           101: /* --- Register set -------------------------------------------------------- */
        !           102: 
        !           103: enum {
        !           104:   X86_RIP         = -2,
        !           105: #if X86_FLAT_REGISTERS
        !           106:   X86_NOREG       = 0,
        !           107:   X86_Reg8L_Base  = 0x10,
        !           108:   X86_Reg8H_Base  = 0x20,
        !           109:   X86_Reg16_Base  = 0x30,
        !           110:   X86_Reg32_Base  = 0x40,
        !           111:   X86_Reg64_Base  = 0x50,
        !           112:   X86_RegMMX_Base = 0x60,
        !           113:   X86_RegXMM_Base = 0x70,
        !           114: #else
        !           115:   X86_NOREG       = -1,
        !           116:   X86_Reg8L_Base  = 0,
        !           117:   X86_Reg8H_Base  = 16,
        !           118:   X86_Reg16_Base  = 0,
        !           119:   X86_Reg32_Base  = 0,
        !           120:   X86_Reg64_Base  = 0,
        !           121:   X86_RegMMX_Base = 0,
        !           122:   X86_RegXMM_Base = 0,
        !           123: #endif
        !           124: };
        !           125: 
        !           126: enum {
        !           127:   X86_AL  = X86_Reg8L_Base,
        !           128:   X86_CL,   X86_DL,   X86_BL,
        !           129:   X86_SPL,  X86_BPL,  X86_SIL,  X86_DIL,
        !           130:   X86_R8B,  X86_R9B,  X86_R10B, X86_R11B,
        !           131:   X86_R12B, X86_R13B, X86_R14B, X86_R15B,
        !           132:   X86_AH  = X86_Reg8H_Base + 4,
        !           133:   X86_CH,   X86_DH,   X86_BH
        !           134: };
        !           135: 
        !           136: enum {
        !           137:   X86_AX  = X86_Reg16_Base,
        !           138:   X86_CX,   X86_DX,   X86_BX,
        !           139:   X86_SP,   X86_BP,   X86_SI,   X86_DI,
        !           140:   X86_R8W,  X86_R9W,  X86_R10W, X86_R11W,
        !           141:   X86_R12W, X86_R13W, X86_R14W, X86_R15W
        !           142: };
        !           143: 
        !           144: enum {
        !           145:   X86_EAX = X86_Reg32_Base,
        !           146:   X86_ECX,  X86_EDX,  X86_EBX,
        !           147:   X86_ESP,  X86_EBP,  X86_ESI,  X86_EDI,
        !           148:   X86_R8D,  X86_R9D,  X86_R10D, X86_R11D,
        !           149:   X86_R12D, X86_R13D, X86_R14D, X86_R15D
        !           150: };
        !           151: 
        !           152: enum {
        !           153:   X86_RAX = X86_Reg64_Base,
        !           154:   X86_RCX,  X86_RDX,  X86_RBX,
        !           155:   X86_RSP,  X86_RBP,  X86_RSI,  X86_RDI,
        !           156:   X86_R8,   X86_R9,   X86_R10,  X86_R11,
        !           157:   X86_R12,  X86_R13,  X86_R14,  X86_R15
        !           158: };
        !           159: 
        !           160: enum {
        !           161:   X86_MM0 = X86_RegMMX_Base,
        !           162:   X86_MM1,  X86_MM2,  X86_MM3,
        !           163:   X86_MM4,  X86_MM5,  X86_MM6,  X86_MM7,
        !           164: };
        !           165: 
        !           166: enum {
        !           167:   X86_XMM0 = X86_RegXMM_Base,
        !           168:   X86_XMM1,  X86_XMM2,  X86_XMM3,
        !           169:   X86_XMM4,  X86_XMM5,  X86_XMM6,  X86_XMM7,
        !           170:   X86_XMM8,  X86_XMM9,  X86_XMM10, X86_XMM11,
        !           171:   X86_XMM12, X86_XMM13, X86_XMM14, X86_XMM15
        !           172: };
        !           173: 
        !           174: /* Register control and access
        !           175:  *
        !           176:  *     _r0P(R) Null register?
        !           177:  *     _rIP(R) RIP register?
        !           178:  *     _rXP(R) Extended register?
        !           179:  *
        !           180:  *     _rC(R)  Class of register (only valid if X86_FLAT_REGISTERS)
        !           181:  *     _rR(R)  Full register number
        !           182:  *     _rN(R)  Short register number for encoding
        !           183:  *
        !           184:  *     _r1(R)  8-bit register ID
        !           185:  *     _r2(R)  16-bit register ID
        !           186:  *     _r4(R)  32-bit register ID
        !           187:  *     _r8(R)  64-bit register ID
        !           188:  *     _rM(R)  MMX register ID
        !           189:  *     _rX(R)  XMM register ID
        !           190:  *     _rA(R)  Address register ID used for EA calculation
        !           191:  */
        !           192: 
        !           193: #define _r0P(R)                ((int)(R) == (int)X86_NOREG)
        !           194: #define _rIP(R)                (X86_TARGET_64BIT ? ((int)(R) == (int)X86_RIP) : 0)
        !           195: 
        !           196: #if X86_FLAT_REGISTERS
        !           197: #define _rC(R)         ((R) & 0xf0)
        !           198: #define _rR(R)         ((R) & 0x0f)
        !           199: #define _rN(R)         ((R) & 0x07)
        !           200: #define _rXP(R)                ((R) > 0 && _rR(R) > 7)
        !           201: #else
        !           202: #define _rN(R)         ((R) & 0x07)
        !           203: #define _rR(R)         (int(R))
        !           204: #define _rXP(R)                (_rR(R) > 7 && _rR(R) < 16)
        !           205: #endif
        !           206: 
        !           207: #if !defined(_ASM_SAFETY) || ! X86_FLAT_REGISTERS
        !           208: #define _r1(R)         _rN(R)
        !           209: #define _r2(R)         _rN(R)
        !           210: #define _r4(R)         _rN(R)
        !           211: #define _r8(R)         _rN(R)
        !           212: #define _rA(R)         _rN(R)
        !           213: #define _rM(R)         _rN(R)
        !           214: #define _rX(R)         _rN(R)
        !           215: #else
        !           216: #define _r1(R)         ( ((_rC(R) & (X86_Reg8L_Base | X86_Reg8H_Base)) != 0)   ? _rN(R) : x86_emit_failure0( "8-bit register required"))
        !           217: #define _r2(R)         ( (_rC(R) == X86_Reg16_Base)                            ? _rN(R) : x86_emit_failure0("16-bit register required"))
        !           218: #define _r4(R)         ( (_rC(R) == X86_Reg32_Base)                            ? _rN(R) : x86_emit_failure0("32-bit register required"))
        !           219: #define _r8(R)         ( (_rC(R) == X86_Reg64_Base)                            ? _rN(R) : x86_emit_failure0("64-bit register required"))
        !           220: #define _rA(R)         ( X86_TARGET_64BIT ? \
        !           221:                        ( (_rC(R) == X86_Reg64_Base)                            ? _rN(R) : x86_emit_failure0("not a valid 64-bit base/index expression")) : \
        !           222:                        ( (_rC(R) == X86_Reg32_Base)                            ? _rN(R) : x86_emit_failure0("not a valid 32-bit base/index expression")) )
        !           223: #define _rM(R)         ( (_rC(R) == X86_RegMMX_Base)                           ? _rN(R) : x86_emit_failure0("MMX register required"))
        !           224: #define _rX(R)         ( (_rC(R) == X86_RegXMM_Base)                           ? _rN(R) : x86_emit_failure0("SSE register required"))
        !           225: #endif
        !           226: 
        !           227: #define _rSP()         (X86_TARGET_64BIT ? (int)X86_RSP : (int)X86_ESP)
        !           228: #define _r1e8lP(R)     (int(R) >= X86_SPL && int(R) <= X86_DIL)
        !           229: #define _rbpP(R)       (_rR(R) == _rR(X86_RBP))
        !           230: #define _rspP(R)       (_rR(R) == _rR(X86_RSP))
        !           231: #define _rbp13P(R)     (_rN(R) == _rN(X86_RBP))
        !           232: #define _rsp12P(R)     (_rN(R) == _rN(X86_RSP))
        !           233: 
        !           234: 
        !           235: /* ========================================================================= */
        !           236: /* --- UTILITY ------------------------------------------------------------- */
        !           237: /* ========================================================================= */
        !           238: 
        !           239: typedef signed char    _sc;
        !           240: typedef unsigned char  _uc;
        !           241: typedef signed short   _ss;
        !           242: typedef unsigned short _us;
        !           243: typedef signed int     _sl;
        !           244: typedef unsigned int   _ul;
        !           245: 
        !           246: #define _UC(X)         ((_uc  )(unsigned long)(X))
        !           247: #define _US(X)         ((_us  )(unsigned long)(X))
        !           248: #define _SL(X)         ((_sl  )(unsigned long)(X))
        !           249: #define _UL(X)         ((_ul  )(unsigned long)(X))
        !           250: 
        !           251: #define _PUC(X)                ((_uc *)(X))
        !           252: #define _PUS(X)                ((_us *)(X))
        !           253: #define _PSL(X)                ((_sl *)(X))
        !           254: #define _PUL(X)                ((_ul *)(X))
        !           255: 
        !           256: #define _B(B)          x86_emit_byte((B))
        !           257: #define _W(W)          x86_emit_word((W))
        !           258: #define _L(L)          x86_emit_long((L))
        !           259: #define _Q(Q)          x86_emit_quad((Q))
        !           260: 
        !           261: #define _MASK(N)       ((unsigned)((1<<(N)))-1)
        !           262: #define _siP(N,I)      (!((((unsigned)(I))^(((unsigned)(I))<<1))&~_MASK(N)))
        !           263: #define _uiP(N,I)      (!(((unsigned)(I))&~_MASK(N)))
        !           264: #define _suiP(N,I)     (_siP(N,I) | _uiP(N,I))
        !           265: 
        !           266: #ifndef _ASM_SAFETY
        !           267: #define _ck_s(W,I)     (_UL(I) & _MASK(W))
        !           268: #define _ck_u(W,I)     (_UL(I) & _MASK(W))
        !           269: #define _ck_su(W,I)            (_UL(I) & _MASK(W))
        !           270: #define _ck_d(W,I)     (_UL(I) & _MASK(W))
        !           271: #else
        !           272: #define _ck_s(W,I)     (_siP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0(  "signed integer `"#I"' too large for "#W"-bit field"))
        !           273: #define _ck_u(W,I)     (_uiP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0("unsigned integer `"#I"' too large for "#W"-bit field"))
        !           274: #define _ck_su(W,I)            (_suiP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0(        "integer `"#I"' too large for "#W"-bit field"))
        !           275: #define _ck_d(W,I)     (_siP(W,I) ? (_UL(I) & _MASK(W)) : x86_emit_failure0(    "displacement `"#I"' too large for "#W"-bit field"))
        !           276: #endif
        !           277: 
        !           278: #define _s0P(I)                ((I)==0)
        !           279: #define _s8P(I)                _siP(8,I)
        !           280: #define _s16P(I)       _siP(16,I)
        !           281: #define _u8P(I)                _uiP(8,I)
        !           282: #define _u16P(I)       _uiP(16,I)
        !           283: 
        !           284: #define _su8(I)                _ck_su(8,I)
        !           285: #define _su16(I)       _ck_su(16,I)
        !           286: 
        !           287: #define _s1(I)          _ck_s( 1,I)
        !           288: #define _s2(I)          _ck_s( 2,I)
        !           289: #define _s3(I)          _ck_s( 3,I)
        !           290: #define _s4(I)          _ck_s( 4,I)
        !           291: #define _s5(I)          _ck_s( 5,I)
        !           292: #define _s6(I)          _ck_s( 6,I)
        !           293: #define _s7(I)          _ck_s( 7,I)
        !           294: #define _s8(I)          _ck_s( 8,I)
        !           295: #define _s9(I)          _ck_s( 9,I)
        !           296: #define _s10(I)         _ck_s(10,I)
        !           297: #define _s11(I)         _ck_s(11,I)
        !           298: #define _s12(I)         _ck_s(12,I)
        !           299: #define _s13(I)         _ck_s(13,I)
        !           300: #define _s14(I)         _ck_s(14,I)
        !           301: #define _s15(I)         _ck_s(15,I)
        !           302: #define _s16(I)         _ck_s(16,I)
        !           303: #define _s17(I)         _ck_s(17,I)
        !           304: #define _s18(I)         _ck_s(18,I)
        !           305: #define _s19(I)         _ck_s(19,I)
        !           306: #define _s20(I)         _ck_s(20,I)
        !           307: #define _s21(I)         _ck_s(21,I)
        !           308: #define _s22(I)         _ck_s(22,I)
        !           309: #define _s23(I)         _ck_s(23,I)
        !           310: #define _s24(I)         _ck_s(24,I)
        !           311: #define _s25(I)         _ck_s(25,I)
        !           312: #define _s26(I)         _ck_s(26,I)
        !           313: #define _s27(I)         _ck_s(27,I)
        !           314: #define _s28(I)         _ck_s(28,I)
        !           315: #define _s29(I)         _ck_s(29,I)
        !           316: #define _s30(I)         _ck_s(30,I)
        !           317: #define _s31(I)         _ck_s(31,I)
        !           318: #define _u1(I)          _ck_u( 1,I)
        !           319: #define _u2(I)          _ck_u( 2,I)
        !           320: #define _u3(I)          _ck_u( 3,I)
        !           321: #define _u4(I)          _ck_u( 4,I)
        !           322: #define _u5(I)          _ck_u( 5,I)
        !           323: #define _u6(I)          _ck_u( 6,I)
        !           324: #define _u7(I)          _ck_u( 7,I)
        !           325: #define _u8(I)          _ck_u( 8,I)
        !           326: #define _u9(I)          _ck_u( 9,I)
        !           327: #define _u10(I)         _ck_u(10,I)
        !           328: #define _u11(I)         _ck_u(11,I)
        !           329: #define _u12(I)         _ck_u(12,I)
        !           330: #define _u13(I)         _ck_u(13,I)
        !           331: #define _u14(I)         _ck_u(14,I)
        !           332: #define _u15(I)         _ck_u(15,I)
        !           333: #define _u16(I)         _ck_u(16,I)
        !           334: #define _u17(I)         _ck_u(17,I)
        !           335: #define _u18(I)         _ck_u(18,I)
        !           336: #define _u19(I)         _ck_u(19,I)
        !           337: #define _u20(I)         _ck_u(20,I)
        !           338: #define _u21(I)         _ck_u(21,I)
        !           339: #define _u22(I)         _ck_u(22,I)
        !           340: #define _u23(I)         _ck_u(23,I)
        !           341: #define _u24(I)         _ck_u(24,I)
        !           342: #define _u25(I)         _ck_u(25,I)
        !           343: #define _u26(I)         _ck_u(26,I)
        !           344: #define _u27(I)         _ck_u(27,I)
        !           345: #define _u28(I)         _ck_u(28,I)
        !           346: #define _u29(I)         _ck_u(29,I)
        !           347: #define _u30(I)         _ck_u(30,I)
        !           348: #define _u31(I)         _ck_u(31,I)
        !           349: 
        !           350: /* ========================================================================= */
        !           351: /* --- ASSEMBLER ----------------------------------------------------------- */
        !           352: /* ========================================================================= */
        !           353: 
        !           354: #define _b00           0
        !           355: #define _b01           1
        !           356: #define _b10           2
        !           357: #define _b11           3
        !           358: 
        !           359: #define _b000          0
        !           360: #define _b001          1
        !           361: #define _b010          2
        !           362: #define _b011          3
        !           363: #define _b100          4
        !           364: #define _b101          5
        !           365: #define _b110          6
        !           366: #define _b111          7
        !           367: 
        !           368: #define _OFF4(D)       (_UL(D) - _UL(x86_get_target()))
        !           369: #define _CKD8(D)       _ck_d(8, ((_uc) _OFF4(D)) )
        !           370: 
        !           371: #define _D8(D)         (_B(0), ((*(_PUC(x86_get_target())-1))= _CKD8(D)))
        !           372: #define _D32(D)                (_L(0), ((*(_PUL(x86_get_target())-1))= _OFF4(D)))
        !           373: 
        !           374: #ifndef _ASM_SAFETY
        !           375: # define _M(M)         (M)
        !           376: # define _r(R)         (R)
        !           377: # define _m(M)         (M)
        !           378: # define _s(S)         (S)
        !           379: # define _i(I)         (I)
        !           380: # define _b(B)         (B)
        !           381: #else
        !           382: # define _M(M)         (((M)>3) ? x86_emit_failure0("internal error: mod = " #M) : (M))
        !           383: # define _r(R)         (((R)>7) ? x86_emit_failure0("internal error: reg = " #R) : (R))
        !           384: # define _m(M)         (((M)>7) ? x86_emit_failure0("internal error: r/m = " #M) : (M))
        !           385: # define _s(S)         (((S)>3) ? x86_emit_failure0("internal error: memory scale = " #S) : (S))
        !           386: # define _i(I)         (((I)>7) ? x86_emit_failure0("internal error: memory index = " #I) : (I))
        !           387: # define _b(B)         (((B)>7) ? x86_emit_failure0("internal error: memory base = "  #B) : (B))
        !           388: #endif
        !           389: 
        !           390: #define _Mrm(Md,R,M)   _B((_M(Md)<<6)|(_r(R)<<3)|_m(M))
        !           391: #define _SIB(Sc,I, B)  _B((_s(Sc)<<6)|(_i(I)<<3)|_b(B))
        !           392: 
        !           393: #define _SCL(S)                ((((S)==1) ? _b00 : \
        !           394:                         (((S)==2) ? _b01 : \
        !           395:                         (((S)==4) ? _b10 : \
        !           396:                         (((S)==8) ? _b11 : x86_emit_failure0("illegal scale: " #S))))))
        !           397: 
        !           398: 
        !           399: /* --- Memory subformats - urgh! ------------------------------------------- */
        !           400: 
        !           401: /* _r_D() is RIP addressing mode if X86_TARGET_64BIT, use _r_DSIB() instead */
        !           402: #define _r_D(  R, D      )     (_Mrm(_b00,_rN(R),_b101 )                            ,_L((_sl)(D)))
        !           403: #define _r_DSIB(R, D      )    (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(1),_b100 ,_b101 ),_L((_sl)(D)))
        !           404: #define _r_0B( R,   B    )     (_Mrm(_b00,_rN(R),_rA(B))                                          )
        !           405: #define _r_0BIS(R,   B,I,S)    (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_rA(B))              )
        !           406: #define _r_1B( R, D,B    )     (_Mrm(_b01,_rN(R),_rA(B))                            ,_B((_sc)(D)))
        !           407: #define _r_1BIS(R, D,B,I,S)    (_Mrm(_b01,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_rA(B)),_B((_sc)(D)))
        !           408: #define _r_4B( R, D,B    )     (_Mrm(_b10,_rN(R),_rA(B))                            ,_L((_sl)(D)))
        !           409: #define _r_4IS( R, D,I,S)      (_Mrm(_b00,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_b101 ),_L((_sl)(D)))
        !           410: #define _r_4BIS(R, D,B,I,S)    (_Mrm(_b10,_rN(R),_b100 ),_SIB(_SCL(S),_rA(I),_rA(B)),_L((_sl)(D)))
        !           411: 
        !           412: #define _r_DB(  R, D,B    )    ((_s0P(D) && (!_rbp13P(B)) ? _r_0B  (R,  B    ) : (_s8P(D) ? _r_1B(  R,D,B    ) : _r_4B(  R,D,B    ))))
        !           413: #define _r_DBIS(R, D,B,I,S)    ((_s0P(D) && (!_rbp13P(B)) ? _r_0BIS(R,  B,I,S) : (_s8P(D) ? _r_1BIS(R,D,B,I,S) : _r_4BIS(R,D,B,I,S))))
        !           414: 
        !           415: /* Use RIP-addressing in 64-bit mode, if possible */
        !           416: #define _x86_RIP_addressing_possible(D,O)      (X86_RIP_RELATIVE_ADDR && \
        !           417:                                                ((uintptr)x86_get_target() + 4 + (O) - (D) <= 0xffffffff))
        !           418: 
        !           419: #define _r_X(   R, D,B,I,S,O)  (_r0P(I) ? (_r0P(B)    ? (!X86_TARGET_64BIT ? _r_D(R,D) : \
        !           420:                                                         (_x86_RIP_addressing_possible(D, O) ? \
        !           421:                                                          _r_D(R, (D) - ((uintptr)x86_get_target() + 4 + (O))) : \
        !           422:                                                          _r_DSIB(R,D))) : \
        !           423:                                           (_rIP(B)    ? _r_D   (R,D                )   : \
        !           424:                                           (_rsp12P(B) ? _r_DBIS(R,D,_rSP(),_rSP(),1)   : \
        !           425:                                                         _r_DB  (R,D,     B       ))))  : \
        !           426:                                 (_r0P(B)              ? _r_4IS (R,D,            I,S)   : \
        !           427:                                 (!_rspP(I)            ? _r_DBIS(R,D,     B,     I,S)   : \
        !           428:                                                         x86_emit_failure("illegal index register: %esp"))))
        !           429: 
        !           430: 
        !           431: /* --- Instruction formats ------------------------------------------------- */
        !           432: 
        !           433: #define _m32only(X)            (! X86_TARGET_64BIT ? X : x86_emit_failure("invalid instruction in 64-bit mode"))
        !           434: #define _m64only(X)            (  X86_TARGET_64BIT ? X : x86_emit_failure("invalid instruction in 32-bit mode"))
        !           435: #define _m64(X)                        (  X86_TARGET_64BIT ? X : ((void)0)                                             )
        !           436: 
        !           437: /*      _format                                                     Opcd         ModR/M dN(rB,rI,Sc)     imm... */
        !           438: 
        !           439: #define         _d16()                                    (              _B(0x66       )                                 )
        !           440: #define          _O(        OP                         )  (              _B(  OP       )                                 )
        !           441: #define          _Or(       OP,R                       )  (              _B( (OP)|_r(R))                                 )
        !           442: #define         _OO(        OP                         )  ( _B((OP)>>8), _B(( (OP)      )&0xff)                          )
        !           443: #define         _OOr(       OP,R                       )  ( _B((OP)>>8), _B(( (OP)|_r(R))&0xff)                          )
        !           444: #define          _Os(       OP,B                       )  (    _s8P(B) ? _B(((OP)|_b10)) : _B(OP)                        )
        !           445: #define            _sW(                             W  )  (                                   _s8P(W) ? _B(W):_W(W)      )
        !           446: #define            _sL(                             L  )  (                                   _s8P(L) ? _B(L):_L(L)      )
        !           447: #define            _sWO(                            W  )  (                                   _s8P(W) ?    1 :   2       )
        !           448: #define            _sLO(                            L  )  (                                   _s8P(L) ?    1 :   4       )
        !           449: #define          _O_B(      OP                     ,B  )  (        _O      (  OP  )                          ,_B(B)      )
        !           450: #define          _O_W(      OP                     ,W  )  (        _O      (  OP  )                          ,_W(W)      )
        !           451: #define          _O_L(      OP                     ,L  )  (        _O      (  OP  )                          ,_L(L)      )
        !           452: #define          _OO_L(     OP                     ,L  )  (       _OO      (  OP  )                          ,_L(L)      )
        !           453: #define          _O_D8(     OP                     ,D  )  (        _O      (  OP  )                         ,_D8(D)      )
        !           454: #define          _O_D32(     OP                    ,D  )  (        _O      (  OP  )                         ,_D32(D)     )
        !           455: #define         _OO_D32(     OP                    ,D  )  (       _OO      (  OP  )                         ,_D32(D)     )
        !           456: #define          _Os_sW(    OP                     ,W  )  (        _Os     (  OP,W)                         ,_sW(W)      )
        !           457: #define          _Os_sL(    OP                     ,L  )  (        _Os     (  OP,L)                         ,_sL(L)      )
        !           458: #define          _O_W_B(    OP                     ,W,B)  (        _O      (  OP  )                          ,_W(W),_B(B))
        !           459: #define          _Or_B(     OP,R                   ,B  )  (        _Or     (  OP,R)                          ,_B(B)      )
        !           460: #define          _Or_W(     OP,R                   ,W  )  (        _Or     (  OP,R)                          ,_W(W)      )
        !           461: #define          _Or_L(     OP,R                   ,L  )  (        _Or     (  OP,R)                          ,_L(L)      )
        !           462: #define          _Or_Q(     OP,R                   ,Q  )  (        _Or     (  OP,R)                          ,_Q(Q)      )
        !           463: #define          _O_Mrm(    OP  ,MO,R,M                )  (        _O      (  OP  ),_Mrm(MO,R,M            )             )
        !           464: #define         _OO_Mrm(    OP  ,MO,R,M                )  (       _OO      (  OP  ),_Mrm(MO,R,M            )             )
        !           465: #define          _O_Mrm_B(  OP  ,MO,R,M            ,B  )  (        _O      (  OP  ),_Mrm(MO,R,M            ) ,_B(B)      )
        !           466: #define          _O_Mrm_W(  OP  ,MO,R,M            ,W  )  (        _O      (  OP  ),_Mrm(MO,R,M            ) ,_W(W)      )
        !           467: #define          _O_Mrm_L(  OP  ,MO,R,M            ,L  )  (        _O      (  OP  ),_Mrm(MO,R,M            ) ,_L(L)      )
        !           468: #define         _OO_Mrm_B(  OP  ,MO,R,M            ,B  )  (       _OO      (  OP  ),_Mrm(MO,R,M            ) ,_B(B)      )
        !           469: #define          _Os_Mrm_sW(OP  ,MO,R,M            ,W  )  (        _Os     (  OP,W),_Mrm(MO,R,M            ),_sW(W)      )
        !           470: #define          _Os_Mrm_sL(OP  ,MO,R,M            ,L  )  (        _Os     (  OP,L),_Mrm(MO,R,M            ),_sL(L)      )
        !           471: #define          _O_r_X(    OP     ,R  ,MD,MB,MI,MS    )  (        _O      (  OP  ),_r_X(   R  ,MD,MB,MI,MS,0)           )
        !           472: #define         _OO_r_X(    OP     ,R  ,MD,MB,MI,MS    )  (       _OO      (  OP  ),_r_X(   R  ,MD,MB,MI,MS,0)           )
        !           473: #define          _O_r_X_B(  OP     ,R  ,MD,MB,MI,MS,B  )  (        _O      (  OP  ),_r_X(   R  ,MD,MB,MI,MS,1) ,_B(B)    )
        !           474: #define          _O_r_X_W(  OP     ,R  ,MD,MB,MI,MS,W  )  (        _O      (  OP  ),_r_X(   R  ,MD,MB,MI,MS,2) ,_W(W)    )
        !           475: #define          _O_r_X_L(  OP     ,R  ,MD,MB,MI,MS,L  )  (        _O      (  OP  ),_r_X(   R  ,MD,MB,MI,MS,4) ,_L(L)    )
        !           476: #define         _OO_r_X_B(  OP     ,R  ,MD,MB,MI,MS,B  )  (       _OO      (  OP  ),_r_X(   R  ,MD,MB,MI,MS,1) ,_B(B)    )
        !           477: #define          _Os_r_X_sW(OP     ,R  ,MD,MB,MI,MS,W  )  (        _Os     (  OP,W),_r_X(   R  ,MD,MB,MI,MS,_sWO(W)),_sW(W))
        !           478: #define          _Os_r_X_sL(OP     ,R  ,MD,MB,MI,MS,L  )  (        _Os     (  OP,L),_r_X(   R  ,MD,MB,MI,MS,_sLO(L)),_sL(L))
        !           479: #define          _O_X_B(    OP         ,MD,MB,MI,MS,B  )  (        _O_r_X_B(  OP           ,0  ,MD,MB,MI,MS     ,B)      )
        !           480: #define          _O_X_W(    OP         ,MD,MB,MI,MS,W  )  (        _O_r_X_W(  OP           ,0  ,MD,MB,MI,MS     ,W)      )
        !           481: #define          _O_X_L(    OP         ,MD,MB,MI,MS,L  )  (        _O_r_X_L(  OP           ,0  ,MD,MB,MI,MS     ,L)      )
        !           482: 
        !           483: 
        !           484: /* --- REX prefixes -------------------------------------------------------- */
        !           485: 
        !           486: #define _VOID()                        ((void)0)
        !           487: #define _BIT(X)                        (!!(X))
        !           488: #define _d64(W,R,X,B)          (_B(0x40|(W)<<3|(R)<<2|(X)<<1|(B)))
        !           489: 
        !           490: #define __REXwrxb(L,W,R,X,B)   ((W|R|X|B) || (L) ? _d64(W,R,X,B) : _VOID())
        !           491: #define __REXwrx_(L,W,R,X,MR)  (__REXwrxb(L,W,R,X,_BIT(_rIP(MR)?0:_rXP(MR))))
        !           492: #define __REXw_x_(L,W,R,X,MR)  (__REXwrx_(L,W,_BIT(_rXP(R)),X,MR))
        !           493: #define __REX_reg(RR)          (__REXwrxb(0,0,0,00,_BIT(_rXP(RR))))
        !           494: #define __REX_mem(MB,MI)       (__REXwrxb(0,0,0,_BIT(_rXP(MI)),_BIT(_rXP(MB))))
        !           495: 
        !           496: // FIXME: can't mix new (SPL,BPL,SIL,DIL) with (AH,BH,CH,DH)
        !           497: #define _REXBrr(RR,MR)         _m64(__REXw_x_(_r1e8lP(RR)||_r1e8lP(MR),0,RR,0,MR))
        !           498: #define _REXBmr(MB,MI,RD)      _m64(__REXw_x_(_r1e8lP(RD)||_r1e8lP(MB),0,RD,_BIT(_rXP(MI)),MB))
        !           499: #define _REXBrm(RS,MB,MI)      _REXBmr(MB,MI,RS)
        !           500: 
        !           501: #define _REXBLrr(RR,MR)                _m64(__REXw_x_(_r1e8lP(MR),0,RR,0,MR))
        !           502: #define _REXLrr(RR,MR)         _m64(__REXw_x_(0,0,RR,0,MR))
        !           503: #define _REXLmr(MB,MI,RD)      _m64(__REXw_x_(0,0,RD,_BIT(_rXP(MI)),MB))
        !           504: #define _REXLrm(RS,MB,MI)      _REXLmr(MB,MI,RS)
        !           505: #define _REXLr(RR)             _m64(__REX_reg(RR))
        !           506: #define _REXLm(MB,MI)          _m64(__REX_mem(MB,MI))
        !           507: 
        !           508: #define _REXQrr(RR,MR)         _m64only(__REXw_x_(0,1,RR,0,MR))
        !           509: #define _REXQmr(MB,MI,RD)      _m64only(__REXw_x_(0,1,RD,_BIT(_rXP(MI)),MB))
        !           510: #define _REXQrm(RS,MB,MI)      _REXQmr(MB,MI,RS)
        !           511: #define _REXQr(RR)             _m64only(__REX_reg(RR))
        !           512: #define _REXQm(MB,MI)          _m64only(__REX_mem(MB,MI))
        !           513: 
        !           514: 
        !           515: /* ========================================================================= */
        !           516: /* --- Fully-qualified intrinsic instructions ------------------------------ */
        !           517: /* ========================================================================= */
        !           518: 
        !           519: /*     OPCODE  + i     = immediate operand
        !           520:  *             + r     = register operand
        !           521:  *             + m     = memory operand (disp,base,index,scale)
        !           522:  *             + sr/sm = a star preceding a register or memory
        !           523:  *             + 0     = top of stack register (for FPU instructions)
        !           524:  *
        !           525:  *     NOTE in x86-64 mode: a memory operand with only a valid
        !           526:  *     displacement value will lead to the expect absolute mode. If
        !           527:  *     RIP addressing is necessary, X86_RIP shall be used as the base
        !           528:  *     register argument.
        !           529:  */
        !           530: 
        !           531: /* --- ALU instructions ---------------------------------------------------- */
        !           532: 
        !           533: enum {
        !           534:   X86_ADD = 0,
        !           535:   X86_OR  = 1,
        !           536:   X86_ADC = 2,
        !           537:   X86_SBB = 3,
        !           538:   X86_AND = 4,
        !           539:   X86_SUB = 5,
        !           540:   X86_XOR = 6,
        !           541:   X86_CMP = 7,
        !           542: };
        !           543: 
        !           544: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !           545: 
        !           546: #define _ALUBrr(OP,RS, RD)             (_REXBrr(RS, RD),               _O_Mrm          (((OP) << 3)    ,_b11,_r1(RS),_r1(RD)                           ))
        !           547: #define _ALUBmr(OP, MD, MB, MI, MS, RD)        (_REXBmr(MB, MI, RD),           _O_r_X          (((OP) << 3) + 2     ,_r1(RD)           ,MD,MB,MI,MS            ))
        !           548: #define _ALUBrm(OP, RS, MD, MB, MI, MS)        (_REXBrm(RS, MB, MI),           _O_r_X          (((OP) << 3)         ,_r1(RS)           ,MD,MB,MI,MS            ))
        !           549: #define _ALUBir(OP, IM, RD)            (X86_OPTIMIZE_ALU && ((RD) == X86_AL) ? \
        !           550:                                        (_REXBrr(0, RD),                _O_B            (((OP) << 3) + 4                                        ,_su8(IM))) : \
        !           551:                                        (_REXBrr(0, RD),                _O_Mrm_B        (0x80           ,_b11,OP     ,_r1(RD)                   ,_su8(IM))) )
        !           552: #define _ALUBim(OP, IM, MD, MB, MI, MS)        (_REXBrm(0, MB, MI),            _O_r_X_B        (0x80                ,OP                ,MD,MB,MI,MS    ,_su8(IM)))
        !           553: 
        !           554: #define _ALUWrr(OP, RS, RD)            (_d16(), _REXLrr(RS, RD),       _O_Mrm          (((OP) << 3) + 1,_b11,_r2(RS),_r2(RD)                           ))
        !           555: #define _ALUWmr(OP, MD, MB, MI, MS, RD)        (_d16(), _REXLmr(MB, MI, RD),   _O_r_X          (((OP) << 3) + 3     ,_r2(RD)           ,MD,MB,MI,MS            ))
        !           556: #define _ALUWrm(OP, RS, MD, MB, MI, MS)        (_d16(), _REXLrm(RS, MB, MI),   _O_r_X          (((OP) << 3) + 1     ,_r2(RS)           ,MD,MB,MI,MS            ))
        !           557: #define _ALUWir(OP, IM, RD)            (X86_OPTIMIZE_ALU && ((RD) == X86_AX) ? \
        !           558:                                        (_d16(), _REXLrr(0, RD),        _O_W            (((OP) << 3) + 5                                        ,_su16(IM))) : \
        !           559:                                        (_d16(), _REXLrr(0, RD),        _Os_Mrm_sW      (0x81           ,_b11,OP     ,_r2(RD)                   ,_su16(IM))) )
        !           560: #define _ALUWim(OP, IM, MD, MB, MI, MS)        (_d16(), _REXLrm(0, MB, MI),    _Os_r_X_sW      (0x81                ,OP                ,MD,MB,MI,MS    ,_su16(IM)))
        !           561: 
        !           562: #define _ALULrr(OP, RS, RD)            (_REXLrr(RS, RD),               _O_Mrm          (((OP) << 3) + 1,_b11,_r4(RS),_r4(RD)                           ))
        !           563: #define _ALULmr(OP, MD, MB, MI, MS, RD)        (_REXLmr(MB, MI, RD),           _O_r_X          (((OP) << 3) + 3     ,_r4(RD)           ,MD,MB,MI,MS            ))
        !           564: #define _ALULrm(OP, RS, MD, MB, MI, MS)        (_REXLrm(RS, MB, MI),           _O_r_X          (((OP) << 3) + 1     ,_r4(RS)           ,MD,MB,MI,MS            ))
        !           565: #define _ALULir(OP, IM, RD)            (X86_OPTIMIZE_ALU && ((RD) == X86_EAX) ? \
        !           566:                                        (_REXLrr(0, RD),                _O_L            (((OP) << 3) + 5                                        ,IM     )) : \
        !           567:                                        (_REXLrr(0, RD),                _Os_Mrm_sL      (0x81           ,_b11,OP     ,_r4(RD)                   ,IM     )) )
        !           568: #define _ALULim(OP, IM, MD, MB, MI, MS)        (_REXLrm(0, MB, MI),            _Os_r_X_sL      (0x81                ,OP                ,MD,MB,MI,MS    ,IM     ))
        !           569: 
        !           570: #define _ALUQrr(OP, RS, RD)            (_REXQrr(RS, RD),               _O_Mrm          (((OP) << 3) + 1,_b11,_r8(RS),_r8(RD)                           ))
        !           571: #define _ALUQmr(OP, MD, MB, MI, MS, RD)        (_REXQmr(MB, MI, RD),           _O_r_X          (((OP) << 3) + 3     ,_r8(RD)           ,MD,MB,MI,MS            ))
        !           572: #define _ALUQrm(OP, RS, MD, MB, MI, MS)        (_REXQrm(RS, MB, MI),           _O_r_X          (((OP) << 3) + 1     ,_r8(RS)           ,MD,MB,MI,MS            ))
        !           573: #define _ALUQir(OP, IM, RD)            (X86_OPTIMIZE_ALU && ((RD) == X86_RAX) ? \
        !           574:                                        (_REXQrr(0, RD),                _O_L            (((OP) << 3) + 5                                        ,IM     )) : \
        !           575:                                        (_REXQrr(0, RD),                _Os_Mrm_sL      (0x81           ,_b11,OP     ,_r8(RD)                   ,IM     )) )
        !           576: #define _ALUQim(OP, IM, MD, MB, MI, MS)        (_REXQrm(0, MB, MI),            _Os_r_X_sL      (0x81                ,OP                ,MD,MB,MI,MS    ,IM     ))
        !           577: 
        !           578: #define ADCBrr(RS, RD)                 _ALUBrr(X86_ADC, RS, RD)
        !           579: #define ADCBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_ADC, MD, MB, MI, MS, RD)
        !           580: #define ADCBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_ADC, RS, MD, MB, MI, MS)
        !           581: #define ADCBir(IM, RD)                 _ALUBir(X86_ADC, IM, RD)
        !           582: #define ADCBim(IM, MD, MB, MI, MS)     _ALUBim(X86_ADC, IM, MD, MB, MI, MS)
        !           583: 
        !           584: #define ADCWrr(RS, RD)                 _ALUWrr(X86_ADC, RS, RD)
        !           585: #define ADCWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_ADC, MD, MB, MI, MS, RD)
        !           586: #define ADCWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_ADC, RS, MD, MB, MI, MS)
        !           587: #define ADCWir(IM, RD)                 _ALUWir(X86_ADC, IM, RD)
        !           588: #define ADCWim(IM, MD, MB, MI, MS)     _ALUWim(X86_ADC, IM, MD, MB, MI, MS)
        !           589: 
        !           590: #define ADCLrr(RS, RD)                 _ALULrr(X86_ADC, RS, RD)
        !           591: #define ADCLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_ADC, MD, MB, MI, MS, RD)
        !           592: #define ADCLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_ADC, RS, MD, MB, MI, MS)
        !           593: #define ADCLir(IM, RD)                 _ALULir(X86_ADC, IM, RD)
        !           594: #define ADCLim(IM, MD, MB, MI, MS)     _ALULim(X86_ADC, IM, MD, MB, MI, MS)
        !           595: 
        !           596: #define ADCQrr(RS, RD)                 _ALUQrr(X86_ADC, RS, RD)
        !           597: #define ADCQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_ADC, MD, MB, MI, MS, RD)
        !           598: #define ADCQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_ADC, RS, MD, MB, MI, MS)
        !           599: #define ADCQir(IM, RD)                 _ALUQir(X86_ADC, IM, RD)
        !           600: #define ADCQim(IM, MD, MB, MI, MS)     _ALUQim(X86_ADC, IM, MD, MB, MI, MS)
        !           601: 
        !           602: #define ADDBrr(RS, RD)                 _ALUBrr(X86_ADD, RS, RD)
        !           603: #define ADDBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_ADD, MD, MB, MI, MS, RD)
        !           604: #define ADDBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_ADD, RS, MD, MB, MI, MS)
        !           605: #define ADDBir(IM, RD)                 _ALUBir(X86_ADD, IM, RD)
        !           606: #define ADDBim(IM, MD, MB, MI, MS)     _ALUBim(X86_ADD, IM, MD, MB, MI, MS)
        !           607: 
        !           608: #define ADDWrr(RS, RD)                 _ALUWrr(X86_ADD, RS, RD)
        !           609: #define ADDWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_ADD, MD, MB, MI, MS, RD)
        !           610: #define ADDWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_ADD, RS, MD, MB, MI, MS)
        !           611: #define ADDWir(IM, RD)                 _ALUWir(X86_ADD, IM, RD)
        !           612: #define ADDWim(IM, MD, MB, MI, MS)     _ALUWim(X86_ADD, IM, MD, MB, MI, MS)
        !           613: 
        !           614: #define ADDLrr(RS, RD)                 _ALULrr(X86_ADD, RS, RD)
        !           615: #define ADDLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_ADD, MD, MB, MI, MS, RD)
        !           616: #define ADDLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_ADD, RS, MD, MB, MI, MS)
        !           617: #define ADDLir(IM, RD)                 _ALULir(X86_ADD, IM, RD)
        !           618: #define ADDLim(IM, MD, MB, MI, MS)     _ALULim(X86_ADD, IM, MD, MB, MI, MS)
        !           619: 
        !           620: #define ADDQrr(RS, RD)                 _ALUQrr(X86_ADD, RS, RD)
        !           621: #define ADDQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_ADD, MD, MB, MI, MS, RD)
        !           622: #define ADDQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_ADD, RS, MD, MB, MI, MS)
        !           623: #define ADDQir(IM, RD)                 _ALUQir(X86_ADD, IM, RD)
        !           624: #define ADDQim(IM, MD, MB, MI, MS)     _ALUQim(X86_ADD, IM, MD, MB, MI, MS)
        !           625: 
        !           626: #define ANDBrr(RS, RD)                 _ALUBrr(X86_AND, RS, RD)
        !           627: #define ANDBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_AND, MD, MB, MI, MS, RD)
        !           628: #define ANDBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_AND, RS, MD, MB, MI, MS)
        !           629: #define ANDBir(IM, RD)                 _ALUBir(X86_AND, IM, RD)
        !           630: #define ANDBim(IM, MD, MB, MI, MS)     _ALUBim(X86_AND, IM, MD, MB, MI, MS)
        !           631: 
        !           632: #define ANDWrr(RS, RD)                 _ALUWrr(X86_AND, RS, RD)
        !           633: #define ANDWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_AND, MD, MB, MI, MS, RD)
        !           634: #define ANDWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_AND, RS, MD, MB, MI, MS)
        !           635: #define ANDWir(IM, RD)                 _ALUWir(X86_AND, IM, RD)
        !           636: #define ANDWim(IM, MD, MB, MI, MS)     _ALUWim(X86_AND, IM, MD, MB, MI, MS)
        !           637: 
        !           638: #define ANDLrr(RS, RD)                 _ALULrr(X86_AND, RS, RD)
        !           639: #define ANDLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_AND, MD, MB, MI, MS, RD)
        !           640: #define ANDLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_AND, RS, MD, MB, MI, MS)
        !           641: #define ANDLir(IM, RD)                 _ALULir(X86_AND, IM, RD)
        !           642: #define ANDLim(IM, MD, MB, MI, MS)     _ALULim(X86_AND, IM, MD, MB, MI, MS)
        !           643: 
        !           644: #define ANDQrr(RS, RD)                 _ALUQrr(X86_AND, RS, RD)
        !           645: #define ANDQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_AND, MD, MB, MI, MS, RD)
        !           646: #define ANDQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_AND, RS, MD, MB, MI, MS)
        !           647: #define ANDQir(IM, RD)                 _ALUQir(X86_AND, IM, RD)
        !           648: #define ANDQim(IM, MD, MB, MI, MS)     _ALUQim(X86_AND, IM, MD, MB, MI, MS)
        !           649: 
        !           650: #define CMPBrr(RS, RD)                 _ALUBrr(X86_CMP, RS, RD)
        !           651: #define CMPBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_CMP, MD, MB, MI, MS, RD)
        !           652: #define CMPBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_CMP, RS, MD, MB, MI, MS)
        !           653: #define CMPBir(IM, RD)                 _ALUBir(X86_CMP, IM, RD)
        !           654: #define CMPBim(IM, MD, MB, MI, MS)     _ALUBim(X86_CMP, IM, MD, MB, MI, MS)
        !           655: 
        !           656: #define CMPWrr(RS, RD)                 _ALUWrr(X86_CMP, RS, RD)
        !           657: #define CMPWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_CMP, MD, MB, MI, MS, RD)
        !           658: #define CMPWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_CMP, RS, MD, MB, MI, MS)
        !           659: #define CMPWir(IM, RD)                 _ALUWir(X86_CMP, IM, RD)
        !           660: #define CMPWim(IM, MD, MB, MI, MS)     _ALUWim(X86_CMP, IM, MD, MB, MI, MS)
        !           661: 
        !           662: #define CMPLrr(RS, RD)                 _ALULrr(X86_CMP, RS, RD)
        !           663: #define CMPLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_CMP, MD, MB, MI, MS, RD)
        !           664: #define CMPLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_CMP, RS, MD, MB, MI, MS)
        !           665: #define CMPLir(IM, RD)                 _ALULir(X86_CMP, IM, RD)
        !           666: #define CMPLim(IM, MD, MB, MI, MS)     _ALULim(X86_CMP, IM, MD, MB, MI, MS)
        !           667: 
        !           668: #define CMPQrr(RS, RD)                 _ALUQrr(X86_CMP, RS, RD)
        !           669: #define CMPQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_CMP, MD, MB, MI, MS, RD)
        !           670: #define CMPQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_CMP, RS, MD, MB, MI, MS)
        !           671: #define CMPQir(IM, RD)                 _ALUQir(X86_CMP, IM, RD)
        !           672: #define CMPQim(IM, MD, MB, MI, MS)     _ALUQim(X86_CMP, IM, MD, MB, MI, MS)
        !           673: 
        !           674: #define ORBrr(RS, RD)                  _ALUBrr(X86_OR, RS, RD)
        !           675: #define ORBmr(MD, MB, MI, MS, RD)      _ALUBmr(X86_OR, MD, MB, MI, MS, RD)
        !           676: #define ORBrm(RS, MD, MB, MI, MS)      _ALUBrm(X86_OR, RS, MD, MB, MI, MS)
        !           677: #define ORBir(IM, RD)                  _ALUBir(X86_OR, IM, RD)
        !           678: #define ORBim(IM, MD, MB, MI, MS)      _ALUBim(X86_OR, IM, MD, MB, MI, MS)
        !           679: 
        !           680: #define ORWrr(RS, RD)                  _ALUWrr(X86_OR, RS, RD)
        !           681: #define ORWmr(MD, MB, MI, MS, RD)      _ALUWmr(X86_OR, MD, MB, MI, MS, RD)
        !           682: #define ORWrm(RS, MD, MB, MI, MS)      _ALUWrm(X86_OR, RS, MD, MB, MI, MS)
        !           683: #define ORWir(IM, RD)                  _ALUWir(X86_OR, IM, RD)
        !           684: #define ORWim(IM, MD, MB, MI, MS)      _ALUWim(X86_OR, IM, MD, MB, MI, MS)
        !           685: 
        !           686: #define ORLrr(RS, RD)                  _ALULrr(X86_OR, RS, RD)
        !           687: #define ORLmr(MD, MB, MI, MS, RD)      _ALULmr(X86_OR, MD, MB, MI, MS, RD)
        !           688: #define ORLrm(RS, MD, MB, MI, MS)      _ALULrm(X86_OR, RS, MD, MB, MI, MS)
        !           689: #define ORLir(IM, RD)                  _ALULir(X86_OR, IM, RD)
        !           690: #define ORLim(IM, MD, MB, MI, MS)      _ALULim(X86_OR, IM, MD, MB, MI, MS)
        !           691: 
        !           692: #define ORQrr(RS, RD)                  _ALUQrr(X86_OR, RS, RD)
        !           693: #define ORQmr(MD, MB, MI, MS, RD)      _ALUQmr(X86_OR, MD, MB, MI, MS, RD)
        !           694: #define ORQrm(RS, MD, MB, MI, MS)      _ALUQrm(X86_OR, RS, MD, MB, MI, MS)
        !           695: #define ORQir(IM, RD)                  _ALUQir(X86_OR, IM, RD)
        !           696: #define ORQim(IM, MD, MB, MI, MS)      _ALUQim(X86_OR, IM, MD, MB, MI, MS)
        !           697: 
        !           698: #define SBBBrr(RS, RD)                 _ALUBrr(X86_SBB, RS, RD)
        !           699: #define SBBBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_SBB, MD, MB, MI, MS, RD)
        !           700: #define SBBBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_SBB, RS, MD, MB, MI, MS)
        !           701: #define SBBBir(IM, RD)                 _ALUBir(X86_SBB, IM, RD)
        !           702: #define SBBBim(IM, MD, MB, MI, MS)     _ALUBim(X86_SBB, IM, MD, MB, MI, MS)
        !           703: 
        !           704: #define SBBWrr(RS, RD)                 _ALUWrr(X86_SBB, RS, RD)
        !           705: #define SBBWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_SBB, MD, MB, MI, MS, RD)
        !           706: #define SBBWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_SBB, RS, MD, MB, MI, MS)
        !           707: #define SBBWir(IM, RD)                 _ALUWir(X86_SBB, IM, RD)
        !           708: #define SBBWim(IM, MD, MB, MI, MS)     _ALUWim(X86_SBB, IM, MD, MB, MI, MS)
        !           709: 
        !           710: #define SBBLrr(RS, RD)                 _ALULrr(X86_SBB, RS, RD)
        !           711: #define SBBLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_SBB, MD, MB, MI, MS, RD)
        !           712: #define SBBLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_SBB, RS, MD, MB, MI, MS)
        !           713: #define SBBLir(IM, RD)                 _ALULir(X86_SBB, IM, RD)
        !           714: #define SBBLim(IM, MD, MB, MI, MS)     _ALULim(X86_SBB, IM, MD, MB, MI, MS)
        !           715: 
        !           716: #define SBBQrr(RS, RD)                 _ALUQrr(X86_SBB, RS, RD)
        !           717: #define SBBQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_SBB, MD, MB, MI, MS, RD)
        !           718: #define SBBQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_SBB, RS, MD, MB, MI, MS)
        !           719: #define SBBQir(IM, RD)                 _ALUQir(X86_SBB, IM, RD)
        !           720: #define SBBQim(IM, MD, MB, MI, MS)     _ALUQim(X86_SBB, IM, MD, MB, MI, MS)
        !           721: 
        !           722: #define SUBBrr(RS, RD)                 _ALUBrr(X86_SUB, RS, RD)
        !           723: #define SUBBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_SUB, MD, MB, MI, MS, RD)
        !           724: #define SUBBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_SUB, RS, MD, MB, MI, MS)
        !           725: #define SUBBir(IM, RD)                 _ALUBir(X86_SUB, IM, RD)
        !           726: #define SUBBim(IM, MD, MB, MI, MS)     _ALUBim(X86_SUB, IM, MD, MB, MI, MS)
        !           727: 
        !           728: #define SUBWrr(RS, RD)                 _ALUWrr(X86_SUB, RS, RD)
        !           729: #define SUBWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_SUB, MD, MB, MI, MS, RD)
        !           730: #define SUBWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_SUB, RS, MD, MB, MI, MS)
        !           731: #define SUBWir(IM, RD)                 _ALUWir(X86_SUB, IM, RD)
        !           732: #define SUBWim(IM, MD, MB, MI, MS)     _ALUWim(X86_SUB, IM, MD, MB, MI, MS)
        !           733: 
        !           734: #define SUBLrr(RS, RD)                 _ALULrr(X86_SUB, RS, RD)
        !           735: #define SUBLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_SUB, MD, MB, MI, MS, RD)
        !           736: #define SUBLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_SUB, RS, MD, MB, MI, MS)
        !           737: #define SUBLir(IM, RD)                 _ALULir(X86_SUB, IM, RD)
        !           738: #define SUBLim(IM, MD, MB, MI, MS)     _ALULim(X86_SUB, IM, MD, MB, MI, MS)
        !           739: 
        !           740: #define SUBQrr(RS, RD)                 _ALUQrr(X86_SUB, RS, RD)
        !           741: #define SUBQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_SUB, MD, MB, MI, MS, RD)
        !           742: #define SUBQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_SUB, RS, MD, MB, MI, MS)
        !           743: #define SUBQir(IM, RD)                 _ALUQir(X86_SUB, IM, RD)
        !           744: #define SUBQim(IM, MD, MB, MI, MS)     _ALUQim(X86_SUB, IM, MD, MB, MI, MS)
        !           745: 
        !           746: #define XORBrr(RS, RD)                 _ALUBrr(X86_XOR, RS, RD)
        !           747: #define XORBmr(MD, MB, MI, MS, RD)     _ALUBmr(X86_XOR, MD, MB, MI, MS, RD)
        !           748: #define XORBrm(RS, MD, MB, MI, MS)     _ALUBrm(X86_XOR, RS, MD, MB, MI, MS)
        !           749: #define XORBir(IM, RD)                 _ALUBir(X86_XOR, IM, RD)
        !           750: #define XORBim(IM, MD, MB, MI, MS)     _ALUBim(X86_XOR, IM, MD, MB, MI, MS)
        !           751: 
        !           752: #define XORWrr(RS, RD)                 _ALUWrr(X86_XOR, RS, RD)
        !           753: #define XORWmr(MD, MB, MI, MS, RD)     _ALUWmr(X86_XOR, MD, MB, MI, MS, RD)
        !           754: #define XORWrm(RS, MD, MB, MI, MS)     _ALUWrm(X86_XOR, RS, MD, MB, MI, MS)
        !           755: #define XORWir(IM, RD)                 _ALUWir(X86_XOR, IM, RD)
        !           756: #define XORWim(IM, MD, MB, MI, MS)     _ALUWim(X86_XOR, IM, MD, MB, MI, MS)
        !           757: 
        !           758: #define XORLrr(RS, RD)                 _ALULrr(X86_XOR, RS, RD)
        !           759: #define XORLmr(MD, MB, MI, MS, RD)     _ALULmr(X86_XOR, MD, MB, MI, MS, RD)
        !           760: #define XORLrm(RS, MD, MB, MI, MS)     _ALULrm(X86_XOR, RS, MD, MB, MI, MS)
        !           761: #define XORLir(IM, RD)                 _ALULir(X86_XOR, IM, RD)
        !           762: #define XORLim(IM, MD, MB, MI, MS)     _ALULim(X86_XOR, IM, MD, MB, MI, MS)
        !           763: 
        !           764: #define XORQrr(RS, RD)                 _ALUQrr(X86_XOR, RS, RD)
        !           765: #define XORQmr(MD, MB, MI, MS, RD)     _ALUQmr(X86_XOR, MD, MB, MI, MS, RD)
        !           766: #define XORQrm(RS, MD, MB, MI, MS)     _ALUQrm(X86_XOR, RS, MD, MB, MI, MS)
        !           767: #define XORQir(IM, RD)                 _ALUQir(X86_XOR, IM, RD)
        !           768: #define XORQim(IM, MD, MB, MI, MS)     _ALUQim(X86_XOR, IM, MD, MB, MI, MS)
        !           769: 
        !           770: 
        !           771: /* --- Shift/Rotate instructions ------------------------------------------- */
        !           772: 
        !           773: enum {
        !           774:   X86_ROL = 0,
        !           775:   X86_ROR = 1,
        !           776:   X86_RCL = 2,
        !           777:   X86_RCR = 3,
        !           778:   X86_SHL = 4,
        !           779:   X86_SHR = 5,
        !           780:   X86_SAR = 7,
        !           781: };
        !           782: 
        !           783: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !           784: 
        !           785: #define _ROTSHIBir(OP,IM,RD)           (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           786:                                        (_REXBrr(0, RD),                _O_Mrm          (0xd0           ,_b11,OP,_r1(RD)                                )) : \
        !           787:                                        (_REXBrr(0, RD),                _O_Mrm_B        (0xc0           ,_b11,OP,_r1(RD)                        ,_u8(IM))) )
        !           788: #define _ROTSHIBim(OP,IM,MD,MB,MI,MS)  (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           789:                                        (_REXBrm(0, MB, MI),            _O_r_X          (0xd0                ,OP                ,MD,MB,MI,MS            )) : \
        !           790:                                        (_REXBrm(0, MB, MI),            _O_r_X_B        (0xc0                ,OP                ,MD,MB,MI,MS    ,_u8(IM))) )
        !           791: #define _ROTSHIBrr(OP,RS,RD)           (((RS) == X86_CL) ? \
        !           792:                                        (_REXBrr(RS, RD),               _O_Mrm          (0xd2           ,_b11,OP,_r1(RD)                                )) : \
        !           793:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           794: #define _ROTSHIBrm(OP,RS,MD,MB,MI,MS)  (((RS) == X86_CL) ? \
        !           795:                                        (_REXBrm(RS, MB, MI),           _O_r_X          (0xd2                ,OP                ,MD,MB,MI,MS            )) : \
        !           796:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           797: 
        !           798: #define _ROTSHIWir(OP,IM,RD)           (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           799:                                        (_d16(), _REXLrr(0, RD),        _O_Mrm          (0xd1           ,_b11,OP,_r2(RD)                                )) : \
        !           800:                                        (_d16(), _REXLrr(0, RD),        _O_Mrm_B        (0xc1           ,_b11,OP,_r2(RD)                        ,_u8(IM))) )
        !           801: #define _ROTSHIWim(OP,IM,MD,MB,MI,MS)  (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           802:                                        (_d16(), _REXLrm(0, MB, MI),    _O_r_X          (0xd1                ,OP                ,MD,MB,MI,MS            )) : \
        !           803:                                        (_d16(), _REXLrm(0, MB, MI),    _O_r_X_B        (0xc1                ,OP                ,MD,MB,MI,MS    ,_u8(IM))) )
        !           804: #define _ROTSHIWrr(OP,RS,RD)           (((RS) == X86_CL) ? \
        !           805:                                        (_d16(), _REXLrr(RS, RD),       _O_Mrm          (0xd3           ,_b11,OP,_r2(RD)                                )) : \
        !           806:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           807: #define _ROTSHIWrm(OP,RS,MD,MB,MI,MS)  (((RS) == X86_CL) ? \
        !           808:                                        (_d16(), _REXLrm(RS, MB, MI),   _O_r_X          (0xd3                ,OP                ,MD,MB,MI,MS            )) : \
        !           809:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           810: 
        !           811: #define _ROTSHILir(OP,IM,RD)           (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           812:                                        (_REXLrr(0, RD),                _O_Mrm          (0xd1           ,_b11,OP,_r4(RD)                                )) : \
        !           813:                                        (_REXLrr(0, RD),                _O_Mrm_B        (0xc1           ,_b11,OP,_r4(RD)                        ,_u8(IM))) )
        !           814: #define _ROTSHILim(OP,IM,MD,MB,MI,MS)  (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           815:                                        (_REXLrm(0, MB, MI),            _O_r_X          (0xd1                ,OP                ,MD,MB,MI,MS            )) : \
        !           816:                                        (_REXLrm(0, MB, MI),            _O_r_X_B        (0xc1                ,OP                ,MD,MB,MI,MS    ,_u8(IM))) )
        !           817: #define _ROTSHILrr(OP,RS,RD)           (((RS) == X86_CL) ? \
        !           818:                                        (_REXLrr(RS, RD),               _O_Mrm          (0xd3           ,_b11,OP,_r4(RD)                                )) : \
        !           819:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           820: #define _ROTSHILrm(OP,RS,MD,MB,MI,MS)  (((RS) == X86_CL) ? \
        !           821:                                        (_REXLrm(RS, MB, MI),           _O_r_X          (0xd3                ,OP                ,MD,MB,MI,MS            )) : \
        !           822:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           823: 
        !           824: #define _ROTSHIQir(OP,IM,RD)           (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           825:                                        (_REXQrr(0, RD),                _O_Mrm          (0xd1           ,_b11,OP,_r8(RD)                                )) : \
        !           826:                                        (_REXQrr(0, RD),                _O_Mrm_B        (0xc1           ,_b11,OP,_r8(RD)                        ,_u8(IM))) )
        !           827: #define _ROTSHIQim(OP,IM,MD,MB,MI,MS)  (X86_OPTIMIZE_ROTSHI && ((IM) == 1) ? \
        !           828:                                        (_REXQrm(0, MB, MI),            _O_r_X          (0xd1                ,OP                ,MD,MB,MI,MS            )) : \
        !           829:                                        (_REXQrm(0, MB, MI),            _O_r_X_B        (0xc1                ,OP                ,MD,MB,MI,MS    ,_u8(IM))) )
        !           830: #define _ROTSHIQrr(OP,RS,RD)           (((RS) == X86_CL) ? \
        !           831:                                        (_REXQrr(RS, RD),               _O_Mrm          (0xd3           ,_b11,OP,_r8(RD)                                )) : \
        !           832:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           833: #define _ROTSHIQrm(OP,RS,MD,MB,MI,MS)  (((RS) == X86_CL) ? \
        !           834:                                        (_REXQrm(RS, MB, MI),           _O_r_X          (0xd3                ,OP                ,MD,MB,MI,MS            )) : \
        !           835:                                                                        x86_emit_failure("source register must be CL"                                   )  )
        !           836: 
        !           837: #define ROLBir(IM, RD)                 _ROTSHIBir(X86_ROL, IM, RD)
        !           838: #define ROLBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_ROL, IM, MD, MB, MI, MS)
        !           839: #define ROLBrr(RS, RD)                 _ROTSHIBrr(X86_ROL, RS, RD)
        !           840: #define ROLBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_ROL, RS, MD, MB, MI, MS)
        !           841: 
        !           842: #define ROLWir(IM, RD)                 _ROTSHIWir(X86_ROL, IM, RD)
        !           843: #define ROLWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_ROL, IM, MD, MB, MI, MS)
        !           844: #define ROLWrr(RS, RD)                 _ROTSHIWrr(X86_ROL, RS, RD)
        !           845: #define ROLWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_ROL, RS, MD, MB, MI, MS)
        !           846: 
        !           847: #define ROLLir(IM, RD)                 _ROTSHILir(X86_ROL, IM, RD)
        !           848: #define ROLLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_ROL, IM, MD, MB, MI, MS)
        !           849: #define ROLLrr(RS, RD)                 _ROTSHILrr(X86_ROL, RS, RD)
        !           850: #define ROLLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_ROL, RS, MD, MB, MI, MS)
        !           851: 
        !           852: #define ROLQir(IM, RD)                 _ROTSHIQir(X86_ROL, IM, RD)
        !           853: #define ROLQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_ROL, IM, MD, MB, MI, MS)
        !           854: #define ROLQrr(RS, RD)                 _ROTSHIQrr(X86_ROL, RS, RD)
        !           855: #define ROLQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_ROL, RS, MD, MB, MI, MS)
        !           856: 
        !           857: #define RORBir(IM, RD)                 _ROTSHIBir(X86_ROR, IM, RD)
        !           858: #define RORBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_ROR, IM, MD, MB, MI, MS)
        !           859: #define RORBrr(RS, RD)                 _ROTSHIBrr(X86_ROR, RS, RD)
        !           860: #define RORBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_ROR, RS, MD, MB, MI, MS)
        !           861: 
        !           862: #define RORWir(IM, RD)                 _ROTSHIWir(X86_ROR, IM, RD)
        !           863: #define RORWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_ROR, IM, MD, MB, MI, MS)
        !           864: #define RORWrr(RS, RD)                 _ROTSHIWrr(X86_ROR, RS, RD)
        !           865: #define RORWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_ROR, RS, MD, MB, MI, MS)
        !           866: 
        !           867: #define RORLir(IM, RD)                 _ROTSHILir(X86_ROR, IM, RD)
        !           868: #define RORLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_ROR, IM, MD, MB, MI, MS)
        !           869: #define RORLrr(RS, RD)                 _ROTSHILrr(X86_ROR, RS, RD)
        !           870: #define RORLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_ROR, RS, MD, MB, MI, MS)
        !           871: 
        !           872: #define RORQir(IM, RD)                 _ROTSHIQir(X86_ROR, IM, RD)
        !           873: #define RORQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_ROR, IM, MD, MB, MI, MS)
        !           874: #define RORQrr(RS, RD)                 _ROTSHIQrr(X86_ROR, RS, RD)
        !           875: #define RORQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_ROR, RS, MD, MB, MI, MS)
        !           876: 
        !           877: #define RCLBir(IM, RD)                 _ROTSHIBir(X86_RCL, IM, RD)
        !           878: #define RCLBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_RCL, IM, MD, MB, MI, MS)
        !           879: #define RCLBrr(RS, RD)                 _ROTSHIBrr(X86_RCL, RS, RD)
        !           880: #define RCLBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_RCL, RS, MD, MB, MI, MS)
        !           881: 
        !           882: #define RCLWir(IM, RD)                 _ROTSHIWir(X86_RCL, IM, RD)
        !           883: #define RCLWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_RCL, IM, MD, MB, MI, MS)
        !           884: #define RCLWrr(RS, RD)                 _ROTSHIWrr(X86_RCL, RS, RD)
        !           885: #define RCLWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_RCL, RS, MD, MB, MI, MS)
        !           886: 
        !           887: #define RCLLir(IM, RD)                 _ROTSHILir(X86_RCL, IM, RD)
        !           888: #define RCLLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_RCL, IM, MD, MB, MI, MS)
        !           889: #define RCLLrr(RS, RD)                 _ROTSHILrr(X86_RCL, RS, RD)
        !           890: #define RCLLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_RCL, RS, MD, MB, MI, MS)
        !           891: 
        !           892: #define RCLQir(IM, RD)                 _ROTSHIQir(X86_RCL, IM, RD)
        !           893: #define RCLQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_RCL, IM, MD, MB, MI, MS)
        !           894: #define RCLQrr(RS, RD)                 _ROTSHIQrr(X86_RCL, RS, RD)
        !           895: #define RCLQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_RCL, RS, MD, MB, MI, MS)
        !           896: 
        !           897: #define RCRBir(IM, RD)                 _ROTSHIBir(X86_RCR, IM, RD)
        !           898: #define RCRBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_RCR, IM, MD, MB, MI, MS)
        !           899: #define RCRBrr(RS, RD)                 _ROTSHIBrr(X86_RCR, RS, RD)
        !           900: #define RCRBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_RCR, RS, MD, MB, MI, MS)
        !           901: 
        !           902: #define RCRWir(IM, RD)                 _ROTSHIWir(X86_RCR, IM, RD)
        !           903: #define RCRWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_RCR, IM, MD, MB, MI, MS)
        !           904: #define RCRWrr(RS, RD)                 _ROTSHIWrr(X86_RCR, RS, RD)
        !           905: #define RCRWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_RCR, RS, MD, MB, MI, MS)
        !           906: 
        !           907: #define RCRLir(IM, RD)                 _ROTSHILir(X86_RCR, IM, RD)
        !           908: #define RCRLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_RCR, IM, MD, MB, MI, MS)
        !           909: #define RCRLrr(RS, RD)                 _ROTSHILrr(X86_RCR, RS, RD)
        !           910: #define RCRLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_RCR, RS, MD, MB, MI, MS)
        !           911: 
        !           912: #define RCRQir(IM, RD)                 _ROTSHIQir(X86_RCR, IM, RD)
        !           913: #define RCRQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_RCR, IM, MD, MB, MI, MS)
        !           914: #define RCRQrr(RS, RD)                 _ROTSHIQrr(X86_RCR, RS, RD)
        !           915: #define RCRQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_RCR, RS, MD, MB, MI, MS)
        !           916: 
        !           917: #define SHLBir(IM, RD)                 _ROTSHIBir(X86_SHL, IM, RD)
        !           918: #define SHLBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_SHL, IM, MD, MB, MI, MS)
        !           919: #define SHLBrr(RS, RD)                 _ROTSHIBrr(X86_SHL, RS, RD)
        !           920: #define SHLBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_SHL, RS, MD, MB, MI, MS)
        !           921: 
        !           922: #define SHLWir(IM, RD)                 _ROTSHIWir(X86_SHL, IM, RD)
        !           923: #define SHLWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_SHL, IM, MD, MB, MI, MS)
        !           924: #define SHLWrr(RS, RD)                 _ROTSHIWrr(X86_SHL, RS, RD)
        !           925: #define SHLWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_SHL, RS, MD, MB, MI, MS)
        !           926: 
        !           927: #define SHLLir(IM, RD)                 _ROTSHILir(X86_SHL, IM, RD)
        !           928: #define SHLLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_SHL, IM, MD, MB, MI, MS)
        !           929: #define SHLLrr(RS, RD)                 _ROTSHILrr(X86_SHL, RS, RD)
        !           930: #define SHLLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_SHL, RS, MD, MB, MI, MS)
        !           931: 
        !           932: #define SHLQir(IM, RD)                 _ROTSHIQir(X86_SHL, IM, RD)
        !           933: #define SHLQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_SHL, IM, MD, MB, MI, MS)
        !           934: #define SHLQrr(RS, RD)                 _ROTSHIQrr(X86_SHL, RS, RD)
        !           935: #define SHLQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_SHL, RS, MD, MB, MI, MS)
        !           936: 
        !           937: #define SHRBir(IM, RD)                 _ROTSHIBir(X86_SHR, IM, RD)
        !           938: #define SHRBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_SHR, IM, MD, MB, MI, MS)
        !           939: #define SHRBrr(RS, RD)                 _ROTSHIBrr(X86_SHR, RS, RD)
        !           940: #define SHRBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_SHR, RS, MD, MB, MI, MS)
        !           941: 
        !           942: #define SHRWir(IM, RD)                 _ROTSHIWir(X86_SHR, IM, RD)
        !           943: #define SHRWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_SHR, IM, MD, MB, MI, MS)
        !           944: #define SHRWrr(RS, RD)                 _ROTSHIWrr(X86_SHR, RS, RD)
        !           945: #define SHRWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_SHR, RS, MD, MB, MI, MS)
        !           946: 
        !           947: #define SHRLir(IM, RD)                 _ROTSHILir(X86_SHR, IM, RD)
        !           948: #define SHRLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_SHR, IM, MD, MB, MI, MS)
        !           949: #define SHRLrr(RS, RD)                 _ROTSHILrr(X86_SHR, RS, RD)
        !           950: #define SHRLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_SHR, RS, MD, MB, MI, MS)
        !           951: 
        !           952: #define SHRQir(IM, RD)                 _ROTSHIQir(X86_SHR, IM, RD)
        !           953: #define SHRQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_SHR, IM, MD, MB, MI, MS)
        !           954: #define SHRQrr(RS, RD)                 _ROTSHIQrr(X86_SHR, RS, RD)
        !           955: #define SHRQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_SHR, RS, MD, MB, MI, MS)
        !           956: 
        !           957: #define SALBir                         SHLBir
        !           958: #define SALBim                         SHLBim
        !           959: #define SALBrr                         SHLBrr
        !           960: #define SALBrm                         SHLBrm
        !           961: 
        !           962: #define SALWir                         SHLWir
        !           963: #define SALWim                         SHLWim
        !           964: #define SALWrr                         SHLWrr
        !           965: #define SALWrm                         SHLWrm
        !           966: 
        !           967: #define SALLir                         SHLLir
        !           968: #define SALLim                         SHLLim
        !           969: #define SALLrr                         SHLLrr
        !           970: #define SALLrm                         SHLLrm
        !           971: 
        !           972: #define SALQir                         SHLQir
        !           973: #define SALQim                         SHLQim
        !           974: #define SALQrr                         SHLQrr
        !           975: #define SALQrm                         SHLQrm
        !           976: 
        !           977: #define SARBir(IM, RD)                 _ROTSHIBir(X86_SAR, IM, RD)
        !           978: #define SARBim(IM, MD, MB, MI, MS)     _ROTSHIBim(X86_SAR, IM, MD, MB, MI, MS)
        !           979: #define SARBrr(RS, RD)                 _ROTSHIBrr(X86_SAR, RS, RD)
        !           980: #define SARBrm(RS, MD, MB, MI, MS)     _ROTSHIBrm(X86_SAR, RS, MD, MB, MI, MS)
        !           981: 
        !           982: #define SARWir(IM, RD)                 _ROTSHIWir(X86_SAR, IM, RD)
        !           983: #define SARWim(IM, MD, MB, MI, MS)     _ROTSHIWim(X86_SAR, IM, MD, MB, MI, MS)
        !           984: #define SARWrr(RS, RD)                 _ROTSHIWrr(X86_SAR, RS, RD)
        !           985: #define SARWrm(RS, MD, MB, MI, MS)     _ROTSHIWrm(X86_SAR, RS, MD, MB, MI, MS)
        !           986: 
        !           987: #define SARLir(IM, RD)                 _ROTSHILir(X86_SAR, IM, RD)
        !           988: #define SARLim(IM, MD, MB, MI, MS)     _ROTSHILim(X86_SAR, IM, MD, MB, MI, MS)
        !           989: #define SARLrr(RS, RD)                 _ROTSHILrr(X86_SAR, RS, RD)
        !           990: #define SARLrm(RS, MD, MB, MI, MS)     _ROTSHILrm(X86_SAR, RS, MD, MB, MI, MS)
        !           991: 
        !           992: #define SARQir(IM, RD)                 _ROTSHIQir(X86_SAR, IM, RD)
        !           993: #define SARQim(IM, MD, MB, MI, MS)     _ROTSHIQim(X86_SAR, IM, MD, MB, MI, MS)
        !           994: #define SARQrr(RS, RD)                 _ROTSHIQrr(X86_SAR, RS, RD)
        !           995: #define SARQrm(RS, MD, MB, MI, MS)     _ROTSHIQrm(X86_SAR, RS, MD, MB, MI, MS)
        !           996: 
        !           997: 
        !           998: /* --- Bit test instructions ----------------------------------------------- */
        !           999: 
        !          1000: enum {
        !          1001:   X86_BT  = 4,
        !          1002:   X86_BTS = 5,
        !          1003:   X86_BTR = 6,
        !          1004:   X86_BTC = 7,
        !          1005: };
        !          1006: 
        !          1007: /*                                                                     _format         Opcd             ,Mod ,r      ,m        ,mem=dsp+sib    ,imm... */
        !          1008: 
        !          1009: #define _BTWir(OP, IM, RD)             (_d16(), _REXLrr(0, RD),        _OO_Mrm_B       (0x0fba          ,_b11,OP     ,_r2(RD)                  ,_u8(IM)))
        !          1010: #define _BTWim(OP, IM, MD, MB, MI, MS) (_d16(), _REXLrm(0, MB, MI),    _OO_r_X_B       (0x0fba               ,OP               ,MD,MB,MI,MS    ,_u8(IM)))
        !          1011: #define _BTWrr(OP, RS, RD)             (_d16(), _REXLrr(RS, RD),       _OO_Mrm         (0x0f83|((OP)<<3),_b11,_r2(RS),_r2(RD)                          ))
        !          1012: #define _BTWrm(OP, RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI),   _OO_r_X         (0x0f83|((OP)<<3)     ,_r2(RS)          ,MD,MB,MI,MS            ))
        !          1013: 
        !          1014: #define _BTLir(OP, IM, RD)             (_REXLrr(0, RD),                _OO_Mrm_B       (0x0fba          ,_b11,OP     ,_r4(RD)                  ,_u8(IM)))
        !          1015: #define _BTLim(OP, IM, MD, MB, MI, MS) (_REXLrm(0, MB, MI),            _OO_r_X_B       (0x0fba               ,OP               ,MD,MB,MI,MS    ,_u8(IM)))
        !          1016: #define _BTLrr(OP, RS, RD)             (_REXLrr(RS, RD),               _OO_Mrm         (0x0f83|((OP)<<3),_b11,_r4(RS),_r4(RD)                          ))
        !          1017: #define _BTLrm(OP, RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI),           _OO_r_X         (0x0f83|((OP)<<3)     ,_r4(RS)          ,MD,MB,MI,MS            ))
        !          1018: 
        !          1019: #define _BTQir(OP, IM, RD)             (_REXQrr(0, RD),                _OO_Mrm_B       (0x0fba          ,_b11,OP     ,_r8(RD)                  ,_u8(IM)))
        !          1020: #define _BTQim(OP, IM, MD, MB, MI, MS) (_REXQrm(0, MB, MI),            _OO_r_X_B       (0x0fba               ,OP               ,MD,MB,MI,MS    ,_u8(IM)))
        !          1021: #define _BTQrr(OP, RS, RD)             (_REXQrr(RS, RD),               _OO_Mrm         (0x0f83|((OP)<<3),_b11,_r8(RS),_r8(RD)                          ))
        !          1022: #define _BTQrm(OP, RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI),           _OO_r_X         (0x0f83|((OP)<<3)     ,_r8(RS)          ,MD,MB,MI,MS            ))
        !          1023: 
        !          1024: #define BTWir(IM, RD)                  _BTWir(X86_BT, IM, RD)
        !          1025: #define BTWim(IM, MD, MB, MI, MS)      _BTWim(X86_BT, IM, MD, MB, MI, MS)
        !          1026: #define BTWrr(RS, RD)                  _BTWrr(X86_BT, RS, RD)
        !          1027: #define BTWrm(RS, MD, MB, MI, MS)      _BTWrm(X86_BT, RS, MD, MB, MI, MS)
        !          1028: 
        !          1029: #define BTLir(IM, RD)                  _BTLir(X86_BT, IM, RD)
        !          1030: #define BTLim(IM, MD, MB, MI, MS)      _BTLim(X86_BT, IM, MD, MB, MI, MS)
        !          1031: #define BTLrr(RS, RD)                  _BTLrr(X86_BT, RS, RD)
        !          1032: #define BTLrm(RS, MD, MB, MI, MS)      _BTLrm(X86_BT, RS, MD, MB, MI, MS)
        !          1033: 
        !          1034: #define BTQir(IM, RD)                  _BTQir(X86_BT, IM, RD)
        !          1035: #define BTQim(IM, MD, MB, MI, MS)      _BTQim(X86_BT, IM, MD, MB, MI, MS)
        !          1036: #define BTQrr(RS, RD)                  _BTQrr(X86_BT, RS, RD)
        !          1037: #define BTQrm(RS, MD, MB, MI, MS)      _BTQrm(X86_BT, RS, MD, MB, MI, MS)
        !          1038: 
        !          1039: #define BTCWir(IM, RD)                 _BTWir(X86_BTC, IM, RD)
        !          1040: #define BTCWim(IM, MD, MB, MI, MS)     _BTWim(X86_BTC, IM, MD, MB, MI, MS)
        !          1041: #define BTCWrr(RS, RD)                 _BTWrr(X86_BTC, RS, RD)
        !          1042: #define BTCWrm(RS, MD, MB, MI, MS)     _BTWrm(X86_BTC, RS, MD, MB, MI, MS)
        !          1043: 
        !          1044: #define BTCLir(IM, RD)                 _BTLir(X86_BTC, IM, RD)
        !          1045: #define BTCLim(IM, MD, MB, MI, MS)     _BTLim(X86_BTC, IM, MD, MB, MI, MS)
        !          1046: #define BTCLrr(RS, RD)                 _BTLrr(X86_BTC, RS, RD)
        !          1047: #define BTCLrm(RS, MD, MB, MI, MS)     _BTLrm(X86_BTC, RS, MD, MB, MI, MS)
        !          1048: 
        !          1049: #define BTCQir(IM, RD)                 _BTQir(X86_BTC, IM, RD)
        !          1050: #define BTCQim(IM, MD, MB, MI, MS)     _BTQim(X86_BTC, IM, MD, MB, MI, MS)
        !          1051: #define BTCQrr(RS, RD)                 _BTQrr(X86_BTC, RS, RD)
        !          1052: #define BTCQrm(RS, MD, MB, MI, MS)     _BTQrm(X86_BTC, RS, MD, MB, MI, MS)
        !          1053: 
        !          1054: #define BTRWir(IM, RD)                 _BTWir(X86_BTR, IM, RD)
        !          1055: #define BTRWim(IM, MD, MB, MI, MS)     _BTWim(X86_BTR, IM, MD, MB, MI, MS)
        !          1056: #define BTRWrr(RS, RD)                 _BTWrr(X86_BTR, RS, RD)
        !          1057: #define BTRWrm(RS, MD, MB, MI, MS)     _BTWrm(X86_BTR, RS, MD, MB, MI, MS)
        !          1058: 
        !          1059: #define BTRLir(IM, RD)                 _BTLir(X86_BTR, IM, RD)
        !          1060: #define BTRLim(IM, MD, MB, MI, MS)     _BTLim(X86_BTR, IM, MD, MB, MI, MS)
        !          1061: #define BTRLrr(RS, RD)                 _BTLrr(X86_BTR, RS, RD)
        !          1062: #define BTRLrm(RS, MD, MB, MI, MS)     _BTLrm(X86_BTR, RS, MD, MB, MI, MS)
        !          1063: 
        !          1064: #define BTRQir(IM, RD)                 _BTQir(X86_BTR, IM, RD)
        !          1065: #define BTRQim(IM, MD, MB, MI, MS)     _BTQim(X86_BTR, IM, MD, MB, MI, MS)
        !          1066: #define BTRQrr(RS, RD)                 _BTQrr(X86_BTR, RS, RD)
        !          1067: #define BTRQrm(RS, MD, MB, MI, MS)     _BTQrm(X86_BTR, RS, MD, MB, MI, MS)
        !          1068: 
        !          1069: #define BTSWir(IM, RD)                 _BTWir(X86_BTS, IM, RD)
        !          1070: #define BTSWim(IM, MD, MB, MI, MS)     _BTWim(X86_BTS, IM, MD, MB, MI, MS)
        !          1071: #define BTSWrr(RS, RD)                 _BTWrr(X86_BTS, RS, RD)
        !          1072: #define BTSWrm(RS, MD, MB, MI, MS)     _BTWrm(X86_BTS, RS, MD, MB, MI, MS)
        !          1073: 
        !          1074: #define BTSLir(IM, RD)                 _BTLir(X86_BTS, IM, RD)
        !          1075: #define BTSLim(IM, MD, MB, MI, MS)     _BTLim(X86_BTS, IM, MD, MB, MI, MS)
        !          1076: #define BTSLrr(RS, RD)                 _BTLrr(X86_BTS, RS, RD)
        !          1077: #define BTSLrm(RS, MD, MB, MI, MS)     _BTLrm(X86_BTS, RS, MD, MB, MI, MS)
        !          1078: 
        !          1079: #define BTSQir(IM, RD)                 _BTQir(X86_BTS, IM, RD)
        !          1080: #define BTSQim(IM, MD, MB, MI, MS)     _BTQim(X86_BTS, IM, MD, MB, MI, MS)
        !          1081: #define BTSQrr(RS, RD)                 _BTQrr(X86_BTS, RS, RD)
        !          1082: #define BTSQrm(RS, MD, MB, MI, MS)     _BTQrm(X86_BTS, RS, MD, MB, MI, MS)
        !          1083: 
        !          1084: 
        !          1085: /* --- Move instructions --------------------------------------------------- */
        !          1086: 
        !          1087: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1088: 
        !          1089: #define MOVBrr(RS, RD)                 (_REXBrr(RS, RD),               _O_Mrm          (0x88           ,_b11,_r1(RS),_r1(RD)                           ))
        !          1090: #define MOVBmr(MD, MB, MI, MS, RD)     (_REXBmr(MB, MI, RD),           _O_r_X          (0x8a                ,_r1(RD)           ,MD,MB,MI,MS            ))
        !          1091: #define MOVBrm(RS, MD, MB, MI, MS)     (_REXBrm(RS, MB, MI),           _O_r_X          (0x88                ,_r1(RS)           ,MD,MB,MI,MS            ))
        !          1092: #define MOVBir(IM,  R)                 (_REXBrr(0, R),                 _Or_B           (0xb0,_r1(R)                                            ,_su8(IM)))
        !          1093: #define MOVBim(IM, MD, MB, MI, MS)     (_REXBrm(0, MB, MI),            _O_X_B          (0xc6                                   ,MD,MB,MI,MS    ,_su8(IM)))
        !          1094: 
        !          1095: #define MOVWrr(RS, RD)                 (_d16(), _REXLrr(RS, RD),       _O_Mrm          (0x89           ,_b11,_r2(RS),_r2(RD)                           ))
        !          1096: #define MOVWmr(MD, MB, MI, MS, RD)     (_d16(), _REXLmr(MB, MI, RD),   _O_r_X          (0x8b                ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1097: #define MOVWrm(RS, MD, MB, MI, MS)     (_d16(), _REXLrm(RS, MB, MI),   _O_r_X          (0x89                ,_r2(RS)           ,MD,MB,MI,MS            ))
        !          1098: #define MOVWir(IM,  R)                 (_d16(), _REXLrr(0, R),         _Or_W           (0xb8,_r2(R)                                            ,_su16(IM)))
        !          1099: #define MOVWim(IM, MD, MB, MI, MS)     (_d16(), _REXLrm(0, MB, MI),    _O_X_W          (0xc7                                   ,MD,MB,MI,MS    ,_su16(IM)))
        !          1100: 
        !          1101: #define MOVLrr(RS, RD)                 (_REXLrr(RS, RD),               _O_Mrm          (0x89           ,_b11,_r4(RS),_r4(RD)                           ))
        !          1102: #define MOVLmr(MD, MB, MI, MS, RD)     (_REXLmr(MB, MI, RD),           _O_r_X          (0x8b                ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1103: #define MOVLrm(RS, MD, MB, MI, MS)     (_REXLrm(RS, MB, MI),           _O_r_X          (0x89                ,_r4(RS)           ,MD,MB,MI,MS            ))
        !          1104: #define MOVLir(IM,  R)                 (_REXLrr(0, R),                 _Or_L           (0xb8,_r4(R)                                            ,IM     ))
        !          1105: #define MOVLim(IM, MD, MB, MI, MS)     (_REXLrm(0, MB, MI),            _O_X_L          (0xc7                                   ,MD,MB,MI,MS    ,IM     ))
        !          1106: 
        !          1107: #define MOVQrr(RS, RD)                 (_REXQrr(RS, RD),               _O_Mrm          (0x89           ,_b11,_r8(RS),_r8(RD)                           ))
        !          1108: #define MOVQmr(MD, MB, MI, MS, RD)     (_REXQmr(MB, MI, RD),           _O_r_X          (0x8b                ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1109: #define MOVQrm(RS, MD, MB, MI, MS)     (_REXQrm(RS, MB, MI),           _O_r_X          (0x89                ,_r8(RS)           ,MD,MB,MI,MS            ))
        !          1110: #define MOVQir(IM,  R)                 (_REXQrr(0, R),                 _Or_Q           (0xb8,_r8(R)                                            ,IM     ))
        !          1111: #define MOVQim(IM, MD, MB, MI, MS)     (_REXQrm(0, MB, MI),            _O_X_L          (0xc7                                   ,MD,MB,MI,MS    ,IM     ))
        !          1112: 
        !          1113: 
        !          1114: /* --- Unary and Multiply/Divide instructions ------------------------------ */
        !          1115: 
        !          1116: enum {
        !          1117:   X86_NOT  = 2,
        !          1118:   X86_NEG  = 3,
        !          1119:   X86_MUL  = 4,
        !          1120:   X86_IMUL = 5,
        !          1121:   X86_DIV  = 6,
        !          1122:   X86_IDIV = 7,
        !          1123: };
        !          1124: 
        !          1125: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1126: 
        !          1127: #define _UNARYBr(OP, RS)               (_REXBrr(0, RS),                _O_Mrm          (0xf6           ,_b11,OP    ,_r1(RS)                            ))
        !          1128: #define _UNARYBm(OP, MD, MB, MI, MS)   (_REXBrm(0, MB, MI),            _O_r_X          (0xf6                ,OP                ,MD,MB,MI,MS            ))
        !          1129: #define _UNARYWr(OP, RS)               (_d16(), _REXLrr(0, RS),        _O_Mrm          (0xf7           ,_b11,OP    ,_r2(RS)                            ))
        !          1130: #define _UNARYWm(OP, MD, MB, MI, MS)   (_d16(), _REXLmr(MB, MI, 0),    _O_r_X          (0xf7                ,OP                ,MD,MB,MI,MS            ))
        !          1131: #define _UNARYLr(OP, RS)               (_REXLrr(0, RS),                _O_Mrm          (0xf7           ,_b11,OP    ,_r4(RS)                            ))
        !          1132: #define _UNARYLm(OP, MD, MB, MI, MS)   (_REXLmr(MB, MI, 0),            _O_r_X          (0xf7                ,OP                ,MD,MB,MI,MS            ))
        !          1133: #define _UNARYQr(OP, RS)               (_REXQrr(0, RS),                _O_Mrm          (0xf7           ,_b11,OP    ,_r8(RS)                            ))
        !          1134: #define _UNARYQm(OP, MD, MB, MI, MS)   (_REXQmr(MB, MI, 0),            _O_r_X          (0xf7                ,OP                ,MD,MB,MI,MS            ))
        !          1135: 
        !          1136: #define NOTBr(RS)                      _UNARYBr(X86_NOT, RS)
        !          1137: #define NOTBm(MD, MB, MI, MS)          _UNARYBm(X86_NOT, MD, MB, MI, MS)
        !          1138: #define NOTWr(RS)                      _UNARYWr(X86_NOT, RS)
        !          1139: #define NOTWm(MD, MB, MI, MS)          _UNARYWm(X86_NOT, MD, MB, MI, MS)
        !          1140: #define NOTLr(RS)                      _UNARYLr(X86_NOT, RS)
        !          1141: #define NOTLm(MD, MB, MI, MS)          _UNARYLm(X86_NOT, MD, MB, MI, MS)
        !          1142: #define NOTQr(RS)                      _UNARYQr(X86_NOT, RS)
        !          1143: #define NOTQm(MD, MB, MI, MS)          _UNARYQm(X86_NOT, MD, MB, MI, MS)
        !          1144: 
        !          1145: #define NEGBr(RS)                      _UNARYBr(X86_NEG, RS)
        !          1146: #define NEGBm(MD, MB, MI, MS)          _UNARYBm(X86_NEG, MD, MB, MI, MS)
        !          1147: #define NEGWr(RS)                      _UNARYWr(X86_NEG, RS)
        !          1148: #define NEGWm(MD, MB, MI, MS)          _UNARYWm(X86_NEG, MD, MB, MI, MS)
        !          1149: #define NEGLr(RS)                      _UNARYLr(X86_NEG, RS)
        !          1150: #define NEGLm(MD, MB, MI, MS)          _UNARYLm(X86_NEG, MD, MB, MI, MS)
        !          1151: #define NEGQr(RS)                      _UNARYQr(X86_NEG, RS)
        !          1152: #define NEGQm(MD, MB, MI, MS)          _UNARYQm(X86_NEG, MD, MB, MI, MS)
        !          1153: 
        !          1154: #define MULBr(RS)                      _UNARYBr(X86_MUL, RS)
        !          1155: #define MULBm(MD, MB, MI, MS)          _UNARYBm(X86_MUL, MD, MB, MI, MS)
        !          1156: #define MULWr(RS)                      _UNARYWr(X86_MUL, RS)
        !          1157: #define MULWm(MD, MB, MI, MS)          _UNARYWm(X86_MUL, MD, MB, MI, MS)
        !          1158: #define MULLr(RS)                      _UNARYLr(X86_MUL, RS)
        !          1159: #define MULLm(MD, MB, MI, MS)          _UNARYLm(X86_MUL, MD, MB, MI, MS)
        !          1160: #define MULQr(RS)                      _UNARYQr(X86_MUL, RS)
        !          1161: #define MULQm(MD, MB, MI, MS)          _UNARYQm(X86_MUL, MD, MB, MI, MS)
        !          1162: 
        !          1163: #define IMULBr(RS)                     _UNARYBr(X86_IMUL, RS)
        !          1164: #define IMULBm(MD, MB, MI, MS)         _UNARYBm(X86_IMUL, MD, MB, MI, MS)
        !          1165: #define IMULWr(RS)                     _UNARYWr(X86_IMUL, RS)
        !          1166: #define IMULWm(MD, MB, MI, MS)         _UNARYWm(X86_IMUL, MD, MB, MI, MS)
        !          1167: #define IMULLr(RS)                     _UNARYLr(X86_IMUL, RS)
        !          1168: #define IMULLm(MD, MB, MI, MS)         _UNARYLm(X86_IMUL, MD, MB, MI, MS)
        !          1169: #define IMULQr(RS)                     _UNARYQr(X86_IMUL, RS)
        !          1170: #define IMULQm(MD, MB, MI, MS)         _UNARYQm(X86_IMUL, MD, MB, MI, MS)
        !          1171: 
        !          1172: #define DIVBr(RS)                      _UNARYBr(X86_DIV, RS)
        !          1173: #define DIVBm(MD, MB, MI, MS)          _UNARYBm(X86_DIV, MD, MB, MI, MS)
        !          1174: #define DIVWr(RS)                      _UNARYWr(X86_DIV, RS)
        !          1175: #define DIVWm(MD, MB, MI, MS)          _UNARYWm(X86_DIV, MD, MB, MI, MS)
        !          1176: #define DIVLr(RS)                      _UNARYLr(X86_DIV, RS)
        !          1177: #define DIVLm(MD, MB, MI, MS)          _UNARYLm(X86_DIV, MD, MB, MI, MS)
        !          1178: #define DIVQr(RS)                      _UNARYQr(X86_DIV, RS)
        !          1179: #define DIVQm(MD, MB, MI, MS)          _UNARYQm(X86_DIV, MD, MB, MI, MS)
        !          1180: 
        !          1181: #define IDIVBr(RS)                     _UNARYBr(X86_IDIV, RS)
        !          1182: #define IDIVBm(MD, MB, MI, MS)         _UNARYBm(X86_IDIV, MD, MB, MI, MS)
        !          1183: #define IDIVWr(RS)                     _UNARYWr(X86_IDIV, RS)
        !          1184: #define IDIVWm(MD, MB, MI, MS)         _UNARYWm(X86_IDIV, MD, MB, MI, MS)
        !          1185: #define IDIVLr(RS)                     _UNARYLr(X86_IDIV, RS)
        !          1186: #define IDIVLm(MD, MB, MI, MS)         _UNARYLm(X86_IDIV, MD, MB, MI, MS)
        !          1187: #define IDIVQr(RS)                     _UNARYQr(X86_IDIV, RS)
        !          1188: #define IDIVQm(MD, MB, MI, MS)         _UNARYQm(X86_IDIV, MD, MB, MI, MS)
        !          1189: 
        !          1190: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1191: 
        !          1192: #define IMULWrr(RS, RD)                        (_d16(), _REXLrr(RD, RS),       _OO_Mrm         (0x0faf         ,_b11,_r2(RD),_r2(RS)                           ))
        !          1193: #define IMULWmr(MD, MB, MI, MS, RD)    (_d16(), _REXLmr(MB, MI, RD),   _OO_r_X         (0x0faf              ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1194: 
        !          1195: #define IMULWirr(IM,RS,RD)             (_d16(), _REXLrr(RS, RD),       _Os_Mrm_sW      (0x69           ,_b11,_r2(RS),_r2(RD)                   ,_su16(IM)      ))
        !          1196: #define IMULWimr(IM,MD,MB,MI,MS,RD)    (_d16(), _REXLmr(MB, MI, RD),   _Os_r_X_sW      (0x69                ,_r2(RD)           ,MD,MB,MI,MS    ,_su16(IM)      ))
        !          1197: 
        !          1198: #define IMULLir(IM, RD)                        (_REXLrr(0, RD),                _Os_Mrm_sL      (0x69           ,_b11,_r4(RD),_r4(RD)                   ,IM     ))
        !          1199: #define IMULLrr(RS, RD)                        (_REXLrr(RD, RS),               _OO_Mrm         (0x0faf         ,_b11,_r4(RD),_r4(RS)                           ))
        !          1200: #define IMULLmr(MD, MB, MI, MS, RD)    (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0faf              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1201: 
        !          1202: #define IMULQir(IM, RD)                        (_REXQrr(0, RD),                _Os_Mrm_sL      (0x69           ,_b11,_r8(RD),_r8(RD)                   ,IM     ))
        !          1203: #define IMULQrr(RS, RD)                        (_REXQrr(RD, RS),               _OO_Mrm         (0x0faf         ,_b11,_r8(RD),_r8(RS)                           ))
        !          1204: #define IMULQmr(MD, MB, MI, MS, RD)    (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0faf              ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1205: 
        !          1206: #define IMULLirr(IM,RS,RD)             (_REXLrr(RS, RD),               _Os_Mrm_sL      (0x69           ,_b11,_r4(RS),_r4(RD)                   ,IM     ))
        !          1207: #define IMULLimr(IM,MD,MB,MI,MS,RD)    (_REXLmr(MB, MI, RD),           _Os_r_X_sL      (0x69                ,_r4(RD)           ,MD,MB,MI,MS    ,IM     ))
        !          1208: 
        !          1209: #define IMULQirr(IM,RS,RD)             (_REXQrr(RS, RD),               _Os_Mrm_sL      (0x69           ,_b11,_r8(RS),_r8(RD)                   ,IM     ))
        !          1210: #define IMULQimr(IM,MD,MB,MI,MS,RD)    (_REXQmr(MB, MI, RD),           _Os_r_X_sL      (0x69                ,_r8(RD)           ,MD,MB,MI,MS    ,IM     ))
        !          1211: 
        !          1212: 
        !          1213: /* --- Control Flow related instructions ----------------------------------- */
        !          1214: 
        !          1215: enum {
        !          1216:   X86_CC_O   = 0x0,
        !          1217:   X86_CC_NO  = 0x1,
        !          1218:   X86_CC_NAE = 0x2,
        !          1219:   X86_CC_B   = 0x2,
        !          1220:   X86_CC_C   = 0x2,
        !          1221:   X86_CC_AE  = 0x3,
        !          1222:   X86_CC_NB  = 0x3,
        !          1223:   X86_CC_NC  = 0x3,
        !          1224:   X86_CC_E   = 0x4,
        !          1225:   X86_CC_Z   = 0x4,
        !          1226:   X86_CC_NE  = 0x5,
        !          1227:   X86_CC_NZ  = 0x5,
        !          1228:   X86_CC_BE  = 0x6,
        !          1229:   X86_CC_NA  = 0x6,
        !          1230:   X86_CC_A   = 0x7,
        !          1231:   X86_CC_NBE = 0x7,
        !          1232:   X86_CC_S   = 0x8,
        !          1233:   X86_CC_NS  = 0x9,
        !          1234:   X86_CC_P   = 0xa,
        !          1235:   X86_CC_PE  = 0xa,
        !          1236:   X86_CC_NP  = 0xb,
        !          1237:   X86_CC_PO  = 0xb,
        !          1238:   X86_CC_L   = 0xc,
        !          1239:   X86_CC_NGE = 0xc,
        !          1240:   X86_CC_GE  = 0xd,
        !          1241:   X86_CC_NL  = 0xd,
        !          1242:   X86_CC_LE  = 0xe,
        !          1243:   X86_CC_NG  = 0xe,
        !          1244:   X86_CC_G   = 0xf,
        !          1245:   X86_CC_NLE = 0xf,
        !          1246: };
        !          1247: 
        !          1248: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1249: 
        !          1250: // FIXME: no prefix is availble to encode a 32-bit operand size in 64-bit mode
        !          1251: #define CALLm(M)                                                       _O_D32          (0xe8                                   ,(int)(M)               )
        !          1252: #define _CALLLsr(R)                    (_REXLrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b010,_r4(R)                              ))
        !          1253: #define _CALLQsr(R)                    (_REXLrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b010,_r8(R)                              ))
        !          1254: #define CALLsr(R)                      ( X86_TARGET_64BIT ? _CALLQsr(R) : _CALLLsr(R))
        !          1255: #define CALLsm(D,B,I,S)                        (_REXLrm(0, B, I),              _O_r_X          (0xff                ,_b010             ,(int)(D),B,I,S         ))
        !          1256: 
        !          1257: // FIXME: no prefix is availble to encode a 32-bit operand size in 64-bit mode
        !          1258: #define JMPSm(M)                                                       _O_D8           (0xeb                                   ,(int)(M)               )
        !          1259: #define JMPm(M)                                                                _O_D32          (0xe9                                   ,(int)(M)               )
        !          1260: #define _JMPLsr(R)                     (_REXLrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b100,_r4(R)                              ))
        !          1261: #define _JMPQsr(R)                     (_REXLrr(0, R),                 _O_Mrm          (0xff           ,_b11,_b100,_r8(R)                              ))
        !          1262: #define JMPsr(R)                       ( X86_TARGET_64BIT ? _JMPQsr(R) : _JMPLsr(R))
        !          1263: #define JMPsm(D,B,I,S)                 (_REXLrm(0, B, I),              _O_r_X          (0xff                ,_b100             ,(int)(D),B,I,S         ))
        !          1264: 
        !          1265: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1266: #define JCCSii(CC, D)                                                  _O_B            (0x70|(CC)                              ,(_sc)(int)(D)          )
        !          1267: #define JCCSim(CC, D)                                                  _O_D8           (0x70|(CC)                              ,(int)(D)               )
        !          1268: #define JOSm(D)                                JCCSim(X86_CC_O,   D)
        !          1269: #define JNOSm(D)                       JCCSim(X86_CC_NO,  D)
        !          1270: #define JBSm(D)                                JCCSim(X86_CC_B,   D)
        !          1271: #define JNAESm(D)                      JCCSim(X86_CC_NAE, D)
        !          1272: #define JNBSm(D)                       JCCSim(X86_CC_NB,  D)
        !          1273: #define JAESm(D)                       JCCSim(X86_CC_AE,  D)
        !          1274: #define JESm(D)                                JCCSim(X86_CC_E,   D)
        !          1275: #define JZSm(D)                                JCCSim(X86_CC_Z,   D)
        !          1276: #define JNESm(D)                       JCCSim(X86_CC_NE,  D)
        !          1277: #define JNZSm(D)                       JCCSim(X86_CC_NZ,  D)
        !          1278: #define JBESm(D)                       JCCSim(X86_CC_BE,  D)
        !          1279: #define JNASm(D)                       JCCSim(X86_CC_NA,  D)
        !          1280: #define JNBESm(D)                      JCCSim(X86_CC_NBE, D)
        !          1281: #define JASm(D)                                JCCSim(X86_CC_A,   D)
        !          1282: #define JSSm(D)                                JCCSim(X86_CC_S,   D)
        !          1283: #define JNSSm(D)                       JCCSim(X86_CC_NS,  D)
        !          1284: #define JPSm(D)                                JCCSim(X86_CC_P,   D)
        !          1285: #define JPESm(D)                       JCCSim(X86_CC_PE,  D)
        !          1286: #define JNPSm(D)                       JCCSim(X86_CC_NP,  D)
        !          1287: #define JPOSm(D)                       JCCSim(X86_CC_PO,  D)
        !          1288: #define JLSm(D)                                JCCSim(X86_CC_L,   D)
        !          1289: #define JNGESm(D)                      JCCSim(X86_CC_NGE, D)
        !          1290: #define JNLSm(D)                       JCCSim(X86_CC_NL,  D)
        !          1291: #define JGESm(D)                       JCCSim(X86_CC_GE,  D)
        !          1292: #define JLESm(D)                       JCCSim(X86_CC_LE,  D)
        !          1293: #define JNGSm(D)                       JCCSim(X86_CC_NG,  D)
        !          1294: #define JNLESm(D)                      JCCSim(X86_CC_NLE, D)
        !          1295: #define JGSm(D)                                JCCSim(X86_CC_G,   D)
        !          1296: 
        !          1297: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1298: #define JCCii(CC, D)                                                   _OO_L           (0x0f80|(CC)                            ,(int)(D)               )
        !          1299: #define JCCim(CC, D)                                                   _OO_D32         (0x0f80|(CC)                            ,(int)(D)               )
        !          1300: #define JOm(D)                         JCCim(X86_CC_O,   D)
        !          1301: #define JNOm(D)                                JCCim(X86_CC_NO,  D)
        !          1302: #define JBm(D)                         JCCim(X86_CC_B,   D)
        !          1303: #define JNAEm(D)                       JCCim(X86_CC_NAE, D)
        !          1304: #define JNBm(D)                                JCCim(X86_CC_NB,  D)
        !          1305: #define JAEm(D)                                JCCim(X86_CC_AE,  D)
        !          1306: #define JEm(D)                         JCCim(X86_CC_E,   D)
        !          1307: #define JZm(D)                         JCCim(X86_CC_Z,   D)
        !          1308: #define JNEm(D)                                JCCim(X86_CC_NE,  D)
        !          1309: #define JNZm(D)                                JCCim(X86_CC_NZ,  D)
        !          1310: #define JBEm(D)                                JCCim(X86_CC_BE,  D)
        !          1311: #define JNAm(D)                                JCCim(X86_CC_NA,  D)
        !          1312: #define JNBEm(D)                       JCCim(X86_CC_NBE, D)
        !          1313: #define JAm(D)                         JCCim(X86_CC_A,   D)
        !          1314: #define JSm(D)                         JCCim(X86_CC_S,   D)
        !          1315: #define JNSm(D)                                JCCim(X86_CC_NS,  D)
        !          1316: #define JPm(D)                         JCCim(X86_CC_P,   D)
        !          1317: #define JPEm(D)                                JCCim(X86_CC_PE,  D)
        !          1318: #define JNPm(D)                                JCCim(X86_CC_NP,  D)
        !          1319: #define JPOm(D)                                JCCim(X86_CC_PO,  D)
        !          1320: #define JLm(D)                         JCCim(X86_CC_L,   D)
        !          1321: #define JNGEm(D)                       JCCim(X86_CC_NGE, D)
        !          1322: #define JNLm(D)                                JCCim(X86_CC_NL,  D)
        !          1323: #define JGEm(D)                                JCCim(X86_CC_GE,  D)
        !          1324: #define JLEm(D)                                JCCim(X86_CC_LE,  D)
        !          1325: #define JNGm(D)                                JCCim(X86_CC_NG,  D)
        !          1326: #define JNLEm(D)                       JCCim(X86_CC_NLE, D)
        !          1327: #define JGm(D)                         JCCim(X86_CC_G,   D)
        !          1328: 
        !          1329: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1330: #define SETCCir(CC, RD)                        (_REXBrr(0, RD),                _OO_Mrm         (0x0f90|(CC)    ,_b11,_b000,_r1(RD)                             ))
        !          1331: #define SETOr(RD)                      SETCCir(X86_CC_O,   RD)
        !          1332: #define SETNOr(RD)                     SETCCir(X86_CC_NO,  RD)
        !          1333: #define SETBr(RD)                      SETCCir(X86_CC_B,   RD)
        !          1334: #define SETNAEr(RD)                    SETCCir(X86_CC_NAE, RD)
        !          1335: #define SETNBr(RD)                     SETCCir(X86_CC_NB,  RD)
        !          1336: #define SETAEr(RD)                     SETCCir(X86_CC_AE,  RD)
        !          1337: #define SETEr(RD)                      SETCCir(X86_CC_E,   RD)
        !          1338: #define SETZr(RD)                      SETCCir(X86_CC_Z,   RD)
        !          1339: #define SETNEr(RD)                     SETCCir(X86_CC_NE,  RD)
        !          1340: #define SETNZr(RD)                     SETCCir(X86_CC_NZ,  RD)
        !          1341: #define SETBEr(RD)                     SETCCir(X86_CC_BE,  RD)
        !          1342: #define SETNAr(RD)                     SETCCir(X86_CC_NA,  RD)
        !          1343: #define SETNBEr(RD)                    SETCCir(X86_CC_NBE, RD)
        !          1344: #define SETAr(RD)                      SETCCir(X86_CC_A,   RD)
        !          1345: #define SETSr(RD)                      SETCCir(X86_CC_S,   RD)
        !          1346: #define SETNSr(RD)                     SETCCir(X86_CC_NS,  RD)
        !          1347: #define SETPr(RD)                      SETCCir(X86_CC_P,   RD)
        !          1348: #define SETPEr(RD)                     SETCCir(X86_CC_PE,  RD)
        !          1349: #define SETNPr(RD)                     SETCCir(X86_CC_NP,  RD)
        !          1350: #define SETPOr(RD)                     SETCCir(X86_CC_PO,  RD)
        !          1351: #define SETLr(RD)                      SETCCir(X86_CC_L,   RD)
        !          1352: #define SETNGEr(RD)                    SETCCir(X86_CC_NGE, RD)
        !          1353: #define SETNLr(RD)                     SETCCir(X86_CC_NL,  RD)
        !          1354: #define SETGEr(RD)                     SETCCir(X86_CC_GE,  RD)
        !          1355: #define SETLEr(RD)                     SETCCir(X86_CC_LE,  RD)
        !          1356: #define SETNGr(RD)                     SETCCir(X86_CC_NG,  RD)
        !          1357: #define SETNLEr(RD)                    SETCCir(X86_CC_NLE, RD)
        !          1358: #define SETGr(RD)                      SETCCir(X86_CC_G,   RD)
        !          1359: 
        !          1360: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1361: #define SETCCim(CC,MD,MB,MI,MS)                (_REXBrm(0, MB, MI),            _OO_r_X         (0x0f90|(CC)         ,_b000             ,MD,MB,MI,MS            ))
        !          1362: #define SETOm(D, B, I, S)              SETCCim(X86_CC_O,   D, B, I, S)
        !          1363: #define SETNOm(D, B, I, S)             SETCCim(X86_CC_NO,  D, B, I, S)
        !          1364: #define SETBm(D, B, I, S)              SETCCim(X86_CC_B,   D, B, I, S)
        !          1365: #define SETNAEm(D, B, I, S)            SETCCim(X86_CC_NAE, D, B, I, S)
        !          1366: #define SETNBm(D, B, I, S)             SETCCim(X86_CC_NB,  D, B, I, S)
        !          1367: #define SETAEm(D, B, I, S)             SETCCim(X86_CC_AE,  D, B, I, S)
        !          1368: #define SETEm(D, B, I, S)              SETCCim(X86_CC_E,   D, B, I, S)
        !          1369: #define SETZm(D, B, I, S)              SETCCim(X86_CC_Z,   D, B, I, S)
        !          1370: #define SETNEm(D, B, I, S)             SETCCim(X86_CC_NE,  D, B, I, S)
        !          1371: #define SETNZm(D, B, I, S)             SETCCim(X86_CC_NZ,  D, B, I, S)
        !          1372: #define SETBEm(D, B, I, S)             SETCCim(X86_CC_BE,  D, B, I, S)
        !          1373: #define SETNAm(D, B, I, S)             SETCCim(X86_CC_NA,  D, B, I, S)
        !          1374: #define SETNBEm(D, B, I, S)            SETCCim(X86_CC_NBE, D, B, I, S)
        !          1375: #define SETAm(D, B, I, S)              SETCCim(X86_CC_A,   D, B, I, S)
        !          1376: #define SETSm(D, B, I, S)              SETCCim(X86_CC_S,   D, B, I, S)
        !          1377: #define SETNSm(D, B, I, S)             SETCCim(X86_CC_NS,  D, B, I, S)
        !          1378: #define SETPm(D, B, I, S)              SETCCim(X86_CC_P,   D, B, I, S)
        !          1379: #define SETPEm(D, B, I, S)             SETCCim(X86_CC_PE,  D, B, I, S)
        !          1380: #define SETNPm(D, B, I, S)             SETCCim(X86_CC_NP,  D, B, I, S)
        !          1381: #define SETPOm(D, B, I, S)             SETCCim(X86_CC_PO,  D, B, I, S)
        !          1382: #define SETLm(D, B, I, S)              SETCCim(X86_CC_L,   D, B, I, S)
        !          1383: #define SETNGEm(D, B, I, S)            SETCCim(X86_CC_NGE, D, B, I, S)
        !          1384: #define SETNLm(D, B, I, S)             SETCCim(X86_CC_NL,  D, B, I, S)
        !          1385: #define SETGEm(D, B, I, S)             SETCCim(X86_CC_GE,  D, B, I, S)
        !          1386: #define SETLEm(D, B, I, S)             SETCCim(X86_CC_LE,  D, B, I, S)
        !          1387: #define SETNGm(D, B, I, S)             SETCCim(X86_CC_NG,  D, B, I, S)
        !          1388: #define SETNLEm(D, B, I, S)            SETCCim(X86_CC_NLE, D, B, I, S)
        !          1389: #define SETGm(D, B, I, S)              SETCCim(X86_CC_G,   D, B, I, S)
        !          1390: 
        !          1391: /*                                                                     _format         Opcd            ,Mod ,r      ,m         ,mem=dsp+sib    ,imm... */
        !          1392: #define CMOVWrr(CC,RS,RD)              (_d16(), _REXLrr(RD, RS),       _OO_Mrm         (0x0f40|(CC)    ,_b11,_r2(RD),_r2(RS)                           ))
        !          1393: #define CMOVWmr(CC,MD,MB,MI,MS,RD)     (_d16(), _REXLmr(MB, MI, RD),   _OO_r_X         (0x0f40|(CC)         ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1394: #define CMOVLrr(CC,RS,RD)              (_REXLrr(RD, RS),               _OO_Mrm         (0x0f40|(CC)    ,_b11,_r4(RD),_r4(RS)                           ))
        !          1395: #define CMOVLmr(CC,MD,MB,MI,MS,RD)     (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0f40|(CC)         ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1396: #define CMOVQrr(CC,RS,RD)              (_REXQrr(RD, RS),               _OO_Mrm         (0x0f40|(CC)    ,_b11,_r8(RD),_r8(RS)                           ))
        !          1397: #define CMOVQmr(CC,MD,MB,MI,MS,RD)     (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0f40|(CC)         ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1398: 
        !          1399: 
        !          1400: /* --- Push/Pop instructions ----------------------------------------------- */
        !          1401: 
        !          1402: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1403: 
        !          1404: #define POPWr(RD)                      _m32only((_d16(),               _Or             (0x58,_r2(RD)                                                   )))
        !          1405: #define POPWm(MD, MB, MI, MS)          _m32only((_d16(),               _O_r_X          (0x8f                ,_b000             ,MD,MB,MI,MS            )))
        !          1406: 
        !          1407: #define POPLr(RD)                      _m32only(                       _Or             (0x58,_r4(RD)                                                   ))
        !          1408: #define POPLm(MD, MB, MI, MS)          _m32only(                       _O_r_X          (0x8f                ,_b000             ,MD,MB,MI,MS            ))
        !          1409: 
        !          1410: #define POPQr(RD)                      _m64only((_REXQr(RD),           _Or             (0x58,_r8(RD)                                                   )))
        !          1411: #define POPQm(MD, MB, MI, MS)          _m64only((_REXQm(MB, MI),       _O_r_X          (0x8f                ,_b000             ,MD,MB,MI,MS            )))
        !          1412: 
        !          1413: #define PUSHWr(RS)                     _m32only((_d16(),               _Or             (0x50,_r2(RS)                                                   )))
        !          1414: #define PUSHWm(MD, MB, MI, MS)         _m32only((_d16(),               _O_r_X          (0xff,               ,_b110             ,MD,MB,MI,MS            )))
        !          1415: #define PUSHWi(IM)                     _m32only((_d16(),               _Os_sW          (0x68                                                   ,IM     )))
        !          1416: 
        !          1417: #define PUSHLr(RS)                     _m32only(                       _Or             (0x50,_r4(RS)                                                   ))
        !          1418: #define PUSHLm(MD, MB, MI, MS)         _m32only(                       _O_r_X          (0xff                ,_b110             ,MD,MB,MI,MS            ))
        !          1419: #define PUSHLi(IM)                     _m32only(                       _Os_sL          (0x68                                                   ,IM     ))
        !          1420: 
        !          1421: #define PUSHQr(RS)                     _m64only((_REXQr(RS),           _Or             (0x50,_r8(RS)                                                   )))
        !          1422: #define PUSHQm(MD, MB, MI, MS)         _m64only((_REXQm(MB, MI),       _O_r_X          (0xff                ,_b110             ,MD,MB,MI,MS            )))
        !          1423: #define PUSHQi(IM)                     _m64only(                       _Os_sL          (0x68                                                   ,IM     ))
        !          1424: 
        !          1425: #define POPA()                         (_d16(),                        _O              (0x61                                                           ))
        !          1426: #define POPAD()                                                                _O              (0x61                                                           )
        !          1427: 
        !          1428: #define PUSHA()                                (_d16(),                        _O              (0x60                                                           ))
        !          1429: #define PUSHAD()                                                       _O              (0x60                                                           )
        !          1430: 
        !          1431: #define POPF()                                                         _O              (0x9d                                                           )
        !          1432: #define PUSHF()                                                                _O              (0x9c                                                           )
        !          1433: 
        !          1434: 
        !          1435: /* --- Test instructions --------------------------------------------------- */
        !          1436: 
        !          1437: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1438: 
        !          1439: #define TESTBrr(RS, RD)                        (_REXBrr(RS, RD),               _O_Mrm          (0x84           ,_b11,_r1(RS),_r1(RD)                           ))
        !          1440: #define TESTBrm(RS, MD, MB, MI, MS)    (_REXBrm(RS, MB, MI),           _O_r_X          (0x84                ,_r1(RS)           ,MD,MB,MI,MS            ))
        !          1441: #define TESTBir(IM, RD)                        (X86_OPTIMIZE_ALU && ((RD) == X86_AL) ? \
        !          1442:                                        (_REXBrr(0, RD),                _O_B            (0xa8                                                   ,_u8(IM))) : \
        !          1443:                                        (_REXBrr(0, RD),                _O_Mrm_B        (0xf6           ,_b11,_b000  ,_r1(RD)                   ,_u8(IM))) )
        !          1444: #define TESTBim(IM, MD, MB, MI, MS)    (_REXBrm(0, MB, MI),            _O_r_X_B        (0xf6                ,_b000             ,MD,MB,MI,MS    ,_u8(IM)))
        !          1445: 
        !          1446: #define TESTWrr(RS, RD)                        (_d16(), _REXLrr(RS, RD),       _O_Mrm          (0x85           ,_b11,_r2(RS),_r2(RD)                           ))
        !          1447: #define TESTWrm(RS, MD, MB, MI, MS)    (_d16(), _REXLrm(RS, MB, MI),   _O_r_X          (0x85                ,_r2(RS)           ,MD,MB,MI,MS            ))
        !          1448: #define TESTWir(IM, RD)                        (X86_OPTIMIZE_ALU && ((RD) == X86_AX) ? \
        !          1449:                                        (_d16(), _REXLrr(0, RD),        _O_W            (0xa9                                                   ,_u16(IM))) : \
        !          1450:                                        (_d16(), _REXLrr(0, RD),        _O_Mrm_W        (0xf7           ,_b11,_b000  ,_r2(RD)                   ,_u16(IM))) )
        !          1451: #define TESTWim(IM, MD, MB, MI, MS)    (_d16(), _REXLrm(0, MB, MI),    _O_r_X_W        (0xf7                ,_b000             ,MD,MB,MI,MS    ,_u16(IM)))
        !          1452: 
        !          1453: #define TESTLrr(RS, RD)                        (_REXLrr(RS, RD),               _O_Mrm          (0x85           ,_b11,_r4(RS),_r4(RD)                           ))
        !          1454: #define TESTLrm(RS, MD, MB, MI, MS)    (_REXLrm(RS, MB, MI),           _O_r_X          (0x85                ,_r4(RS)           ,MD,MB,MI,MS            ))
        !          1455: #define TESTLir(IM, RD)                        (X86_OPTIMIZE_ALU && ((RD) == X86_EAX) ? \
        !          1456:                                        (_REXLrr(0, RD),                _O_L            (0xa9                                                   ,IM     )) : \
        !          1457:                                        (_REXLrr(0, RD),                _O_Mrm_L        (0xf7           ,_b11,_b000  ,_r4(RD)                   ,IM     )) )
        !          1458: #define TESTLim(IM, MD, MB, MI, MS)    (_REXLrm(0, MB, MI),            _O_r_X_L        (0xf7                ,_b000             ,MD,MB,MI,MS    ,IM     ))
        !          1459: 
        !          1460: #define TESTQrr(RS, RD)                        (_REXQrr(RS, RD),               _O_Mrm          (0x85           ,_b11,_r8(RS),_r8(RD)                           ))
        !          1461: #define TESTQrm(RS, MD, MB, MI, MS)    (_REXQrm(RS, MB, MI),           _O_r_X          (0x85                ,_r8(RS)           ,MD,MB,MI,MS            ))
        !          1462: #define TESTQir(IM, RD)                        (X86_OPTIMIZE_ALU && ((RD) == X86_RAX) ? \
        !          1463:                                        (_REXQrr(0, RD),                _O_L            (0xa9                                                   ,IM     )) : \
        !          1464:                                        (_REXQrr(0, RD),                _O_Mrm_L        (0xf7           ,_b11,_b000  ,_r8(RD)                   ,IM     )) )
        !          1465: #define TESTQim(IM, MD, MB, MI, MS)    (_REXQrm(0, MB, MI),            _O_r_X_L        (0xf7                ,_b000             ,MD,MB,MI,MS    ,IM     ))
        !          1466: 
        !          1467: 
        !          1468: /* --- Exchange instructions ----------------------------------------------- */
        !          1469: 
        !          1470: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1471: 
        !          1472: #define CMPXCHGBrr(RS, RD)             (_REXBrr(RS, RD),               _OO_Mrm         (0x0fb0         ,_b11,_r1(RS),_r1(RD)                           ))
        !          1473: #define CMPXCHGBrm(RS, MD, MB, MI, MS) (_REXBrm(RS, MB, MI),           _OO_r_X         (0x0fb0              ,_r1(RS)           ,MD,MB,MI,MS            ))
        !          1474: 
        !          1475: #define CMPXCHGWrr(RS, RD)             (_d16(), _REXLrr(RS, RD),       _OO_Mrm         (0x0fb1         ,_b11,_r2(RS),_r2(RD)                           ))
        !          1476: #define CMPXCHGWrm(RS, MD, MB, MI, MS) (_d16(), _REXLrm(RS, MB, MI),   _OO_r_X         (0x0fb1              ,_r2(RS)           ,MD,MB,MI,MS            ))
        !          1477: 
        !          1478: #define CMPXCHGLrr(RS, RD)             (_REXLrr(RS, RD),               _OO_Mrm         (0x0fb1         ,_b11,_r4(RS),_r4(RD)                           ))
        !          1479: #define CMPXCHGLrm(RS, MD, MB, MI, MS) (_REXLrm(RS, MB, MI),           _OO_r_X         (0x0fb1              ,_r4(RS)           ,MD,MB,MI,MS            ))
        !          1480: 
        !          1481: #define CMPXCHGQrr(RS, RD)             (_REXQrr(RS, RD),               _OO_Mrm         (0x0fb1         ,_b11,_r8(RS),_r8(RD)                           ))
        !          1482: #define CMPXCHGQrm(RS, MD, MB, MI, MS) (_REXQrm(RS, MB, MI),           _OO_r_X         (0x0fb1              ,_r8(RS)           ,MD,MB,MI,MS            ))
        !          1483: 
        !          1484: #define XADDBrr(RS, RD)                        (_REXBrr(RS, RD),               _OO_Mrm         (0x0fc0         ,_b11,_r1(RS),_r1(RD)                           ))
        !          1485: #define XADDBrm(RS, MD, MB, MI, MS)    (_REXBrm(RS, MB, MI),           _OO_r_X         (0x0fc0              ,_r1(RS)           ,MD,MB,MI,MS            ))
        !          1486: 
        !          1487: #define XADDWrr(RS, RD)                        (_d16(), _REXLrr(RS, RD),       _OO_Mrm         (0x0fc1         ,_b11,_r2(RS),_r2(RD)                           ))
        !          1488: #define XADDWrm(RS, MD, MB, MI, MS)    (_d16(), _REXLrm(RS, MB, MI),   _OO_r_X         (0x0fc1              ,_r2(RS)           ,MD,MB,MI,MS            ))
        !          1489: 
        !          1490: #define XADDLrr(RS, RD)                        (_REXLrr(RS, RD),               _OO_Mrm         (0x0fc1         ,_b11,_r4(RS),_r4(RD)                           ))
        !          1491: #define XADDLrm(RS, MD, MB, MI, MS)    (_REXLrm(RS, MB, MI),           _OO_r_X         (0x0fc1              ,_r4(RS)           ,MD,MB,MI,MS            ))
        !          1492: 
        !          1493: #define XADDQrr(RS, RD)                        (_REXQrr(RS, RD),               _OO_Mrm         (0x0fc1         ,_b11,_r8(RS),_r8(RD)                           ))
        !          1494: #define XADDQrm(RS, MD, MB, MI, MS)    (_REXQrm(RS, MB, MI),           _OO_r_X         (0x0fc1              ,_r8(RS)           ,MD,MB,MI,MS            ))
        !          1495: 
        !          1496: #define XCHGBrr(RS, RD)                        (_REXBrr(RS, RD),               _O_Mrm          (0x86           ,_b11,_r1(RS),_r1(RD)                           ))
        !          1497: #define XCHGBrm(RS, MD, MB, MI, MS)    (_REXBrm(RS, MB, MI),           _O_r_X          (0x86                ,_r1(RS)           ,MD,MB,MI,MS            ))
        !          1498: 
        !          1499: #define XCHGWrr(RS, RD)                        (_d16(), _REXLrr(RS, RD),       _O_Mrm          (0x87           ,_b11,_r2(RS),_r2(RD)                           ))
        !          1500: #define XCHGWrm(RS, MD, MB, MI, MS)    (_d16(), _REXLrm(RS, MB, MI),   _O_r_X          (0x87                ,_r2(RS)           ,MD,MB,MI,MS            ))
        !          1501: 
        !          1502: #define XCHGLrr(RS, RD)                        (_REXLrr(RS, RD),               _O_Mrm          (0x87           ,_b11,_r4(RS),_r4(RD)                           ))
        !          1503: #define XCHGLrm(RS, MD, MB, MI, MS)    (_REXLrm(RS, MB, MI),           _O_r_X          (0x87                ,_r4(RS)           ,MD,MB,MI,MS            ))
        !          1504: 
        !          1505: #define XCHGQrr(RS, RD)                        (_REXQrr(RS, RD),               _O_Mrm          (0x87           ,_b11,_r8(RS),_r8(RD)                           ))
        !          1506: #define XCHGQrm(RS, MD, MB, MI, MS)    (_REXQrm(RS, MB, MI),           _O_r_X          (0x87                ,_r8(RS)           ,MD,MB,MI,MS            ))
        !          1507: 
        !          1508: 
        !          1509: /* --- Increment/Decrement instructions ------------------------------------ */
        !          1510: 
        !          1511: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1512: 
        !          1513: #define DECBm(MD, MB, MI, MS)          (_REXBrm(0, MB, MI),            _O_r_X          (0xfe                ,_b001             ,MD,MB,MI,MS            ))
        !          1514: #define DECBr(RD)                      (_REXBrr(0, RD),                _O_Mrm          (0xfe           ,_b11,_b001  ,_r1(RD)                           ))
        !          1515: 
        !          1516: #define DECWm(MD, MB, MI, MS)          (_d16(), _REXLrm(0, MB, MI),    _O_r_X          (0xff                ,_b001             ,MD,MB,MI,MS            ))
        !          1517: #define DECWr(RD)                      (! X86_TARGET_64BIT ? (_d16(),  _Or             (0x48,_r2(RD)                                                   )) : \
        !          1518:                                        (_d16(), _REXLrr(0, RD),        _O_Mrm          (0xff           ,_b11,_b001  ,_r2(RD)                           )))
        !          1519: 
        !          1520: #define DECLm(MD, MB, MI, MS)          (_REXLrm(0, MB, MI),            _O_r_X          (0xff                ,_b001             ,MD,MB,MI,MS            ))
        !          1521: #define DECLr(RD)                      (! X86_TARGET_64BIT ?           _Or             (0x48,_r4(RD)                                                   ) : \
        !          1522:                                        (_REXLrr(0, RD),                _O_Mrm          (0xff           ,_b11,_b001  ,_r4(RD)                           )))
        !          1523: 
        !          1524: #define DECQm(MD, MB, MI, MS)          (_REXQrm(0, MB, MI),            _O_r_X          (0xff                ,_b001             ,MD,MB,MI,MS            ))
        !          1525: #define DECQr(RD)                      (_REXQrr(0, RD),                _O_Mrm          (0xff           ,_b11,_b001  ,_r8(RD)                           ))
        !          1526: 
        !          1527: #define INCBm(MD, MB, MI, MS)          (_REXBrm(0, MB, MI),            _O_r_X          (0xfe                ,_b000             ,MD,MB,MI,MS            ))
        !          1528: #define INCBr(RD)                      (_REXBrr(0, RD),                _O_Mrm          (0xfe           ,_b11,_b000  ,_r1(RD)                           ))
        !          1529: 
        !          1530: #define INCWm(MD, MB, MI, MS)          (_d16(), _REXLrm(0, MB, MI),    _O_r_X          (0xff                ,_b000             ,MD,MB,MI,MS            ))
        !          1531: #define INCWr(RD)                      (! X86_TARGET_64BIT ? (_d16(),  _Or             (0x40,_r2(RD)                                                   )) : \
        !          1532:                                        (_d16(), _REXLrr(0, RD),        _O_Mrm          (0xff           ,_b11,_b000  ,_r2(RD)                           )) )
        !          1533: 
        !          1534: #define INCLm(MD, MB, MI, MS)          (_REXLrm(0, MB, MI),            _O_r_X          (0xff                ,_b000             ,MD,MB,MI,MS            ))
        !          1535: #define INCLr(RD)                      (! X86_TARGET_64BIT ?           _Or             (0x40,_r4(RD)                                                   ) : \
        !          1536:                                        (_REXLrr(0, RD),                _O_Mrm          (0xff           ,_b11,_b000  ,_r4(RD)                           )))
        !          1537: 
        !          1538: #define INCQm(MD, MB, MI, MS)          (_REXQrm(0, MB, MI),            _O_r_X          (0xff                ,_b000             ,MD,MB,MI,MS            ))
        !          1539: #define INCQr(RD)                      (_REXQrr(0, RD),                _O_Mrm          (0xff           ,_b11,_b000  ,_r8(RD)                           ))
        !          1540: 
        !          1541: 
        !          1542: /* --- Misc instructions --------------------------------------------------- */
        !          1543: 
        !          1544: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1545: 
        !          1546: #define BSFWrr(RS, RD)                 (_d16(), _REXLrr(RD, RS),       _OO_Mrm         (0x0fbc         ,_b11,_r2(RD),_r2(RS)                           ))
        !          1547: #define BSFWmr(MD, MB, MI, MS, RD)     (_d16(), _REXLmr(MB, MI, RD),   _OO_r_X         (0x0fbc              ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1548: #define BSRWrr(RS, RD)                 (_d16(), _REXLrr(RD, RS),       _OO_Mrm         (0x0fbd         ,_b11,_r2(RD),_r2(RS)                           ))
        !          1549: #define BSRWmr(MD, MB, MI, MS, RD)     (_d16(), _REXLmr(MB, MI, RD),   _OO_r_X         (0x0fbd              ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1550: 
        !          1551: #define BSFLrr(RS, RD)                 (_REXLrr(RD, RS),               _OO_Mrm         (0x0fbc         ,_b11,_r4(RD),_r4(RS)                           ))
        !          1552: #define BSFLmr(MD, MB, MI, MS, RD)     (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0fbc              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1553: #define BSRLrr(RS, RD)                 (_REXLrr(RD, RS),               _OO_Mrm         (0x0fbd         ,_b11,_r4(RD),_r4(RS)                           ))
        !          1554: #define BSRLmr(MD, MB, MI, MS, RD)     (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0fbd              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1555: 
        !          1556: #define BSFQrr(RS, RD)                 (_REXQrr(RD, RS),               _OO_Mrm         (0x0fbc         ,_b11,_r8(RD),_r8(RS)                           ))
        !          1557: #define BSFQmr(MD, MB, MI, MS, RD)     (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0fbc              ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1558: #define BSRQrr(RS, RD)                 (_REXQrr(RD, RS),               _OO_Mrm         (0x0fbd         ,_b11,_r8(RD),_r8(RS)                           ))
        !          1559: #define BSRQmr(MD, MB, MI, MS, RD)     (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0fbd              ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1560: 
        !          1561: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1562: 
        !          1563: #define MOVSBWrr(RS, RD)               (_d16(), _REXBLrr(RD, RS),      _OO_Mrm         (0x0fbe         ,_b11,_r2(RD),_r1(RS)                           ))
        !          1564: #define MOVSBWmr(MD, MB, MI, MS, RD)   (_d16(), _REXLmr(MB, MI, RD),   _OO_r_X         (0x0fbe              ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1565: #define MOVZBWrr(RS, RD)               (_d16(), _REXBLrr(RD, RS),      _OO_Mrm         (0x0fb6         ,_b11,_r2(RD),_r1(RS)                           ))
        !          1566: #define MOVZBWmr(MD, MB, MI, MS, RD)   (_d16(), _REXLmr(MB, MI, RD),   _OO_r_X         (0x0fb6              ,_r2(RD)           ,MD,MB,MI,MS            ))
        !          1567: 
        !          1568: #define MOVSBLrr(RS, RD)               (_REXBLrr(RD, RS),              _OO_Mrm         (0x0fbe         ,_b11,_r4(RD),_r1(RS)                           ))
        !          1569: #define MOVSBLmr(MD, MB, MI, MS, RD)   (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0fbe              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1570: #define MOVZBLrr(RS, RD)               (_REXBLrr(RD, RS),              _OO_Mrm         (0x0fb6         ,_b11,_r4(RD),_r1(RS)                           ))
        !          1571: #define MOVZBLmr(MD, MB, MI, MS, RD)   (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0fb6              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1572: 
        !          1573: #define MOVSBQrr(RS, RD)               (_REXQrr(RD, RS),               _OO_Mrm         (0x0fbe         ,_b11,_r8(RD),_r1(RS)                           ))
        !          1574: #define MOVSBQmr(MD, MB, MI, MS, RD)   (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0fbe              ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1575: #define MOVZBQrr(RS, RD)               (_REXQrr(RD, RS),               _OO_Mrm         (0x0fb6         ,_b11,_r8(RD),_r1(RS)                           ))
        !          1576: #define MOVZBQmr(MD, MB, MI, MS, RD)   (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0fb6              ,_r8(RD)           ,MD,MB,MI,MS            ))
        !          1577: 
        !          1578: #define MOVSWLrr(RS, RD)               (_REXLrr(RD, RS),               _OO_Mrm         (0x0fbf         ,_b11,_r4(RD),_r2(RS)                           ))
        !          1579: #define MOVSWLmr(MD, MB, MI, MS, RD)   (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0fbf              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1580: #define MOVZWLrr(RS, RD)               (_REXLrr(RD, RS),               _OO_Mrm         (0x0fb7         ,_b11,_r4(RD),_r2(RS)                           ))
        !          1581: #define MOVZWLmr(MD, MB, MI, MS, RD)   (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0fb7              ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1582: 
        !          1583: #define MOVSWQrr(RS, RD)               _m64only((_REXQrr(RD, RS),      _OO_Mrm         (0x0fbf         ,_b11,_r8(RD),_r2(RS)                           )))
        !          1584: #define MOVSWQmr(MD, MB, MI, MS, RD)   _m64only((_REXQmr(MB, MI, RD),  _OO_r_X         (0x0fbf              ,_r8(RD)           ,MD,MB,MI,MS            )))
        !          1585: #define MOVZWQrr(RS, RD)               _m64only((_REXQrr(RD, RS),      _OO_Mrm         (0x0fb7         ,_b11,_r8(RD),_r2(RS)                           )))
        !          1586: #define MOVZWQmr(MD, MB, MI, MS, RD)   _m64only((_REXQmr(MB, MI, RD),  _OO_r_X         (0x0fb7              ,_r8(RD)           ,MD,MB,MI,MS            )))
        !          1587: 
        !          1588: #define MOVSLQrr(RS, RD)               _m64only((_REXQrr(RD, RS),      _O_Mrm          (0x63           ,_b11,_r8(RD),_r4(RS)                           )))
        !          1589: #define MOVSLQmr(MD, MB, MI, MS, RD)   _m64only((_REXQmr(MB, MI, RD),  _O_r_X          (0x63                ,_r8(RD)           ,MD,MB,MI,MS            )))
        !          1590: 
        !          1591: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1592: 
        !          1593: #define LEALmr(MD, MB, MI, MS, RD)     (_REXLmr(MB, MI, RD),           _O_r_X          (0x8d                ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1594: #define LEAQmr(MD, MB, MI, MS, RD)     (_REXQmr(MB, MI, RD),           _O_r_X          (0x8d                ,_r4(RD)           ,MD,MB,MI,MS            ))
        !          1595: 
        !          1596: #define BSWAPLr(R)                     (_REXLrr(0, R),                 _OOr            (0x0fc8,_r4(R)                                                  ))
        !          1597: #define BSWAPQr(R)                     (_REXQrr(0, R),                 _OOr            (0x0fc8,_r8(R)                                                  ))
        !          1598: 
        !          1599: #define CLC()                                                          _O              (0xf8                                                           )
        !          1600: #define STC()                                                          _O              (0xf9                                                           )
        !          1601: #define CMC()                                                          _O              (0xf5                                                           )
        !          1602: 
        !          1603: #define CLD()                                                          _O              (0xfc                                                           )
        !          1604: #define STD()                                                          _O              (0xfd                                                           )
        !          1605: 
        !          1606: #define CBTW()                         (_d16(),                        _O              (0x98                                                           ))
        !          1607: #define CWTL()                                                         _O              (0x98                                                           )
        !          1608: #define CLTQ()                         _m64only(_REXQrr(0, 0),         _O              (0x98                                                           ))
        !          1609: 
        !          1610: #define CBW                            CBTW
        !          1611: #define CWDE                           CWTL
        !          1612: #define CDQE                           CLTQ
        !          1613: 
        !          1614: #define CWTD()                         (_d16(),                        _O              (0x99                                                           ))
        !          1615: #define CLTD()                                                         _O              (0x99                                                           )
        !          1616: #define CQTO()                         _m64only(_REXQrr(0, 0),         _O              (0x99                                                           ))
        !          1617: 
        !          1618: #define CWD                            CWTD
        !          1619: #define CDQ                            CLTD
        !          1620: #define CQO                            CQTO
        !          1621: 
        !          1622: #define LAHF()                                                         _O              (0x9f                                                           )
        !          1623: #define SAHF()                                                         _O              (0x9e                                                           )
        !          1624: 
        !          1625: /*                                                                     _format         Opcd            ,Mod ,r     ,m          ,mem=dsp+sib    ,imm... */
        !          1626: 
        !          1627: #define CPUID()                                                                _OO             (0x0fa2                                                         )
        !          1628: #define RDTSC()                                                                _OO             (0xff31                                                         )
        !          1629: 
        !          1630: #define ENTERii(W, B)                                                  _O_W_B          (0xc8                                             ,_su16(W),_su8(B))
        !          1631: 
        !          1632: #define LEAVE()                                                                _O              (0xc9                                                           )
        !          1633: #define RET()                                                          _O              (0xc3                                                           )
        !          1634: #define RETi(IM)                                                       _O_W            (0xc2                                                   ,_su16(IM))
        !          1635: 
        !          1636: #define NOP()                                                          _O              (0x90                                                           )
        !          1637: 
        !          1638: 
        !          1639: /* --- Media 64-bit instructions ------------------------------------------- */
        !          1640: 
        !          1641: enum {
        !          1642:   X86_MMX_PABSB                = 0x1c, // 2P
        !          1643:   X86_MMX_PABSW                = 0x1d, // 2P
        !          1644:   X86_MMX_PABSD                = 0x1e, // 2P
        !          1645:   X86_MMX_PACKSSWB     = 0x63,
        !          1646:   X86_MMX_PACKSSDW     = 0x6b,
        !          1647:   X86_MMX_PACKUSWB     = 0x67,
        !          1648:   X86_MMX_PADDB                = 0xfc,
        !          1649:   X86_MMX_PADDW                = 0xfd,
        !          1650:   X86_MMX_PADDD                = 0xfe,
        !          1651:   X86_MMX_PADDQ                = 0xd4,
        !          1652:   X86_MMX_PADDSB       = 0xec,
        !          1653:   X86_MMX_PADDSW       = 0xed,
        !          1654:   X86_MMX_PADDUSB      = 0xdc,
        !          1655:   X86_MMX_PADDUSW      = 0xdd,
        !          1656:   X86_MMX_PAND         = 0xdb,
        !          1657:   X86_MMX_PANDN                = 0xdf,
        !          1658:   X86_MMX_PAVGB                = 0xe0,
        !          1659:   X86_MMX_PAVGW                = 0xe3,
        !          1660:   X86_MMX_PCMPEQB      = 0x74,
        !          1661:   X86_MMX_PCMPEQW      = 0x75,
        !          1662:   X86_MMX_PCMPEQD      = 0x76,
        !          1663:   X86_MMX_PCMPGTB      = 0x64,
        !          1664:   X86_MMX_PCMPGTW      = 0x65,
        !          1665:   X86_MMX_PCMPGTD      = 0x66,
        !          1666:   X86_MMX_PEXTRW       = 0xc5, // 64, /r ib
        !          1667:   X86_MMX_PHADDW       = 0x01, // 2P
        !          1668:   X86_MMX_PHADDD       = 0x02, // 2P
        !          1669:   X86_MMX_PHADDSW      = 0x03, // 2P
        !          1670:   X86_MMX_PHSUBW       = 0x05, // 2P
        !          1671:   X86_MMX_PHSUBD       = 0x06, // 2P
        !          1672:   X86_MMX_PHSUBSW      = 0x07, // 2P
        !          1673:   X86_MMX_PINSRW       = 0xc4, // 64, /r ib
        !          1674:   X86_MMX_PMADDUBSW    = 0x04, // 2P
        !          1675:   X86_MMX_PMADDWD      = 0xf5,
        !          1676:   X86_MMX_PMAXSW       = 0xee,
        !          1677:   X86_MMX_PMAXUB       = 0xde,
        !          1678:   X86_MMX_PMINSW       = 0xea,
        !          1679:   X86_MMX_PMINUB       = 0xda,
        !          1680:   X86_MMX_PMOVMSKB     = 0xd7, // 64
        !          1681:   X86_MMX_PMULHRSW     = 0x0b, // 2P
        !          1682:   X86_MMX_PMULHUW      = 0xe4,
        !          1683:   X86_MMX_PMULHW       = 0xe5,
        !          1684:   X86_MMX_PMULLW       = 0xd5,
        !          1685:   X86_MMX_PMULUDQ      = 0xf4,
        !          1686:   X86_MMX_POR          = 0xeb,
        !          1687:   X86_MMX_PSADBW       = 0xf6,
        !          1688:   X86_MMX_PSHUFB       = 0x00, // 2P
        !          1689:   X86_MMX_PSHUFW       = 0x70, // /r ib
        !          1690:   X86_MMX_PSIGNB       = 0x08, // 2P
        !          1691:   X86_MMX_PSIGNW       = 0x09, // 2P
        !          1692:   X86_MMX_PSIGND       = 0x0a, // 2P
        !          1693:   X86_MMX_PSLLW                = 0xf1,
        !          1694:   X86_MMX_PSLLWi       = 0x71, // /6 ib
        !          1695:   X86_MMX_PSLLD                = 0xf2,
        !          1696:   X86_MMX_PSLLDi       = 0x72, // /6 ib
        !          1697:   X86_MMX_PSLLQ                = 0xf3,
        !          1698:   X86_MMX_PSLLQi       = 0x73, // /6 ib
        !          1699:   X86_MMX_PSRAW                = 0xe1,
        !          1700:   X86_MMX_PSRAWi       = 0x71, // /4 ib
        !          1701:   X86_MMX_PSRAD                = 0xe2,
        !          1702:   X86_MMX_PSRADi       = 0x72, // /4 ib
        !          1703:   X86_MMX_PSRLW                = 0xd1,
        !          1704:   X86_MMX_PSRLWi       = 0x71, // /2 ib
        !          1705:   X86_MMX_PSRLD                = 0xd2,
        !          1706:   X86_MMX_PSRLDi       = 0x72, // /2 ib
        !          1707:   X86_MMX_PSRLQ                = 0xd3,
        !          1708:   X86_MMX_PSRLQi       = 0x73, // /2 ib
        !          1709:   X86_MMX_PSUBB                = 0xf8,
        !          1710:   X86_MMX_PSUBW                = 0xf9,
        !          1711:   X86_MMX_PSUBD                = 0xfa,
        !          1712:   X86_MMX_PSUBQ                = 0xfb,
        !          1713:   X86_MMX_PSUBSB       = 0xe8,
        !          1714:   X86_MMX_PSUBSW       = 0xe9,
        !          1715:   X86_MMX_PSUBUSB      = 0xd8,
        !          1716:   X86_MMX_PSUBUSW      = 0xd9,
        !          1717:   X86_MMX_PUNPCKHBW    = 0x68,
        !          1718:   X86_MMX_PUNPCKHWD    = 0x69,
        !          1719:   X86_MMX_PUNPCKHDQ    = 0x6a,
        !          1720:   X86_MMX_PUNPCKLBW    = 0x60,
        !          1721:   X86_MMX_PUNPCKLWD    = 0x61,
        !          1722:   X86_MMX_PUNPCKLDQ    = 0x62,
        !          1723:   X86_MMX_PXOR         = 0xef,
        !          1724: };
        !          1725: 
        !          1726: #define __MMXLrr(OP,RS,RSA,RD,RDA)             (_REXLrr(RD, RS),       _OO_Mrm         (0x0f00|(OP)    ,_b11,RDA(RD),RSA(RS)                           ))
        !          1727: #define __MMXLmr(OP,MD,MB,MI,MS,RD,RDA)                (_REXLmr(MB, MI, RD),   _OO_r_X         (0x0f00|(OP)         ,RDA(RD)           ,MD,MB,MI,MS            ))
        !          1728: #define __MMXLrm(OP,RS,RSA,MD,MB,MI,MS)                (_REXLrm(RS, MB, MI),   _OO_r_X         (0x0f00|(OP)         ,RSA(RS)           ,MD,MB,MI,MS            ))
        !          1729: #define __MMXLirr(OP,IM,RS,RSA,RD,RDA)         (_REXLrr(RD, RS),       _OO_Mrm_B       (0x0f00|(OP)    ,_b11,RDA(RD),RSA(RS)                   ,_u8(IM)))
        !          1730: #define __MMXLimr(OP,IM,MD,MB,MI,MS,RD,RDA)    (_REXLmr(MB, MI, RS),   _OO_r_X_B       (0x0f00|(OP)         ,RDA(RD)           ,MD,MB,MI,MS    ,_u8(IM)))
        !          1731: #define __MMXQrr(OP,RS,RSA,RD,RDA)             (_REXQrr(RD, RS),       _OO_Mrm         (0x0f00|(OP)    ,_b11,RDA(RD),RSA(RS)                           ))
        !          1732: #define __MMXQmr(OP,MD,MB,MI,MS,RD,RDA)                (_REXQmr(MB, MI, RD),   _OO_r_X         (0x0f00|(OP)         ,RDA(RD)           ,MD,MB,MI,MS            ))
        !          1733: #define __MMXQrm(OP,RS,RSA,MD,MB,MI,MS)                (_REXQrm(RS, MB, MI),   _OO_r_X         (0x0f00|(OP)         ,RSA(RS)           ,MD,MB,MI,MS            ))
        !          1734: #define __MMXQirr(OP,IM,RS,RSA,RD,RDA)         (_REXQrr(RD, RS),       _OO_Mrm_B       (0x0f00|(OP)    ,_b11,RDA(RD),RSA(RS)                   ,_u8(IM)))
        !          1735: #define __MMXQimr(OP,IM,MD,MB,MI,MS,RD,RDA)    (_REXQmr(MB, MI, RS),   _OO_r_X_B       (0x0f00|(OP)         ,RDA(RD)           ,MD,MB,MI,MS    ,_u8(IM)))
        !          1736: #define __MMX1Lrr(PX,OP,RS,RSA,RD,RDA)         (_REXLrr(RD, RS),       _B(0x0f),_OO_Mrm(((PX)<<8)|(OP) ,_b11,RDA(RD),RSA(RS)                           ))
        !          1737: #define __MMX1Lmr(PX,OP,MD,MB,MI,MS,RD,RDA)    (_REXLmr(MB, MI, RD),   _B(0x0f),_OO_r_X(((PX)<<8)|(OP)      ,RDA(RD)           ,MD,MB,MI,MS            ))
        !          1738: #define __MMX1Lrm(PX,OP,RS,RSA,MD,MB,MI,MS)    (_REXLrm(RS, MB, MI),   _B(0x0f),_OO_r_X(((PX)<<8)|(OP)      ,RSA(RS)           ,MD,MB,MI,MS            ))
        !          1739: 
        !          1740: #define _MMXLrr(OP,RS,RD)              __MMXLrr(OP,RS,_rM,RD,_rM)
        !          1741: #define _MMXLmr(OP,MD,MB,MI,MS,RD)     __MMXLmr(OP,MD,MB,MI,MS,RD,_rM)
        !          1742: #define _MMXLrm(OP,RS,MD,MB,MI,MS)     __MMXLrm(OP,RS,_rM,MD,MB,MI,MS)
        !          1743: #define _MMXQrr(OP,RS,RD)              __MMXQrr(OP,RS,_rM,RD,_rM)
        !          1744: #define _MMXQmr(OP,MD,MB,MI,MS,RD)     __MMXQmr(OP,MD,MB,MI,MS,RD,_rM)
        !          1745: #define _MMXQrm(OP,RS,MD,MB,MI,MS)     __MMXQrm(OP,RS,_rM,MD,MB,MI,MS)
        !          1746: #define _2P_MMXLrr(OP,RS,RD)           __MMX1Lrr(0x38, OP,RS,_rM,RD,_rM)
        !          1747: #define _2P_MMXLmr(OP,MD,MB,MI,MS,RD)  __MMX1Lmr(0x38, OP,MD,MB,MI,MS,RD,_rM)
        !          1748: #define _2P_MMXLrm(OP,RS,MD,MB,MI,MS)  __MMX1Lrm(0x38, OP,RS,_rM,MD,MB,MI,MS)
        !          1749: 
        !          1750: #define MMX_MOVDMDrr(RS, RD)           __MMXLrr(0x6e, RS,_r4, RD,_rM)
        !          1751: #define MMX_MOVQMDrr(RS, RD)           __MMXQrr(0x6e, RS,_r8, RD,_rM)
        !          1752: #define MMX_MOVDMSrr(RS, RD)           __MMXLrr(0x7e, RD,_r4, RS,_rM)
        !          1753: #define MMX_MOVQMSrr(RS, RD)           __MMXQrr(0x7e, RD,_r8, RS,_rM)
        !          1754: 
        !          1755: #define MMX_MOVDmr(MD, MB, MI, MS, RD) _MMXLmr(0x6e, MD, MB, MI, MS, RD)
        !          1756: #define MMX_MOVDrm(RS, MD, MB, MI, MS) _MMXLrm(0x7e, RS, MD, MB, MI, MS)
        !          1757: #define MMX_MOVQrr(RS, RD)             _MMXLrr(0x6f, RS, RD)
        !          1758: #define MMX_MOVQmr(MD, MB, MI, MS, RD) _MMXLmr(0x6f, MD, MB, MI, MS, RD)
        !          1759: #define MMX_MOVQrm(RS, MD, MB, MI, MS) _MMXLrm(0x7f, RS, MD, MB, MI, MS)
        !          1760: 
        !          1761: // Original MMX instructions
        !          1762: #define MMX_PACKSSWBrr(RS, RD)         _MMXLrr(X86_MMX_PACKSSWB,RS,RD)
        !          1763: #define MMX_PACKSSWBmr(MD,MB,MI,MS,RD) _MMXLmr(X86_MMX_PACKSSWB, MD, MB, MI, MS, RD)
        !          1764: #define MMX_PACKSSDWrr(RS, RD)         _MMXLrr(X86_MMX_PACKSSDW,RS,RD)
        !          1765: #define MMX_PACKSSDWmr(MD,MB,MI,MS,RD) _MMXLmr(X86_MMX_PACKSSDW, MD, MB, MI, MS, RD)
        !          1766: #define MMX_PACKUSWBrr(RS, RD)         _MMXLrr(X86_MMX_PACKUSWB,RS,RD)
        !          1767: #define MMX_PACKUSWBmr(MD,MB,MI,MS,RD) _MMXLmr(X86_MMX_PACKUSWB, MD, MB, MI, MS, RD)
        !          1768: #define MMX_PADDBrr(RS, RD)            _MMXLrr(X86_MMX_PADDB,RS,RD)
        !          1769: #define MMX_PADDBmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PADDB, MD, MB, MI, MS, RD)
        !          1770: #define MMX_PADDWrr(RS, RD)            _MMXLrr(X86_MMX_PADDW,RS,RD)
        !          1771: #define MMX_PADDWmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PADDW, MD, MB, MI, MS, RD)
        !          1772: #define MMX_PADDDrr(RS, RD)            _MMXLrr(X86_MMX_PADDD,RS,RD)
        !          1773: #define MMX_PADDDmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PADDD, MD, MB, MI, MS, RD)
        !          1774: #define MMX_PADDQrr(RS, RD)            _MMXLrr(X86_MMX_PADDQ,RS,RD)
        !          1775: #define MMX_PADDQmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PADDQ, MD, MB, MI, MS, RD)
        !          1776: #define MMX_PADDSBrr(RS, RD)           _MMXLrr(X86_MMX_PADDSB,RS,RD)
        !          1777: #define MMX_PADDSBmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PADDSB, MD, MB, MI, MS, RD)
        !          1778: #define MMX_PADDSWrr(RS, RD)           _MMXLrr(X86_MMX_PADDSW,RS,RD)
        !          1779: #define MMX_PADDSWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PADDSW, MD, MB, MI, MS, RD)
        !          1780: #define MMX_PADDUSBrr(RS, RD)          _MMXLrr(X86_MMX_PADDUSB,RS,RD)
        !          1781: #define MMX_PADDUSBmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PADDUSB, MD, MB, MI, MS, RD)
        !          1782: #define MMX_PADDUSWrr(RS, RD)          _MMXLrr(X86_MMX_PADDUSW,RS,RD)
        !          1783: #define MMX_PADDUSWmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PADDUSW, MD, MB, MI, MS, RD)
        !          1784: #define MMX_PANDrr(RS, RD)             _MMXLrr(X86_MMX_PAND,RS,RD)
        !          1785: #define MMX_PANDmr(MD,MB,MI,MS,RD)     _MMXLmr(X86_MMX_PAND, MD, MB, MI, MS, RD)
        !          1786: #define MMX_PANDNrr(RS, RD)            _MMXLrr(X86_MMX_PANDN,RS,RD)
        !          1787: #define MMX_PANDNmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PANDN, MD, MB, MI, MS, RD)
        !          1788: #define MMX_PAVGBrr(RS, RD)            _MMXLrr(X86_MMX_PAVGB,RS,RD)
        !          1789: #define MMX_PAVGBmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PAVGB, MD, MB, MI, MS, RD)
        !          1790: #define MMX_PAVGWrr(RS, RD)            _MMXLrr(X86_MMX_PAVGW,RS,RD)
        !          1791: #define MMX_PAVGWmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PAVGW, MD, MB, MI, MS, RD)
        !          1792: #define MMX_PCMPEQBrr(RS, RD)          _MMXLrr(X86_MMX_PCMPEQB,RS,RD)
        !          1793: #define MMX_PCMPEQBmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PCMPEQB, MD, MB, MI, MS, RD)
        !          1794: #define MMX_PCMPEQWrr(RS, RD)          _MMXLrr(X86_MMX_PCMPEQW,RS,RD)
        !          1795: #define MMX_PCMPEQWmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PCMPEQW, MD, MB, MI, MS, RD)
        !          1796: #define MMX_PCMPEQDrr(RS, RD)          _MMXLrr(X86_MMX_PCMPEQD,RS,RD)
        !          1797: #define MMX_PCMPEQDmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PCMPEQD, MD, MB, MI, MS, RD)
        !          1798: #define MMX_PCMPGTBrr(RS, RD)          _MMXLrr(X86_MMX_PCMPGTB,RS,RD)
        !          1799: #define MMX_PCMPGTBmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PCMPGTB, MD, MB, MI, MS, RD)
        !          1800: #define MMX_PCMPGTWrr(RS, RD)          _MMXLrr(X86_MMX_PCMPGTW,RS,RD)
        !          1801: #define MMX_PCMPGTWmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PCMPGTW, MD, MB, MI, MS, RD)
        !          1802: #define MMX_PCMPGTDrr(RS, RD)          _MMXLrr(X86_MMX_PCMPGTD,RS,RD)
        !          1803: #define MMX_PCMPGTDmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PCMPGTD, MD, MB, MI, MS, RD)
        !          1804: #define MMX_PMADDWDrr(RS, RD)          _MMXLrr(X86_MMX_PMADDWD,RS,RD)
        !          1805: #define MMX_PMADDWDmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PMADDWD, MD, MB, MI, MS, RD)
        !          1806: #define MMX_PMAXSWrr(RS, RD)           _MMXLrr(X86_MMX_PMAXSW,RS,RD)
        !          1807: #define MMX_PMAXSWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PMAXSW, MD, MB, MI, MS, RD)
        !          1808: #define MMX_PMAXUBrr(RS, RD)           _MMXLrr(X86_MMX_PMAXUB,RS,RD)
        !          1809: #define MMX_PMAXUBmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PMAXUB, MD, MB, MI, MS, RD)
        !          1810: #define MMX_PMINSWrr(RS, RD)           _MMXLrr(X86_MMX_PMINSW,RS,RD)
        !          1811: #define MMX_PMINSWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PMINSW, MD, MB, MI, MS, RD)
        !          1812: #define MMX_PMINUBrr(RS, RD)           _MMXLrr(X86_MMX_PMINUB,RS,RD)
        !          1813: #define MMX_PMINUBmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PMINUB, MD, MB, MI, MS, RD)
        !          1814: #define MMX_PMULHUWrr(RS, RD)          _MMXLrr(X86_MMX_PMULHUW,RS,RD)
        !          1815: #define MMX_PMULHUWmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PMULHUW, MD, MB, MI, MS, RD)
        !          1816: #define MMX_PMULHWrr(RS, RD)           _MMXLrr(X86_MMX_PMULHW,RS,RD)
        !          1817: #define MMX_PMULHWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PMULHW, MD, MB, MI, MS, RD)
        !          1818: #define MMX_PMULLWrr(RS, RD)           _MMXLrr(X86_MMX_PMULLW,RS,RD)
        !          1819: #define MMX_PMULLWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PMULLW, MD, MB, MI, MS, RD)
        !          1820: #define MMX_PMULUDQrr(RS, RD)          _MMXLrr(X86_MMX_PMULUDQ,RS,RD)
        !          1821: #define MMX_PMULUDQmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PMULUDQ, MD, MB, MI, MS, RD)
        !          1822: #define MMX_PORrr(RS, RD)              _MMXLrr(X86_MMX_POR,RS,RD)
        !          1823: #define MMX_PORmr(MD,MB,MI,MS,RD)      _MMXLmr(X86_MMX_POR, MD, MB, MI, MS, RD)
        !          1824: #define MMX_PSADBWrr(RS, RD)           _MMXLrr(X86_MMX_PSADBW,RS,RD)
        !          1825: #define MMX_PSADBWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PSADBW, MD, MB, MI, MS, RD)
        !          1826: #define MMX_PSLLWir(IM, RD)            __MMXLirr(X86_MMX_PSLLWi, IM, RD,_rM, _b110,_rN)
        !          1827: #define MMX_PSLLWrr(RS, RD)            _MMXLrr(X86_MMX_PSLLW,RS,RD)
        !          1828: #define MMX_PSLLWmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSLLW, MD, MB, MI, MS, RD)
        !          1829: #define MMX_PSLLDir(IM, RD)            __MMXLirr(X86_MMX_PSLLDi, IM, RD,_rM, _b110,_rN)
        !          1830: #define MMX_PSLLDrr(RS, RD)            _MMXLrr(X86_MMX_PSLLD,RS,RD)
        !          1831: #define MMX_PSLLDmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSLLD, MD, MB, MI, MS, RD)
        !          1832: #define MMX_PSLLQir(IM, RD)            __MMXLirr(X86_MMX_PSLLQi, IM, RD,_rM, _b110,_rN)
        !          1833: #define MMX_PSLLQrr(RS, RD)            _MMXLrr(X86_MMX_PSLLQ,RS,RD)
        !          1834: #define MMX_PSLLQmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSLLQ, MD, MB, MI, MS, RD)
        !          1835: #define MMX_PSRAWir(IM, RD)            __MMXLirr(X86_MMX_PSRAWi, IM, RD,_rM, _b100,_rN)
        !          1836: #define MMX_PSRAWrr(RS, RD)            _MMXLrr(X86_MMX_PSRAW,RS,RD)
        !          1837: #define MMX_PSRAWmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSRAW, MD, MB, MI, MS, RD)
        !          1838: #define MMX_PSRADir(IM, RD)            __MMXLirr(X86_MMX_PSRADi, IM, RD,_rM, _b100,_rN)
        !          1839: #define MMX_PSRADrr(RS, RD)            _MMXLrr(X86_MMX_PSRAD,RS,RD)
        !          1840: #define MMX_PSRADmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSRAD, MD, MB, MI, MS, RD)
        !          1841: #define MMX_PSRLWir(IM, RD)            __MMXLirr(X86_MMX_PSRLWi, IM, RD,_rM, _b010,_rN)
        !          1842: #define MMX_PSRLWrr(RS, RD)            _MMXLrr(X86_MMX_PSRLW,RS,RD)
        !          1843: #define MMX_PSRLWmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSRLW, MD, MB, MI, MS, RD)
        !          1844: #define MMX_PSRLDir(IM, RD)            __MMXLirr(X86_MMX_PSRLDi, IM, RD,_rM, _b010,_rN)
        !          1845: #define MMX_PSRLDrr(RS, RD)            _MMXLrr(X86_MMX_PSRLD,RS,RD)
        !          1846: #define MMX_PSRLDmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSRLD, MD, MB, MI, MS, RD)
        !          1847: #define MMX_PSRLQir(IM, RD)            __MMXLirr(X86_MMX_PSRLQi, IM, RD,_rM, _b010,_rN)
        !          1848: #define MMX_PSRLQrr(RS, RD)            _MMXLrr(X86_MMX_PSRLQ,RS,RD)
        !          1849: #define MMX_PSRLQmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSRLQ, MD, MB, MI, MS, RD)
        !          1850: #define MMX_PSUBBrr(RS, RD)            _MMXLrr(X86_MMX_PSUBB,RS,RD)
        !          1851: #define MMX_PSUBBmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSUBB, MD, MB, MI, MS, RD)
        !          1852: #define MMX_PSUBWrr(RS, RD)            _MMXLrr(X86_MMX_PSUBW,RS,RD)
        !          1853: #define MMX_PSUBWmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSUBW, MD, MB, MI, MS, RD)
        !          1854: #define MMX_PSUBDrr(RS, RD)            _MMXLrr(X86_MMX_PSUBD,RS,RD)
        !          1855: #define MMX_PSUBDmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSUBD, MD, MB, MI, MS, RD)
        !          1856: #define MMX_PSUBQrr(RS, RD)            _MMXLrr(X86_MMX_PSUBQ,RS,RD)
        !          1857: #define MMX_PSUBQmr(MD,MB,MI,MS,RD)    _MMXLmr(X86_MMX_PSUBQ, MD, MB, MI, MS, RD)
        !          1858: #define MMX_PSUBSBrr(RS, RD)           _MMXLrr(X86_MMX_PSUBSB,RS,RD)
        !          1859: #define MMX_PSUBSBmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PSUBSB, MD, MB, MI, MS, RD)
        !          1860: #define MMX_PSUBSWrr(RS, RD)           _MMXLrr(X86_MMX_PSUBSW,RS,RD)
        !          1861: #define MMX_PSUBSWmr(MD,MB,MI,MS,RD)   _MMXLmr(X86_MMX_PSUBSW, MD, MB, MI, MS, RD)
        !          1862: #define MMX_PSUBUSBrr(RS, RD)          _MMXLrr(X86_MMX_PSUBUSB,RS,RD)
        !          1863: #define MMX_PSUBUSBmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PSUBUSB, MD, MB, MI, MS, RD)
        !          1864: #define MMX_PSUBUSWrr(RS, RD)          _MMXLrr(X86_MMX_PSUBUSW,RS,RD)
        !          1865: #define MMX_PSUBUSWmr(MD,MB,MI,MS,RD)  _MMXLmr(X86_MMX_PSUBUSW, MD, MB, MI, MS, RD)
        !          1866: #define MMX_PUNPCKHBWrr(RS, RD)                _MMXLrr(X86_MMX_PUNPCKHBW,RS,RD)
        !          1867: #define MMX_PUNPCKHBWmr(MD,MB,MI,MS,RD)        _MMXLmr(X86_MMX_PUNPCKHBW, MD, MB, MI, MS, RD)
        !          1868: #define MMX_PUNPCKHWDrr(RS, RD)                _MMXLrr(X86_MMX_PUNPCKHWD,RS,RD)
        !          1869: #define MMX_PUNPCKHWDmr(MD,MB,MI,MS,RD)        _MMXLmr(X86_MMX_PUNPCKHWD, MD, MB, MI, MS, RD)
        !          1870: #define MMX_PUNPCKHDQrr(RS, RD)                _MMXLrr(X86_MMX_PUNPCKHDQ,RS,RD)
        !          1871: #define MMX_PUNPCKHDQmr(MD,MB,MI,MS,RD)        _MMXLmr(X86_MMX_PUNPCKHDQ, MD, MB, MI, MS, RD)
        !          1872: #define MMX_PUNPCKLBWrr(RS, RD)                _MMXLrr(X86_MMX_PUNPCKLBW,RS,RD)
        !          1873: #define MMX_PUNPCKLBWmr(MD,MB,MI,MS,RD)        _MMXLmr(X86_MMX_PUNPCKLBW, MD, MB, MI, MS, RD)
        !          1874: #define MMX_PUNPCKLWDrr(RS, RD)                _MMXLrr(X86_MMX_PUNPCKLWD,RS,RD)
        !          1875: #define MMX_PUNPCKLWDmr(MD,MB,MI,MS,RD)        _MMXLmr(X86_MMX_PUNPCKLWD, MD, MB, MI, MS, RD)
        !          1876: #define MMX_PUNPCKLDQrr(RS, RD)                _MMXLrr(X86_MMX_PUNPCKLDQ,RS,RD)
        !          1877: #define MMX_PUNPCKLDQmr(MD,MB,MI,MS,RD)        _MMXLmr(X86_MMX_PUNPCKLDQ, MD, MB, MI, MS, RD)
        !          1878: #define MMX_PXORrr(RS, RD)             _MMXLrr(X86_MMX_PXOR,RS,RD)
        !          1879: #define MMX_PXORmr(MD,MB,MI,MS,RD)     _MMXLmr(X86_MMX_PXOR, MD, MB, MI, MS, RD)
        !          1880: 
        !          1881: #define MMX_PSHUFWirr(IM, RS, RD)              __MMXLirr(X86_MMX_PSHUFW, IM, RS,_rM, RD,_rM)
        !          1882: #define MMX_PSHUFWimr(IM, MD, MB, MI, MS, RD)  __MMXLimr(X86_MMX_PSHUFW, IM, MD, MB, MI, MS, RD,_rM)
        !          1883: #define MMX_PEXTRWLirr(IM, RS, RD)             __MMXLirr(X86_MMX_PEXTRW, IM, RS,_rM, RD,_r4)
        !          1884: #define MMX_PEXTRWQirr(IM, RS, RD)             __MMXQirr(X86_MMX_PEXTRW, IM, RS,_rM, RD,_r8)
        !          1885: #define MMX_PINSRWLirr(IM, RS, RD)             __MMXLirr(X86_MMX_PINSRW, IM, RS,_r4, RD,_rM)
        !          1886: #define MMX_PINSRWLimr(IM, MD, MB, MI, MS, RD) __MMXLimr(X86_MMX_PINSRW, IM, MD, MB, MI, MS, RD,_r4)
        !          1887: #define MMX_PINSRWQirr(IM, RS, RD)             __MMXQirr(X86_MMX_PINSRW, IM, RS,_r4, RD,_rM)
        !          1888: #define MMX_PINSRWQimr(IM, MD, MB, MI, MS, RD) __MMXQimr(X86_MMX_PINSRW, IM, MD, MB, MI, MS, RD,_r8)
        !          1889: 
        !          1890: // Additionnal MMX instructions, brought by SSSE3 ISA
        !          1891: #define MMX_PABSBrr(RS, RD)            _2P_MMXLrr(X86_MMX_PABSB,RS,RD)
        !          1892: #define MMX_PABSBmr(MD,MB,MI,MS,RD)    _2P_MMXLmr(X86_MMX_PABSB, MD, MB, MI, MS, RD)
        !          1893: #define MMX_PABSWrr(RS, RD)            _2P_MMXLrr(X86_MMX_PABSW,RS,RD)
        !          1894: #define MMX_PABSWmr(MD,MB,MI,MS,RD)    _2P_MMXLmr(X86_MMX_PABSW, MD, MB, MI, MS, RD)
        !          1895: #define MMX_PABSDrr(RS, RD)            _2P_MMXLrr(X86_MMX_PABSD,RS,RD)
        !          1896: #define MMX_PABSDmr(MD,MB,MI,MS,RD)    _2P_MMXLmr(X86_MMX_PABSD, MD, MB, MI, MS, RD)
        !          1897: #define MMX_PHADDWrr(RS, RD)           _2P_MMXLrr(X86_MMX_PHADDW,RS,RD)
        !          1898: #define MMX_PHADDWmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PHADDW, MD, MB, MI, MS, RD)
        !          1899: #define MMX_PHADDDrr(RS, RD)           _2P_MMXLrr(X86_MMX_PHADDD,RS,RD)
        !          1900: #define MMX_PHADDDmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PHADDD, MD, MB, MI, MS, RD)
        !          1901: #define MMX_PHADDSWrr(RS, RD)          _2P_MMXLrr(X86_MMX_PHADDSW,RS,RD)
        !          1902: #define MMX_PHADDSWmr(MD,MB,MI,MS,RD)  _2P_MMXLmr(X86_MMX_PHADDSW, MD, MB, MI, MS, RD)
        !          1903: #define MMX_PHSUBWrr(RS, RD)           _2P_MMXLrr(X86_MMX_PHSUBW,RS,RD)
        !          1904: #define MMX_PHSUBWmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PHSUBW, MD, MB, MI, MS, RD)
        !          1905: #define MMX_PHSUBDrr(RS, RD)           _2P_MMXLrr(X86_MMX_PHSUBD,RS,RD)
        !          1906: #define MMX_PHSUBDmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PHSUBD, MD, MB, MI, MS, RD)
        !          1907: #define MMX_PHSUBSWrr(RS, RD)          _2P_MMXLrr(X86_MMX_PHSUBSW,RS,RD)
        !          1908: #define MMX_PHSUBSWmr(MD,MB,MI,MS,RD)  _2P_MMXLmr(X86_MMX_PHSUBSW, MD, MB, MI, MS, RD)
        !          1909: #define MMX_PMADDUBSWrr(RS, RD)                _2P_MMXLrr(X86_MMX_PMADDUBSW,RS,RD)
        !          1910: #define MMX_PMADDUBSWmr(MD,MB,MI,MS,RD)        _2P_MMXLmr(X86_MMX_PMADDUBSW, MD, MB, MI, MS, RD)
        !          1911: #define MMX_PMULHRSWrr(RS, RD)         _2P_MMXLrr(X86_MMX_PMULHRSW,RS,RD)
        !          1912: #define MMX_PMULHRSWmr(MD,MB,MI,MS,RD) _2P_MMXLmr(X86_MMX_PMULHRSW, MD, MB, MI, MS, RD)
        !          1913: #define MMX_PSHUFBrr(RS, RD)           _2P_MMXLrr(X86_MMX_PSHUFB,RS,RD)
        !          1914: #define MMX_PSHUFBmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PSHUFB, MD, MB, MI, MS, RD)
        !          1915: #define MMX_PSIGNBrr(RS, RD)           _2P_MMXLrr(X86_MMX_PSIGNB,RS,RD)
        !          1916: #define MMX_PSIGNBmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PSIGNB, MD, MB, MI, MS, RD)
        !          1917: #define MMX_PSIGNWrr(RS, RD)           _2P_MMXLrr(X86_MMX_PSIGNW,RS,RD)
        !          1918: #define MMX_PSIGNWmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PSIGNW, MD, MB, MI, MS, RD)
        !          1919: #define MMX_PSIGNDrr(RS, RD)           _2P_MMXLrr(X86_MMX_PSIGND,RS,RD)
        !          1920: #define MMX_PSIGNDmr(MD,MB,MI,MS,RD)   _2P_MMXLmr(X86_MMX_PSIGND, MD, MB, MI, MS, RD)
        !          1921: 
        !          1922: #define EMMS()                                                         _OO             (0x0f77                                                         )
        !          1923: 
        !          1924: 
        !          1925: /* --- Media 128-bit instructions ------------------------------------------ */
        !          1926: 
        !          1927: enum {
        !          1928:   X86_SSE_CC_EQ                = 0,
        !          1929:   X86_SSE_CC_LT                = 1,
        !          1930:   X86_SSE_CC_GT                = 1,
        !          1931:   X86_SSE_CC_LE                = 2,
        !          1932:   X86_SSE_CC_GE                = 2,
        !          1933:   X86_SSE_CC_U         = 3,
        !          1934:   X86_SSE_CC_NEQ       = 4,
        !          1935:   X86_SSE_CC_NLT       = 5,
        !          1936:   X86_SSE_CC_NGT       = 5,
        !          1937:   X86_SSE_CC_NLE       = 6,
        !          1938:   X86_SSE_CC_NGE       = 6,
        !          1939:   X86_SSE_CC_O         = 7
        !          1940: };
        !          1941: 
        !          1942: enum {
        !          1943:   X86_SSE_UCOMI  = 0x2e,
        !          1944:   X86_SSE_COMI   = 0x2f,
        !          1945:   X86_SSE_CMP          = 0xc2,
        !          1946:   X86_SSE_SQRT   = 0x51,
        !          1947:   X86_SSE_RSQRT  = 0x52,
        !          1948:   X86_SSE_RCP    = 0x53,
        !          1949:   X86_SSE_AND    = 0x54,
        !          1950:   X86_SSE_ANDN   = 0x55,
        !          1951:   X86_SSE_OR     = 0x56,
        !          1952:   X86_SSE_XOR    = 0x57,
        !          1953:   X86_SSE_ADD    = 0x58,
        !          1954:   X86_SSE_MUL    = 0x59,
        !          1955:   X86_SSE_SUB    = 0x5c,
        !          1956:   X86_SSE_MIN    = 0x5d,
        !          1957:   X86_SSE_DIV    = 0x5e,
        !          1958:   X86_SSE_MAX    = 0x5f,
        !          1959:   X86_SSE_CVTDQ2PD     = 0xe6,
        !          1960:   X86_SSE_CVTDQ2PS     = 0x5b,
        !          1961:   X86_SSE_CVTPD2DQ     = 0xe6,
        !          1962:   X86_SSE_CVTPD2PI     = 0x2d,
        !          1963:   X86_SSE_CVTPD2PS     = 0x5a,
        !          1964:   X86_SSE_CVTPI2PD     = 0x2a,
        !          1965:   X86_SSE_CVTPI2PS     = 0x2a,
        !          1966:   X86_SSE_CVTPS2DQ     = 0x5b,
        !          1967:   X86_SSE_CVTPS2PD     = 0x5a,
        !          1968:   X86_SSE_CVTPS2PI     = 0x2d,
        !          1969:   X86_SSE_CVTSD2SI     = 0x2d,
        !          1970:   X86_SSE_CVTSD2SS     = 0x5a,
        !          1971:   X86_SSE_CVTSI2SD     = 0x2a,
        !          1972:   X86_SSE_CVTSI2SS     = 0x2a,
        !          1973:   X86_SSE_CVTSS2SD     = 0x5a,
        !          1974:   X86_SSE_CVTSS2SI     = 0x2d,
        !          1975:   X86_SSE_CVTTPD2PI    = 0x2c,
        !          1976:   X86_SSE_CVTTPD2DQ    = 0xe6,
        !          1977:   X86_SSE_CVTTPS2DQ    = 0x5b,
        !          1978:   X86_SSE_CVTTPS2PI    = 0x2c,
        !          1979:   X86_SSE_CVTTSD2SI    = 0x2c,
        !          1980:   X86_SSE_CVTTSS2SI    = 0x2c,
        !          1981:   X86_SSE_MOVMSK       = 0x50,
        !          1982:   X86_SSE_PACKSSDW     = 0x6b,
        !          1983:   X86_SSE_PACKSSWB     = 0x63,
        !          1984:   X86_SSE_PACKUSWB     = 0x67,
        !          1985:   X86_SSE_PADDB                = 0xfc,
        !          1986:   X86_SSE_PADDD                = 0xfe,
        !          1987:   X86_SSE_PADDQ                = 0xd4,
        !          1988:   X86_SSE_PADDSB       = 0xec,
        !          1989:   X86_SSE_PADDSW       = 0xed,
        !          1990:   X86_SSE_PADDUSB      = 0xdc,
        !          1991:   X86_SSE_PADDUSW      = 0xdd,
        !          1992:   X86_SSE_PADDW                = 0xfd,
        !          1993:   X86_SSE_PAND         = 0xdb,
        !          1994:   X86_SSE_PANDN                = 0xdf,
        !          1995:   X86_SSE_PAVGB                = 0xe0,
        !          1996:   X86_SSE_PAVGW                = 0xe3,
        !          1997:   X86_SSE_PCMPEQB      = 0x74,
        !          1998:   X86_SSE_PCMPEQD      = 0x76,
        !          1999:   X86_SSE_PCMPEQW      = 0x75,
        !          2000:   X86_SSE_PCMPGTB      = 0x64,
        !          2001:   X86_SSE_PCMPGTD      = 0x66,
        !          2002:   X86_SSE_PCMPGTW      = 0x65,
        !          2003:   X86_SSE_PMADDWD      = 0xf5,
        !          2004:   X86_SSE_PMAXSW       = 0xee,
        !          2005:   X86_SSE_PMAXUB       = 0xde,
        !          2006:   X86_SSE_PMINSW       = 0xea,
        !          2007:   X86_SSE_PMINUB       = 0xda,
        !          2008:   X86_SSE_PMOVMSKB     = 0xd7,
        !          2009:   X86_SSE_PMULHUW      = 0xe4,
        !          2010:   X86_SSE_PMULHW       = 0xe5,
        !          2011:   X86_SSE_PMULLW       = 0xd5,
        !          2012:   X86_SSE_PMULUDQ      = 0xf4,
        !          2013:   X86_SSE_POR          = 0xeb,
        !          2014:   X86_SSE_PSADBW       = 0xf6,
        !          2015:   X86_SSE_PSLLD                = 0xf2,
        !          2016:   X86_SSE_PSLLQ                = 0xf3,
        !          2017:   X86_SSE_PSLLW                = 0xf1,
        !          2018:   X86_SSE_PSRAD                = 0xe2,
        !          2019:   X86_SSE_PSRAW                = 0xe1,
        !          2020:   X86_SSE_PSRLD                = 0xd2,
        !          2021:   X86_SSE_PSRLQ                = 0xd3,
        !          2022:   X86_SSE_PSRLW                = 0xd1,
        !          2023:   X86_SSE_PSUBB                = 0xf8,
        !          2024:   X86_SSE_PSUBD                = 0xfa,
        !          2025:   X86_SSE_PSUBQ                = 0xfb,
        !          2026:   X86_SSE_PSUBSB       = 0xe8,
        !          2027:   X86_SSE_PSUBSW       = 0xe9,
        !          2028:   X86_SSE_PSUBUSB      = 0xd8,
        !          2029:   X86_SSE_PSUBUSW      = 0xd9,
        !          2030:   X86_SSE_PSUBW                = 0xf9,
        !          2031:   X86_SSE_PUNPCKHBW    = 0x68,
        !          2032:   X86_SSE_PUNPCKHDQ    = 0x6a,
        !          2033:   X86_SSE_PUNPCKHQDQ   = 0x6d,
        !          2034:   X86_SSE_PUNPCKHWD    = 0x69,
        !          2035:   X86_SSE_PUNPCKLBW    = 0x60,
        !          2036:   X86_SSE_PUNPCKLDQ    = 0x62,
        !          2037:   X86_SSE_PUNPCKLQDQ   = 0x6c,
        !          2038:   X86_SSE_PUNPCKLWD    = 0x61,
        !          2039:   X86_SSE_PXOR         = 0xef,
        !          2040:   X86_SSSE3_PSHUFB     = 0x00,
        !          2041: };
        !          2042: 
        !          2043: /*                                                                     _format         Opcd            ,Mod ,r      ,m         ,mem=dsp+sib    ,imm... */
        !          2044: 
        !          2045: #define _SSSE3Lrr(OP1,OP2,RS,RSA,RD,RDA)       (_B(0x66), _REXLrr(RD,RD),      _B(0x0f), _OO_Mrm       (((OP1)<<8)|(OP2)       ,_b11,RDA(RD),RSA(RS)                           ))
        !          2046: #define _SSSE3Lmr(OP1,OP2,MD,MB,MI,MS,RD,RDA)  (_B(0x66), _REXLmr(MB, MI, RD), _B(0x0f), _OO_r_X       (((OP1)<<8)|(OP2)            ,RDA(RD)           ,MD,MB,MI,MS            ))
        !          2047: #define _SSSE3Lirr(OP1,OP2,IM,RS,RD)           (_B(0x66), _REXLrr(RD, RS),     _B(0x0f), _OO_Mrm_B     (((OP1)<<8)|(OP2)       ,_b11,_rX(RD),_rX(RS)                   ,_u8(IM)))
        !          2048: #define _SSSE3Limr(OP1,OP2,IM,MD,MB,MI,MS,RD)  (_B(0x66), _REXLmr(MB, MI, RD), _B(0x0f), _OO_r_X_B     (((OP1)<<8)|(OP2)            ,_rX(RD)           ,MD,MB,MI,MS    ,_u8(IM)))
        !          2049: 
        !          2050: #define __SSELir(OP,MO,IM,RD)          (_REXLrr(0, RD),                _OO_Mrm_B       (0x0f00|(OP)    ,_b11,MO     ,_rX(RD)                   ,_u8(IM)))
        !          2051: #define __SSELim(OP,MO,IM,MD,MB,MI,MS) (_REXLrm(0, MB, MI),            _OO_r_X_B       (0x0f00|(OP)         ,MO                ,MD,MB,MI,MS    ,_u8(IM)))
        !          2052: #define __SSELrr(OP,RS,RSA,RD,RDA)     (_REXLrr(RD, RS),               _OO_Mrm         (0x0f00|(OP)    ,_b11,RDA(RD),RSA(RS)                           ))
        !          2053: #define __SSELmr(OP,MD,MB,MI,MS,RD,RDA)        (_REXLmr(MB, MI, RD),           _OO_r_X         (0x0f00|(OP)         ,RDA(RD)           ,MD,MB,MI,MS            ))
        !          2054: #define __SSELrm(OP,RS,RSA,MD,MB,MI,MS)        (_REXLrm(RS, MB, MI),           _OO_r_X         (0x0f00|(OP)         ,RSA(RS)           ,MD,MB,MI,MS            ))
        !          2055: #define __SSELirr(OP,IM,RS,RD)         (_REXLrr(RD, RS),               _OO_Mrm_B       (0x0f00|(OP)    ,_b11,_rX(RD),_rX(RS)                   ,_u8(IM)))
        !          2056: #define __SSELimr(OP,IM,MD,MB,MI,MS,RD)        (_REXLmr(MB, MI, RD),           _OO_r_X_B       (0x0f00|(OP)         ,_rX(RD)           ,MD,MB,MI,MS    ,_u8(IM)))
        !          2057: 
        !          2058: #define __SSEQrr(OP,RS,RSA,RD,RDA)     (_REXQrr(RD, RS),               _OO_Mrm         (0x0f00|(OP)    ,_b11,RDA(RD),RSA(RS)                           ))
        !          2059: #define __SSEQmr(OP,MD,MB,MI,MS,RD,RDA)        (_REXQmr(MB, MI, RD),           _OO_r_X         (0x0f00|(OP)         ,RDA(RD)           ,MD,MB,MI,MS            ))
        !          2060: #define __SSEQrm(OP,RS,RSA,MD,MB,MI,MS)        (_REXQrm(RS, MB, MI),           _OO_r_X         (0x0f00|(OP)         ,RSA(RS)           ,MD,MB,MI,MS            ))
        !          2061: 
        !          2062: #define _SSELrr(PX,OP,RS,RSA,RD,RDA)                                   (_B(PX), __SSELrr(OP, RS, RSA, RD, RDA))
        !          2063: #define _SSELmr(PX,OP,MD,MB,MI,MS,RD,RDA)                              (_B(PX), __SSELmr(OP, MD, MB, MI, MS, RD, RDA))
        !          2064: #define _SSELrm(PX,OP,RS,RSA,MD,MB,MI,MS)                              (_B(PX), __SSELrm(OP, RS, RSA, MD, MB, MI, MS))
        !          2065: #define _SSELir(PX,OP,MO,IM,RD)                                                (_B(PX), __SSELir(OP, MO, IM, RD))
        !          2066: #define _SSELim(PX,OP,MO,IM,MD,MB,MI,MS)                               (_B(PX), __SSELim(OP, MO, IM, MD, MB, MI, MS))
        !          2067: #define _SSELirr(PX,OP,IM,RS,RD)                                       (_B(PX), __SSELirr(OP, IM, RS, RD))
        !          2068: #define _SSELimr(PX,OP,IM,MD,MB,MI,MS,RD)                              (_B(PX), __SSELimr(OP, IM, MD, MB, MI, MS, RD))
        !          2069: 
        !          2070: #define _SSEQrr(PX,OP,RS,RSA,RD,RDA)                                   (_B(PX), __SSEQrr(OP, RS, RSA, RD, RDA))
        !          2071: #define _SSEQmr(PX,OP,MD,MB,MI,MS,RD,RDA)                              (_B(PX), __SSEQmr(OP, MD, MB, MI, MS, RD, RDA))
        !          2072: #define _SSEQrm(PX,OP,RS,RSA,MD,MB,MI,MS)                              (_B(PX), __SSEQrm(OP, RS, RSA, MD, MB, MI, MS))
        !          2073: 
        !          2074: #define _SSEPSrr(OP,RS,RD)             __SSELrr(      OP, RS,_rX, RD,_rX)
        !          2075: #define _SSEPSmr(OP,MD,MB,MI,MS,RD)    __SSELmr(      OP, MD, MB, MI, MS, RD,_rX)
        !          2076: #define _SSEPSrm(OP,RS,MD,MB,MI,MS)    __SSELrm(      OP, RS,_rX, MD, MB, MI, MS)
        !          2077: #define _SSEPSirr(OP,IM,RS,RD)         __SSELirr(     OP, IM, RS, RD)
        !          2078: #define _SSEPSimr(OP,IM,MD,MB,MI,MS,RD)        __SSELimr(     OP, IM, MD, MB, MI, MS, RD)
        !          2079: 
        !          2080: #define _SSEPDrr(OP,RS,RD)              _SSELrr(0x66, OP, RS,_rX, RD,_rX)
        !          2081: #define _SSEPDmr(OP,MD,MB,MI,MS,RD)     _SSELmr(0x66, OP, MD, MB, MI, MS, RD,_rX)
        !          2082: #define _SSEPDrm(OP,RS,MD,MB,MI,MS)     _SSELrm(0x66, OP, RS,_rX, MD, MB, MI, MS)
        !          2083: #define _SSEPDirr(OP,IM,RS,RD)          _SSELirr(0x66, OP, IM, RS, RD)
        !          2084: #define _SSEPDimr(OP,IM,MD,MB,MI,MS,RD)         _SSELimr(0x66, OP, IM, MD, MB, MI, MS, RD)
        !          2085: 
        !          2086: #define _SSESSrr(OP,RS,RD)              _SSELrr(0xf3, OP, RS,_rX, RD,_rX)
        !          2087: #define _SSESSmr(OP,MD,MB,MI,MS,RD)     _SSELmr(0xf3, OP, MD, MB, MI, MS, RD,_rX)
        !          2088: #define _SSESSrm(OP,RS,MD,MB,MI,MS)     _SSELrm(0xf3, OP, RS,_rX, MD, MB, MI, MS)
        !          2089: #define _SSESSirr(OP,IM,RS,RD)          _SSELirr(0xf3, OP, IM, RS, RD)
        !          2090: #define _SSESSimr(OP,IM,MD,MB,MI,MS,RD)         _SSELimr(0xf3, OP, IM, MD, MB, MI, MS, RD)
        !          2091: 
        !          2092: #define _SSESDrr(OP,RS,RD)              _SSELrr(0xf2, OP, RS,_rX, RD,_rX)
        !          2093: #define _SSESDmr(OP,MD,MB,MI,MS,RD)     _SSELmr(0xf2, OP, MD, MB, MI, MS, RD,_rX)
        !          2094: #define _SSESDrm(OP,RS,MD,MB,MI,MS)     _SSELrm(0xf2, OP, RS,_rX, MD, MB, MI, MS)
        !          2095: #define _SSESDirr(OP,IM,RS,RD)          _SSELirr(0xf2, OP, IM, RS, RD)
        !          2096: #define _SSESDimr(OP,IM,MD,MB,MI,MS,RD)         _SSELimr(0xf2, OP, IM, MD, MB, MI, MS, RD)
        !          2097: 
        !          2098: #define ADDPSrr(RS, RD)                        _SSEPSrr(X86_SSE_ADD, RS, RD)
        !          2099: #define ADDPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_ADD, MD, MB, MI, MS, RD)
        !          2100: #define ADDPDrr(RS, RD)                        _SSEPDrr(X86_SSE_ADD, RS, RD)
        !          2101: #define ADDPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_ADD, MD, MB, MI, MS, RD)
        !          2102: 
        !          2103: #define ADDSSrr(RS, RD)                        _SSESSrr(X86_SSE_ADD, RS, RD)
        !          2104: #define ADDSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_ADD, MD, MB, MI, MS, RD)
        !          2105: #define ADDSDrr(RS, RD)                        _SSESDrr(X86_SSE_ADD, RS, RD)
        !          2106: #define ADDSDmr(MD, MB, MI, MS, RD)    _SSESDmr(X86_SSE_ADD, MD, MB, MI, MS, RD)
        !          2107: 
        !          2108: #define ANDNPSrr(RS, RD)               _SSEPSrr(X86_SSE_ANDN, RS, RD)
        !          2109: #define ANDNPSmr(MD, MB, MI, MS, RD)   _SSEPSmr(X86_SSE_ANDN, MD, MB, MI, MS, RD)
        !          2110: #define ANDNPDrr(RS, RD)               _SSEPDrr(X86_SSE_ANDN, RS, RD)
        !          2111: #define ANDNPDmr(MD, MB, MI, MS, RD)   _SSEPDmr(X86_SSE_ANDN, MD, MB, MI, MS, RD)
        !          2112: 
        !          2113: #define ANDPSrr(RS, RD)                        _SSEPSrr(X86_SSE_AND, RS, RD)
        !          2114: #define ANDPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_AND, MD, MB, MI, MS, RD)
        !          2115: #define ANDPDrr(RS, RD)                        _SSEPDrr(X86_SSE_AND, RS, RD)
        !          2116: #define ANDPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_AND, MD, MB, MI, MS, RD)
        !          2117: 
        !          2118: #define CMPPSrr(IM, RS, RD)            _SSEPSirr(X86_SSE_CMP, IM, RS, RD)
        !          2119: #define CMPPSmr(IM, MD, MB, MI, MS, RD)        _SSEPSimr(X86_SSE_CMP, IM, MD, MB, MI, MS, RD)
        !          2120: #define CMPPDrr(IM, RS, RD)            _SSEPDirr(X86_SSE_CMP, IM, RS, RD)
        !          2121: #define CMPPDmr(IM, MD, MB, MI, MS, RD)        _SSEPDimr(X86_SSE_CMP, IM, MD, MB, MI, MS, RD)
        !          2122: 
        !          2123: #define CMPSSrr(IM, RS, RD)            _SSESSirr(X86_SSE_CMP, IM, RS, RD)
        !          2124: #define CMPSSmr(IM, MD, MB, MI, MS, RD)        _SSESSimr(X86_SSE_CMP, IM, MD, MB, MI, MS, RD)
        !          2125: #define CMPSDrr(IM, RS, RD)            _SSESDirr(X86_SSE_CMP, IM, RS, RD)
        !          2126: #define CMPSDmr(IM, MD, MB, MI, MS, RD)        _SSESDimr(X86_SSE_CMP, IM, MD, MB, MI, MS, RD)
        !          2127: 
        !          2128: #define DIVPSrr(RS, RD)                        _SSEPSrr(X86_SSE_DIV, RS, RD)
        !          2129: #define DIVPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_DIV, MD, MB, MI, MS, RD)
        !          2130: #define DIVPDrr(RS, RD)                        _SSEPDrr(X86_SSE_DIV, RS, RD)
        !          2131: #define DIVPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_DIV, MD, MB, MI, MS, RD)
        !          2132: 
        !          2133: #define DIVSSrr(RS, RD)                        _SSESSrr(X86_SSE_DIV, RS, RD)
        !          2134: #define DIVSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_DIV, MD, MB, MI, MS, RD)
        !          2135: #define DIVSDrr(RS, RD)                        _SSESDrr(X86_SSE_DIV, RS, RD)
        !          2136: #define DIVSDmr(MD, MB, MI, MS, RD)    _SSESDmr(X86_SSE_DIV, MD, MB, MI, MS, RD)
        !          2137: 
        !          2138: #define MAXPSrr(RS, RD)                        _SSEPSrr(X86_SSE_MAX, RS, RD)
        !          2139: #define MAXPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_MAX, MD, MB, MI, MS, RD)
        !          2140: #define MAXPDrr(RS, RD)                        _SSEPDrr(X86_SSE_MAX, RS, RD)
        !          2141: #define MAXPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_MAX, MD, MB, MI, MS, RD)
        !          2142: 
        !          2143: #define MAXSSrr(RS, RD)                        _SSESSrr(X86_SSE_MAX, RS, RD)
        !          2144: #define MAXSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_MAX, MD, MB, MI, MS, RD)
        !          2145: #define MAXSDrr(RS, RD)                        _SSESDrr(X86_SSE_MAX, RS, RD)
        !          2146: #define MAXSDmr(MD, MB, MI, MS, RD)    _SSESDmr(X86_SSE_MAX, MD, MB, MI, MS, RD)
        !          2147: 
        !          2148: #define MINPSrr(RS, RD)                        _SSEPSrr(X86_SSE_MIN, RS, RD)
        !          2149: #define MINPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_MIN, MD, MB, MI, MS, RD)
        !          2150: #define MINPDrr(RS, RD)                        _SSEPDrr(X86_SSE_MIN, RS, RD)
        !          2151: #define MINPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_MIN, MD, MB, MI, MS, RD)
        !          2152: 
        !          2153: #define MINSSrr(RS, RD)                        _SSESSrr(X86_SSE_MIN, RS, RD)
        !          2154: #define MINSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_MIN, MD, MB, MI, MS, RD)
        !          2155: #define MINSDrr(RS, RD)                        _SSESDrr(X86_SSE_MIN, RS, RD)
        !          2156: #define MINSDmr(MD, MB, MI, MS, RD)    _SSESDmr(X86_SSE_MIN, MD, MB, MI, MS, RD)
        !          2157: 
        !          2158: #define MULPSrr(RS, RD)                        _SSEPSrr(X86_SSE_MUL, RS, RD)
        !          2159: #define MULPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_MUL, MD, MB, MI, MS, RD)
        !          2160: #define MULPDrr(RS, RD)                        _SSEPDrr(X86_SSE_MUL, RS, RD)
        !          2161: #define MULPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_MUL, MD, MB, MI, MS, RD)
        !          2162: 
        !          2163: #define MULSSrr(RS, RD)                        _SSESSrr(X86_SSE_MUL, RS, RD)
        !          2164: #define MULSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_MUL, MD, MB, MI, MS, RD)
        !          2165: #define MULSDrr(RS, RD)                        _SSESDrr(X86_SSE_MUL, RS, RD)
        !          2166: #define MULSDmr(MD, MB, MI, MS, RD)    _SSESDmr(X86_SSE_MUL, MD, MB, MI, MS, RD)
        !          2167: 
        !          2168: #define ORPSrr(RS, RD)                 _SSEPSrr(X86_SSE_OR, RS, RD)
        !          2169: #define ORPSmr(MD, MB, MI, MS, RD)     _SSEPSmr(X86_SSE_OR, MD, MB, MI, MS, RD)
        !          2170: #define ORPDrr(RS, RD)                 _SSEPDrr(X86_SSE_OR, RS, RD)
        !          2171: #define ORPDmr(MD, MB, MI, MS, RD)     _SSEPDmr(X86_SSE_OR, MD, MB, MI, MS, RD)
        !          2172: 
        !          2173: #define RCPPSrr(RS, RD)                        _SSEPSrr(X86_SSE_RCP, RS, RD)
        !          2174: #define RCPPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_RCP, MD, MB, MI, MS, RD)
        !          2175: #define RCPSSrr(RS, RD)                        _SSESSrr(X86_SSE_RCP, RS, RD)
        !          2176: #define RCPSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_RCP, MD, MB, MI, MS, RD)
        !          2177: 
        !          2178: #define RSQRTPSrr(RS, RD)              _SSEPSrr(X86_SSE_RSQRT, RS, RD)
        !          2179: #define RSQRTPSmr(MD, MB, MI, MS, RD)  _SSEPSmr(X86_SSE_RSQRT, MD, MB, MI, MS, RD)
        !          2180: #define RSQRTSSrr(RS, RD)              _SSESSrr(X86_SSE_RSQRT, RS, RD)
        !          2181: #define RSQRTSSmr(MD, MB, MI, MS, RD)  _SSESSmr(X86_SSE_RSQRT, MD, MB, MI, MS, RD)
        !          2182: 
        !          2183: #define SQRTPSrr(RS, RD)               _SSEPSrr(X86_SSE_SQRT, RS, RD)
        !          2184: #define SQRTPSmr(MD, MB, MI, MS, RD)   _SSEPSmr(X86_SSE_SQRT, MD, MB, MI, MS, RD)
        !          2185: #define SQRTPDrr(RS, RD)               _SSEPDrr(X86_SSE_SQRT, RS, RD)
        !          2186: #define SQRTPDmr(MD, MB, MI, MS, RD)   _SSEPDmr(X86_SSE_SQRT, MD, MB, MI, MS, RD)
        !          2187: 
        !          2188: #define SQRTSSrr(RS, RD)               _SSESSrr(X86_SSE_SQRT, RS, RD)
        !          2189: #define SQRTSSmr(MD, MB, MI, MS, RD)   _SSESSmr(X86_SSE_SQRT, MD, MB, MI, MS, RD)
        !          2190: #define SQRTSDrr(RS, RD)               _SSESDrr(X86_SSE_SQRT, RS, RD)
        !          2191: #define SQRTSDmr(MD, MB, MI, MS, RD)   _SSESDmr(X86_SSE_SQRT, MD, MB, MI, MS, RD)
        !          2192: 
        !          2193: #define SUBPSrr(RS, RD)                        _SSEPSrr(X86_SSE_SUB, RS, RD)
        !          2194: #define SUBPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_SUB, MD, MB, MI, MS, RD)
        !          2195: #define SUBPDrr(RS, RD)                        _SSEPDrr(X86_SSE_SUB, RS, RD)
        !          2196: #define SUBPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_SUB, MD, MB, MI, MS, RD)
        !          2197: 
        !          2198: #define SUBSSrr(RS, RD)                        _SSESSrr(X86_SSE_SUB, RS, RD)
        !          2199: #define SUBSSmr(MD, MB, MI, MS, RD)    _SSESSmr(X86_SSE_SUB, MD, MB, MI, MS, RD)
        !          2200: #define SUBSDrr(RS, RD)                        _SSESDrr(X86_SSE_SUB, RS, RD)
        !          2201: #define SUBSDmr(MD, MB, MI, MS, RD)    _SSESDmr(X86_SSE_SUB, MD, MB, MI, MS, RD)
        !          2202: 
        !          2203: #define XORPSrr(RS, RD)                        _SSEPSrr(X86_SSE_XOR, RS, RD)
        !          2204: #define XORPSmr(MD, MB, MI, MS, RD)    _SSEPSmr(X86_SSE_XOR, MD, MB, MI, MS, RD)
        !          2205: #define XORPDrr(RS, RD)                        _SSEPDrr(X86_SSE_XOR, RS, RD)
        !          2206: #define XORPDmr(MD, MB, MI, MS, RD)    _SSEPDmr(X86_SSE_XOR, MD, MB, MI, MS, RD)
        !          2207: 
        !          2208: #define COMISSrr(RS, RD)               _SSEPSrr(X86_SSE_COMI, RS, RD)
        !          2209: #define COMISSmr(MD, MB, MI, MS, RD)   _SSEPSmr(X86_SSE_COMI, MD, MB, MI, MS, RD)
        !          2210: #define COMISDrr(RS, RD)               _SSEPDrr(X86_SSE_COMI, RS, RD)
        !          2211: #define COMISDmr(MD, MB, MI, MS, RD)   _SSEPDmr(X86_SSE_COMI, MD, MB, MI, MS, RD)
        !          2212: 
        !          2213: #define UCOMISSrr(RS, RD)              _SSEPSrr(X86_SSE_UCOMI, RS, RD)
        !          2214: #define UCOMISSmr(MD, MB, MI, MS, RD)  _SSEPSmr(X86_SSE_UCOMI, MD, MB, MI, MS, RD)
        !          2215: #define UCOMISDrr(RS, RD)              _SSEPDrr(X86_SSE_UCOMI, RS, RD)
        !          2216: #define UCOMISDmr(MD, MB, MI, MS, RD)  _SSEPDmr(X86_SSE_UCOMI, MD, MB, MI, MS, RD)
        !          2217: 
        !          2218: #define MOVAPSrr(RS, RD)               _SSEPSrr(0x28, RS, RD)
        !          2219: #define MOVAPSmr(MD, MB, MI, MS, RD)   _SSEPSmr(0x28, MD, MB, MI, MS, RD)
        !          2220: #define MOVAPSrm(RS, MD, MB, MI, MS)   _SSEPSrm(0x29, RS, MD, MB, MI, MS)
        !          2221: 
        !          2222: #define MOVAPDrr(RS, RD)               _SSEPDrr(0x28, RS, RD)
        !          2223: #define MOVAPDmr(MD, MB, MI, MS, RD)   _SSEPDmr(0x28, MD, MB, MI, MS, RD)
        !          2224: #define MOVAPDrm(RS, MD, MB, MI, MS)   _SSEPDrm(0x29, RS, MD, MB, MI, MS)
        !          2225: 
        !          2226: #define CVTDQ2PDrr(RS, RD)              _SSELrr(0xf3, X86_SSE_CVTDQ2PD, RS,_rX, RD,_rX)
        !          2227: #define CVTDQ2PDmr(MD, MB, MI, MS, RD)  _SSELmr(0xf3, X86_SSE_CVTDQ2PD, MD, MB, MI, MS, RD,_rX)
        !          2228: #define CVTDQ2PSrr(RS, RD)             __SSELrr(      X86_SSE_CVTDQ2PS, RS,_rX, RD,_rX)
        !          2229: #define CVTDQ2PSmr(MD, MB, MI, MS, RD) __SSELmr(      X86_SSE_CVTDQ2PS, MD, MB, MI, MS, RD,_rX)
        !          2230: #define CVTPD2DQrr(RS, RD)              _SSELrr(0xf2, X86_SSE_CVTPD2DQ, RS,_rX, RD,_rX)
        !          2231: #define CVTPD2DQmr(MD, MB, MI, MS, RD)  _SSELmr(0xf2, X86_SSE_CVTPD2DQ, MD, MB, MI, MS, RD,_rX)
        !          2232: #define CVTPD2PIrr(RS, RD)              _SSELrr(0x66, X86_SSE_CVTPD2PI, RS,_rX, RD,_rM)
        !          2233: #define CVTPD2PImr(MD, MB, MI, MS, RD)  _SSELmr(0x66, X86_SSE_CVTPD2PI, MD, MB, MI, MS, RD,_rM)
        !          2234: #define CVTPD2PSrr(RS, RD)              _SSELrr(0x66, X86_SSE_CVTPD2PS, RS,_rX, RD,_rX)
        !          2235: #define CVTPD2PSmr(MD, MB, MI, MS, RD)  _SSELmr(0x66, X86_SSE_CVTPD2PS, MD, MB, MI, MS, RD,_rX)
        !          2236: #define CVTPI2PDrr(RS, RD)              _SSELrr(0x66, X86_SSE_CVTPI2PD, RS,_rM, RD,_rX)
        !          2237: #define CVTPI2PDmr(MD, MB, MI, MS, RD)  _SSELmr(0x66, X86_SSE_CVTPI2PD, MD, MB, MI, MS, RD,_rX)
        !          2238: #define CVTPI2PSrr(RS, RD)             __SSELrr(      X86_SSE_CVTPI2PS, RS,_rM, RD,_rX)
        !          2239: #define CVTPI2PSmr(MD, MB, MI, MS, RD) __SSELmr(      X86_SSE_CVTPI2PS, MD, MB, MI, MS, RD,_rX)
        !          2240: #define CVTPS2DQrr(RS, RD)              _SSELrr(0x66, X86_SSE_CVTPS2DQ, RS,_rX, RD,_rX)
        !          2241: #define CVTPS2DQmr(MD, MB, MI, MS, RD)  _SSELmr(0x66, X86_SSE_CVTPS2DQ, MD, MB, MI, MS, RD,_rX)
        !          2242: #define CVTPS2PDrr(RS, RD)             __SSELrr(      X86_SSE_CVTPS2PD, RS,_rX, RD,_rX)
        !          2243: #define CVTPS2PDmr(MD, MB, MI, MS, RD) __SSELmr(      X86_SSE_CVTPS2PD, MD, MB, MI, MS, RD,_rX)
        !          2244: #define CVTPS2PIrr(RS, RD)             __SSELrr(      X86_SSE_CVTPS2PI, RS,_rX, RD,_rM)
        !          2245: #define CVTPS2PImr(MD, MB, MI, MS, RD) __SSELmr(      X86_SSE_CVTPS2PI, MD, MB, MI, MS, RD,_rM)
        !          2246: #define CVTSD2SILrr(RS, RD)             _SSELrr(0xf2, X86_SSE_CVTSD2SI, RS,_rX, RD,_r4)
        !          2247: #define CVTSD2SILmr(MD, MB, MI, MS, RD)         _SSELmr(0xf2, X86_SSE_CVTSD2SI, MD, MB, MI, MS, RD,_r4)
        !          2248: #define CVTSD2SIQrr(RS, RD)             _SSEQrr(0xf2, X86_SSE_CVTSD2SI, RS,_rX, RD,_r8)
        !          2249: #define CVTSD2SIQmr(MD, MB, MI, MS, RD)         _SSEQmr(0xf2, X86_SSE_CVTSD2SI, MD, MB, MI, MS, RD,_r8)
        !          2250: #define CVTSD2SSrr(RS, RD)              _SSELrr(0xf2, X86_SSE_CVTSD2SS, RS,_rX, RD,_rX)
        !          2251: #define CVTSD2SSmr(MD, MB, MI, MS, RD)  _SSELmr(0xf2, X86_SSE_CVTSD2SS, MD, MB, MI, MS, RD,_rX)
        !          2252: #define CVTSI2SDLrr(RS, RD)             _SSELrr(0xf2, X86_SSE_CVTSI2SD, RS,_r4, RD,_rX)
        !          2253: #define CVTSI2SDLmr(MD, MB, MI, MS, RD)         _SSELmr(0xf2, X86_SSE_CVTSI2SD, MD, MB, MI, MS, RD,_rX)
        !          2254: #define CVTSI2SDQrr(RS, RD)             _SSEQrr(0xf2, X86_SSE_CVTSI2SD, RS,_r8, RD,_rX)
        !          2255: #define CVTSI2SDQmr(MD, MB, MI, MS, RD)         _SSEQmr(0xf2, X86_SSE_CVTSI2SD, MD, MB, MI, MS, RD,_rX)
        !          2256: #define CVTSI2SSLrr(RS, RD)             _SSELrr(0xf3, X86_SSE_CVTSI2SS, RS,_r4, RD,_rX)
        !          2257: #define CVTSI2SSLmr(MD, MB, MI, MS, RD)         _SSELmr(0xf3, X86_SSE_CVTSI2SS, MD, MB, MI, MS, RD,_rX)
        !          2258: #define CVTSI2SSQrr(RS, RD)             _SSEQrr(0xf3, X86_SSE_CVTSI2SS, RS,_r8, RD,_rX)
        !          2259: #define CVTSI2SSQmr(MD, MB, MI, MS, RD)         _SSEQmr(0xf3, X86_SSE_CVTSI2SS, MD, MB, MI, MS, RD,_rX)
        !          2260: #define CVTSS2SDrr(RS, RD)              _SSELrr(0xf3, X86_SSE_CVTSS2SD, RS,_rX, RD,_rX)
        !          2261: #define CVTSS2SDmr(MD, MB, MI, MS, RD)  _SSELmr(0xf3, X86_SSE_CVTSS2SD, MD, MB, MI, MS, RD,_rX)
        !          2262: #define CVTSS2SILrr(RS, RD)             _SSELrr(0xf3, X86_SSE_CVTSS2SI, RS,_rX, RD,_r4)
        !          2263: #define CVTSS2SILmr(MD, MB, MI, MS, RD)         _SSELmr(0xf3, X86_SSE_CVTSS2SI, MD, MB, MI, MS, RD,_r4)
        !          2264: #define CVTSS2SIQrr(RS, RD)             _SSEQrr(0xf3, X86_SSE_CVTSS2SI, RS,_rX, RD,_r8)
        !          2265: #define CVTSS2SIQmr(MD, MB, MI, MS, RD)         _SSEQmr(0xf3, X86_SSE_CVTSS2SI, MD, MB, MI, MS, RD,_r8)
        !          2266: #define CVTTPD2PIrr(RS, RD)             _SSELrr(0x66, X86_SSE_CVTTPD2PI, RS,_rX, RD,_rM)
        !          2267: #define CVTTPD2PImr(MD, MB, MI, MS, RD)         _SSELmr(0x66, X86_SSE_CVTTPD2PI, MD, MB, MI, MS, RD,_rM)
        !          2268: #define CVTTPD2DQrr(RS, RD)             _SSELrr(0x66, X86_SSE_CVTTPD2DQ, RS,_rX, RD,_rX)
        !          2269: #define CVTTPD2DQmr(MD, MB, MI, MS, RD)         _SSELmr(0x66, X86_SSE_CVTTPD2DQ, MD, MB, MI, MS, RD,_rX)
        !          2270: #define CVTTPS2DQrr(RS, RD)             _SSELrr(0xf3, X86_SSE_CVTTPS2DQ, RS,_rX, RD,_rX)
        !          2271: #define CVTTPS2DQmr(MD, MB, MI, MS, RD)         _SSELmr(0xf3, X86_SSE_CVTTPS2DQ, MD, MB, MI, MS, RD,_rX)
        !          2272: #define CVTTPS2PIrr(RS, RD)            __SSELrr(      X86_SSE_CVTTPS2PI, RS,_rX, RD,_rM)
        !          2273: #define CVTTPS2PImr(MD, MB, MI, MS, RD)        __SSELmr(      X86_SSE_CVTTPS2PI, MD, MB, MI, MS, RD,_rM)
        !          2274: #define CVTTSD2SILrr(RS, RD)            _SSELrr(0xf2, X86_SSE_CVTTSD2SI, RS,_rX, RD,_r4)
        !          2275: #define CVTTSD2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf2, X86_SSE_CVTTSD2SI, MD, MB, MI, MS, RD,_r4)
        !          2276: #define CVTTSD2SIQrr(RS, RD)            _SSEQrr(0xf2, X86_SSE_CVTTSD2SI, RS,_rX, RD,_r8)
        !          2277: #define CVTTSD2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf2, X86_SSE_CVTTSD2SI, MD, MB, MI, MS, RD,_r8)
        !          2278: #define CVTTSS2SILrr(RS, RD)            _SSELrr(0xf3, X86_SSE_CVTTSS2SI, RS,_rX, RD,_r4)
        !          2279: #define CVTTSS2SILmr(MD, MB, MI, MS, RD) _SSELmr(0xf3, X86_SSE_CVTTSS2SI, MD, MB, MI, MS, RD,_r4)
        !          2280: #define CVTTSS2SIQrr(RS, RD)            _SSEQrr(0xf3, X86_SSE_CVTTSS2SI, RS,_rX, RD,_r8)
        !          2281: #define CVTTSS2SIQmr(MD, MB, MI, MS, RD) _SSEQmr(0xf3, X86_SSE_CVTTSS2SI, MD, MB, MI, MS, RD,_r8)
        !          2282: 
        !          2283: #define MOVDXDrr(RS, RD)                _SSELrr(0x66, 0x6e, RS,_r4, RD,_rX)
        !          2284: #define MOVDXDmr(MD, MB, MI, MS, RD)    _SSELmr(0x66, 0x6e, MD, MB, MI, MS, RD,_rX)
        !          2285: #define MOVQXDrr(RS, RD)                _SSEQrr(0x66, 0x6e, RS,_r8, RD,_rX)
        !          2286: #define MOVQXDmr(MD, MB, MI, MS, RD)    _SSEQmr(0x66, 0x6e, MD, MB, MI, MS, RD,_rX)
        !          2287: 
        !          2288: #define MOVDXSrr(RS, RD)                _SSELrr(0x66, 0x7e, RD,_r4, RS,_rX)
        !          2289: #define MOVDXSrm(RS, MD, MB, MI, MS)    _SSELrm(0x66, 0x7e, RS,_rX, MD, MB, MI, MS)
        !          2290: #define MOVQXSrr(RS, RD)                _SSEQrr(0x66, 0x7e, RD,_r8, RS,_rX)
        !          2291: #define MOVQXSrm(RS, MD, MB, MI, MS)    _SSEQrm(0x66, 0x7e, RS,_rX, MD, MB, MI, MS)
        !          2292: 
        !          2293: #define MOVDLMrr(RS, RD)               __SSELrr(      0x6e, RS,_r4, RD,_rM)
        !          2294: #define MOVDLMmr(MD, MB, MI, MS, RD)   __SSELmr(      0x6e, MD, MB, MI, MS, RD,_rM)
        !          2295: #define MOVDQMrr(RS, RD)               __SSEQrr(      0x6e, RS,_r8, RD,_rM)
        !          2296: #define MOVDQMmr(MD, MB, MI, MS, RD)   __SSEQmr(      0x6e, MD, MB, MI, MS, RD,_rM)
        !          2297: 
        !          2298: #define MOVDMLrr(RS, RD)               __SSELrr(      0x7e, RS,_rM, RD,_r4)
        !          2299: #define MOVDMLrm(RS, MD, MB, MI, MS)   __SSELrm(      0x7e, RS,_rM, MD, MB, MI, MS)
        !          2300: #define MOVDMQrr(RS, RD)               __SSEQrr(      0x7e, RS,_rM, RD,_r8)
        !          2301: #define MOVDMQrm(RS, MD, MB, MI, MS)   __SSEQrm(      0x7e, RS,_rM, MD, MB, MI, MS)
        !          2302: 
        !          2303: #define MOVDQ2Qrr(RS, RD)               _SSELrr(0xf2, 0xd6, RS,_rX, RD,_rM)
        !          2304: #define MOVMSKPSrr(RS, RD)             __SSELrr(      0x50, RS,_rX, RD,_r4)
        !          2305: #define MOVMSKPDrr(RS, RD)              _SSELrr(0x66, 0x50, RS,_rX, RD,_r4)
        !          2306: 
        !          2307: #define MOVHLPSrr(RS, RD)              __SSELrr(      0x12, RS,_rX, RD,_rX)
        !          2308: #define MOVLHPSrr(RS, RD)              __SSELrr(      0x16, RS,_rX, RD,_rX)
        !          2309: 
        !          2310: #define MOVDQArr(RS, RD)                _SSELrr(0x66, 0x6f, RS,_rX, RD,_rX)
        !          2311: #define MOVDQAmr(MD, MB, MI, MS, RD)    _SSELmr(0x66, 0x6f, MD, MB, MI, MS, RD,_rX)
        !          2312: #define MOVDQArm(RS, MD, MB, MI, MS)    _SSELrm(0x66, 0x7f, RS,_rX, MD, MB, MI, MS)
        !          2313: 
        !          2314: #define MOVDQUrr(RS, RD)                _SSELrr(0xf3, 0x6f, RS,_rX, RD,_rX)
        !          2315: #define MOVDQUmr(MD, MB, MI, MS, RD)    _SSELmr(0xf3, 0x6f, MD, MB, MI, MS, RD,_rX)
        !          2316: #define MOVDQUrm(RS, MD, MB, MI, MS)    _SSELrm(0xf3, 0x7f, RS,_rX, MD, MB, MI, MS)
        !          2317: 
        !          2318: #define MOVHPDmr(MD, MB, MI, MS, RD)    _SSELmr(0x66, 0x16, MD, MB, MI, MS, RD,_rX)
        !          2319: #define MOVHPDrm(RS, MD, MB, MI, MS)    _SSELrm(0x66, 0x17, RS,_rX, MD, MB, MI, MS)
        !          2320: #define MOVHPSmr(MD, MB, MI, MS, RD)   __SSELmr(      0x16, MD, MB, MI, MS, RD,_rX)
        !          2321: #define MOVHPSrm(RS, MD, MB, MI, MS)   __SSELrm(      0x17, RS,_rX, MD, MB, MI, MS)
        !          2322: 
        !          2323: #define MOVLPDmr(MD, MB, MI, MS, RD)    _SSELmr(0x66, 0x12, MD, MB, MI, MS, RD,_rX)
        !          2324: #define MOVLPDrm(RS, MD, MB, MI, MS)    _SSELrm(0x66, 0x13, RS,_rX, MD, MB, MI, MS)
        !          2325: #define MOVLPSmr(MD, MB, MI, MS, RD)   __SSELmr(      0x12, MD, MB, MI, MS, RD,_rX)
        !          2326: #define MOVLPSrm(RS, MD, MB, MI, MS)   __SSELrm(      0x13, RS,_rX, MD, MB, MI, MS)
        !          2327: 
        !          2328: 
        !          2329: /* --- FLoating-Point instructions ----------------------------------------- */
        !          2330: 
        !          2331: #define _ESCmi(D,B,I,S,OP)     (_REXLrm(0,B,I), _O_r_X(0xd8|(OP & 7), (OP >> 3), D,B,I,S))
        !          2332: 
        !          2333: #define FLDr(R)                        _OOr(0xd9c0,_rN(R))
        !          2334: #define FLDLm(D,B,I,S)         _ESCmi(D,B,I,S,005)
        !          2335: #define FLDSm(D,B,I,S)         _ESCmi(D,B,I,S,001)
        !          2336: #define FLDTm(D,B,I,S)         _ESCmi(D,B,I,S,053)
        !          2337: 
        !          2338: #define FSTr(R)                        _OOr(0xddd0,_rN(R))
        !          2339: #define FSTSm(D,B,I,S)         _ESCmi(D,B,I,S,021)
        !          2340: #define FSTLm(D,B,I,S)         _ESCmi(D,B,I,S,025)
        !          2341: 
        !          2342: #define FSTPr(R)               _OOr(0xddd8,_rN(R))
        !          2343: #define FSTPSm(D,B,I,S)                _ESCmi(D,B,I,S,031)
        !          2344: #define FSTPLm(D,B,I,S)                _ESCmi(D,B,I,S,035)
        !          2345: #define FSTPTm(D,B,I,S)                _ESCmi(D,B,I,S,073)
        !          2346: 
        !          2347: #define FADDr0(R)              _OOr(0xd8c0,_rN(R))
        !          2348: #define FADD0r(R)              _OOr(0xdcc0,_rN(R))
        !          2349: #define FADDP0r(R)             _OOr(0xdec0,_rN(R))
        !          2350: #define FADDSm(D,B,I,S)                _ESCmi(D,B,I,S,000)
        !          2351: #define FADDLm(D,B,I,S)                _ESCmi(D,B,I,S,004)
        !          2352: 
        !          2353: #define FSUBSm(D,B,I,S)                _ESCmi(D,B,I,S,040)
        !          2354: #define FSUBLm(D,B,I,S)                _ESCmi(D,B,I,S,044)
        !          2355: #define FSUBr0(R)              _OOr(0xd8e0,_rN(R))
        !          2356: #define FSUB0r(R)              _OOr(0xdce8,_rN(R))
        !          2357: #define FSUBP0r(R)             _OOr(0xdee8,_rN(R))
        !          2358: 
        !          2359: #define FSUBRr0(R)             _OOr(0xd8e8,_rN(R))
        !          2360: #define FSUBR0r(R)             _OOr(0xdce0,_rN(R))
        !          2361: #define FSUBRP0r(R)            _OOr(0xdee0,_rN(R))
        !          2362: #define FSUBRSm(D,B,I,S)       _ESCmi(D,B,I,S,050)
        !          2363: #define FSUBRLm(D,B,I,S)       _ESCmi(D,B,I,S,054)
        !          2364: 
        !          2365: #define FMULr0(R)              _OOr(0xd8c8,_rN(R))
        !          2366: #define FMUL0r(R)              _OOr(0xdcc8,_rN(R))
        !          2367: #define FMULP0r(R)             _OOr(0xdec8,_rN(R))
        !          2368: #define FMULSm(D,B,I,S)                _ESCmi(D,B,I,S,010)
        !          2369: #define FMULLm(D,B,I,S)                _ESCmi(D,B,I,S,014)
        !          2370: 
        !          2371: #define FDIVr0(R)              _OOr(0xd8f0,_rN(R))
        !          2372: #define FDIV0r(R)              _OOr(0xdcf8,_rN(R))
        !          2373: #define FDIVP0r(R)             _OOr(0xdef8,_rN(R))
        !          2374: #define FDIVSm(D,B,I,S)                _ESCmi(D,B,I,S,060)
        !          2375: #define FDIVLm(D,B,I,S)                _ESCmi(D,B,I,S,064)
        !          2376: 
        !          2377: #define FDIVRr0(R)             _OOr(0xd8f8,_rN(R))
        !          2378: #define FDIVR0r(R)             _OOr(0xdcf0,_rN(R))
        !          2379: #define FDIVRP0r(R)            _OOr(0xdef0,_rN(R))
        !          2380: #define FDIVRSm(D,B,I,S)       _ESCmi(D,B,I,S,070)
        !          2381: #define FDIVRLm(D,B,I,S)       _ESCmi(D,B,I,S,074)
        !          2382: 
        !          2383: #define FCMOVBr0(R)            _OOr(0xdac0,_rN(R))
        !          2384: #define FCMOVBEr0(R)           _OOr(0xdad0,_rN(R))
        !          2385: #define FCMOVEr0(R)            _OOr(0xdac8,_rN(R))
        !          2386: #define FCMOVNBr0(R)           _OOr(0xdbc0,_rN(R))
        !          2387: #define FCMOVNBEr0(R)          _OOr(0xdbd0,_rN(R))
        !          2388: #define FCMOVNEr0(R)           _OOr(0xdbc8,_rN(R))
        !          2389: #define FCMOVNUr0(R)           _OOr(0xdbd8,_rN(R))
        !          2390: #define FCMOVUr0(R)            _OOr(0xdad8,_rN(R))
        !          2391: #define FCOMIr0(R)             _OOr(0xdbf0,_rN(R))
        !          2392: #define FCOMIPr0(R)            _OOr(0xdff0,_rN(R))
        !          2393: 
        !          2394: #define FCOMr(R)               _OOr(0xd8d0,_rN(R))
        !          2395: #define FCOMSm(D,B,I,S)                _ESCmi(D,B,I,S,020)
        !          2396: #define FCOMLm(D,B,I,S)                _ESCmi(D,B,I,S,024)
        !          2397: 
        !          2398: #define FCOMPr(R)              _OOr(0xd8d8,_rN(R))
        !          2399: #define FCOMPSm(D,B,I,S)       _ESCmi(D,B,I,S,030)
        !          2400: #define FCOMPLm(D,B,I,S)       _ESCmi(D,B,I,S,034)
        !          2401: 
        !          2402: #define FUCOMIr0(R)            _OOr(0xdbe8,_rN(R))
        !          2403: #define FUCOMIPr0(R)           _OOr(0xdfe8,_rN(R))
        !          2404: #define FUCOMPr(R)             _OOr(0xdde8,_rN(R))
        !          2405: #define FUCOMr(R)              _OOr(0xdde0,_rN(R))
        !          2406: 
        !          2407: #define FIADDLm(D,B,I,S)       _ESCmi(D,B,I,S,002)
        !          2408: #define FICOMLm(D,B,I,S)       _ESCmi(D,B,I,S,022)
        !          2409: #define FICOMPLm(D,B,I,S)      _ESCmi(D,B,I,S,032)
        !          2410: #define FIDIVLm(D,B,I,S)       _ESCmi(D,B,I,S,062)
        !          2411: #define FIDIVRLm(D,B,I,S)      _ESCmi(D,B,I,S,072)
        !          2412: #define FILDLm(D,B,I,S)                _ESCmi(D,B,I,S,003)
        !          2413: #define FILDQm(D,B,I,S)                _ESCmi(D,B,I,S,057)
        !          2414: #define FIMULLm(D,B,I,S)       _ESCmi(D,B,I,S,012)
        !          2415: #define FISTLm(D,B,I,S)                _ESCmi(D,B,I,S,023)
        !          2416: #define FISTPLm(D,B,I,S)       _ESCmi(D,B,I,S,033)
        !          2417: #define FISTPQm(D,B,I,S)       _ESCmi(D,B,I,S,077)
        !          2418: #define FISUBLm(D,B,I,S)       _ESCmi(D,B,I,S,042)
        !          2419: #define FISUBRLm(D,B,I,S)      _ESCmi(D,B,I,S,052)
        !          2420: 
        !          2421: #define FREEr(R)               _OOr(0xddc0,_rN(R))
        !          2422: #define FXCHr(R)               _OOr(0xd9c8,_rN(R))
        !          2423: 
        !          2424: #endif /* X86_RTASM_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.