Changeset 609 for branches/GNU/src/binutils/opcodes/ia64-opc-i.c
- Timestamp:
- Aug 16, 2003, 6:59:22 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GNU/src/binutils/opcodes/ia64-opc-i.c
-
Property cvs2svn:cvs-rev
changed from
1.1
to1.1.1.2
r608 r609 1 1 /* ia64-opc-i.c -- IA-64 `I' opcode table. 2 Copyright 1998, 1999, 2000 Free Software Foundation, Inc.2 Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc. 3 3 Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 4 4 … … 87 87 #define OpX3X6(a,b,c) (bOp (a) | bX3 (b) | bX6(c)), \ 88 88 (mOp | mX3 | mX6) 89 #define OpX3X6Yb(a,b,c,d) (bOp (a) | bX3 (b) | bX6(c) | bYb(d)), \ 90 (mOp | mX3 | mX6 | mYb) 89 91 #define OpX3XbIhWh(a,b,c,d,e) \ 90 92 (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e)), \ … … 94 96 (mOp | mX3 | mXb | mIh | mWh | mTag13) 95 97 98 /* Used to initialise unused fields in ia64_opcode struct, 99 in order to stop gcc from complaining. */ 100 #define EMPTY 0,0,NULL 101 96 102 struct ia64_opcode ia64_opcodes_i[] = 97 103 { 98 /* I-type instruction encodings (sorted according to major opcode) */ 99 100 {"break.i", I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX}, 101 {"nop.i", I0, OpX3X6 (0, 0, 0x01), {IMMU21}, X_IN_MLX}, 102 {"chk.s.i", I0, OpX3 (0, 1), {R2, TGT25b}}, 103 104 {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO}, 104 /* I-type instruction encodings (sorted according to major opcode). */ 105 106 {"break.i", I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX, 0, NULL}, 107 {"nop.i", I0, OpX3X6Yb (0, 0, 0x01, 0), {IMMU21}, X_IN_MLX, 0, NULL}, 108 {"hint.i", I0, OpX3X6Yb (0, 0, 0x01, 1), {IMMU21}, X_IN_MLX, 0, NULL}, 109 {"chk.s.i", I0, OpX3 (0, 1), {R2, TGT25b}, EMPTY}, 110 111 {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO, 0, NULL}, 105 112 #define MOV(a,b,c,d) \ 106 I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b} 113 I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}, EMPTY 107 114 {"mov.sptk", MOV (7, 0, 0, 0)}, 108 115 {"mov.sptk.imp", MOV (7, 0, 1, 0)}, … … 118 125 {"mov.ret.dptk.imp", MOV (7, 1, 1, 2)}, 119 126 #undef MOV 120 {"mov", I, OpX3X6 (0, 0, 0x31), {R1, B2} },121 {"mov", I, OpX3 (0, 3), {PR, R2, IMM17} },122 {"mov", I, OpX3 (0, 2), {PR_ROT, IMM44} },123 {"mov", I, OpX3X6 (0, 0, 0x30), {R1, IP} },124 {"mov", I, OpX3X6 (0, 0, 0x33), {R1, PR} },125 {"mov.i", I, OpX3X6 (0, 0, 0x2a), {AR3, R2} },126 {"mov.i", I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8} },127 {"mov.i", I, OpX3X6 (0, 0, 0x32), {R1, AR3} },128 {"zxt1", I, OpX3X6 (0, 0, 0x10), {R1, R3} },129 {"zxt2", I, OpX3X6 (0, 0, 0x11), {R1, R3} },130 {"zxt4", I, OpX3X6 (0, 0, 0x12), {R1, R3} },131 {"sxt1", I, OpX3X6 (0, 0, 0x14), {R1, R3} },132 {"sxt2", I, OpX3X6 (0, 0, 0x15), {R1, R3} },133 {"sxt4", I, OpX3X6 (0, 0, 0x16), {R1, R3} },134 {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3} },135 {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3} },136 {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3} },137 {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3} },138 139 {"dep", I, Op (4), {R1, R2, R3, CPOS6c, LEN4} },140 141 {"shrp", I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6} },127 {"mov", I, OpX3X6 (0, 0, 0x31), {R1, B2}, EMPTY}, 128 {"mov", I, OpX3 (0, 3), {PR, R2, IMM17}, EMPTY}, 129 {"mov", I, OpX3 (0, 2), {PR_ROT, IMM44}, EMPTY}, 130 {"mov", I, OpX3X6 (0, 0, 0x30), {R1, IP}, EMPTY}, 131 {"mov", I, OpX3X6 (0, 0, 0x33), {R1, PR}, EMPTY}, 132 {"mov.i", I, OpX3X6 (0, 0, 0x2a), {AR3, R2}, EMPTY}, 133 {"mov.i", I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}, EMPTY}, 134 {"mov.i", I, OpX3X6 (0, 0, 0x32), {R1, AR3}, EMPTY}, 135 {"zxt1", I, OpX3X6 (0, 0, 0x10), {R1, R3}, EMPTY}, 136 {"zxt2", I, OpX3X6 (0, 0, 0x11), {R1, R3}, EMPTY}, 137 {"zxt4", I, OpX3X6 (0, 0, 0x12), {R1, R3}, EMPTY}, 138 {"sxt1", I, OpX3X6 (0, 0, 0x14), {R1, R3}, EMPTY}, 139 {"sxt2", I, OpX3X6 (0, 0, 0x15), {R1, R3}, EMPTY}, 140 {"sxt4", I, OpX3X6 (0, 0, 0x16), {R1, R3}, EMPTY}, 141 {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}, EMPTY}, 142 {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}, EMPTY}, 143 {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}, EMPTY}, 144 {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}, EMPTY}, 145 146 {"dep", I, Op (4), {R1, R2, R3, CPOS6c, LEN4}, EMPTY}, 147 148 {"shrp", I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}, EMPTY}, 142 149 143 150 {"shr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6}, 144 PSEUDO | LEN_EQ_64MCNT },145 {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6} },151 PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 152 {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}, EMPTY}, 146 153 147 154 {"shr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6}, 148 PSEUDO | LEN_EQ_64MCNT },149 {"extr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6} },155 PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 156 {"extr", I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}, EMPTY}, 150 157 151 158 {"shl", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a}, 152 PSEUDO | LEN_EQ_64MCNT },153 {"dep.z", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6} },154 {"dep.z", I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6} },155 {"dep", I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6} },159 PSEUDO | LEN_EQ_64MCNT, 0, NULL}, 160 {"dep.z", I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}, EMPTY}, 161 {"dep.z", I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}, EMPTY}, 162 {"dep", I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}, EMPTY}, 156 163 #define TBIT(a,b,c,d) \ 157 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6} 164 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}, EMPTY 158 165 #define TBITCM(a,b,c,d) \ 159 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO 166 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO, 0, NULL 160 167 {"tbit.z", TBIT (0, 0, 0, 0)}, 161 168 {"tbit.nz", TBITCM (0, 0, 0, 0)}, … … 176 183 #undef TBIT 177 184 #define TNAT(a,b,c,d) \ 178 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3} 185 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}, EMPTY 179 186 #define TNATCM(a,b,c,d) \ 180 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO 187 I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO, 0, NULL 181 188 {"tnat.z", TNAT (0, 0, 1, 0)}, 182 189 {"tnat.nz", TNATCM (0, 0, 1, 0)}, … … 197 204 #undef TNAT 198 205 199 {"pmpyshr2", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c} },200 {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c} },201 {"pmpy2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3} },202 {"pmpy2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3} },203 {"mix1.r", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3} },204 {"mix2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3} },205 {"mix4.r", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3} },206 {"mix1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3} },207 {"mix2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3} },208 {"mix4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3} },209 {"pack2.uss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3} },210 {"pack2.sss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3} },211 {"pack4.sss", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3} },212 {"unpack1.h", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3} },213 {"unpack2.h", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3} },214 {"unpack4.h", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3} },215 {"unpack1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3} },216 {"unpack2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3} },217 {"unpack4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3} },218 {"pmin1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3} },219 {"pmax1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3} },220 {"pmin2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3} },221 {"pmax2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3} },222 {"psad1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3} },223 {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4} },224 {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8} },225 {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2} },226 {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2} },227 {"shr", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2} },228 {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2} },229 {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2} },230 {"shr.u", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2} },231 {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5} },232 {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5} },233 {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5} },234 {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5} },235 {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3} },236 {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3} },237 {"shl", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3} },238 {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5} },239 {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5} },240 {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3} },241 242 { 0}206 {"pmpyshr2", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}, EMPTY}, 207 {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}, EMPTY}, 208 {"pmpy2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}, EMPTY}, 209 {"pmpy2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}, EMPTY}, 210 {"mix1.r", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 211 {"mix2.r", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 212 {"mix4.r", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY}, 213 {"mix1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 214 {"mix2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 215 {"mix4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY}, 216 {"pack2.uss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}, EMPTY}, 217 {"pack2.sss", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}, EMPTY}, 218 {"pack4.sss", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}, EMPTY}, 219 {"unpack1.h", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 220 {"unpack2.h", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 221 {"unpack4.h", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY}, 222 {"unpack1.l", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 223 {"unpack2.l", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 224 {"unpack4.l", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY}, 225 {"pmin1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}, EMPTY}, 226 {"pmax1.u", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}, EMPTY}, 227 {"pmin2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}, EMPTY}, 228 {"pmax2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}, EMPTY}, 229 {"psad1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}, EMPTY}, 230 {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}, EMPTY}, 231 {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}, EMPTY}, 232 {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 233 {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 234 {"shr", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY}, 235 {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 236 {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 237 {"shr.u", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY}, 238 {"pshr2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY}, 239 {"pshr4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY}, 240 {"pshr2.u", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY}, 241 {"pshr4.u", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY}, 242 {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 243 {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 244 {"shl", I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY}, 245 {"pshl2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY}, 246 {"pshl4", I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY}, 247 {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}, EMPTY}, 248 249 {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL} 243 250 }; 244 251 … … 295 302 #undef OpX3XbIhWh 296 303 #undef OpX3XbIhWhTag13 304 #undef EMPTY -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.