Home | History | Annotate | Line # | Download | only in opcodes
      1   1.1  christos /* ia64-opc-i.c -- IA-64 `I' opcode table.
      2  1.10  christos    Copyright (C) 1998-2025 Free Software Foundation, Inc.
      3   1.1  christos    Contributed by David Mosberger-Tang <davidm (at) hpl.hp.com>
      4   1.1  christos 
      5   1.1  christos    This file is part of the GNU opcodes library.
      6   1.1  christos 
      7   1.1  christos    This library is free software; you can redistribute it and/or modify
      8   1.1  christos    it under the terms of the GNU General Public License as published by
      9   1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     10   1.1  christos    any later version.
     11   1.1  christos 
     12   1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     13   1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     14   1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     15   1.1  christos    License for more details.
     16   1.1  christos 
     17   1.1  christos    You should have received a copy of the GNU General Public License
     18   1.1  christos    along with this file; see the file COPYING.  If not, write to the
     19   1.1  christos    Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
     20   1.1  christos    MA 02110-1301, USA.  */
     21   1.1  christos 
     22   1.1  christos #include "ia64-opc.h"
     23   1.1  christos 
     24   1.1  christos #define I0	IA64_TYPE_I, 0
     25   1.1  christos #define I	IA64_TYPE_I, 1
     26   1.1  christos #define I2	IA64_TYPE_I, 2
     27   1.1  christos 
     28   1.1  christos /* instruction bit fields: */
     29   1.1  christos #define bC(x)		(((ia64_insn) ((x) & 0x1)) << 12)
     30   1.1  christos #define bIh(x)		(((ia64_insn) ((x) & 0x1)) << 23)
     31   1.1  christos #define bTa(x)		(((ia64_insn) ((x) & 0x1)) << 33)
     32   1.1  christos #define bTag13(x)	(((ia64_insn) ((x) & 0x1)) << 33)
     33   1.1  christos #define bTb(x)		(((ia64_insn) ((x) & 0x1)) << 36)
     34   1.1  christos #define bVc(x)		(((ia64_insn) ((x) & 0x1)) << 20)
     35   1.1  christos #define bVe(x)		(((ia64_insn) ((x) & 0x1)) << 32)
     36   1.1  christos #define bWh(x)		(((ia64_insn) ((x) & 0x3)) << 20)
     37   1.1  christos #define bX(x)		(((ia64_insn) ((x) & 0x1)) << 33)
     38   1.1  christos #define bXb(x)		(((ia64_insn) ((x) & 0x1)) << 22)
     39   1.1  christos #define bXc(x)		(((ia64_insn) ((x) & 0x1)) << 19)
     40   1.1  christos #define bX2(x)		(((ia64_insn) ((x) & 0x3)) << 34)
     41   1.1  christos #define bX2a(x)		(((ia64_insn) ((x) & 0x3)) << 34)
     42   1.1  christos #define bX2b(x)		(((ia64_insn) ((x) & 0x3)) << 28)
     43   1.1  christos #define bX2c(x)		(((ia64_insn) ((x) & 0x3)) << 30)
     44   1.1  christos #define bX3(x)		(((ia64_insn) ((x) & 0x7)) << 33)
     45   1.1  christos #define bX6(x)		(((ia64_insn) ((x) & 0x3f)) << 27)
     46   1.1  christos #define bYa(x)		(((ia64_insn) ((x) & 0x1)) << 13)
     47   1.1  christos #define bYb(x)		(((ia64_insn) ((x) & 0x1)) << 26)
     48   1.1  christos #define bZa(x)		(((ia64_insn) ((x) & 0x1)) << 36)
     49   1.1  christos #define bZb(x)		(((ia64_insn) ((x) & 0x1)) << 33)
     50   1.1  christos 
     51   1.1  christos /* instruction bit masks: */
     52   1.1  christos #define mC	bC (-1)
     53   1.1  christos #define mIh	bIh (-1)
     54   1.1  christos #define mTa	bTa (-1)
     55   1.1  christos #define mTag13	bTag13 (-1)
     56   1.1  christos #define mTb	bTb (-1)
     57   1.1  christos #define mVc	bVc (-1)
     58   1.1  christos #define mVe	bVe (-1)
     59   1.1  christos #define mWh	bWh (-1)
     60   1.1  christos #define mX	bX (-1)
     61   1.1  christos #define mXb	bXb (-1)
     62   1.1  christos #define mXc	bXc (-1)
     63   1.1  christos #define mX2	bX2 (-1)
     64   1.1  christos #define mX2a	bX2a (-1)
     65   1.1  christos #define mX2b	bX2b (-1)
     66   1.1  christos #define mX2c	bX2c (-1)
     67   1.1  christos #define mX3	bX3 (-1)
     68   1.1  christos #define mX6	bX6 (-1)
     69   1.1  christos #define mYa	bYa (-1)
     70   1.1  christos #define mYb	bYb (-1)
     71   1.1  christos #define mZa	bZa (-1)
     72   1.1  christos #define mZb	bZb (-1)
     73   1.1  christos 
     74   1.1  christos #define OpZaZbVeX2aX2b(a,b,c,d,e,f) \
     75   1.1  christos 	(bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f)), \
     76   1.1  christos 	(mOp | mZa | mZb | mVe | mX2a | mX2b)
     77   1.1  christos #define OpZaZbVeX2aX2bX2c(a,b,c,d,e,f,g) \
     78   1.1  christos   (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f) | bX2c (g)), \
     79   1.1  christos 	(mOp | mZa | mZb | mVe | mX2a | mX2b | mX2c)
     80   1.1  christos #define OpX2X(a,b,c)		(bOp (a) | bX2 (b) | bX (c)), (mOp | mX2 | mX)
     81   1.1  christos #define OpX2XYa(a,b,c,d)	(bOp (a) | bX2 (b) | bX (c) | bYa (d)), \
     82   1.1  christos 				(mOp | mX2 | mX | mYa)
     83   1.1  christos #define OpX2XYb(a,b,c,d)	(bOp (a) | bX2 (b) | bX (c) | bYb (d)), \
     84   1.1  christos 				(mOp | mX2 | mX | mYb)
     85   1.1  christos #define OpX2TaTbYaC(a,b,c,d,e,f) \
     86   1.1  christos 	(bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bC (f)), \
     87   1.1  christos 	(mOp | mX2 | mTa | mTb | mYa | mC)
     88   1.1  christos #define OpX2TaTbYaXcC(a,b,c,d,e,f,g) \
     89   1.1  christos 	(bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bXc (f) | bC (g)), \
     90   1.1  christos 	(mOp | mX2 | mTa | mTb | mYa | mXc | mC)
     91   1.1  christos #define OpX3(a,b)		(bOp (a) | bX3 (b)), (mOp | mX3)
     92   1.1  christos #define OpX3X6(a,b,c)		(bOp (a) | bX3 (b) | bX6(c)), \
     93   1.1  christos 				(mOp | mX3 | mX6)
     94   1.1  christos #define OpX3X6Yb(a,b,c,d)	(bOp (a) | bX3 (b) | bX6(c) | bYb(d)), \
     95   1.1  christos 				(mOp | mX3 | mX6 | mYb)
     96   1.1  christos #define OpX3XbIhWh(a,b,c,d,e) \
     97   1.1  christos   (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e)), \
     98   1.1  christos   (mOp | mX3 | mXb | mIh | mWh)
     99   1.1  christos #define OpX3XbIhWhTag13(a,b,c,d,e,f) \
    100   1.1  christos      (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e) | bTag13 (f)), \
    101   1.1  christos      (mOp | mX3 | mXb | mIh | mWh | mTag13)
    102   1.1  christos 
    103   1.1  christos #define FULL17 ((ia64_insn)0x10ff001fc0LL)
    104   1.1  christos 
    105   1.1  christos /* Used to initialise unused fields in ia64_opcode struct,
    106   1.1  christos    in order to stop gcc from complaining.  */
    107   1.1  christos #define EMPTY 0,0,NULL
    108   1.1  christos 
    109   1.1  christos struct ia64_opcode ia64_opcodes_i[] =
    110   1.1  christos   {
    111   1.1  christos     /* I-type instruction encodings (sorted according to major opcode).  */
    112   1.1  christos 
    113   1.1  christos     {"break.i",	I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX, 0, NULL},
    114   1.1  christos     {"nop.i",	I0, OpX3X6Yb (0, 0, 0x01, 0), {IMMU21}, X_IN_MLX, 0, NULL},
    115   1.1  christos     {"hint.i",	I0, OpX3X6Yb (0, 0, 0x01, 1), {IMMU21}, X_IN_MLX, 0, NULL},
    116   1.1  christos     {"chk.s.i",	I0, OpX3 (0, 1), {R2, TGT25b}, EMPTY},
    117   1.1  christos 
    118   1.1  christos     {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO, 0, NULL},
    119   1.1  christos #define MOV(a,b,c,d) \
    120   1.1  christos     I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}, EMPTY
    121   1.1  christos     {"mov.sptk",		MOV (7, 0, 0, 0)},
    122   1.1  christos     {"mov.sptk.imp",		MOV (7, 0, 1, 0)},
    123   1.1  christos     {"mov",			MOV (7, 0, 0, 1)},
    124   1.1  christos     {"mov.imp",			MOV (7, 0, 1, 1)},
    125   1.1  christos     {"mov.dptk",		MOV (7, 0, 0, 2)},
    126   1.1  christos     {"mov.dptk.imp",		MOV (7, 0, 1, 2)},
    127   1.1  christos     {"mov.ret.sptk",		MOV (7, 1, 0, 0)},
    128   1.1  christos     {"mov.ret.sptk.imp",	MOV (7, 1, 1, 0)},
    129   1.1  christos     {"mov.ret",			MOV (7, 1, 0, 1)},
    130   1.1  christos     {"mov.ret.imp",		MOV (7, 1, 1, 1)},
    131   1.1  christos     {"mov.ret.dptk",		MOV (7, 1, 0, 2)},
    132   1.1  christos     {"mov.ret.dptk.imp",	MOV (7, 1, 1, 2)},
    133   1.1  christos #undef MOV
    134   1.1  christos     {"mov",	I, OpX3X6 (0, 0, 0x31), {R1, B2}, EMPTY},
    135   1.1  christos     {"mov",	I, OpX3 (0, 3), {PR, R2, IMM17}, EMPTY},
    136   1.1  christos     /* Don't remove one of the seemingly redundant FULL17-s.  */
    137   1.1  christos     {"mov",	I, FULL17 | OpX3 (0, 3) | FULL17, {PR, R2}, PSEUDO, 0, NULL},
    138   1.1  christos     {"mov",	I, OpX3 (0, 2), {PR_ROT, IMM44}, EMPTY},
    139   1.1  christos     {"mov",	I, OpX3X6 (0, 0, 0x30), {R1, IP}, EMPTY},
    140   1.1  christos     {"mov",	I, OpX3X6 (0, 0, 0x33), {R1, PR}, EMPTY},
    141   1.1  christos     {"mov.i",	I, OpX3X6 (0, 0, 0x2a), {AR3, R2}, EMPTY},
    142   1.1  christos     {"mov.i",	I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}, EMPTY},
    143   1.1  christos     {"mov.i",	I, OpX3X6 (0, 0, 0x32), {R1, AR3}, EMPTY},
    144   1.1  christos     {"zxt1",	I, OpX3X6 (0, 0, 0x10), {R1, R3}, EMPTY},
    145   1.1  christos     {"zxt2",	I, OpX3X6 (0, 0, 0x11), {R1, R3}, EMPTY},
    146   1.1  christos     {"zxt4",	I, OpX3X6 (0, 0, 0x12), {R1, R3}, EMPTY},
    147   1.1  christos     {"sxt1",	I, OpX3X6 (0, 0, 0x14), {R1, R3}, EMPTY},
    148   1.1  christos     {"sxt2",	I, OpX3X6 (0, 0, 0x15), {R1, R3}, EMPTY},
    149   1.1  christos     {"sxt4",	I, OpX3X6 (0, 0, 0x16), {R1, R3}, EMPTY},
    150   1.1  christos     {"czx1.l",	I, OpX3X6 (0, 0, 0x18), {R1, R3}, EMPTY},
    151   1.1  christos     {"czx2.l",	I, OpX3X6 (0, 0, 0x19), {R1, R3}, EMPTY},
    152   1.1  christos     {"czx1.r",	I, OpX3X6 (0, 0, 0x1c), {R1, R3}, EMPTY},
    153   1.1  christos     {"czx2.r",	I, OpX3X6 (0, 0, 0x1d), {R1, R3}, EMPTY},
    154   1.1  christos 
    155   1.1  christos     {"dep",	I, Op (4), {R1, R2, R3, CPOS6c, LEN4}, EMPTY},
    156   1.1  christos 
    157   1.1  christos     {"shrp",	I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}, EMPTY},
    158   1.1  christos 
    159   1.1  christos     {"shr.u",	I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6},
    160   1.1  christos      PSEUDO | LEN_EQ_64MCNT, 0, NULL},
    161   1.1  christos     {"extr.u",	I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}, EMPTY},
    162   1.1  christos 
    163   1.1  christos     {"shr",	I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6},
    164   1.1  christos      PSEUDO | LEN_EQ_64MCNT, 0, NULL},
    165   1.1  christos     {"extr",	I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}, EMPTY},
    166   1.1  christos 
    167   1.1  christos     {"shl",	I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a},
    168   1.1  christos      PSEUDO | LEN_EQ_64MCNT, 0, NULL},
    169   1.1  christos     {"dep.z",	I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}, EMPTY},
    170   1.1  christos     {"dep.z",	I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}, EMPTY},
    171   1.1  christos     {"dep",	I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}, EMPTY},
    172   1.1  christos #define TF(a,b,c) \
    173   1.1  christos 	I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P1, P2, IMMU5b}, EMPTY
    174   1.1  christos #define TFCM(a,b,c) \
    175   1.1  christos 	I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P2, P1, IMMU5b}, PSEUDO, 0, NULL
    176   1.1  christos     {"tf.z",		 TF   (0, 0, 0)},
    177   1.1  christos     {"tf.nz",		 TFCM (0, 0, 0)},
    178   1.1  christos     {"tf.z.unc",	 TF   (0, 0, 1)},
    179   1.1  christos     {"tf.nz.unc",	 TFCM (0, 0, 1)},
    180   1.1  christos     {"tf.z.and",	 TF   (0, 1, 0)},
    181   1.1  christos     {"tf.nz.andcm",	 TFCM (0, 1, 0)},
    182   1.1  christos     {"tf.nz.and",	 TF   (0, 1, 1)},
    183   1.1  christos     {"tf.z.andcm",	 TFCM (0, 1, 1)},
    184   1.1  christos     {"tf.z.or",		 TF   (1, 0, 0)},
    185   1.1  christos     {"tf.nz.orcm",	 TFCM (1, 0, 0)},
    186   1.1  christos     {"tf.nz.or",	 TF   (1, 0, 1)},
    187   1.1  christos     {"tf.z.orcm",	 TFCM (1, 0, 1)},
    188   1.1  christos     {"tf.z.or.andcm",	 TF   (1, 1, 0)},
    189   1.1  christos     {"tf.nz.and.orcm",	 TFCM (1, 1, 0)},
    190   1.1  christos     {"tf.nz.or.andcm",	 TF   (1, 1, 1)},
    191   1.1  christos     {"tf.z.and.orcm",	 TFCM (1, 1, 1)},
    192   1.1  christos #undef TF
    193   1.1  christos #undef TFCM
    194   1.1  christos #define TBIT(a,b,c,d) \
    195   1.1  christos         I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}, EMPTY
    196   1.1  christos #define TBITCM(a,b,c,d)	\
    197   1.1  christos         I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO, 0, NULL
    198   1.1  christos     {"tbit.z",		 TBIT   (0, 0, 0, 0)},
    199   1.1  christos     {"tbit.nz",		 TBITCM (0, 0, 0, 0)},
    200   1.1  christos     {"tbit.z.unc",	 TBIT   (0, 0, 0, 1)},
    201   1.1  christos     {"tbit.nz.unc",	 TBITCM (0, 0, 0, 1)},
    202   1.1  christos     {"tbit.z.and",	 TBIT   (0, 1, 0, 0)},
    203   1.1  christos     {"tbit.nz.andcm",	 TBITCM (0, 1, 0, 0)},
    204   1.1  christos     {"tbit.nz.and",	 TBIT   (0, 1, 0, 1)},
    205   1.1  christos     {"tbit.z.andcm",	 TBITCM (0, 1, 0, 1)},
    206   1.1  christos     {"tbit.z.or",	 TBIT   (1, 0, 0, 0)},
    207   1.1  christos     {"tbit.nz.orcm",	 TBITCM (1, 0, 0, 0)},
    208   1.1  christos     {"tbit.nz.or",	 TBIT   (1, 0, 0, 1)},
    209   1.1  christos     {"tbit.z.orcm",	 TBITCM (1, 0, 0, 1)},
    210   1.1  christos     {"tbit.z.or.andcm",	 TBIT   (1, 1, 0, 0)},
    211   1.1  christos     {"tbit.nz.and.orcm", TBITCM (1, 1, 0, 0)},
    212   1.1  christos     {"tbit.nz.or.andcm", TBIT   (1, 1, 0, 1)},
    213   1.1  christos     {"tbit.z.and.orcm",  TBITCM (1, 1, 0, 1)},
    214   1.1  christos #undef TBIT
    215   1.1  christos #undef TBITCM
    216   1.1  christos #define TNAT(a,b,c,d) \
    217   1.1  christos 	I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}, EMPTY
    218   1.1  christos #define TNATCM(a,b,c,d) \
    219   1.1  christos 	I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO, 0, NULL
    220   1.1  christos     {"tnat.z",		 TNAT   (0, 0, 1, 0)},
    221   1.1  christos     {"tnat.nz",		 TNATCM (0, 0, 1, 0)},
    222   1.1  christos     {"tnat.z.unc",	 TNAT   (0, 0, 1, 1)},
    223   1.1  christos     {"tnat.nz.unc",	 TNATCM (0, 0, 1, 1)},
    224   1.1  christos     {"tnat.z.and",	 TNAT   (0, 1, 1, 0)},
    225   1.1  christos     {"tnat.nz.andcm",	 TNATCM (0, 1, 1, 0)},
    226   1.1  christos     {"tnat.nz.and",	 TNAT   (0, 1, 1, 1)},
    227   1.1  christos     {"tnat.z.andcm",	 TNATCM (0, 1, 1, 1)},
    228   1.1  christos     {"tnat.z.or",	 TNAT   (1, 0, 1, 0)},
    229   1.1  christos     {"tnat.nz.orcm",	 TNATCM (1, 0, 1, 0)},
    230   1.1  christos     {"tnat.nz.or",	 TNAT   (1, 0, 1, 1)},
    231   1.1  christos     {"tnat.z.orcm",	 TNATCM (1, 0, 1, 1)},
    232   1.1  christos     {"tnat.z.or.andcm",	 TNAT   (1, 1, 1, 0)},
    233   1.1  christos     {"tnat.nz.and.orcm", TNATCM (1, 1, 1, 0)},
    234   1.1  christos     {"tnat.nz.or.andcm", TNAT   (1, 1, 1, 1)},
    235   1.1  christos     {"tnat.z.and.orcm",  TNATCM (1, 1, 1, 1)},
    236   1.1  christos #undef TNAT
    237   1.1  christos #undef TNATCM
    238   1.1  christos 
    239   1.1  christos     {"pmpyshr2",   I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}, EMPTY},
    240   1.1  christos     {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}, EMPTY},
    241   1.1  christos     {"pmpy2.r",	   I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}, EMPTY},
    242   1.1  christos     {"pmpy2.l",	   I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}, EMPTY},
    243   1.1  christos     {"mix1.r",	   I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
    244   1.1  christos     {"mix2.r",	   I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
    245   1.1  christos     {"mix4.r",	   I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
    246   1.1  christos     {"mix1.l",	   I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
    247   1.1  christos     {"mix2.l",	   I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
    248   1.1  christos     {"mix4.l",	   I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
    249   1.1  christos     {"pack2.uss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}, EMPTY},
    250   1.1  christos     {"pack2.sss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}, EMPTY},
    251   1.1  christos     {"pack4.sss",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}, EMPTY},
    252   1.1  christos     {"unpack1.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
    253   1.1  christos     {"unpack2.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
    254   1.1  christos     {"unpack4.h",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
    255   1.1  christos     {"unpack1.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
    256   1.1  christos     {"unpack2.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
    257   1.1  christos     {"unpack4.l",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
    258   1.1  christos     {"pmin1.u",	   I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}, EMPTY},
    259   1.1  christos     {"pmax1.u",	   I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}, EMPTY},
    260   1.1  christos     {"pmin2",	   I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}, EMPTY},
    261   1.1  christos     {"pmax2",	   I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}, EMPTY},
    262   1.1  christos     {"psad1",	   I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}, EMPTY},
    263   1.1  christos     {"mux1",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}, EMPTY},
    264   1.1  christos     {"mux2",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}, EMPTY},
    265   1.1  christos     {"pshr2",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
    266   1.1  christos     {"pshr4",	I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
    267   1.1  christos     {"shr",	I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
    268   1.1  christos     {"pshr2.u",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
    269   1.1  christos     {"pshr4.u",	I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
    270   1.1  christos     {"shr.u",	I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
    271   1.1  christos     {"pshr2",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY},
    272   1.1  christos     {"pshr4",	I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY},
    273   1.1  christos     {"pshr2.u",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY},
    274   1.1  christos     {"pshr4.u",	I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY},
    275   1.1  christos     {"pshl2",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
    276   1.1  christos     {"pshl4",	I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
    277   1.1  christos     {"shl",	I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
    278   1.1  christos     {"mpy4",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 1, 3), {R1, R2, R3}, EMPTY},
    279   1.1  christos     {"mpyshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 3, 3), {R1, R2, R3}, EMPTY},
    280   1.1  christos     {"pshl2",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY},
    281   1.1  christos     {"pshl4",	I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY},
    282   1.1  christos     {"popcnt",	I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}, EMPTY},
    283   1.1  christos     {"clz",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 3), {R1, R3}, EMPTY},
    284   1.1  christos 
    285   1.1  christos     {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
    286   1.1  christos   };
    287   1.1  christos 
    288   1.1  christos #undef I0
    289   1.1  christos #undef I
    290   1.1  christos #undef I2
    291   1.1  christos #undef L
    292   1.1  christos #undef bC
    293   1.1  christos #undef bIh
    294   1.1  christos #undef bTa
    295   1.1  christos #undef bTag13
    296   1.1  christos #undef bTb
    297   1.1  christos #undef bVc
    298   1.1  christos #undef bVe
    299   1.1  christos #undef bWh
    300   1.1  christos #undef bX
    301   1.1  christos #undef bXb
    302   1.1  christos #undef bX2
    303   1.1  christos #undef bX2a
    304   1.1  christos #undef bX2b
    305   1.1  christos #undef bX2c
    306   1.1  christos #undef bX3
    307   1.1  christos #undef bX6
    308   1.1  christos #undef bY
    309   1.1  christos #undef bZa
    310   1.1  christos #undef bZb
    311   1.1  christos #undef mC
    312   1.1  christos #undef mIh
    313   1.1  christos #undef mTa
    314   1.1  christos #undef mTag13
    315   1.1  christos #undef mTb
    316   1.1  christos #undef mVc
    317   1.1  christos #undef mVe
    318   1.1  christos #undef mWh
    319   1.1  christos #undef mX
    320   1.1  christos #undef mXb
    321   1.1  christos #undef mX2
    322   1.1  christos #undef mX2a
    323   1.1  christos #undef mX2b
    324   1.1  christos #undef mX2c
    325   1.1  christos #undef mX3
    326   1.1  christos #undef mX6
    327   1.1  christos #undef mY
    328   1.1  christos #undef mZa
    329   1.1  christos #undef mZb
    330   1.1  christos #undef OpZaZbVeX2aX2b
    331   1.1  christos #undef OpZaZbVeX2aX2bX2c
    332   1.1  christos #undef OpX2X
    333   1.1  christos #undef OpX2XYa
    334   1.1  christos #undef OpX2XYb
    335   1.1  christos #undef OpX2TaTbYaC
    336   1.1  christos #undef OpX3
    337   1.1  christos #undef OpX3X6
    338   1.1  christos #undef OpX3XbIhWh
    339   1.1  christos #undef OpX3XbIhWhTag13
    340   1.1  christos #undef EMPTY
    341