1 /* TILE-Gx opcode information. 2 * 3 * Copyright 2011 Free Software Foundation, Inc. 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 18 * MA 02110-1301, USA. 19 */ 20 21 #ifndef opcode_tile_h 22 #define opcode_tile_h 23 24 typedef unsigned long long tilegx_bundle_bits; 25 26 27 enum 28 { 29 TILEGX_MAX_OPERANDS = 4 /* bfexts */ 30 }; 31 32 typedef enum 33 { 34 TILEGX_OPC_BPT, 35 TILEGX_OPC_INFO, 36 TILEGX_OPC_INFOL, 37 TILEGX_OPC_LD4S_TLS, 38 TILEGX_OPC_LD_TLS, 39 TILEGX_OPC_MOVE, 40 TILEGX_OPC_MOVEI, 41 TILEGX_OPC_MOVELI, 42 TILEGX_OPC_PREFETCH, 43 TILEGX_OPC_PREFETCH_ADD_L1, 44 TILEGX_OPC_PREFETCH_ADD_L1_FAULT, 45 TILEGX_OPC_PREFETCH_ADD_L2, 46 TILEGX_OPC_PREFETCH_ADD_L2_FAULT, 47 TILEGX_OPC_PREFETCH_ADD_L3, 48 TILEGX_OPC_PREFETCH_ADD_L3_FAULT, 49 TILEGX_OPC_PREFETCH_L1, 50 TILEGX_OPC_PREFETCH_L1_FAULT, 51 TILEGX_OPC_PREFETCH_L2, 52 TILEGX_OPC_PREFETCH_L2_FAULT, 53 TILEGX_OPC_PREFETCH_L3, 54 TILEGX_OPC_PREFETCH_L3_FAULT, 55 TILEGX_OPC_RAISE, 56 TILEGX_OPC_ADD, 57 TILEGX_OPC_ADDI, 58 TILEGX_OPC_ADDLI, 59 TILEGX_OPC_ADDX, 60 TILEGX_OPC_ADDXI, 61 TILEGX_OPC_ADDXLI, 62 TILEGX_OPC_ADDXSC, 63 TILEGX_OPC_AND, 64 TILEGX_OPC_ANDI, 65 TILEGX_OPC_BEQZ, 66 TILEGX_OPC_BEQZT, 67 TILEGX_OPC_BFEXTS, 68 TILEGX_OPC_BFEXTU, 69 TILEGX_OPC_BFINS, 70 TILEGX_OPC_BGEZ, 71 TILEGX_OPC_BGEZT, 72 TILEGX_OPC_BGTZ, 73 TILEGX_OPC_BGTZT, 74 TILEGX_OPC_BLBC, 75 TILEGX_OPC_BLBCT, 76 TILEGX_OPC_BLBS, 77 TILEGX_OPC_BLBST, 78 TILEGX_OPC_BLEZ, 79 TILEGX_OPC_BLEZT, 80 TILEGX_OPC_BLTZ, 81 TILEGX_OPC_BLTZT, 82 TILEGX_OPC_BNEZ, 83 TILEGX_OPC_BNEZT, 84 TILEGX_OPC_CLZ, 85 TILEGX_OPC_CMOVEQZ, 86 TILEGX_OPC_CMOVNEZ, 87 TILEGX_OPC_CMPEQ, 88 TILEGX_OPC_CMPEQI, 89 TILEGX_OPC_CMPEXCH, 90 TILEGX_OPC_CMPEXCH4, 91 TILEGX_OPC_CMPLES, 92 TILEGX_OPC_CMPLEU, 93 TILEGX_OPC_CMPLTS, 94 TILEGX_OPC_CMPLTSI, 95 TILEGX_OPC_CMPLTU, 96 TILEGX_OPC_CMPLTUI, 97 TILEGX_OPC_CMPNE, 98 TILEGX_OPC_CMUL, 99 TILEGX_OPC_CMULA, 100 TILEGX_OPC_CMULAF, 101 TILEGX_OPC_CMULF, 102 TILEGX_OPC_CMULFR, 103 TILEGX_OPC_CMULH, 104 TILEGX_OPC_CMULHR, 105 TILEGX_OPC_CRC32_32, 106 TILEGX_OPC_CRC32_8, 107 TILEGX_OPC_CTZ, 108 TILEGX_OPC_DBLALIGN, 109 TILEGX_OPC_DBLALIGN2, 110 TILEGX_OPC_DBLALIGN4, 111 TILEGX_OPC_DBLALIGN6, 112 TILEGX_OPC_DRAIN, 113 TILEGX_OPC_DTLBPR, 114 TILEGX_OPC_EXCH, 115 TILEGX_OPC_EXCH4, 116 TILEGX_OPC_FDOUBLE_ADD_FLAGS, 117 TILEGX_OPC_FDOUBLE_ADDSUB, 118 TILEGX_OPC_FDOUBLE_MUL_FLAGS, 119 TILEGX_OPC_FDOUBLE_PACK1, 120 TILEGX_OPC_FDOUBLE_PACK2, 121 TILEGX_OPC_FDOUBLE_SUB_FLAGS, 122 TILEGX_OPC_FDOUBLE_UNPACK_MAX, 123 TILEGX_OPC_FDOUBLE_UNPACK_MIN, 124 TILEGX_OPC_FETCHADD, 125 TILEGX_OPC_FETCHADD4, 126 TILEGX_OPC_FETCHADDGEZ, 127 TILEGX_OPC_FETCHADDGEZ4, 128 TILEGX_OPC_FETCHAND, 129 TILEGX_OPC_FETCHAND4, 130 TILEGX_OPC_FETCHOR, 131 TILEGX_OPC_FETCHOR4, 132 TILEGX_OPC_FINV, 133 TILEGX_OPC_FLUSH, 134 TILEGX_OPC_FLUSHWB, 135 TILEGX_OPC_FNOP, 136 TILEGX_OPC_FSINGLE_ADD1, 137 TILEGX_OPC_FSINGLE_ADDSUB2, 138 TILEGX_OPC_FSINGLE_MUL1, 139 TILEGX_OPC_FSINGLE_MUL2, 140 TILEGX_OPC_FSINGLE_PACK1, 141 TILEGX_OPC_FSINGLE_PACK2, 142 TILEGX_OPC_FSINGLE_SUB1, 143 TILEGX_OPC_ICOH, 144 TILEGX_OPC_ILL, 145 TILEGX_OPC_INV, 146 TILEGX_OPC_IRET, 147 TILEGX_OPC_J, 148 TILEGX_OPC_JAL, 149 TILEGX_OPC_JALR, 150 TILEGX_OPC_JALRP, 151 TILEGX_OPC_JR, 152 TILEGX_OPC_JRP, 153 TILEGX_OPC_LD, 154 TILEGX_OPC_LD1S, 155 TILEGX_OPC_LD1S_ADD, 156 TILEGX_OPC_LD1U, 157 TILEGX_OPC_LD1U_ADD, 158 TILEGX_OPC_LD2S, 159 TILEGX_OPC_LD2S_ADD, 160 TILEGX_OPC_LD2U, 161 TILEGX_OPC_LD2U_ADD, 162 TILEGX_OPC_LD4S, 163 TILEGX_OPC_LD4S_ADD, 164 TILEGX_OPC_LD4U, 165 TILEGX_OPC_LD4U_ADD, 166 TILEGX_OPC_LD_ADD, 167 TILEGX_OPC_LDNA, 168 TILEGX_OPC_LDNA_ADD, 169 TILEGX_OPC_LDNT, 170 TILEGX_OPC_LDNT1S, 171 TILEGX_OPC_LDNT1S_ADD, 172 TILEGX_OPC_LDNT1U, 173 TILEGX_OPC_LDNT1U_ADD, 174 TILEGX_OPC_LDNT2S, 175 TILEGX_OPC_LDNT2S_ADD, 176 TILEGX_OPC_LDNT2U, 177 TILEGX_OPC_LDNT2U_ADD, 178 TILEGX_OPC_LDNT4S, 179 TILEGX_OPC_LDNT4S_ADD, 180 TILEGX_OPC_LDNT4U, 181 TILEGX_OPC_LDNT4U_ADD, 182 TILEGX_OPC_LDNT_ADD, 183 TILEGX_OPC_LNK, 184 TILEGX_OPC_MF, 185 TILEGX_OPC_MFSPR, 186 TILEGX_OPC_MM, 187 TILEGX_OPC_MNZ, 188 TILEGX_OPC_MTSPR, 189 TILEGX_OPC_MUL_HS_HS, 190 TILEGX_OPC_MUL_HS_HU, 191 TILEGX_OPC_MUL_HS_LS, 192 TILEGX_OPC_MUL_HS_LU, 193 TILEGX_OPC_MUL_HU_HU, 194 TILEGX_OPC_MUL_HU_LS, 195 TILEGX_OPC_MUL_HU_LU, 196 TILEGX_OPC_MUL_LS_LS, 197 TILEGX_OPC_MUL_LS_LU, 198 TILEGX_OPC_MUL_LU_LU, 199 TILEGX_OPC_MULA_HS_HS, 200 TILEGX_OPC_MULA_HS_HU, 201 TILEGX_OPC_MULA_HS_LS, 202 TILEGX_OPC_MULA_HS_LU, 203 TILEGX_OPC_MULA_HU_HU, 204 TILEGX_OPC_MULA_HU_LS, 205 TILEGX_OPC_MULA_HU_LU, 206 TILEGX_OPC_MULA_LS_LS, 207 TILEGX_OPC_MULA_LS_LU, 208 TILEGX_OPC_MULA_LU_LU, 209 TILEGX_OPC_MULAX, 210 TILEGX_OPC_MULX, 211 TILEGX_OPC_MZ, 212 TILEGX_OPC_NAP, 213 TILEGX_OPC_NOP, 214 TILEGX_OPC_NOR, 215 TILEGX_OPC_OR, 216 TILEGX_OPC_ORI, 217 TILEGX_OPC_PCNT, 218 TILEGX_OPC_REVBITS, 219 TILEGX_OPC_REVBYTES, 220 TILEGX_OPC_ROTL, 221 TILEGX_OPC_ROTLI, 222 TILEGX_OPC_SHL, 223 TILEGX_OPC_SHL16INSLI, 224 TILEGX_OPC_SHL1ADD, 225 TILEGX_OPC_SHL1ADDX, 226 TILEGX_OPC_SHL2ADD, 227 TILEGX_OPC_SHL2ADDX, 228 TILEGX_OPC_SHL3ADD, 229 TILEGX_OPC_SHL3ADDX, 230 TILEGX_OPC_SHLI, 231 TILEGX_OPC_SHLX, 232 TILEGX_OPC_SHLXI, 233 TILEGX_OPC_SHRS, 234 TILEGX_OPC_SHRSI, 235 TILEGX_OPC_SHRU, 236 TILEGX_OPC_SHRUI, 237 TILEGX_OPC_SHRUX, 238 TILEGX_OPC_SHRUXI, 239 TILEGX_OPC_SHUFFLEBYTES, 240 TILEGX_OPC_ST, 241 TILEGX_OPC_ST1, 242 TILEGX_OPC_ST1_ADD, 243 TILEGX_OPC_ST2, 244 TILEGX_OPC_ST2_ADD, 245 TILEGX_OPC_ST4, 246 TILEGX_OPC_ST4_ADD, 247 TILEGX_OPC_ST_ADD, 248 TILEGX_OPC_STNT, 249 TILEGX_OPC_STNT1, 250 TILEGX_OPC_STNT1_ADD, 251 TILEGX_OPC_STNT2, 252 TILEGX_OPC_STNT2_ADD, 253 TILEGX_OPC_STNT4, 254 TILEGX_OPC_STNT4_ADD, 255 TILEGX_OPC_STNT_ADD, 256 TILEGX_OPC_SUB, 257 TILEGX_OPC_SUBX, 258 TILEGX_OPC_SUBXSC, 259 TILEGX_OPC_SWINT0, 260 TILEGX_OPC_SWINT1, 261 TILEGX_OPC_SWINT2, 262 TILEGX_OPC_SWINT3, 263 TILEGX_OPC_TBLIDXB0, 264 TILEGX_OPC_TBLIDXB1, 265 TILEGX_OPC_TBLIDXB2, 266 TILEGX_OPC_TBLIDXB3, 267 TILEGX_OPC_V1ADD, 268 TILEGX_OPC_V1ADDI, 269 TILEGX_OPC_V1ADDUC, 270 TILEGX_OPC_V1ADIFFU, 271 TILEGX_OPC_V1AVGU, 272 TILEGX_OPC_V1CMPEQ, 273 TILEGX_OPC_V1CMPEQI, 274 TILEGX_OPC_V1CMPLES, 275 TILEGX_OPC_V1CMPLEU, 276 TILEGX_OPC_V1CMPLTS, 277 TILEGX_OPC_V1CMPLTSI, 278 TILEGX_OPC_V1CMPLTU, 279 TILEGX_OPC_V1CMPLTUI, 280 TILEGX_OPC_V1CMPNE, 281 TILEGX_OPC_V1DDOTPU, 282 TILEGX_OPC_V1DDOTPUA, 283 TILEGX_OPC_V1DDOTPUS, 284 TILEGX_OPC_V1DDOTPUSA, 285 TILEGX_OPC_V1DOTP, 286 TILEGX_OPC_V1DOTPA, 287 TILEGX_OPC_V1DOTPU, 288 TILEGX_OPC_V1DOTPUA, 289 TILEGX_OPC_V1DOTPUS, 290 TILEGX_OPC_V1DOTPUSA, 291 TILEGX_OPC_V1INT_H, 292 TILEGX_OPC_V1INT_L, 293 TILEGX_OPC_V1MAXU, 294 TILEGX_OPC_V1MAXUI, 295 TILEGX_OPC_V1MINU, 296 TILEGX_OPC_V1MINUI, 297 TILEGX_OPC_V1MNZ, 298 TILEGX_OPC_V1MULTU, 299 TILEGX_OPC_V1MULU, 300 TILEGX_OPC_V1MULUS, 301 TILEGX_OPC_V1MZ, 302 TILEGX_OPC_V1SADAU, 303 TILEGX_OPC_V1SADU, 304 TILEGX_OPC_V1SHL, 305 TILEGX_OPC_V1SHLI, 306 TILEGX_OPC_V1SHRS, 307 TILEGX_OPC_V1SHRSI, 308 TILEGX_OPC_V1SHRU, 309 TILEGX_OPC_V1SHRUI, 310 TILEGX_OPC_V1SUB, 311 TILEGX_OPC_V1SUBUC, 312 TILEGX_OPC_V2ADD, 313 TILEGX_OPC_V2ADDI, 314 TILEGX_OPC_V2ADDSC, 315 TILEGX_OPC_V2ADIFFS, 316 TILEGX_OPC_V2AVGS, 317 TILEGX_OPC_V2CMPEQ, 318 TILEGX_OPC_V2CMPEQI, 319 TILEGX_OPC_V2CMPLES, 320 TILEGX_OPC_V2CMPLEU, 321 TILEGX_OPC_V2CMPLTS, 322 TILEGX_OPC_V2CMPLTSI, 323 TILEGX_OPC_V2CMPLTU, 324 TILEGX_OPC_V2CMPLTUI, 325 TILEGX_OPC_V2CMPNE, 326 TILEGX_OPC_V2DOTP, 327 TILEGX_OPC_V2DOTPA, 328 TILEGX_OPC_V2INT_H, 329 TILEGX_OPC_V2INT_L, 330 TILEGX_OPC_V2MAXS, 331 TILEGX_OPC_V2MAXSI, 332 TILEGX_OPC_V2MINS, 333 TILEGX_OPC_V2MINSI, 334 TILEGX_OPC_V2MNZ, 335 TILEGX_OPC_V2MULFSC, 336 TILEGX_OPC_V2MULS, 337 TILEGX_OPC_V2MULTS, 338 TILEGX_OPC_V2MZ, 339 TILEGX_OPC_V2PACKH, 340 TILEGX_OPC_V2PACKL, 341 TILEGX_OPC_V2PACKUC, 342 TILEGX_OPC_V2SADAS, 343 TILEGX_OPC_V2SADAU, 344 TILEGX_OPC_V2SADS, 345 TILEGX_OPC_V2SADU, 346 TILEGX_OPC_V2SHL, 347 TILEGX_OPC_V2SHLI, 348 TILEGX_OPC_V2SHLSC, 349 TILEGX_OPC_V2SHRS, 350 TILEGX_OPC_V2SHRSI, 351 TILEGX_OPC_V2SHRU, 352 TILEGX_OPC_V2SHRUI, 353 TILEGX_OPC_V2SUB, 354 TILEGX_OPC_V2SUBSC, 355 TILEGX_OPC_V4ADD, 356 TILEGX_OPC_V4ADDSC, 357 TILEGX_OPC_V4INT_H, 358 TILEGX_OPC_V4INT_L, 359 TILEGX_OPC_V4PACKSC, 360 TILEGX_OPC_V4SHL, 361 TILEGX_OPC_V4SHLSC, 362 TILEGX_OPC_V4SHRS, 363 TILEGX_OPC_V4SHRU, 364 TILEGX_OPC_V4SUB, 365 TILEGX_OPC_V4SUBSC, 366 TILEGX_OPC_WH64, 367 TILEGX_OPC_XOR, 368 TILEGX_OPC_XORI, 369 TILEGX_OPC_NONE 370 } tilegx_mnemonic; 371 372 /* 64-bit pattern for a { bpt ; nop } bundle. */ 373 #define TILEGX_BPT_BUNDLE 0x286a44ae51485000ULL 374 375 376 377 static __inline unsigned int 378 get_BFEnd_X0(tilegx_bundle_bits num) 379 { 380 const unsigned int n = (unsigned int)num; 381 return (((n >> 12)) & 0x3f); 382 } 383 384 static __inline unsigned int 385 get_BFOpcodeExtension_X0(tilegx_bundle_bits num) 386 { 387 const unsigned int n = (unsigned int)num; 388 return (((n >> 24)) & 0xf); 389 } 390 391 static __inline unsigned int 392 get_BFStart_X0(tilegx_bundle_bits num) 393 { 394 const unsigned int n = (unsigned int)num; 395 return (((n >> 18)) & 0x3f); 396 } 397 398 static __inline unsigned int 399 get_BrOff_X1(tilegx_bundle_bits n) 400 { 401 return (((unsigned int)(n >> 31)) & 0x0000003f) | 402 (((unsigned int)(n >> 37)) & 0x0001ffc0); 403 } 404 405 static __inline unsigned int 406 get_BrType_X1(tilegx_bundle_bits n) 407 { 408 return (((unsigned int)(n >> 54)) & 0x1f); 409 } 410 411 static __inline unsigned int 412 get_Dest_Imm8_X1(tilegx_bundle_bits n) 413 { 414 return (((unsigned int)(n >> 31)) & 0x0000003f) | 415 (((unsigned int)(n >> 43)) & 0x000000c0); 416 } 417 418 static __inline unsigned int 419 get_Dest_X0(tilegx_bundle_bits num) 420 { 421 const unsigned int n = (unsigned int)num; 422 return (((n >> 0)) & 0x3f); 423 } 424 425 static __inline unsigned int 426 get_Dest_X1(tilegx_bundle_bits n) 427 { 428 return (((unsigned int)(n >> 31)) & 0x3f); 429 } 430 431 static __inline unsigned int 432 get_Dest_Y0(tilegx_bundle_bits num) 433 { 434 const unsigned int n = (unsigned int)num; 435 return (((n >> 0)) & 0x3f); 436 } 437 438 static __inline unsigned int 439 get_Dest_Y1(tilegx_bundle_bits n) 440 { 441 return (((unsigned int)(n >> 31)) & 0x3f); 442 } 443 444 static __inline unsigned int 445 get_Imm16_X0(tilegx_bundle_bits num) 446 { 447 const unsigned int n = (unsigned int)num; 448 return (((n >> 12)) & 0xffff); 449 } 450 451 static __inline unsigned int 452 get_Imm16_X1(tilegx_bundle_bits n) 453 { 454 return (((unsigned int)(n >> 43)) & 0xffff); 455 } 456 457 static __inline unsigned int 458 get_Imm8OpcodeExtension_X0(tilegx_bundle_bits num) 459 { 460 const unsigned int n = (unsigned int)num; 461 return (((n >> 20)) & 0xff); 462 } 463 464 static __inline unsigned int 465 get_Imm8OpcodeExtension_X1(tilegx_bundle_bits n) 466 { 467 return (((unsigned int)(n >> 51)) & 0xff); 468 } 469 470 static __inline unsigned int 471 get_Imm8_X0(tilegx_bundle_bits num) 472 { 473 const unsigned int n = (unsigned int)num; 474 return (((n >> 12)) & 0xff); 475 } 476 477 static __inline unsigned int 478 get_Imm8_X1(tilegx_bundle_bits n) 479 { 480 return (((unsigned int)(n >> 43)) & 0xff); 481 } 482 483 static __inline unsigned int 484 get_Imm8_Y0(tilegx_bundle_bits num) 485 { 486 const unsigned int n = (unsigned int)num; 487 return (((n >> 12)) & 0xff); 488 } 489 490 static __inline unsigned int 491 get_Imm8_Y1(tilegx_bundle_bits n) 492 { 493 return (((unsigned int)(n >> 43)) & 0xff); 494 } 495 496 static __inline unsigned int 497 get_JumpOff_X1(tilegx_bundle_bits n) 498 { 499 return (((unsigned int)(n >> 31)) & 0x7ffffff); 500 } 501 502 static __inline unsigned int 503 get_JumpOpcodeExtension_X1(tilegx_bundle_bits n) 504 { 505 return (((unsigned int)(n >> 58)) & 0x1); 506 } 507 508 static __inline unsigned int 509 get_MF_Imm14_X1(tilegx_bundle_bits n) 510 { 511 return (((unsigned int)(n >> 37)) & 0x3fff); 512 } 513 514 static __inline unsigned int 515 get_MT_Imm14_X1(tilegx_bundle_bits n) 516 { 517 return (((unsigned int)(n >> 31)) & 0x0000003f) | 518 (((unsigned int)(n >> 37)) & 0x00003fc0); 519 } 520 521 static __inline unsigned int 522 get_Mode(tilegx_bundle_bits n) 523 { 524 return (((unsigned int)(n >> 62)) & 0x3); 525 } 526 527 static __inline unsigned int 528 get_Opcode_X0(tilegx_bundle_bits num) 529 { 530 const unsigned int n = (unsigned int)num; 531 return (((n >> 28)) & 0x7); 532 } 533 534 static __inline unsigned int 535 get_Opcode_X1(tilegx_bundle_bits n) 536 { 537 return (((unsigned int)(n >> 59)) & 0x7); 538 } 539 540 static __inline unsigned int 541 get_Opcode_Y0(tilegx_bundle_bits num) 542 { 543 const unsigned int n = (unsigned int)num; 544 return (((n >> 27)) & 0xf); 545 } 546 547 static __inline unsigned int 548 get_Opcode_Y1(tilegx_bundle_bits n) 549 { 550 return (((unsigned int)(n >> 58)) & 0xf); 551 } 552 553 static __inline unsigned int 554 get_Opcode_Y2(tilegx_bundle_bits n) 555 { 556 return (((n >> 26)) & 0x00000001) | 557 (((unsigned int)(n >> 56)) & 0x00000002); 558 } 559 560 static __inline unsigned int 561 get_RRROpcodeExtension_X0(tilegx_bundle_bits num) 562 { 563 const unsigned int n = (unsigned int)num; 564 return (((n >> 18)) & 0x3ff); 565 } 566 567 static __inline unsigned int 568 get_RRROpcodeExtension_X1(tilegx_bundle_bits n) 569 { 570 return (((unsigned int)(n >> 49)) & 0x3ff); 571 } 572 573 static __inline unsigned int 574 get_RRROpcodeExtension_Y0(tilegx_bundle_bits num) 575 { 576 const unsigned int n = (unsigned int)num; 577 return (((n >> 18)) & 0x3); 578 } 579 580 static __inline unsigned int 581 get_RRROpcodeExtension_Y1(tilegx_bundle_bits n) 582 { 583 return (((unsigned int)(n >> 49)) & 0x3); 584 } 585 586 static __inline unsigned int 587 get_ShAmt_X0(tilegx_bundle_bits num) 588 { 589 const unsigned int n = (unsigned int)num; 590 return (((n >> 12)) & 0x3f); 591 } 592 593 static __inline unsigned int 594 get_ShAmt_X1(tilegx_bundle_bits n) 595 { 596 return (((unsigned int)(n >> 43)) & 0x3f); 597 } 598 599 static __inline unsigned int 600 get_ShAmt_Y0(tilegx_bundle_bits num) 601 { 602 const unsigned int n = (unsigned int)num; 603 return (((n >> 12)) & 0x3f); 604 } 605 606 static __inline unsigned int 607 get_ShAmt_Y1(tilegx_bundle_bits n) 608 { 609 return (((unsigned int)(n >> 43)) & 0x3f); 610 } 611 612 static __inline unsigned int 613 get_ShiftOpcodeExtension_X0(tilegx_bundle_bits num) 614 { 615 const unsigned int n = (unsigned int)num; 616 return (((n >> 18)) & 0x3ff); 617 } 618 619 static __inline unsigned int 620 get_ShiftOpcodeExtension_X1(tilegx_bundle_bits n) 621 { 622 return (((unsigned int)(n >> 49)) & 0x3ff); 623 } 624 625 static __inline unsigned int 626 get_ShiftOpcodeExtension_Y0(tilegx_bundle_bits num) 627 { 628 const unsigned int n = (unsigned int)num; 629 return (((n >> 18)) & 0x3); 630 } 631 632 static __inline unsigned int 633 get_ShiftOpcodeExtension_Y1(tilegx_bundle_bits n) 634 { 635 return (((unsigned int)(n >> 49)) & 0x3); 636 } 637 638 static __inline unsigned int 639 get_SrcA_X0(tilegx_bundle_bits num) 640 { 641 const unsigned int n = (unsigned int)num; 642 return (((n >> 6)) & 0x3f); 643 } 644 645 static __inline unsigned int 646 get_SrcA_X1(tilegx_bundle_bits n) 647 { 648 return (((unsigned int)(n >> 37)) & 0x3f); 649 } 650 651 static __inline unsigned int 652 get_SrcA_Y0(tilegx_bundle_bits num) 653 { 654 const unsigned int n = (unsigned int)num; 655 return (((n >> 6)) & 0x3f); 656 } 657 658 static __inline unsigned int 659 get_SrcA_Y1(tilegx_bundle_bits n) 660 { 661 return (((unsigned int)(n >> 37)) & 0x3f); 662 } 663 664 static __inline unsigned int 665 get_SrcA_Y2(tilegx_bundle_bits num) 666 { 667 const unsigned int n = (unsigned int)num; 668 return (((n >> 20)) & 0x3f); 669 } 670 671 static __inline unsigned int 672 get_SrcBDest_Y2(tilegx_bundle_bits n) 673 { 674 return (((unsigned int)(n >> 51)) & 0x3f); 675 } 676 677 static __inline unsigned int 678 get_SrcB_X0(tilegx_bundle_bits num) 679 { 680 const unsigned int n = (unsigned int)num; 681 return (((n >> 12)) & 0x3f); 682 } 683 684 static __inline unsigned int 685 get_SrcB_X1(tilegx_bundle_bits n) 686 { 687 return (((unsigned int)(n >> 43)) & 0x3f); 688 } 689 690 static __inline unsigned int 691 get_SrcB_Y0(tilegx_bundle_bits num) 692 { 693 const unsigned int n = (unsigned int)num; 694 return (((n >> 12)) & 0x3f); 695 } 696 697 static __inline unsigned int 698 get_SrcB_Y1(tilegx_bundle_bits n) 699 { 700 return (((unsigned int)(n >> 43)) & 0x3f); 701 } 702 703 static __inline unsigned int 704 get_UnaryOpcodeExtension_X0(tilegx_bundle_bits num) 705 { 706 const unsigned int n = (unsigned int)num; 707 return (((n >> 12)) & 0x3f); 708 } 709 710 static __inline unsigned int 711 get_UnaryOpcodeExtension_X1(tilegx_bundle_bits n) 712 { 713 return (((unsigned int)(n >> 43)) & 0x3f); 714 } 715 716 static __inline unsigned int 717 get_UnaryOpcodeExtension_Y0(tilegx_bundle_bits num) 718 { 719 const unsigned int n = (unsigned int)num; 720 return (((n >> 12)) & 0x3f); 721 } 722 723 static __inline unsigned int 724 get_UnaryOpcodeExtension_Y1(tilegx_bundle_bits n) 725 { 726 return (((unsigned int)(n >> 43)) & 0x3f); 727 } 728 729 730 static __inline int 731 sign_extend(int n, int num_bits) 732 { 733 int shift = (int)(sizeof(int) * 8 - num_bits); 734 return (n << shift) >> shift; 735 } 736 737 738 739 static __inline tilegx_bundle_bits 740 create_BFEnd_X0(int num) 741 { 742 const unsigned int n = (unsigned int)num; 743 return ((n & 0x3f) << 12); 744 } 745 746 static __inline tilegx_bundle_bits 747 create_BFOpcodeExtension_X0(int num) 748 { 749 const unsigned int n = (unsigned int)num; 750 return ((n & 0xf) << 24); 751 } 752 753 static __inline tilegx_bundle_bits 754 create_BFStart_X0(int num) 755 { 756 const unsigned int n = (unsigned int)num; 757 return ((n & 0x3f) << 18); 758 } 759 760 static __inline tilegx_bundle_bits 761 create_BrOff_X1(int num) 762 { 763 const unsigned int n = (unsigned int)num; 764 return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) | 765 (((tilegx_bundle_bits)(n & 0x0001ffc0)) << 37); 766 } 767 768 static __inline tilegx_bundle_bits 769 create_BrType_X1(int num) 770 { 771 const unsigned int n = (unsigned int)num; 772 return (((tilegx_bundle_bits)(n & 0x1f)) << 54); 773 } 774 775 static __inline tilegx_bundle_bits 776 create_Dest_Imm8_X1(int num) 777 { 778 const unsigned int n = (unsigned int)num; 779 return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) | 780 (((tilegx_bundle_bits)(n & 0x000000c0)) << 43); 781 } 782 783 static __inline tilegx_bundle_bits 784 create_Dest_X0(int num) 785 { 786 const unsigned int n = (unsigned int)num; 787 return ((n & 0x3f) << 0); 788 } 789 790 static __inline tilegx_bundle_bits 791 create_Dest_X1(int num) 792 { 793 const unsigned int n = (unsigned int)num; 794 return (((tilegx_bundle_bits)(n & 0x3f)) << 31); 795 } 796 797 static __inline tilegx_bundle_bits 798 create_Dest_Y0(int num) 799 { 800 const unsigned int n = (unsigned int)num; 801 return ((n & 0x3f) << 0); 802 } 803 804 static __inline tilegx_bundle_bits 805 create_Dest_Y1(int num) 806 { 807 const unsigned int n = (unsigned int)num; 808 return (((tilegx_bundle_bits)(n & 0x3f)) << 31); 809 } 810 811 static __inline tilegx_bundle_bits 812 create_Imm16_X0(int num) 813 { 814 const unsigned int n = (unsigned int)num; 815 return ((n & 0xffff) << 12); 816 } 817 818 static __inline tilegx_bundle_bits 819 create_Imm16_X1(int num) 820 { 821 const unsigned int n = (unsigned int)num; 822 return (((tilegx_bundle_bits)(n & 0xffff)) << 43); 823 } 824 825 static __inline tilegx_bundle_bits 826 create_Imm8OpcodeExtension_X0(int num) 827 { 828 const unsigned int n = (unsigned int)num; 829 return ((n & 0xff) << 20); 830 } 831 832 static __inline tilegx_bundle_bits 833 create_Imm8OpcodeExtension_X1(int num) 834 { 835 const unsigned int n = (unsigned int)num; 836 return (((tilegx_bundle_bits)(n & 0xff)) << 51); 837 } 838 839 static __inline tilegx_bundle_bits 840 create_Imm8_X0(int num) 841 { 842 const unsigned int n = (unsigned int)num; 843 return ((n & 0xff) << 12); 844 } 845 846 static __inline tilegx_bundle_bits 847 create_Imm8_X1(int num) 848 { 849 const unsigned int n = (unsigned int)num; 850 return (((tilegx_bundle_bits)(n & 0xff)) << 43); 851 } 852 853 static __inline tilegx_bundle_bits 854 create_Imm8_Y0(int num) 855 { 856 const unsigned int n = (unsigned int)num; 857 return ((n & 0xff) << 12); 858 } 859 860 static __inline tilegx_bundle_bits 861 create_Imm8_Y1(int num) 862 { 863 const unsigned int n = (unsigned int)num; 864 return (((tilegx_bundle_bits)(n & 0xff)) << 43); 865 } 866 867 static __inline tilegx_bundle_bits 868 create_JumpOff_X1(int num) 869 { 870 const unsigned int n = (unsigned int)num; 871 return (((tilegx_bundle_bits)(n & 0x7ffffff)) << 31); 872 } 873 874 static __inline tilegx_bundle_bits 875 create_JumpOpcodeExtension_X1(int num) 876 { 877 const unsigned int n = (unsigned int)num; 878 return (((tilegx_bundle_bits)(n & 0x1)) << 58); 879 } 880 881 static __inline tilegx_bundle_bits 882 create_MF_Imm14_X1(int num) 883 { 884 const unsigned int n = (unsigned int)num; 885 return (((tilegx_bundle_bits)(n & 0x3fff)) << 37); 886 } 887 888 static __inline tilegx_bundle_bits 889 create_MT_Imm14_X1(int num) 890 { 891 const unsigned int n = (unsigned int)num; 892 return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) | 893 (((tilegx_bundle_bits)(n & 0x00003fc0)) << 37); 894 } 895 896 static __inline tilegx_bundle_bits 897 create_Mode(int num) 898 { 899 const unsigned int n = (unsigned int)num; 900 return (((tilegx_bundle_bits)(n & 0x3)) << 62); 901 } 902 903 static __inline tilegx_bundle_bits 904 create_Opcode_X0(int num) 905 { 906 const unsigned int n = (unsigned int)num; 907 return ((n & 0x7) << 28); 908 } 909 910 static __inline tilegx_bundle_bits 911 create_Opcode_X1(int num) 912 { 913 const unsigned int n = (unsigned int)num; 914 return (((tilegx_bundle_bits)(n & 0x7)) << 59); 915 } 916 917 static __inline tilegx_bundle_bits 918 create_Opcode_Y0(int num) 919 { 920 const unsigned int n = (unsigned int)num; 921 return ((n & 0xf) << 27); 922 } 923 924 static __inline tilegx_bundle_bits 925 create_Opcode_Y1(int num) 926 { 927 const unsigned int n = (unsigned int)num; 928 return (((tilegx_bundle_bits)(n & 0xf)) << 58); 929 } 930 931 static __inline tilegx_bundle_bits 932 create_Opcode_Y2(int num) 933 { 934 const unsigned int n = (unsigned int)num; 935 return ((n & 0x00000001) << 26) | 936 (((tilegx_bundle_bits)(n & 0x00000002)) << 56); 937 } 938 939 static __inline tilegx_bundle_bits 940 create_RRROpcodeExtension_X0(int num) 941 { 942 const unsigned int n = (unsigned int)num; 943 return ((n & 0x3ff) << 18); 944 } 945 946 static __inline tilegx_bundle_bits 947 create_RRROpcodeExtension_X1(int num) 948 { 949 const unsigned int n = (unsigned int)num; 950 return (((tilegx_bundle_bits)(n & 0x3ff)) << 49); 951 } 952 953 static __inline tilegx_bundle_bits 954 create_RRROpcodeExtension_Y0(int num) 955 { 956 const unsigned int n = (unsigned int)num; 957 return ((n & 0x3) << 18); 958 } 959 960 static __inline tilegx_bundle_bits 961 create_RRROpcodeExtension_Y1(int num) 962 { 963 const unsigned int n = (unsigned int)num; 964 return (((tilegx_bundle_bits)(n & 0x3)) << 49); 965 } 966 967 static __inline tilegx_bundle_bits 968 create_ShAmt_X0(int num) 969 { 970 const unsigned int n = (unsigned int)num; 971 return ((n & 0x3f) << 12); 972 } 973 974 static __inline tilegx_bundle_bits 975 create_ShAmt_X1(int num) 976 { 977 const unsigned int n = (unsigned int)num; 978 return (((tilegx_bundle_bits)(n & 0x3f)) << 43); 979 } 980 981 static __inline tilegx_bundle_bits 982 create_ShAmt_Y0(int num) 983 { 984 const unsigned int n = (unsigned int)num; 985 return ((n & 0x3f) << 12); 986 } 987 988 static __inline tilegx_bundle_bits 989 create_ShAmt_Y1(int num) 990 { 991 const unsigned int n = (unsigned int)num; 992 return (((tilegx_bundle_bits)(n & 0x3f)) << 43); 993 } 994 995 static __inline tilegx_bundle_bits 996 create_ShiftOpcodeExtension_X0(int num) 997 { 998 const unsigned int n = (unsigned int)num; 999 return ((n & 0x3ff) << 18); 1000 } 1001 1002 static __inline tilegx_bundle_bits 1003 create_ShiftOpcodeExtension_X1(int num) 1004 { 1005 const unsigned int n = (unsigned int)num; 1006 return (((tilegx_bundle_bits)(n & 0x3ff)) << 49); 1007 } 1008 1009 static __inline tilegx_bundle_bits 1010 create_ShiftOpcodeExtension_Y0(int num) 1011 { 1012 const unsigned int n = (unsigned int)num; 1013 return ((n & 0x3) << 18); 1014 } 1015 1016 static __inline tilegx_bundle_bits 1017 create_ShiftOpcodeExtension_Y1(int num) 1018 { 1019 const unsigned int n = (unsigned int)num; 1020 return (((tilegx_bundle_bits)(n & 0x3)) << 49); 1021 } 1022 1023 static __inline tilegx_bundle_bits 1024 create_SrcA_X0(int num) 1025 { 1026 const unsigned int n = (unsigned int)num; 1027 return ((n & 0x3f) << 6); 1028 } 1029 1030 static __inline tilegx_bundle_bits 1031 create_SrcA_X1(int num) 1032 { 1033 const unsigned int n = (unsigned int)num; 1034 return (((tilegx_bundle_bits)(n & 0x3f)) << 37); 1035 } 1036 1037 static __inline tilegx_bundle_bits 1038 create_SrcA_Y0(int num) 1039 { 1040 const unsigned int n = (unsigned int)num; 1041 return ((n & 0x3f) << 6); 1042 } 1043 1044 static __inline tilegx_bundle_bits 1045 create_SrcA_Y1(int num) 1046 { 1047 const unsigned int n = (unsigned int)num; 1048 return (((tilegx_bundle_bits)(n & 0x3f)) << 37); 1049 } 1050 1051 static __inline tilegx_bundle_bits 1052 create_SrcA_Y2(int num) 1053 { 1054 const unsigned int n = (unsigned int)num; 1055 return ((n & 0x3f) << 20); 1056 } 1057 1058 static __inline tilegx_bundle_bits 1059 create_SrcBDest_Y2(int num) 1060 { 1061 const unsigned int n = (unsigned int)num; 1062 return (((tilegx_bundle_bits)(n & 0x3f)) << 51); 1063 } 1064 1065 static __inline tilegx_bundle_bits 1066 create_SrcB_X0(int num) 1067 { 1068 const unsigned int n = (unsigned int)num; 1069 return ((n & 0x3f) << 12); 1070 } 1071 1072 static __inline tilegx_bundle_bits 1073 create_SrcB_X1(int num) 1074 { 1075 const unsigned int n = (unsigned int)num; 1076 return (((tilegx_bundle_bits)(n & 0x3f)) << 43); 1077 } 1078 1079 static __inline tilegx_bundle_bits 1080 create_SrcB_Y0(int num) 1081 { 1082 const unsigned int n = (unsigned int)num; 1083 return ((n & 0x3f) << 12); 1084 } 1085 1086 static __inline tilegx_bundle_bits 1087 create_SrcB_Y1(int num) 1088 { 1089 const unsigned int n = (unsigned int)num; 1090 return (((tilegx_bundle_bits)(n & 0x3f)) << 43); 1091 } 1092 1093 static __inline tilegx_bundle_bits 1094 create_UnaryOpcodeExtension_X0(int num) 1095 { 1096 const unsigned int n = (unsigned int)num; 1097 return ((n & 0x3f) << 12); 1098 } 1099 1100 static __inline tilegx_bundle_bits 1101 create_UnaryOpcodeExtension_X1(int num) 1102 { 1103 const unsigned int n = (unsigned int)num; 1104 return (((tilegx_bundle_bits)(n & 0x3f)) << 43); 1105 } 1106 1107 static __inline tilegx_bundle_bits 1108 create_UnaryOpcodeExtension_Y0(int num) 1109 { 1110 const unsigned int n = (unsigned int)num; 1111 return ((n & 0x3f) << 12); 1112 } 1113 1114 static __inline tilegx_bundle_bits 1115 create_UnaryOpcodeExtension_Y1(int num) 1116 { 1117 const unsigned int n = (unsigned int)num; 1118 return (((tilegx_bundle_bits)(n & 0x3f)) << 43); 1119 } 1120 1121 1122 typedef enum 1123 { 1124 TILEGX_PIPELINE_X0, 1125 TILEGX_PIPELINE_X1, 1126 TILEGX_PIPELINE_Y0, 1127 TILEGX_PIPELINE_Y1, 1128 TILEGX_PIPELINE_Y2, 1129 } tilegx_pipeline; 1130 1131 #define tilegx_is_x_pipeline(p) ((int)(p) <= (int)TILEGX_PIPELINE_X1) 1132 1133 typedef enum 1134 { 1135 TILEGX_OP_TYPE_REGISTER, 1136 TILEGX_OP_TYPE_IMMEDIATE, 1137 TILEGX_OP_TYPE_ADDRESS, 1138 TILEGX_OP_TYPE_SPR 1139 } tilegx_operand_type; 1140 1141 /* These are the bits that determine if a bundle is in the X encoding. */ 1142 #define TILEGX_BUNDLE_MODE_MASK ((tilegx_bundle_bits)3 << 62) 1143 1144 enum 1145 { 1146 /* Maximum number of instructions in a bundle (2 for X, 3 for Y). */ 1147 TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE = 3, 1148 1149 /* How many different pipeline encodings are there? X0, X1, Y0, Y1, Y2. */ 1150 TILEGX_NUM_PIPELINE_ENCODINGS = 5, 1151 1152 /* Log base 2 of TILEGX_BUNDLE_SIZE_IN_BYTES. */ 1153 TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES = 3, 1154 1155 /* Instructions take this many bytes. */ 1156 TILEGX_BUNDLE_SIZE_IN_BYTES = 1 << TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES, 1157 1158 /* Log base 2 of TILEGX_BUNDLE_ALIGNMENT_IN_BYTES. */ 1159 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES = 3, 1160 1161 /* Bundles should be aligned modulo this number of bytes. */ 1162 TILEGX_BUNDLE_ALIGNMENT_IN_BYTES = 1163 (1 << TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES), 1164 1165 /* Number of registers (some are magic, such as network I/O). */ 1166 TILEGX_NUM_REGISTERS = 64, 1167 }; 1168 1169 1170 struct tilegx_operand 1171 { 1172 /* Is this operand a register, immediate or address? */ 1173 tilegx_operand_type type; 1174 1175 /* The default relocation type for this operand. */ 1176 signed int default_reloc : 16; 1177 1178 /* How many bits is this value? (used for range checking) */ 1179 unsigned int num_bits : 5; 1180 1181 /* Is the value signed? (used for range checking) */ 1182 unsigned int is_signed : 1; 1183 1184 /* Is this operand a source register? */ 1185 unsigned int is_src_reg : 1; 1186 1187 /* Is this operand written? (i.e. is it a destination register) */ 1188 unsigned int is_dest_reg : 1; 1189 1190 /* Is this operand PC-relative? */ 1191 unsigned int is_pc_relative : 1; 1192 1193 /* By how many bits do we right shift the value before inserting? */ 1194 unsigned int rightshift : 2; 1195 1196 /* Return the bits for this operand to be ORed into an existing bundle. */ 1197 tilegx_bundle_bits (*insert) (int op); 1198 1199 /* Extract this operand and return it. */ 1200 unsigned int (*extract) (tilegx_bundle_bits bundle); 1201 }; 1202 1203 1204 extern const struct tilegx_operand tilegx_operands[]; 1205 1206 /* One finite-state machine per pipe for rapid instruction decoding. */ 1207 extern const unsigned short * const 1208 tilegx_bundle_decoder_fsms[TILEGX_NUM_PIPELINE_ENCODINGS]; 1209 1210 1211 struct tilegx_opcode 1212 { 1213 /* The opcode mnemonic, e.g. "add" */ 1214 const char *name; 1215 1216 /* The enum value for this mnemonic. */ 1217 tilegx_mnemonic mnemonic; 1218 1219 /* A bit mask of which of the five pipes this instruction 1220 is compatible with: 1221 X0 0x01 1222 X1 0x02 1223 Y0 0x04 1224 Y1 0x08 1225 Y2 0x10 */ 1226 unsigned char pipes; 1227 1228 /* How many operands are there? */ 1229 unsigned char num_operands; 1230 1231 /* Which register does this write implicitly, or TREG_ZERO if none? */ 1232 unsigned char implicitly_written_register; 1233 1234 /* Can this be bundled with other instructions (almost always true). */ 1235 unsigned char can_bundle; 1236 1237 /* The description of the operands. Each of these is an 1238 * index into the tilegx_operands[] table. */ 1239 unsigned char operands[TILEGX_NUM_PIPELINE_ENCODINGS][TILEGX_MAX_OPERANDS]; 1240 1241 #if !defined(__KERNEL__) && !defined(_LIBC) 1242 /* A mask of which bits have predefined values for each pipeline. 1243 * This is useful for disassembly. */ 1244 tilegx_bundle_bits fixed_bit_masks[TILEGX_NUM_PIPELINE_ENCODINGS]; 1245 1246 /* For each bit set in fixed_bit_masks, what the value is for this 1247 * instruction. */ 1248 tilegx_bundle_bits fixed_bit_values[TILEGX_NUM_PIPELINE_ENCODINGS]; 1249 #endif 1250 }; 1251 1252 extern const struct tilegx_opcode tilegx_opcodes[]; 1253 1254 /* Used for non-textual disassembly into structs. */ 1255 struct tilegx_decoded_instruction 1256 { 1257 const struct tilegx_opcode *opcode; 1258 const struct tilegx_operand *operands[TILEGX_MAX_OPERANDS]; 1259 long long operand_values[TILEGX_MAX_OPERANDS]; 1260 }; 1261 1262 1263 /* Disassemble a bundle into a struct for machine processing. */ 1264 extern int parse_insn_tilegx(tilegx_bundle_bits bits, 1265 unsigned long long pc, 1266 struct tilegx_decoded_instruction 1267 decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE]); 1268 1269 1270 #if !defined(__KERNEL__) && !defined(_LIBC) 1271 /* Canonical names of all the registers. */ 1272 /* ISSUE: This table lives in "tile-dis.c" */ 1273 extern const char * const tilegx_register_names[]; 1274 1275 /* Descriptor for a special-purpose register. */ 1276 struct tilegx_spr 1277 { 1278 /* The number */ 1279 int number; 1280 1281 /* The name */ 1282 const char *name; 1283 }; 1284 1285 /* List of all the SPRs; ordered by increasing number. */ 1286 extern const struct tilegx_spr tilegx_sprs[]; 1287 1288 /* Number of special-purpose registers. */ 1289 extern const int tilegx_num_sprs; 1290 1291 extern const char * 1292 get_tilegx_spr_name (int num); 1293 #endif /* !__KERNEL__ && !_LIBC */ 1294 1295 /* Make a few "tile_" variables to simply common code between 1296 architectures. */ 1297 1298 typedef tilegx_bundle_bits tile_bundle_bits; 1299 #define TILE_BUNDLE_SIZE_IN_BYTES TILEGX_BUNDLE_SIZE_IN_BYTES 1300 #define TILE_BUNDLE_ALIGNMENT_IN_BYTES TILEGX_BUNDLE_ALIGNMENT_IN_BYTES 1301 #define TILE_LOG2_BUNDLE_ALIGNMENT_IN_BYTES \ 1302 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES 1303 1304 #endif /* opcode_tilegx_h */ 1305