159024Sobrien/* ia64-opc-i.c -- IA-64 `I' opcode table. 259396Sobrien Copyright 1998, 1999, 2000, 2002, 2005, 2006 359024Sobrien Free Software Foundation, Inc. 459024Sobrien Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 559024Sobrien 659024Sobrien This file is part of GDB, GAS, and the GNU binutils. 759024Sobrien 859024Sobrien GDB, GAS, and the GNU binutils are free software; you can redistribute 959024Sobrien them and/or modify them under the terms of the GNU General Public 1059024Sobrien License as published by the Free Software Foundation; either version 1159024Sobrien 2, or (at your option) any later version. 1259024Sobrien 1359024Sobrien GDB, GAS, and the GNU binutils are distributed in the hope that they 1459024Sobrien will be useful, but WITHOUT ANY WARRANTY; without even the implied 1559024Sobrien warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 1659024Sobrien the GNU General Public License for more details. 1759024Sobrien 1859024Sobrien You should have received a copy of the GNU General Public License 1959024Sobrien along with this file; see the file COPYING. If not, write to the 2059024Sobrien Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 2159024Sobrien 02110-1301, USA. */ 2259024Sobrien 2359024Sobrien#include "ia64-opc.h" 2459024Sobrien 2559024Sobrien#define I0 IA64_TYPE_I, 0 2659024Sobrien#define I IA64_TYPE_I, 1 2759024Sobrien#define I2 IA64_TYPE_I, 2 2859024Sobrien 2959024Sobrien/* instruction bit fields: */ 3059024Sobrien#define bC(x) (((ia64_insn) ((x) & 0x1)) << 12) 3159024Sobrien#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 23) 3259024Sobrien#define bTa(x) (((ia64_insn) ((x) & 0x1)) << 33) 3359024Sobrien#define bTag13(x) (((ia64_insn) ((x) & 0x1)) << 33) 3459024Sobrien#define bTb(x) (((ia64_insn) ((x) & 0x1)) << 36) 3559024Sobrien#define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20) 3659024Sobrien#define bVe(x) (((ia64_insn) ((x) & 0x1)) << 32) 3759024Sobrien#define bWh(x) (((ia64_insn) ((x) & 0x3)) << 20) 3859024Sobrien#define bX(x) (((ia64_insn) ((x) & 0x1)) << 33) 3959024Sobrien#define bXb(x) (((ia64_insn) ((x) & 0x1)) << 22) 4059024Sobrien#define bXc(x) (((ia64_insn) ((x) & 0x1)) << 19) 4159024Sobrien#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 34) 4259024Sobrien#define bX2a(x) (((ia64_insn) ((x) & 0x3)) << 34) 4359024Sobrien#define bX2b(x) (((ia64_insn) ((x) & 0x3)) << 28) 4459024Sobrien#define bX2c(x) (((ia64_insn) ((x) & 0x3)) << 30) 4559024Sobrien#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33) 4659024Sobrien#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27) 4759024Sobrien#define bYa(x) (((ia64_insn) ((x) & 0x1)) << 13) 4859024Sobrien#define bYb(x) (((ia64_insn) ((x) & 0x1)) << 26) 4959024Sobrien#define bZa(x) (((ia64_insn) ((x) & 0x1)) << 36) 5059024Sobrien#define bZb(x) (((ia64_insn) ((x) & 0x1)) << 33) 5159024Sobrien 5259024Sobrien/* instruction bit masks: */ 5359024Sobrien#define mC bC (-1) 5459024Sobrien#define mIh bIh (-1) 5559024Sobrien#define mTa bTa (-1) 5659024Sobrien#define mTag13 bTag13 (-1) 5759024Sobrien#define mTb bTb (-1) 5859024Sobrien#define mVc bVc (-1) 5959024Sobrien#define mVe bVe (-1) 6059024Sobrien#define mWh bWh (-1) 6159024Sobrien#define mX bX (-1) 6259024Sobrien#define mXb bXb (-1) 6359024Sobrien#define mXc bXc (-1) 6459024Sobrien#define mX2 bX2 (-1) 6559024Sobrien#define mX2a bX2a (-1) 6659024Sobrien#define mX2b bX2b (-1) 6759024Sobrien#define mX2c bX2c (-1) 6859024Sobrien#define mX3 bX3 (-1) 6959024Sobrien#define mX6 bX6 (-1) 7059024Sobrien#define mYa bYa (-1) 7159024Sobrien#define mYb bYb (-1) 7259024Sobrien#define mZa bZa (-1) 7359024Sobrien#define mZb bZb (-1) 7459024Sobrien 7559024Sobrien#define OpZaZbVeX2aX2b(a,b,c,d,e,f) \ 7659024Sobrien (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f)), \ 7759024Sobrien (mOp | mZa | mZb | mVe | mX2a | mX2b) 7859024Sobrien#define OpZaZbVeX2aX2bX2c(a,b,c,d,e,f,g) \ 7959024Sobrien (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f) | bX2c (g)), \ 8059024Sobrien (mOp | mZa | mZb | mVe | mX2a | mX2b | mX2c) 8159024Sobrien#define OpX2X(a,b,c) (bOp (a) | bX2 (b) | bX (c)), (mOp | mX2 | mX) 8259024Sobrien#define OpX2XYa(a,b,c,d) (bOp (a) | bX2 (b) | bX (c) | bYa (d)), \ 8359024Sobrien (mOp | mX2 | mX | mYa) 8459024Sobrien#define OpX2XYb(a,b,c,d) (bOp (a) | bX2 (b) | bX (c) | bYb (d)), \ 8559024Sobrien (mOp | mX2 | mX | mYb) 8659024Sobrien#define OpX2TaTbYaC(a,b,c,d,e,f) \ 8759024Sobrien (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bC (f)), \ 8859024Sobrien (mOp | mX2 | mTa | mTb | mYa | mC) 8959024Sobrien#define OpX2TaTbYaXcC(a,b,c,d,e,f,g) \ 9059024Sobrien (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bXc (f) | bC (g)), \ 9159024Sobrien (mOp | mX2 | mTa | mTb | mYa | mXc | mC) 9259024Sobrien#define OpX3(a,b) (bOp (a) | bX3 (b)), (mOp | mX3) 9359024Sobrien#define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ 9459024Sobrien (mOp | mX3 | mX6) 9559024Sobrien#define OpX3X6Yb(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bYb(d)), \ 9659024Sobrien (mOp | mX3 | mX6 | mYb) 9759024Sobrien#define OpX3XbIhWh(a,b,c,d,e) \ 9859024Sobrien (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e)), \ 9959024Sobrien (mOp | mX3 | mXb | mIh | mWh) 10059024Sobrien#define OpX3XbIhWhTag13(a,b,c,d,e,f) \ 10159024Sobrien (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e) | bTag13 (f)), \ 10259024Sobrien (mOp | mX3 | mXb | mIh | mWh | mTag13) 10359024Sobrien 10459024Sobrien#define FULL17 ((ia64_insn)0x10ff001fc0LL) 10559024Sobrien 10659024Sobrien/* Used to initialise unused fields in ia64_opcode struct, 10759024Sobrien in order to stop gcc from complaining. */ 10859024Sobrien#define EMPTY 0,0,NULL 10959024Sobrien 11059024Sobrienstruct ia64_opcode ia64_opcodes_i[] = 11159024Sobrien { 11259024Sobrien /* I-type instruction encodings (sorted according to major opcode). */ 11359024Sobrien 11459024Sobrien {"break.i", I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX, 0, NULL}, 11559024Sobrien {"nop.i", I0, OpX3X6Yb (0, 0, 0x01, 0), {IMMU21}, X_IN_MLX, 0, NULL}, 11659024Sobrien {"hint.i", I0, OpX3X6Yb (0, 0, 0x01, 1), {IMMU21}, X_IN_MLX, 0, NULL}, 11759024Sobrien {"chk.s.i", I0, OpX3 (0, 1), {R2, TGT25b}, EMPTY}, 11859024Sobrien 11959024Sobrien {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO, 0, NULL}, 12059024Sobrien#define MOV(a,b,c,d) \ 12159024Sobrien I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}, EMPTY 12259024Sobrien {"mov.sptk", MOV (7, 0, 0, 0)}, 12359024Sobrien {"mov.sptk.imp", MOV (7, 0, 1, 0)}, 12459024Sobrien {"mov", MOV (7, 0, 0, 1)}, 12559024Sobrien {"mov.imp", MOV (7, 0, 1, 1)}, 12659024Sobrien {"mov.dptk", MOV (7, 0, 0, 2)}, 12759024Sobrien {"mov.dptk.imp", MOV (7, 0, 1, 2)}, 12859024Sobrien {"mov.ret.sptk", MOV (7, 1, 0, 0)}, 12959024Sobrien {"mov.ret.sptk.imp", MOV (7, 1, 1, 0)}, 13059024Sobrien {"mov.ret", MOV (7, 1, 0, 1)}, 13159024Sobrien {"mov.ret.imp", MOV (7, 1, 1, 1)}, 13259024Sobrien {"mov.ret.dptk", MOV (7, 1, 0, 2)}, 13359024Sobrien {"mov.ret.dptk.imp", MOV (7, 1, 1, 2)}, 13459024Sobrien#undef MOV 13559024Sobrien {"mov", I, OpX3X6 (0, 0, 0x31), {R1, B2}, EMPTY}, 13659024Sobrien {"mov", I, OpX3 (0, 3), {PR, R2, IMM17}, EMPTY}, 13759024Sobrien /* Don't remove one of the seemingly redundant FULL17-s. */ 13859024Sobrien {"mov", I, FULL17 | OpX3 (0, 3) | FULL17, {PR, R2}, PSEUDO, 0, NULL}, 13959024Sobrien {"mov", I, OpX3 (0, 2), {PR_ROT, IMM44}, EMPTY}, 14059024Sobrien {"mov", I, OpX3X6 (0, 0, 0x30), {R1, IP}, EMPTY}, 14159024Sobrien {"mov", I, OpX3X6 (0, 0, 0x33), {R1, PR}, EMPTY}, 14259024Sobrien {"mov.i", I, OpX3X6 (0, 0, 0x2a), {AR3, R2}, EMPTY}, 14359024Sobrien {"mov.i", I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}, EMPTY}, 14459024Sobrien {"mov.i", I, OpX3X6 (0, 0, 0x32), {R1, AR3}, EMPTY}, 14559024Sobrien {"zxt1", I, OpX3X6 (0, 0, 0x10), {R1, R3}, EMPTY}, 14659024Sobrien {"zxt2", I, OpX3X6 (0, 0, 0x11), {R1, R3}, EMPTY}, 14759024Sobrien {"zxt4", I, OpX3X6 (0, 0, 0x12), {R1, R3}, EMPTY}, 14859024Sobrien {"sxt1", I, OpX3X6 (0, 0, 0x14), {R1, R3}, EMPTY}, 14959024Sobrien {"sxt2", I, OpX3X6 (0, 0, 0x15), {R1, R3}, EMPTY}, 15059024Sobrien {"sxt4", I, OpX3X6 (0, 0, 0x16), {R1, R3}, EMPTY}, 15159024Sobrien {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}, EMPTY}, 15259024Sobrien {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}, EMPTY}, 15359024Sobrien {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}, EMPTY}, 15459024Sobrien {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}, EMPTY}, 15559024Sobrien 15659024Sobrien {"dep", I, Op (4), {R1, R2, R3, CPOS6c, LEN4}, EMPTY}, 15759024Sobrien 15859024Sobrien {"shrp", I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}, EMPTY}, 15959024Sobrien 16059024Sobrien {"shr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6}, 16159024Sobrien PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 16259024Sobrien {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}, EMPTY}, 16359024Sobrien 16459024Sobrien {"shr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6}, 16559024Sobrien PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 16659024Sobrien {"extr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}, EMPTY}, 16759024Sobrien 16859024Sobrien {"shl", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a}, 16959024Sobrien PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 17059024Sobrien {"dep.z", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}, EMPTY}, 17159024Sobrien {"dep.z", I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}, EMPTY}, 17259024Sobrien {"dep", I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}, EMPTY}, 17359024Sobrien#define TF(a,b,c) \ 17459024Sobrien I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P1, P2, IMMU5b}, EMPTY 17559024Sobrien#define TFCM(a,b,c) \ 17659024Sobrien I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P2, P1, IMMU5b}, PSEUDO, 0, NULL 17759024Sobrien {"tf.z", TF (0, 0, 0)}, 17859024Sobrien {"tf.nz", TFCM (0, 0, 0)}, 17959024Sobrien {"tf.z.unc", TF (0, 0, 1)}, 18059024Sobrien {"tf.nz.unc", TFCM (0, 0, 1)}, 18159024Sobrien {"tf.z.and", TF (0, 1, 0)}, 18259024Sobrien {"tf.nz.andcm", TFCM (0, 1, 0)}, 18359024Sobrien {"tf.nz.and", TF (0, 1, 1)}, 18459024Sobrien {"tf.z.andcm", TFCM (0, 1, 1)}, 18559024Sobrien {"tf.z.or", TF (1, 0, 0)}, 18659024Sobrien {"tf.nz.orcm", TFCM (1, 0, 0)}, 18759024Sobrien {"tf.nz.or", TF (1, 0, 1)}, 18859024Sobrien {"tf.z.orcm", TFCM (1, 0, 1)}, 18959024Sobrien {"tf.z.or.andcm", TF (1, 1, 0)}, 19059024Sobrien {"tf.nz.and.orcm", TFCM (1, 1, 0)}, 19159024Sobrien {"tf.nz.or.andcm", TF (1, 1, 1)}, 19259024Sobrien {"tf.z.and.orcm", TFCM (1, 1, 1)}, 19359024Sobrien#undef TF 19459024Sobrien#undef TFCM 19559024Sobrien#define TBIT(a,b,c,d) \ 19659024Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}, EMPTY 19759024Sobrien#define TBITCM(a,b,c,d) \ 19859024Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO, 0, NULL 19959024Sobrien {"tbit.z", TBIT (0, 0, 0, 0)}, 20059024Sobrien {"tbit.nz", TBITCM (0, 0, 0, 0)}, 20159024Sobrien {"tbit.z.unc", TBIT (0, 0, 0, 1)}, 20259024Sobrien {"tbit.nz.unc", TBITCM (0, 0, 0, 1)}, 20359024Sobrien {"tbit.z.and", TBIT (0, 1, 0, 0)}, 20459024Sobrien {"tbit.nz.andcm", TBITCM (0, 1, 0, 0)}, 20559024Sobrien {"tbit.nz.and", TBIT (0, 1, 0, 1)}, 20659024Sobrien {"tbit.z.andcm", TBITCM (0, 1, 0, 1)}, 20759024Sobrien {"tbit.z.or", TBIT (1, 0, 0, 0)}, 20859024Sobrien {"tbit.nz.orcm", TBITCM (1, 0, 0, 0)}, 20959024Sobrien {"tbit.nz.or", TBIT (1, 0, 0, 1)}, 21059024Sobrien {"tbit.z.orcm", TBITCM (1, 0, 0, 1)}, 21159024Sobrien {"tbit.z.or.andcm", TBIT (1, 1, 0, 0)}, 21259024Sobrien {"tbit.nz.and.orcm", TBITCM (1, 1, 0, 0)}, 21359024Sobrien {"tbit.nz.or.andcm", TBIT (1, 1, 0, 1)}, 21459024Sobrien {"tbit.z.and.orcm", TBITCM (1, 1, 0, 1)}, 21559024Sobrien#undef TBIT 21659024Sobrien#undef TBITCM 21759024Sobrien#define TNAT(a,b,c,d) \ 21859024Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}, EMPTY 21959024Sobrien#define TNATCM(a,b,c,d) \ 22059024Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO, 0, NULL 22159024Sobrien {"tnat.z", TNAT (0, 0, 1, 0)}, 22259024Sobrien {"tnat.nz", TNATCM (0, 0, 1, 0)}, 22359024Sobrien {"tnat.z.unc", TNAT (0, 0, 1, 1)}, 22459024Sobrien {"tnat.nz.unc", TNATCM (0, 0, 1, 1)}, 22559024Sobrien {"tnat.z.and", TNAT (0, 1, 1, 0)}, 22659024Sobrien {"tnat.nz.andcm", TNATCM (0, 1, 1, 0)}, 22759024Sobrien {"tnat.nz.and", TNAT (0, 1, 1, 1)}, 22859024Sobrien {"tnat.z.andcm", TNATCM (0, 1, 1, 1)}, 22959024Sobrien {"tnat.z.or", TNAT (1, 0, 1, 0)}, 23059024Sobrien {"tnat.nz.orcm", TNATCM (1, 0, 1, 0)}, 23159024Sobrien {"tnat.nz.or", TNAT (1, 0, 1, 1)}, 23259024Sobrien {"tnat.z.orcm", TNATCM (1, 0, 1, 1)}, 23359024Sobrien {"tnat.z.or.andcm", TNAT (1, 1, 1, 0)}, 23459024Sobrien {"tnat.nz.and.orcm", TNATCM (1, 1, 1, 0)}, 23559024Sobrien {"tnat.nz.or.andcm", TNAT (1, 1, 1, 1)}, 23659024Sobrien {"tnat.z.and.orcm", TNATCM (1, 1, 1, 1)}, 23759024Sobrien#undef TNAT 23859024Sobrien#undef TNATCM 23959024Sobrien 24059024Sobrien {"pmpyshr2", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}, EMPTY}, 24159024Sobrien {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}, EMPTY}, 24259024Sobrien {"pmpy2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}, EMPTY}, 24359024Sobrien {"pmpy2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}, EMPTY}, 24459024Sobrien {"mix1.r", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 24559024Sobrien {"mix2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 24659024Sobrien {"mix4.r", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 24759024Sobrien {"mix1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 24859024Sobrien {"mix2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 24959024Sobrien {"mix4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 25059024Sobrien {"pack2.uss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}, EMPTY}, 25159024Sobrien {"pack2.sss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}, EMPTY}, 25259024Sobrien {"pack4.sss", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}, EMPTY}, 25359024Sobrien {"unpack1.h", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 25459024Sobrien {"unpack2.h", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 25559024Sobrien {"unpack4.h", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 25659024Sobrien {"unpack1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 25759024Sobrien {"unpack2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 25859024Sobrien {"unpack4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 25959024Sobrien {"pmin1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}, EMPTY}, 26059024Sobrien {"pmax1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}, EMPTY}, 26159024Sobrien {"pmin2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}, EMPTY}, 26259024Sobrien {"pmax2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}, EMPTY}, 26359024Sobrien {"psad1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}, EMPTY}, 26459024Sobrien {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}, EMPTY}, 26559024Sobrien {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}, EMPTY}, 26659024Sobrien {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 26759024Sobrien {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 26859024Sobrien {"shr", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 26959024Sobrien {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 27059024Sobrien {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 27159024Sobrien {"shr.u", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 27259024Sobrien {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY}, 27359024Sobrien {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY}, 27459024Sobrien {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY}, 27559024Sobrien {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY}, 27659024Sobrien {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 27759024Sobrien {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 27859024Sobrien {"shl", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 27959024Sobrien {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY}, 28059024Sobrien {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY}, 28159024Sobrien {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}, EMPTY}, 28259024Sobrien 28359024Sobrien {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 28459024Sobrien }; 28559024Sobrien 28659024Sobrien#undef I0 28759024Sobrien#undef I 28859024Sobrien#undef I2 28959024Sobrien#undef L 29059024Sobrien#undef bC 29159024Sobrien#undef bIh 29259024Sobrien#undef bTa 29359024Sobrien#undef bTag13 29459024Sobrien#undef bTb 29559024Sobrien#undef bVc 29659024Sobrien#undef bVe 29759024Sobrien#undef bWh 29859024Sobrien#undef bX 29959024Sobrien#undef bXb 30059024Sobrien#undef bX2 30159024Sobrien#undef bX2a 30259024Sobrien#undef bX2b 30359024Sobrien#undef bX2c 30459024Sobrien#undef bX3 30559024Sobrien#undef bX6 30659024Sobrien#undef bY 30759024Sobrien#undef bZa 30859024Sobrien#undef bZb 30959024Sobrien#undef mC 31059024Sobrien#undef mIh 31159024Sobrien#undef mTa 31259024Sobrien#undef mTag13 31359024Sobrien#undef mTb 31459024Sobrien#undef mVc 31559024Sobrien#undef mVe 31659024Sobrien#undef mWh 31759024Sobrien#undef mX 31859024Sobrien#undef mXb 31959024Sobrien#undef mX2 32059024Sobrien#undef mX2a 32159024Sobrien#undef mX2b 32259024Sobrien#undef mX2c 32359024Sobrien#undef mX3 32459024Sobrien#undef mX6 32559024Sobrien#undef mY 32659024Sobrien#undef mZa 32759024Sobrien#undef mZb 32859024Sobrien#undef OpZaZbVeX2aX2b 32959024Sobrien#undef OpZaZbVeX2aX2bX2c 33059024Sobrien#undef OpX2X 33159024Sobrien#undef OpX2XYa 33259024Sobrien#undef OpX2XYb 33359024Sobrien#undef OpX2TaTbYaC 33459024Sobrien#undef OpX3 33559024Sobrien#undef OpX3X6 33659024Sobrien#undef OpX3XbIhWh 33759024Sobrien#undef OpX3XbIhWhTag13 33859024Sobrien#undef EMPTY 33959024Sobrien