184865Sobrien/* ia64-opc-i.c -- IA-64 `I' opcode table. 2218822Sdim Copyright 1998, 1999, 2000, 2002, 2005, 2006 3218822Sdim Free Software Foundation, Inc. 484865Sobrien Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 584865Sobrien 684865Sobrien This file is part of GDB, GAS, and the GNU binutils. 784865Sobrien 884865Sobrien GDB, GAS, and the GNU binutils are free software; you can redistribute 984865Sobrien them and/or modify them under the terms of the GNU General Public 1084865Sobrien License as published by the Free Software Foundation; either version 1184865Sobrien 2, or (at your option) any later version. 1284865Sobrien 1384865Sobrien GDB, GAS, and the GNU binutils are distributed in the hope that they 1484865Sobrien will be useful, but WITHOUT ANY WARRANTY; without even the implied 1584865Sobrien warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 1684865Sobrien the GNU General Public License for more details. 1784865Sobrien 1884865Sobrien You should have received a copy of the GNU General Public License 1984865Sobrien along with this file; see the file COPYING. If not, write to the 20218822Sdim Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 21218822Sdim 02110-1301, USA. */ 2284865Sobrien 2384865Sobrien#include "ia64-opc.h" 2484865Sobrien 2584865Sobrien#define I0 IA64_TYPE_I, 0 2684865Sobrien#define I IA64_TYPE_I, 1 2784865Sobrien#define I2 IA64_TYPE_I, 2 2884865Sobrien 2984865Sobrien/* instruction bit fields: */ 3084865Sobrien#define bC(x) (((ia64_insn) ((x) & 0x1)) << 12) 3184865Sobrien#define bIh(x) (((ia64_insn) ((x) & 0x1)) << 23) 3284865Sobrien#define bTa(x) (((ia64_insn) ((x) & 0x1)) << 33) 3384865Sobrien#define bTag13(x) (((ia64_insn) ((x) & 0x1)) << 33) 3484865Sobrien#define bTb(x) (((ia64_insn) ((x) & 0x1)) << 36) 3584865Sobrien#define bVc(x) (((ia64_insn) ((x) & 0x1)) << 20) 3684865Sobrien#define bVe(x) (((ia64_insn) ((x) & 0x1)) << 32) 3784865Sobrien#define bWh(x) (((ia64_insn) ((x) & 0x3)) << 20) 3884865Sobrien#define bX(x) (((ia64_insn) ((x) & 0x1)) << 33) 3984865Sobrien#define bXb(x) (((ia64_insn) ((x) & 0x1)) << 22) 40218822Sdim#define bXc(x) (((ia64_insn) ((x) & 0x1)) << 19) 4184865Sobrien#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 34) 4284865Sobrien#define bX2a(x) (((ia64_insn) ((x) & 0x3)) << 34) 4384865Sobrien#define bX2b(x) (((ia64_insn) ((x) & 0x3)) << 28) 4484865Sobrien#define bX2c(x) (((ia64_insn) ((x) & 0x3)) << 30) 4584865Sobrien#define bX3(x) (((ia64_insn) ((x) & 0x7)) << 33) 4684865Sobrien#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27) 4784865Sobrien#define bYa(x) (((ia64_insn) ((x) & 0x1)) << 13) 4884865Sobrien#define bYb(x) (((ia64_insn) ((x) & 0x1)) << 26) 4984865Sobrien#define bZa(x) (((ia64_insn) ((x) & 0x1)) << 36) 5084865Sobrien#define bZb(x) (((ia64_insn) ((x) & 0x1)) << 33) 5184865Sobrien 5284865Sobrien/* instruction bit masks: */ 5384865Sobrien#define mC bC (-1) 5484865Sobrien#define mIh bIh (-1) 5584865Sobrien#define mTa bTa (-1) 5684865Sobrien#define mTag13 bTag13 (-1) 5784865Sobrien#define mTb bTb (-1) 5884865Sobrien#define mVc bVc (-1) 5984865Sobrien#define mVe bVe (-1) 6084865Sobrien#define mWh bWh (-1) 6184865Sobrien#define mX bX (-1) 6284865Sobrien#define mXb bXb (-1) 63218822Sdim#define mXc bXc (-1) 6484865Sobrien#define mX2 bX2 (-1) 6584865Sobrien#define mX2a bX2a (-1) 6684865Sobrien#define mX2b bX2b (-1) 6784865Sobrien#define mX2c bX2c (-1) 6884865Sobrien#define mX3 bX3 (-1) 6984865Sobrien#define mX6 bX6 (-1) 7084865Sobrien#define mYa bYa (-1) 7184865Sobrien#define mYb bYb (-1) 7284865Sobrien#define mZa bZa (-1) 7384865Sobrien#define mZb bZb (-1) 7484865Sobrien 7584865Sobrien#define OpZaZbVeX2aX2b(a,b,c,d,e,f) \ 7684865Sobrien (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f)), \ 7784865Sobrien (mOp | mZa | mZb | mVe | mX2a | mX2b) 7884865Sobrien#define OpZaZbVeX2aX2bX2c(a,b,c,d,e,f,g) \ 7984865Sobrien (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f) | bX2c (g)), \ 8084865Sobrien (mOp | mZa | mZb | mVe | mX2a | mX2b | mX2c) 8184865Sobrien#define OpX2X(a,b,c) (bOp (a) | bX2 (b) | bX (c)), (mOp | mX2 | mX) 8284865Sobrien#define OpX2XYa(a,b,c,d) (bOp (a) | bX2 (b) | bX (c) | bYa (d)), \ 8384865Sobrien (mOp | mX2 | mX | mYa) 8484865Sobrien#define OpX2XYb(a,b,c,d) (bOp (a) | bX2 (b) | bX (c) | bYb (d)), \ 8584865Sobrien (mOp | mX2 | mX | mYb) 8684865Sobrien#define OpX2TaTbYaC(a,b,c,d,e,f) \ 8784865Sobrien (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bC (f)), \ 8884865Sobrien (mOp | mX2 | mTa | mTb | mYa | mC) 89218822Sdim#define OpX2TaTbYaXcC(a,b,c,d,e,f,g) \ 90218822Sdim (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bXc (f) | bC (g)), \ 91218822Sdim (mOp | mX2 | mTa | mTb | mYa | mXc | mC) 9284865Sobrien#define OpX3(a,b) (bOp (a) | bX3 (b)), (mOp | mX3) 9384865Sobrien#define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ 9484865Sobrien (mOp | mX3 | mX6) 95130561Sobrien#define OpX3X6Yb(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bYb(d)), \ 96130561Sobrien (mOp | mX3 | mX6 | mYb) 9784865Sobrien#define OpX3XbIhWh(a,b,c,d,e) \ 9884865Sobrien (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e)), \ 9984865Sobrien (mOp | mX3 | mXb | mIh | mWh) 10084865Sobrien#define OpX3XbIhWhTag13(a,b,c,d,e,f) \ 10184865Sobrien (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e) | bTag13 (f)), \ 10284865Sobrien (mOp | mX3 | mXb | mIh | mWh | mTag13) 10384865Sobrien 104218822Sdim#define FULL17 ((ia64_insn)0x10ff001fc0LL) 105218822Sdim 106130561Sobrien/* Used to initialise unused fields in ia64_opcode struct, 107130561Sobrien in order to stop gcc from complaining. */ 108130561Sobrien#define EMPTY 0,0,NULL 109130561Sobrien 11084865Sobrienstruct ia64_opcode ia64_opcodes_i[] = 11184865Sobrien { 112130561Sobrien /* I-type instruction encodings (sorted according to major opcode). */ 11384865Sobrien 114130561Sobrien {"break.i", I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX, 0, NULL}, 115130561Sobrien {"nop.i", I0, OpX3X6Yb (0, 0, 0x01, 0), {IMMU21}, X_IN_MLX, 0, NULL}, 116130561Sobrien {"hint.i", I0, OpX3X6Yb (0, 0, 0x01, 1), {IMMU21}, X_IN_MLX, 0, NULL}, 117130561Sobrien {"chk.s.i", I0, OpX3 (0, 1), {R2, TGT25b}, EMPTY}, 11884865Sobrien 119130561Sobrien {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO, 0, NULL}, 12084865Sobrien#define MOV(a,b,c,d) \ 121130561Sobrien I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}, EMPTY 12284865Sobrien {"mov.sptk", MOV (7, 0, 0, 0)}, 12384865Sobrien {"mov.sptk.imp", MOV (7, 0, 1, 0)}, 12484865Sobrien {"mov", MOV (7, 0, 0, 1)}, 12584865Sobrien {"mov.imp", MOV (7, 0, 1, 1)}, 12684865Sobrien {"mov.dptk", MOV (7, 0, 0, 2)}, 12784865Sobrien {"mov.dptk.imp", MOV (7, 0, 1, 2)}, 12884865Sobrien {"mov.ret.sptk", MOV (7, 1, 0, 0)}, 12984865Sobrien {"mov.ret.sptk.imp", MOV (7, 1, 1, 0)}, 13084865Sobrien {"mov.ret", MOV (7, 1, 0, 1)}, 13184865Sobrien {"mov.ret.imp", MOV (7, 1, 1, 1)}, 13284865Sobrien {"mov.ret.dptk", MOV (7, 1, 0, 2)}, 13384865Sobrien {"mov.ret.dptk.imp", MOV (7, 1, 1, 2)}, 13484865Sobrien#undef MOV 135130561Sobrien {"mov", I, OpX3X6 (0, 0, 0x31), {R1, B2}, EMPTY}, 136130561Sobrien {"mov", I, OpX3 (0, 3), {PR, R2, IMM17}, EMPTY}, 137218822Sdim /* Don't remove one of the seemingly redundant FULL17-s. */ 138218822Sdim {"mov", I, FULL17 | OpX3 (0, 3) | FULL17, {PR, R2}, PSEUDO, 0, NULL}, 139130561Sobrien {"mov", I, OpX3 (0, 2), {PR_ROT, IMM44}, EMPTY}, 140130561Sobrien {"mov", I, OpX3X6 (0, 0, 0x30), {R1, IP}, EMPTY}, 141130561Sobrien {"mov", I, OpX3X6 (0, 0, 0x33), {R1, PR}, EMPTY}, 142130561Sobrien {"mov.i", I, OpX3X6 (0, 0, 0x2a), {AR3, R2}, EMPTY}, 143130561Sobrien {"mov.i", I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}, EMPTY}, 144130561Sobrien {"mov.i", I, OpX3X6 (0, 0, 0x32), {R1, AR3}, EMPTY}, 145130561Sobrien {"zxt1", I, OpX3X6 (0, 0, 0x10), {R1, R3}, EMPTY}, 146130561Sobrien {"zxt2", I, OpX3X6 (0, 0, 0x11), {R1, R3}, EMPTY}, 147130561Sobrien {"zxt4", I, OpX3X6 (0, 0, 0x12), {R1, R3}, EMPTY}, 148130561Sobrien {"sxt1", I, OpX3X6 (0, 0, 0x14), {R1, R3}, EMPTY}, 149130561Sobrien {"sxt2", I, OpX3X6 (0, 0, 0x15), {R1, R3}, EMPTY}, 150130561Sobrien {"sxt4", I, OpX3X6 (0, 0, 0x16), {R1, R3}, EMPTY}, 151130561Sobrien {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}, EMPTY}, 152130561Sobrien {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}, EMPTY}, 153130561Sobrien {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}, EMPTY}, 154130561Sobrien {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}, EMPTY}, 15584865Sobrien 156130561Sobrien {"dep", I, Op (4), {R1, R2, R3, CPOS6c, LEN4}, EMPTY}, 15784865Sobrien 158130561Sobrien {"shrp", I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}, EMPTY}, 15984865Sobrien 16084865Sobrien {"shr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6}, 161130561Sobrien PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 162130561Sobrien {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}, EMPTY}, 16384865Sobrien 16484865Sobrien {"shr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6}, 165130561Sobrien PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 166130561Sobrien {"extr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}, EMPTY}, 16784865Sobrien 16884865Sobrien {"shl", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a}, 169130561Sobrien PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 170130561Sobrien {"dep.z", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}, EMPTY}, 171130561Sobrien {"dep.z", I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}, EMPTY}, 172130561Sobrien {"dep", I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}, EMPTY}, 173218822Sdim#define TF(a,b,c) \ 174218822Sdim I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P1, P2, IMMU5b}, EMPTY 175218822Sdim#define TFCM(a,b,c) \ 176218822Sdim I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P2, P1, IMMU5b}, PSEUDO, 0, NULL 177218822Sdim {"tf.z", TF (0, 0, 0)}, 178218822Sdim {"tf.nz", TFCM (0, 0, 0)}, 179218822Sdim {"tf.z.unc", TF (0, 0, 1)}, 180218822Sdim {"tf.nz.unc", TFCM (0, 0, 1)}, 181218822Sdim {"tf.z.and", TF (0, 1, 0)}, 182218822Sdim {"tf.nz.andcm", TFCM (0, 1, 0)}, 183218822Sdim {"tf.nz.and", TF (0, 1, 1)}, 184218822Sdim {"tf.z.andcm", TFCM (0, 1, 1)}, 185218822Sdim {"tf.z.or", TF (1, 0, 0)}, 186218822Sdim {"tf.nz.orcm", TFCM (1, 0, 0)}, 187218822Sdim {"tf.nz.or", TF (1, 0, 1)}, 188218822Sdim {"tf.z.orcm", TFCM (1, 0, 1)}, 189218822Sdim {"tf.z.or.andcm", TF (1, 1, 0)}, 190218822Sdim {"tf.nz.and.orcm", TFCM (1, 1, 0)}, 191218822Sdim {"tf.nz.or.andcm", TF (1, 1, 1)}, 192218822Sdim {"tf.z.and.orcm", TFCM (1, 1, 1)}, 193218822Sdim#undef TF 194218822Sdim#undef TFCM 19584865Sobrien#define TBIT(a,b,c,d) \ 196130561Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}, EMPTY 19784865Sobrien#define TBITCM(a,b,c,d) \ 198130561Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO, 0, NULL 19984865Sobrien {"tbit.z", TBIT (0, 0, 0, 0)}, 20084865Sobrien {"tbit.nz", TBITCM (0, 0, 0, 0)}, 20184865Sobrien {"tbit.z.unc", TBIT (0, 0, 0, 1)}, 20284865Sobrien {"tbit.nz.unc", TBITCM (0, 0, 0, 1)}, 20384865Sobrien {"tbit.z.and", TBIT (0, 1, 0, 0)}, 20484865Sobrien {"tbit.nz.andcm", TBITCM (0, 1, 0, 0)}, 20584865Sobrien {"tbit.nz.and", TBIT (0, 1, 0, 1)}, 20684865Sobrien {"tbit.z.andcm", TBITCM (0, 1, 0, 1)}, 20784865Sobrien {"tbit.z.or", TBIT (1, 0, 0, 0)}, 20884865Sobrien {"tbit.nz.orcm", TBITCM (1, 0, 0, 0)}, 20984865Sobrien {"tbit.nz.or", TBIT (1, 0, 0, 1)}, 21084865Sobrien {"tbit.z.orcm", TBITCM (1, 0, 0, 1)}, 21184865Sobrien {"tbit.z.or.andcm", TBIT (1, 1, 0, 0)}, 21284865Sobrien {"tbit.nz.and.orcm", TBITCM (1, 1, 0, 0)}, 21384865Sobrien {"tbit.nz.or.andcm", TBIT (1, 1, 0, 1)}, 21484865Sobrien {"tbit.z.and.orcm", TBITCM (1, 1, 0, 1)}, 21584865Sobrien#undef TBIT 216218822Sdim#undef TBITCM 21784865Sobrien#define TNAT(a,b,c,d) \ 218130561Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}, EMPTY 21984865Sobrien#define TNATCM(a,b,c,d) \ 220130561Sobrien I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO, 0, NULL 22184865Sobrien {"tnat.z", TNAT (0, 0, 1, 0)}, 22284865Sobrien {"tnat.nz", TNATCM (0, 0, 1, 0)}, 22384865Sobrien {"tnat.z.unc", TNAT (0, 0, 1, 1)}, 22484865Sobrien {"tnat.nz.unc", TNATCM (0, 0, 1, 1)}, 22584865Sobrien {"tnat.z.and", TNAT (0, 1, 1, 0)}, 22684865Sobrien {"tnat.nz.andcm", TNATCM (0, 1, 1, 0)}, 22784865Sobrien {"tnat.nz.and", TNAT (0, 1, 1, 1)}, 22884865Sobrien {"tnat.z.andcm", TNATCM (0, 1, 1, 1)}, 22984865Sobrien {"tnat.z.or", TNAT (1, 0, 1, 0)}, 23084865Sobrien {"tnat.nz.orcm", TNATCM (1, 0, 1, 0)}, 23184865Sobrien {"tnat.nz.or", TNAT (1, 0, 1, 1)}, 23284865Sobrien {"tnat.z.orcm", TNATCM (1, 0, 1, 1)}, 23384865Sobrien {"tnat.z.or.andcm", TNAT (1, 1, 1, 0)}, 23484865Sobrien {"tnat.nz.and.orcm", TNATCM (1, 1, 1, 0)}, 23584865Sobrien {"tnat.nz.or.andcm", TNAT (1, 1, 1, 1)}, 23684865Sobrien {"tnat.z.and.orcm", TNATCM (1, 1, 1, 1)}, 23784865Sobrien#undef TNAT 238218822Sdim#undef TNATCM 23984865Sobrien 240130561Sobrien {"pmpyshr2", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}, EMPTY}, 241130561Sobrien {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}, EMPTY}, 242130561Sobrien {"pmpy2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}, EMPTY}, 243130561Sobrien {"pmpy2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}, EMPTY}, 244130561Sobrien {"mix1.r", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 245130561Sobrien {"mix2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 246130561Sobrien {"mix4.r", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 247130561Sobrien {"mix1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 248130561Sobrien {"mix2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 249130561Sobrien {"mix4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 250130561Sobrien {"pack2.uss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}, EMPTY}, 251130561Sobrien {"pack2.sss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}, EMPTY}, 252130561Sobrien {"pack4.sss", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}, EMPTY}, 253130561Sobrien {"unpack1.h", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 254130561Sobrien {"unpack2.h", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 255130561Sobrien {"unpack4.h", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 256130561Sobrien {"unpack1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 257130561Sobrien {"unpack2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 258130561Sobrien {"unpack4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 259130561Sobrien {"pmin1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}, EMPTY}, 260130561Sobrien {"pmax1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}, EMPTY}, 261130561Sobrien {"pmin2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}, EMPTY}, 262130561Sobrien {"pmax2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}, EMPTY}, 263130561Sobrien {"psad1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}, EMPTY}, 264130561Sobrien {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}, EMPTY}, 265130561Sobrien {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}, EMPTY}, 266130561Sobrien {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 267130561Sobrien {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 268130561Sobrien {"shr", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 269130561Sobrien {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 270130561Sobrien {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 271130561Sobrien {"shr.u", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 272130561Sobrien {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY}, 273130561Sobrien {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY}, 274130561Sobrien {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY}, 275130561Sobrien {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY}, 276130561Sobrien {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 277130561Sobrien {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 278130561Sobrien {"shl", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 279130561Sobrien {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY}, 280130561Sobrien {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY}, 281130561Sobrien {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}, EMPTY}, 28284865Sobrien 283130561Sobrien {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 28484865Sobrien }; 28584865Sobrien 28684865Sobrien#undef I0 28784865Sobrien#undef I 28884865Sobrien#undef I2 28984865Sobrien#undef L 29084865Sobrien#undef bC 29184865Sobrien#undef bIh 29284865Sobrien#undef bTa 29384865Sobrien#undef bTag13 29484865Sobrien#undef bTb 29584865Sobrien#undef bVc 29684865Sobrien#undef bVe 29784865Sobrien#undef bWh 29884865Sobrien#undef bX 29984865Sobrien#undef bXb 30084865Sobrien#undef bX2 30184865Sobrien#undef bX2a 30284865Sobrien#undef bX2b 30384865Sobrien#undef bX2c 30484865Sobrien#undef bX3 30584865Sobrien#undef bX6 30684865Sobrien#undef bY 30784865Sobrien#undef bZa 30884865Sobrien#undef bZb 30984865Sobrien#undef mC 31084865Sobrien#undef mIh 31184865Sobrien#undef mTa 31284865Sobrien#undef mTag13 31384865Sobrien#undef mTb 31484865Sobrien#undef mVc 31584865Sobrien#undef mVe 31684865Sobrien#undef mWh 31784865Sobrien#undef mX 31884865Sobrien#undef mXb 31984865Sobrien#undef mX2 32084865Sobrien#undef mX2a 32184865Sobrien#undef mX2b 32284865Sobrien#undef mX2c 32384865Sobrien#undef mX3 32484865Sobrien#undef mX6 32584865Sobrien#undef mY 32684865Sobrien#undef mZa 32784865Sobrien#undef mZb 32884865Sobrien#undef OpZaZbVeX2aX2b 32984865Sobrien#undef OpZaZbVeX2aX2bX2c 33084865Sobrien#undef OpX2X 33184865Sobrien#undef OpX2XYa 33284865Sobrien#undef OpX2XYb 33384865Sobrien#undef OpX2TaTbYaC 33484865Sobrien#undef OpX3 33584865Sobrien#undef OpX3X6 33684865Sobrien#undef OpX3XbIhWh 33784865Sobrien#undef OpX3XbIhWhTag13 338130561Sobrien#undef EMPTY 339