OLD | NEW |
1 /* Instruction printing code for the ARM | 1 /* Instruction printing code for the ARM |
2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, | 2 Copyright 1994-2013 Free Software Foundation, Inc. |
3 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. | |
4 Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) | 3 Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org) |
5 Modification by James G. Smith (jsmith@cygnus.co.uk) | 4 Modification by James G. Smith (jsmith@cygnus.co.uk) |
6 | 5 |
7 This file is part of libopcodes. | 6 This file is part of libopcodes. |
8 | 7 |
9 This library is free software; you can redistribute it and/or modify | 8 This library is free software; you can redistribute it and/or modify |
10 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
11 the Free Software Foundation; either version 3 of the License, or | 10 the Free Software Foundation; either version 3 of the License, or |
12 (at your option) any later version. | 11 (at your option) any later version. |
13 | 12 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 unsigned short value, mask; /* Recognise insn if (op & mask) == value. */ | 83 unsigned short value, mask; /* Recognise insn if (op & mask) == value. */ |
85 const char *assembler; /* How to disassemble this insn. */ | 84 const char *assembler; /* How to disassemble this insn. */ |
86 }; | 85 }; |
87 | 86 |
88 /* print_insn_coprocessor recognizes the following format control codes: | 87 /* print_insn_coprocessor recognizes the following format control codes: |
89 | 88 |
90 %% % | 89 %% % |
91 | 90 |
92 %c print condition code (always bits 28-31 in ARM mode) | 91 %c print condition code (always bits 28-31 in ARM mode) |
93 %q print shifter argument | 92 %q print shifter argument |
94 %u» » » print condition code (unconditional in ARM mode) | 93 %u» » » print condition code (unconditional in ARM mode, |
| 94 UNPREDICTABLE if not AL in Thumb) |
95 %A print address for ldc/stc/ldf/stf instruction | 95 %A print address for ldc/stc/ldf/stf instruction |
96 %B print vstm/vldm register list | 96 %B print vstm/vldm register list |
97 %I print cirrus signed shift immediate: bits 0..3|4..6 | 97 %I print cirrus signed shift immediate: bits 0..3|4..6 |
98 %F print the COUNT field of a LFM/SFM instruction. | 98 %F print the COUNT field of a LFM/SFM instruction. |
99 %P print floating point precision in arithmetic insn | 99 %P print floating point precision in arithmetic insn |
100 %Q print floating point precision in ldf/stf insn | 100 %Q print floating point precision in ldf/stf insn |
101 %R print floating point rounding mode | 101 %R print floating point rounding mode |
102 | 102 |
| 103 %<bitfield>c print as a condition code (for vsel) |
103 %<bitfield>r print as an ARM register | 104 %<bitfield>r print as an ARM register |
104 %<bitfield>R as %<>r but r15 is UNPREDICTABLE | 105 %<bitfield>R as %<>r but r15 is UNPREDICTABLE |
105 %<bitfield>ru as %<>r but each u register must be unique. | 106 %<bitfield>ru as %<>r but each u register must be unique. |
106 %<bitfield>d print the bitfield in decimal | 107 %<bitfield>d print the bitfield in decimal |
107 %<bitfield>k print immediate for VFPv3 conversion instruction | 108 %<bitfield>k print immediate for VFPv3 conversion instruction |
108 %<bitfield>x print the bitfield in hex | 109 %<bitfield>x print the bitfield in hex |
109 %<bitfield>X print the bitfield as 1 hex digit without leading "0x" | 110 %<bitfield>X print the bitfield as 1 hex digit without leading "0x" |
110 %<bitfield>f print a floating point constant if >7 else a | 111 %<bitfield>f print a floating point constant if >7 else a |
111 floating point register | 112 floating point register |
112 %<bitfield>w print as an iWMMXt width field - [bhwd]ss/us | 113 %<bitfield>w print as an iWMMXt width field - [bhwd]ss/us |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 {FPU_NEON_EXT_V1, 0x0ee00b10, 0x0ff00f70, "vdup%c.8\t%16-19,7Q, %12-15r"}, | 310 {FPU_NEON_EXT_V1, 0x0ee00b10, 0x0ff00f70, "vdup%c.8\t%16-19,7Q, %12-15r"}, |
310 {FPU_NEON_EXT_V1, 0x0c400b10, 0x0ff00fd0, "vmov%c\t%0-3,5D, %12-15r, %16-19r"}
, | 311 {FPU_NEON_EXT_V1, 0x0c400b10, 0x0ff00fd0, "vmov%c\t%0-3,5D, %12-15r, %16-19r"}
, |
311 {FPU_NEON_EXT_V1, 0x0c500b10, 0x0ff00fd0, "vmov%c\t%12-15r, %16-19r, %0-3,5D"}
, | 312 {FPU_NEON_EXT_V1, 0x0c500b10, 0x0ff00fd0, "vmov%c\t%12-15r, %16-19r, %0-3,5D"}
, |
312 {FPU_NEON_EXT_V1, 0x0e000b10, 0x0fd00f70, "vmov%c.32\t%16-19,7D[%21d], %12-15r
"}, | 313 {FPU_NEON_EXT_V1, 0x0e000b10, 0x0fd00f70, "vmov%c.32\t%16-19,7D[%21d], %12-15r
"}, |
313 {FPU_NEON_EXT_V1, 0x0e100b10, 0x0f500f70, "vmov%c.32\t%12-15r, %16-19,7D[%21d]
"}, | 314 {FPU_NEON_EXT_V1, 0x0e100b10, 0x0f500f70, "vmov%c.32\t%12-15r, %16-19,7D[%21d]
"}, |
314 {FPU_NEON_EXT_V1, 0x0e000b30, 0x0fd00f30, "vmov%c.16\t%16-19,7D[%6,21d], %12-1
5r"}, | 315 {FPU_NEON_EXT_V1, 0x0e000b30, 0x0fd00f30, "vmov%c.16\t%16-19,7D[%6,21d], %12-1
5r"}, |
315 {FPU_NEON_EXT_V1, 0x0e100b30, 0x0f500f30, "vmov%c.%23?us16\t%12-15r, %16-19,7D
[%6,21d]"}, | 316 {FPU_NEON_EXT_V1, 0x0e100b30, 0x0f500f30, "vmov%c.%23?us16\t%12-15r, %16-19,7D
[%6,21d]"}, |
316 {FPU_NEON_EXT_V1, 0x0e400b10, 0x0fd00f10, "vmov%c.8\t%16-19,7D[%5,6,21d], %12-
15r"}, | 317 {FPU_NEON_EXT_V1, 0x0e400b10, 0x0fd00f10, "vmov%c.8\t%16-19,7D[%5,6,21d], %12-
15r"}, |
317 {FPU_NEON_EXT_V1, 0x0e500b10, 0x0f500f10, "vmov%c.%23?us8\t%12-15r, %16-19,7D[
%5,6,21d]"}, | 318 {FPU_NEON_EXT_V1, 0x0e500b10, 0x0f500f10, "vmov%c.%23?us8\t%12-15r, %16-19,7D[
%5,6,21d]"}, |
318 /* Half-precision conversion instructions. */ | 319 /* Half-precision conversion instructions. */ |
| 320 {FPU_VFP_EXT_ARMV8, 0x0eb20b40, 0x0fbf0f50, "vcvt%7?tb%c.f64.f16\t%z1, %y0"}, |
| 321 {FPU_VFP_EXT_ARMV8, 0x0eb30b40, 0x0fbf0f50, "vcvt%7?tb%c.f16.f64\t%y1, %z0"}, |
319 {FPU_VFP_EXT_FP16, 0x0eb20a40, 0x0fbf0f50, "vcvt%7?tb%c.f32.f16\t%y1, %y0"}, | 322 {FPU_VFP_EXT_FP16, 0x0eb20a40, 0x0fbf0f50, "vcvt%7?tb%c.f32.f16\t%y1, %y0"}, |
320 {FPU_VFP_EXT_FP16, 0x0eb30a40, 0x0fbf0f50, "vcvt%7?tb%c.f16.f32\t%y1, %y0"}, | 323 {FPU_VFP_EXT_FP16, 0x0eb30a40, 0x0fbf0f50, "vcvt%7?tb%c.f16.f32\t%y1, %y0"}, |
321 | 324 |
322 /* Floating point coprocessor (VFP) instructions. */ | 325 /* Floating point coprocessor (VFP) instructions. */ |
323 {FPU_VFP_EXT_V1xD, 0x0ee00a10, 0x0fff0fff, "vmsr%c\tfpsid, %12-15r"}, | 326 {FPU_VFP_EXT_V1xD, 0x0ee00a10, 0x0fff0fff, "vmsr%c\tfpsid, %12-15r"}, |
324 {FPU_VFP_EXT_V1xD, 0x0ee10a10, 0x0fff0fff, "vmsr%c\tfpscr, %12-15r"}, | 327 {FPU_VFP_EXT_V1xD, 0x0ee10a10, 0x0fff0fff, "vmsr%c\tfpscr, %12-15r"}, |
325 {FPU_VFP_EXT_V1xD, 0x0ee60a10, 0x0fff0fff, "vmsr%c\tmvfr1, %12-15r"}, | 328 {FPU_VFP_EXT_V1xD, 0x0ee60a10, 0x0fff0fff, "vmsr%c\tmvfr1, %12-15r"}, |
326 {FPU_VFP_EXT_V1xD, 0x0ee70a10, 0x0fff0fff, "vmsr%c\tmvfr0, %12-15r"}, | 329 {FPU_VFP_EXT_V1xD, 0x0ee70a10, 0x0fff0fff, "vmsr%c\tmvfr0, %12-15r"}, |
327 {FPU_VFP_EXT_V1xD, 0x0ee80a10, 0x0fff0fff, "vmsr%c\tfpexc, %12-15r"}, | 330 {FPU_VFP_EXT_V1xD, 0x0ee80a10, 0x0fff0fff, "vmsr%c\tfpexc, %12-15r"}, |
328 {FPU_VFP_EXT_V1xD, 0x0ee90a10, 0x0fff0fff, "vmsr%c\tfpinst, %12-15r\t@ Impl de
f"}, | 331 {FPU_VFP_EXT_V1xD, 0x0ee90a10, 0x0fff0fff, "vmsr%c\tfpinst, %12-15r\t@ Impl de
f"}, |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 /* VFP Fused multiply add instructions. */ | 480 /* VFP Fused multiply add instructions. */ |
478 {FPU_VFP_EXT_FMA, 0x0ea00a00, 0x0fb00f50, "vfma%c.f32\t%y1, %y2, %y0"}, | 481 {FPU_VFP_EXT_FMA, 0x0ea00a00, 0x0fb00f50, "vfma%c.f32\t%y1, %y2, %y0"}, |
479 {FPU_VFP_EXT_FMA, 0x0ea00b00, 0x0fb00f50, "vfma%c.f64\t%z1, %z2, %z0"}, | 482 {FPU_VFP_EXT_FMA, 0x0ea00b00, 0x0fb00f50, "vfma%c.f64\t%z1, %z2, %z0"}, |
480 {FPU_VFP_EXT_FMA, 0x0ea00a40, 0x0fb00f50, "vfms%c.f32\t%y1, %y2, %y0"}, | 483 {FPU_VFP_EXT_FMA, 0x0ea00a40, 0x0fb00f50, "vfms%c.f32\t%y1, %y2, %y0"}, |
481 {FPU_VFP_EXT_FMA, 0x0ea00b40, 0x0fb00f50, "vfms%c.f64\t%z1, %z2, %z0"}, | 484 {FPU_VFP_EXT_FMA, 0x0ea00b40, 0x0fb00f50, "vfms%c.f64\t%z1, %z2, %z0"}, |
482 {FPU_VFP_EXT_FMA, 0x0e900a40, 0x0fb00f50, "vfnma%c.f32\t%y1, %y2, %y0"}, | 485 {FPU_VFP_EXT_FMA, 0x0e900a40, 0x0fb00f50, "vfnma%c.f32\t%y1, %y2, %y0"}, |
483 {FPU_VFP_EXT_FMA, 0x0e900b40, 0x0fb00f50, "vfnma%c.f64\t%z1, %z2, %z0"}, | 486 {FPU_VFP_EXT_FMA, 0x0e900b40, 0x0fb00f50, "vfnma%c.f64\t%z1, %z2, %z0"}, |
484 {FPU_VFP_EXT_FMA, 0x0e900a00, 0x0fb00f50, "vfnms%c.f32\t%y1, %y2, %y0"}, | 487 {FPU_VFP_EXT_FMA, 0x0e900a00, 0x0fb00f50, "vfnms%c.f32\t%y1, %y2, %y0"}, |
485 {FPU_VFP_EXT_FMA, 0x0e900b00, 0x0fb00f50, "vfnms%c.f64\t%z1, %z2, %z0"}, | 488 {FPU_VFP_EXT_FMA, 0x0e900b00, 0x0fb00f50, "vfnms%c.f64\t%z1, %z2, %z0"}, |
486 | 489 |
| 490 /* FP v5. */ |
| 491 {FPU_VFP_EXT_ARMV8, 0xfe000a00, 0xff800f00, "vsel%20-21c%u.f32\t%y1, %y2, %y0"
}, |
| 492 {FPU_VFP_EXT_ARMV8, 0xfe000b00, 0xff800f00, "vsel%20-21c%u.f64\t%z1, %z2, %z0"
}, |
| 493 {FPU_VFP_EXT_ARMV8, 0xfe800a00, 0xffb00f40, "vmaxnm%u.f32\t%y1, %y2, %y0"}, |
| 494 {FPU_VFP_EXT_ARMV8, 0xfe800b00, 0xffb00f40, "vmaxnm%u.f64\t%z1, %z2, %z0"}, |
| 495 {FPU_VFP_EXT_ARMV8, 0xfe800a40, 0xffb00f40, "vminnm%u.f32\t%y1, %y2, %y0"}, |
| 496 {FPU_VFP_EXT_ARMV8, 0xfe800b40, 0xffb00f40, "vminnm%u.f64\t%z1, %z2, %z0"}, |
| 497 {FPU_VFP_EXT_ARMV8, 0xfebc0a40, 0xffbc0f50, "vcvt%16-17?mpna%u.%7?su32.f32\t%y
1, %y0"}, |
| 498 {FPU_VFP_EXT_ARMV8, 0xfebc0b40, 0xffbc0f50, "vcvt%16-17?mpna%u.%7?su32.f64\t%y
1, %z0"}, |
| 499 {FPU_VFP_EXT_ARMV8, 0x0eb60a40, 0x0fbe0f50, "vrint%7,16??xzr%c.f32\t%y1, %y0"}
, |
| 500 {FPU_VFP_EXT_ARMV8, 0x0eb60b40, 0x0fbe0f50, "vrint%7,16??xzr%c.f64\t%z1, %z0"}
, |
| 501 {FPU_VFP_EXT_ARMV8, 0xfeb80a40, 0xffbc0f50, "vrint%16-17?mpna%u.f32\t%y1, %y0"
}, |
| 502 {FPU_VFP_EXT_ARMV8, 0xfeb80b40, 0xffbc0f50, "vrint%16-17?mpna%u.f64\t%z1, %z0"
}, |
| 503 |
487 /* Generic coprocessor instructions. */ | 504 /* Generic coprocessor instructions. */ |
488 { 0, SENTINEL_GENERIC_START, 0, "" }, | 505 { 0, SENTINEL_GENERIC_START, 0, "" }, |
489 {ARM_EXT_V5E, 0x0c400000, 0x0ff00000, "mcrr%c\t%8-11d, %4-7d, %12-15R, %16-19r
, cr%0-3d"}, | 506 {ARM_EXT_V5E, 0x0c400000, 0x0ff00000, "mcrr%c\t%8-11d, %4-7d, %12-15R, %16-19r
, cr%0-3d"}, |
490 {ARM_EXT_V5E, 0x0c500000, 0x0ff00000, "mrrc%c\t%8-11d, %4-7d, %12-15Ru, %16-19
Ru, cr%0-3d"}, | 507 {ARM_EXT_V5E, 0x0c500000, 0x0ff00000, "mrrc%c\t%8-11d, %4-7d, %12-15Ru, %16-19
Ru, cr%0-3d"}, |
491 {ARM_EXT_V2, 0x0e000000, 0x0f000010, "cdp%c\t%8-11d, %20-23d, cr%12-15d, cr%16
-19d, cr%0-3d, {%5-7d}"}, | 508 {ARM_EXT_V2, 0x0e000000, 0x0f000010, "cdp%c\t%8-11d, %20-23d, cr%12-15d, cr%16
-19d, cr%0-3d, {%5-7d}"}, |
492 {ARM_EXT_V2, 0x0e10f010, 0x0f10f010, "mrc%c\t%8-11d, %21-23d, APSR_nzcv, cr%16
-19d, cr%0-3d, {%5-7d}"}, | 509 {ARM_EXT_V2, 0x0e10f010, 0x0f10f010, "mrc%c\t%8-11d, %21-23d, APSR_nzcv, cr%16
-19d, cr%0-3d, {%5-7d}"}, |
493 {ARM_EXT_V2, 0x0e100010, 0x0f100010, "mrc%c\t%8-11d, %21-23d, %12-15r, cr%16-1
9d, cr%0-3d, {%5-7d}"}, | 510 {ARM_EXT_V2, 0x0e100010, 0x0f100010, "mrc%c\t%8-11d, %21-23d, %12-15r, cr%16-1
9d, cr%0-3d, {%5-7d}"}, |
494 {ARM_EXT_V2, 0x0e000010, 0x0f100010, "mcr%c\t%8-11d, %21-23d, %12-15R, cr%16-1
9d, cr%0-3d, {%5-7d}"}, | 511 {ARM_EXT_V2, 0x0e000010, 0x0f100010, "mcr%c\t%8-11d, %21-23d, %12-15R, cr%16-1
9d, cr%0-3d, {%5-7d}"}, |
495 {ARM_EXT_V2, 0x0c000000, 0x0e100000, "stc%22'l%c\t%8-11d, cr%12-15d, %A"}, | 512 {ARM_EXT_V2, 0x0c000000, 0x0e100000, "stc%22'l%c\t%8-11d, cr%12-15d, %A"}, |
496 {ARM_EXT_V2, 0x0c100000, 0x0e100000, "ldc%22'l%c\t%8-11d, cr%12-15d, %A"}, | 513 {ARM_EXT_V2, 0x0c100000, 0x0e100000, "ldc%22'l%c\t%8-11d, cr%12-15d, %A"}, |
(...skipping 14 matching lines...) Expand all Loading... |
511 | 528 |
512 /* Neon opcode table: This does not encode the top byte -- that is | 529 /* Neon opcode table: This does not encode the top byte -- that is |
513 checked by the print_insn_neon routine, as it depends on whether we are | 530 checked by the print_insn_neon routine, as it depends on whether we are |
514 doing thumb32 or arm32 disassembly. */ | 531 doing thumb32 or arm32 disassembly. */ |
515 | 532 |
516 /* print_insn_neon recognizes the following format control codes: | 533 /* print_insn_neon recognizes the following format control codes: |
517 | 534 |
518 %% % | 535 %% % |
519 | 536 |
520 %c print condition code | 537 %c print condition code |
| 538 %u print condition code (unconditional in ARM mode, |
| 539 UNPREDICTABLE if not AL in Thumb) |
521 %A print v{st,ld}[1234] operands | 540 %A print v{st,ld}[1234] operands |
522 %B print v{st,ld}[1234] any one operands | 541 %B print v{st,ld}[1234] any one operands |
523 %C print v{st,ld}[1234] single->all operands | 542 %C print v{st,ld}[1234] single->all operands |
524 %D print scalar | 543 %D print scalar |
525 %E print vmov, vmvn, vorr, vbic encoded constant | 544 %E print vmov, vmvn, vorr, vbic encoded constant |
526 %F print vtbl,vtbx register list | 545 %F print vtbl,vtbx register list |
527 | 546 |
528 %<bitfield>r print as an ARM register | 547 %<bitfield>r print as an ARM register |
529 %<bitfield>d print the bitfield in decimal | 548 %<bitfield>d print the bitfield in decimal |
530 %<bitfield>e print the 2^N - bitfield in decimal | 549 %<bitfield>e print the 2^N - bitfield in decimal |
(...skipping 25 matching lines...) Expand all Loading... |
556 | 575 |
557 /* Half-precision conversions. */ | 576 /* Half-precision conversions. */ |
558 {FPU_VFP_EXT_FP16, 0xf3b60600, 0xffbf0fd0, "vcvt%c.f16.f32\t%12-15,22D, %0-3,5
Q"}, | 577 {FPU_VFP_EXT_FP16, 0xf3b60600, 0xffbf0fd0, "vcvt%c.f16.f32\t%12-15,22D, %0-3,5
Q"}, |
559 {FPU_VFP_EXT_FP16, 0xf3b60700, 0xffbf0fd0, "vcvt%c.f32.f16\t%12-15,22Q, %0-3,5
D"}, | 578 {FPU_VFP_EXT_FP16, 0xf3b60700, 0xffbf0fd0, "vcvt%c.f32.f16\t%12-15,22Q, %0-3,5
D"}, |
560 | 579 |
561 /* NEON fused multiply add instructions. */ | 580 /* NEON fused multiply add instructions. */ |
562 {FPU_NEON_EXT_FMA, 0xf2000c10, 0xffa00f10, "vfma%c.f%20U0\t%12-15,22R, %16-19,
7R, %0-3,5R"}, | 581 {FPU_NEON_EXT_FMA, 0xf2000c10, 0xffa00f10, "vfma%c.f%20U0\t%12-15,22R, %16-19,
7R, %0-3,5R"}, |
563 {FPU_NEON_EXT_FMA, 0xf2200c10, 0xffa00f10, "vfms%c.f%20U0\t%12-15,22R, %16-19,
7R, %0-3,5R"}, | 582 {FPU_NEON_EXT_FMA, 0xf2200c10, 0xffa00f10, "vfms%c.f%20U0\t%12-15,22R, %16-19,
7R, %0-3,5R"}, |
564 | 583 |
565 /* Two registers, miscellaneous. */ | 584 /* Two registers, miscellaneous. */ |
| 585 {FPU_NEON_EXT_ARMV8, 0xf3ba0400, 0xffbf0c10, "vrint%7-9?p?m?zaxn%u.f32\t%12-15
,22R, %0-3,5R"}, |
| 586 {FPU_NEON_EXT_ARMV8, 0xf3bb0000, 0xffbf0c10, "vcvt%8-9?mpna%u.%7?us32.f32\t%12
-15,22R, %0-3,5R"}, |
| 587 {FPU_CRYPTO_EXT_ARMV8, 0xf3b00300, 0xffbf0fd0, "aese%u.8\t%12-15,22Q, %0-3,5Q"
}, |
| 588 {FPU_CRYPTO_EXT_ARMV8, 0xf3b00340, 0xffbf0fd0, "aesd%u.8\t%12-15,22Q, %0-3,5Q"
}, |
| 589 {FPU_CRYPTO_EXT_ARMV8, 0xf3b00380, 0xffbf0fd0, "aesmc%u.8\t%12-15,22Q, %0-3,5Q
"}, |
| 590 {FPU_CRYPTO_EXT_ARMV8, 0xf3b003c0, 0xffbf0fd0, "aesimc%u.8\t%12-15,22Q, %0-3,5
Q"}, |
| 591 {FPU_CRYPTO_EXT_ARMV8, 0xf3b902c0, 0xffbf0fd0, "sha1h%u.32\t%12-15,22Q, %0-3,5
Q"}, |
| 592 {FPU_CRYPTO_EXT_ARMV8, 0xf3ba0380, 0xffbf0fd0, "sha1su1%u.32\t%12-15,22Q, %0-3
,5Q"}, |
| 593 {FPU_CRYPTO_EXT_ARMV8, 0xf3ba03c0, 0xffbf0fd0, "sha256su0%u.32\t%12-15,22Q, %0
-3,5Q"}, |
566 {FPU_NEON_EXT_V1, 0xf2880a10, 0xfebf0fd0, "vmovl%c.%24?us8\t%12-15,22Q, %0-3,5
D"}, | 594 {FPU_NEON_EXT_V1, 0xf2880a10, 0xfebf0fd0, "vmovl%c.%24?us8\t%12-15,22Q, %0-3,5
D"}, |
567 {FPU_NEON_EXT_V1, 0xf2900a10, 0xfebf0fd0, "vmovl%c.%24?us16\t%12-15,22Q, %0-3,
5D"}, | 595 {FPU_NEON_EXT_V1, 0xf2900a10, 0xfebf0fd0, "vmovl%c.%24?us16\t%12-15,22Q, %0-3,
5D"}, |
568 {FPU_NEON_EXT_V1, 0xf2a00a10, 0xfebf0fd0, "vmovl%c.%24?us32\t%12-15,22Q, %0-3,
5D"}, | 596 {FPU_NEON_EXT_V1, 0xf2a00a10, 0xfebf0fd0, "vmovl%c.%24?us32\t%12-15,22Q, %0-3,
5D"}, |
569 {FPU_NEON_EXT_V1, 0xf3b00500, 0xffbf0f90, "vcnt%c.8\t%12-15,22R, %0-3,5R"}, | 597 {FPU_NEON_EXT_V1, 0xf3b00500, 0xffbf0f90, "vcnt%c.8\t%12-15,22R, %0-3,5R"}, |
570 {FPU_NEON_EXT_V1, 0xf3b00580, 0xffbf0f90, "vmvn%c\t%12-15,22R, %0-3,5R"}, | 598 {FPU_NEON_EXT_V1, 0xf3b00580, 0xffbf0f90, "vmvn%c\t%12-15,22R, %0-3,5R"}, |
571 {FPU_NEON_EXT_V1, 0xf3b20000, 0xffbf0f90, "vswp%c\t%12-15,22R, %0-3,5R"}, | 599 {FPU_NEON_EXT_V1, 0xf3b20000, 0xffbf0f90, "vswp%c\t%12-15,22R, %0-3,5R"}, |
572 {FPU_NEON_EXT_V1, 0xf3b20200, 0xffb30fd0, "vmovn%c.i%18-19T2\t%12-15,22D, %0-3
,5Q"}, | 600 {FPU_NEON_EXT_V1, 0xf3b20200, 0xffb30fd0, "vmovn%c.i%18-19T2\t%12-15,22D, %0-3
,5Q"}, |
573 {FPU_NEON_EXT_V1, 0xf3b20240, 0xffb30fd0, "vqmovun%c.s%18-19T2\t%12-15,22D, %0
-3,5Q"}, | 601 {FPU_NEON_EXT_V1, 0xf3b20240, 0xffb30fd0, "vqmovun%c.s%18-19T2\t%12-15,22D, %0
-3,5Q"}, |
574 {FPU_NEON_EXT_V1, 0xf3b20280, 0xffb30fd0, "vqmovn%c.s%18-19T2\t%12-15,22D, %0-
3,5Q"}, | 602 {FPU_NEON_EXT_V1, 0xf3b20280, 0xffb30fd0, "vqmovn%c.s%18-19T2\t%12-15,22D, %0-
3,5Q"}, |
575 {FPU_NEON_EXT_V1, 0xf3b202c0, 0xffb30fd0, "vqmovn%c.u%18-19T2\t%12-15,22D, %0-
3,5Q"}, | 603 {FPU_NEON_EXT_V1, 0xf3b202c0, 0xffb30fd0, "vqmovn%c.u%18-19T2\t%12-15,22D, %0-
3,5Q"}, |
(...skipping 15 matching lines...) Expand all Loading... |
591 {FPU_NEON_EXT_V1, 0xf3b10100, 0xffb30b90, "vceq%c.%10?fi%18-19S2\t%12-15,22R,
%0-3,5R, #0"}, | 619 {FPU_NEON_EXT_V1, 0xf3b10100, 0xffb30b90, "vceq%c.%10?fi%18-19S2\t%12-15,22R,
%0-3,5R, #0"}, |
592 {FPU_NEON_EXT_V1, 0xf3b10180, 0xffb30b90, "vcle%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R, #0"}, | 620 {FPU_NEON_EXT_V1, 0xf3b10180, 0xffb30b90, "vcle%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R, #0"}, |
593 {FPU_NEON_EXT_V1, 0xf3b10200, 0xffb30b90, "vclt%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R, #0"}, | 621 {FPU_NEON_EXT_V1, 0xf3b10200, 0xffb30b90, "vclt%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R, #0"}, |
594 {FPU_NEON_EXT_V1, 0xf3b10300, 0xffb30b90, "vabs%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R"}, | 622 {FPU_NEON_EXT_V1, 0xf3b10300, 0xffb30b90, "vabs%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R"}, |
595 {FPU_NEON_EXT_V1, 0xf3b10380, 0xffb30b90, "vneg%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R"}, | 623 {FPU_NEON_EXT_V1, 0xf3b10380, 0xffb30b90, "vneg%c.%10?fs%18-19S2\t%12-15,22R,
%0-3,5R"}, |
596 {FPU_NEON_EXT_V1, 0xf3b00200, 0xffb30f10, "vpaddl%c.%7?us%18-19S2\t%12-15,22R,
%0-3,5R"}, | 624 {FPU_NEON_EXT_V1, 0xf3b00200, 0xffb30f10, "vpaddl%c.%7?us%18-19S2\t%12-15,22R,
%0-3,5R"}, |
597 {FPU_NEON_EXT_V1, 0xf3b00600, 0xffb30f10, "vpadal%c.%7?us%18-19S2\t%12-15,22R,
%0-3,5R"}, | 625 {FPU_NEON_EXT_V1, 0xf3b00600, 0xffb30f10, "vpadal%c.%7?us%18-19S2\t%12-15,22R,
%0-3,5R"}, |
598 {FPU_NEON_EXT_V1, 0xf3b30600, 0xffb30e10, "vcvt%c.%7-8?usff%18-19Sa.%7-8?ffus%
18-19Sa\t%12-15,22R, %0-3,5R"}, | 626 {FPU_NEON_EXT_V1, 0xf3b30600, 0xffb30e10, "vcvt%c.%7-8?usff%18-19Sa.%7-8?ffus%
18-19Sa\t%12-15,22R, %0-3,5R"}, |
599 | 627 |
600 /* Three registers of the same length. */ | 628 /* Three registers of the same length. */ |
| 629 {FPU_CRYPTO_EXT_ARMV8, 0xf2000c40, 0xffb00f50, "sha1c%u.32\t%12-15,22Q, %16-19
,7Q, %0-3,5Q"}, |
| 630 {FPU_CRYPTO_EXT_ARMV8, 0xf2100c40, 0xffb00f50, "sha1p%u.32\t%12-15,22Q, %16-19
,7Q, %0-3,5Q"}, |
| 631 {FPU_CRYPTO_EXT_ARMV8, 0xf2200c40, 0xffb00f50, "sha1m%u.32\t%12-15,22Q, %16-19
,7Q, %0-3,5Q"}, |
| 632 {FPU_CRYPTO_EXT_ARMV8, 0xf2300c40, 0xffb00f50, "sha1su0%u.32\t%12-15,22Q, %16-
19,7Q, %0-3,5Q"}, |
| 633 {FPU_CRYPTO_EXT_ARMV8, 0xf3000c40, 0xffb00f50, "sha256h%u.32\t%12-15,22Q, %16-
19,7Q, %0-3,5Q"}, |
| 634 {FPU_CRYPTO_EXT_ARMV8, 0xf3100c40, 0xffb00f50, "sha256h2%u.32\t%12-15,22Q, %16
-19,7Q, %0-3,5Q"}, |
| 635 {FPU_CRYPTO_EXT_ARMV8, 0xf3200c40, 0xffb00f50, "sha256su1%u.32\t%12-15,22Q, %1
6-19,7Q, %0-3,5Q"}, |
| 636 {FPU_NEON_EXT_ARMV8, 0xf3000f10, 0xffa00f10, "vmaxnm%u.f%20U0\t%12-15,22R, %16
-19,7R, %0-3,5R"}, |
| 637 {FPU_NEON_EXT_ARMV8, 0xf3200f10, 0xffa00f10, "vminnm%u.f%20U0\t%12-15,22R, %16
-19,7R, %0-3,5R"}, |
601 {FPU_NEON_EXT_V1, 0xf2000110, 0xffb00f10, "vand%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 638 {FPU_NEON_EXT_V1, 0xf2000110, 0xffb00f10, "vand%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
602 {FPU_NEON_EXT_V1, 0xf2100110, 0xffb00f10, "vbic%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 639 {FPU_NEON_EXT_V1, 0xf2100110, 0xffb00f10, "vbic%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
603 {FPU_NEON_EXT_V1, 0xf2200110, 0xffb00f10, "vorr%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 640 {FPU_NEON_EXT_V1, 0xf2200110, 0xffb00f10, "vorr%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
604 {FPU_NEON_EXT_V1, 0xf2300110, 0xffb00f10, "vorn%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 641 {FPU_NEON_EXT_V1, 0xf2300110, 0xffb00f10, "vorn%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
605 {FPU_NEON_EXT_V1, 0xf3000110, 0xffb00f10, "veor%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 642 {FPU_NEON_EXT_V1, 0xf3000110, 0xffb00f10, "veor%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
606 {FPU_NEON_EXT_V1, 0xf3100110, 0xffb00f10, "vbsl%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 643 {FPU_NEON_EXT_V1, 0xf3100110, 0xffb00f10, "vbsl%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
607 {FPU_NEON_EXT_V1, 0xf3200110, 0xffb00f10, "vbit%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 644 {FPU_NEON_EXT_V1, 0xf3200110, 0xffb00f10, "vbit%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
608 {FPU_NEON_EXT_V1, 0xf3300110, 0xffb00f10, "vbif%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, | 645 {FPU_NEON_EXT_V1, 0xf3300110, 0xffb00f10, "vbif%c\t%12-15,22R, %16-19,7R, %0-3
,5R"}, |
609 {FPU_NEON_EXT_V1, 0xf2000d00, 0xffa00f10, "vadd%c.f%20U0\t%12-15,22R, %16-19,7
R, %0-3,5R"}, | 646 {FPU_NEON_EXT_V1, 0xf2000d00, 0xffa00f10, "vadd%c.f%20U0\t%12-15,22R, %16-19,7
R, %0-3,5R"}, |
610 {FPU_NEON_EXT_V1, 0xf2000d10, 0xffa00f10, "vmla%c.f%20U0\t%12-15,22R, %16-19,7
R, %0-3,5R"}, | 647 {FPU_NEON_EXT_V1, 0xf2000d10, 0xffa00f10, "vmla%c.f%20U0\t%12-15,22R, %16-19,7
R, %0-3,5R"}, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 {FPU_NEON_EXT_V1, 0xf2800010, 0xfeb808b0, "vmov%c.i32\t%12-15,22R, %E"}, | 704 {FPU_NEON_EXT_V1, 0xf2800010, 0xfeb808b0, "vmov%c.i32\t%12-15,22R, %E"}, |
668 {FPU_NEON_EXT_V1, 0xf2800030, 0xfeb808b0, "vmvn%c.i32\t%12-15,22R, %E"}, | 705 {FPU_NEON_EXT_V1, 0xf2800030, 0xfeb808b0, "vmvn%c.i32\t%12-15,22R, %E"}, |
669 | 706 |
670 /* Two registers and a shift amount. */ | 707 /* Two registers and a shift amount. */ |
671 {FPU_NEON_EXT_V1, 0xf2880810, 0xffb80fd0, "vshrn%c.i16\t%12-15,22D, %0-3,5Q, #
%16-18e"}, | 708 {FPU_NEON_EXT_V1, 0xf2880810, 0xffb80fd0, "vshrn%c.i16\t%12-15,22D, %0-3,5Q, #
%16-18e"}, |
672 {FPU_NEON_EXT_V1, 0xf2880850, 0xffb80fd0, "vrshrn%c.i16\t%12-15,22D, %0-3,5Q,
#%16-18e"}, | 709 {FPU_NEON_EXT_V1, 0xf2880850, 0xffb80fd0, "vrshrn%c.i16\t%12-15,22D, %0-3,5Q,
#%16-18e"}, |
673 {FPU_NEON_EXT_V1, 0xf2880810, 0xfeb80fd0, "vqshrun%c.s16\t%12-15,22D, %0-3,5Q,
#%16-18e"}, | 710 {FPU_NEON_EXT_V1, 0xf2880810, 0xfeb80fd0, "vqshrun%c.s16\t%12-15,22D, %0-3,5Q,
#%16-18e"}, |
674 {FPU_NEON_EXT_V1, 0xf2880850, 0xfeb80fd0, "vqrshrun%c.s16\t%12-15,22D, %0-3,5Q
, #%16-18e"}, | 711 {FPU_NEON_EXT_V1, 0xf2880850, 0xfeb80fd0, "vqrshrun%c.s16\t%12-15,22D, %0-3,5Q
, #%16-18e"}, |
675 {FPU_NEON_EXT_V1, 0xf2880910, 0xfeb80fd0, "vqshrn%c.%24?us16\t%12-15,22D, %0-3
,5Q, #%16-18e"}, | 712 {FPU_NEON_EXT_V1, 0xf2880910, 0xfeb80fd0, "vqshrn%c.%24?us16\t%12-15,22D, %0-3
,5Q, #%16-18e"}, |
676 {FPU_NEON_EXT_V1, 0xf2880950, 0xfeb80fd0, "vqrshrn%c.%24?us16\t%12-15,22D, %0-
3,5Q, #%16-18e"}, | 713 {FPU_NEON_EXT_V1, 0xf2880950, 0xfeb80fd0, "vqrshrn%c.%24?us16\t%12-15,22D, %0-
3,5Q, #%16-18e"}, |
677 {FPU_NEON_EXT_V1, 0xf2880a10, 0xfeb80fd0, "vshll%c.%24?us8\t%12-15,22D, %0-3,5
Q, #%16-18d"}, | 714 {FPU_NEON_EXT_V1, 0xf2880a10, 0xfeb80fd0, "vshll%c.%24?us8\t%12-15,22Q, %0-3,5
D, #%16-18d"}, |
678 {FPU_NEON_EXT_V1, 0xf2900810, 0xffb00fd0, "vshrn%c.i32\t%12-15,22D, %0-3,5Q, #
%16-19e"}, | 715 {FPU_NEON_EXT_V1, 0xf2900810, 0xffb00fd0, "vshrn%c.i32\t%12-15,22D, %0-3,5Q, #
%16-19e"}, |
679 {FPU_NEON_EXT_V1, 0xf2900850, 0xffb00fd0, "vrshrn%c.i32\t%12-15,22D, %0-3,5Q,
#%16-19e"}, | 716 {FPU_NEON_EXT_V1, 0xf2900850, 0xffb00fd0, "vrshrn%c.i32\t%12-15,22D, %0-3,5Q,
#%16-19e"}, |
680 {FPU_NEON_EXT_V1, 0xf2880510, 0xffb80f90, "vshl%c.%24?us8\t%12-15,22R, %0-3,5R
, #%16-18d"}, | 717 {FPU_NEON_EXT_V1, 0xf2880510, 0xffb80f90, "vshl%c.%24?us8\t%12-15,22R, %0-3,5R
, #%16-18d"}, |
681 {FPU_NEON_EXT_V1, 0xf3880410, 0xffb80f90, "vsri%c.8\t%12-15,22R, %0-3,5R, #%16
-18e"}, | 718 {FPU_NEON_EXT_V1, 0xf3880410, 0xffb80f90, "vsri%c.8\t%12-15,22R, %0-3,5R, #%16
-18e"}, |
682 {FPU_NEON_EXT_V1, 0xf3880510, 0xffb80f90, "vsli%c.8\t%12-15,22R, %0-3,5R, #%16
-18d"}, | 719 {FPU_NEON_EXT_V1, 0xf3880510, 0xffb80f90, "vsli%c.8\t%12-15,22R, %0-3,5R, #%16
-18d"}, |
683 {FPU_NEON_EXT_V1, 0xf3880610, 0xffb80f90, "vqshlu%c.s8\t%12-15,22R, %0-3,5R, #
%16-18d"}, | 720 {FPU_NEON_EXT_V1, 0xf3880610, 0xffb80f90, "vqshlu%c.s8\t%12-15,22R, %0-3,5R, #
%16-18d"}, |
684 {FPU_NEON_EXT_V1, 0xf2900810, 0xfeb00fd0, "vqshrun%c.s32\t%12-15,22D, %0-3,5Q,
#%16-19e"}, | 721 {FPU_NEON_EXT_V1, 0xf2900810, 0xfeb00fd0, "vqshrun%c.s32\t%12-15,22D, %0-3,5Q,
#%16-19e"}, |
685 {FPU_NEON_EXT_V1, 0xf2900850, 0xfeb00fd0, "vqrshrun%c.s32\t%12-15,22D, %0-3,5Q
, #%16-19e"}, | 722 {FPU_NEON_EXT_V1, 0xf2900850, 0xfeb00fd0, "vqrshrun%c.s32\t%12-15,22D, %0-3,5Q
, #%16-19e"}, |
686 {FPU_NEON_EXT_V1, 0xf2900910, 0xfeb00fd0, "vqshrn%c.%24?us32\t%12-15,22D, %0-3
,5Q, #%16-19e"}, | 723 {FPU_NEON_EXT_V1, 0xf2900910, 0xfeb00fd0, "vqshrn%c.%24?us32\t%12-15,22D, %0-3
,5Q, #%16-19e"}, |
687 {FPU_NEON_EXT_V1, 0xf2900950, 0xfeb00fd0, "vqrshrn%c.%24?us32\t%12-15,22D, %0-
3,5Q, #%16-19e"}, | 724 {FPU_NEON_EXT_V1, 0xf2900950, 0xfeb00fd0, "vqrshrn%c.%24?us32\t%12-15,22D, %0-
3,5Q, #%16-19e"}, |
688 {FPU_NEON_EXT_V1, 0xf2900a10, 0xfeb00fd0, "vshll%c.%24?us16\t%12-15,22D, %0-3,
5Q, #%16-19d"}, | 725 {FPU_NEON_EXT_V1, 0xf2900a10, 0xfeb00fd0, "vshll%c.%24?us16\t%12-15,22Q, %0-3,
5D, #%16-19d"}, |
689 {FPU_NEON_EXT_V1, 0xf2880010, 0xfeb80f90, "vshr%c.%24?us8\t%12-15,22R, %0-3,5R
, #%16-18e"}, | 726 {FPU_NEON_EXT_V1, 0xf2880010, 0xfeb80f90, "vshr%c.%24?us8\t%12-15,22R, %0-3,5R
, #%16-18e"}, |
690 {FPU_NEON_EXT_V1, 0xf2880110, 0xfeb80f90, "vsra%c.%24?us8\t%12-15,22R, %0-3,5R
, #%16-18e"}, | 727 {FPU_NEON_EXT_V1, 0xf2880110, 0xfeb80f90, "vsra%c.%24?us8\t%12-15,22R, %0-3,5R
, #%16-18e"}, |
691 {FPU_NEON_EXT_V1, 0xf2880210, 0xfeb80f90, "vrshr%c.%24?us8\t%12-15,22R, %0-3,5
R, #%16-18e"}, | 728 {FPU_NEON_EXT_V1, 0xf2880210, 0xfeb80f90, "vrshr%c.%24?us8\t%12-15,22R, %0-3,5
R, #%16-18e"}, |
692 {FPU_NEON_EXT_V1, 0xf2880310, 0xfeb80f90, "vrsra%c.%24?us8\t%12-15,22R, %0-3,5
R, #%16-18e"}, | 729 {FPU_NEON_EXT_V1, 0xf2880310, 0xfeb80f90, "vrsra%c.%24?us8\t%12-15,22R, %0-3,5
R, #%16-18e"}, |
693 {FPU_NEON_EXT_V1, 0xf2880710, 0xfeb80f90, "vqshl%c.%24?us8\t%12-15,22R, %0-3,5
R, #%16-18d"}, | 730 {FPU_NEON_EXT_V1, 0xf2880710, 0xfeb80f90, "vqshl%c.%24?us8\t%12-15,22R, %0-3,5
R, #%16-18d"}, |
694 {FPU_NEON_EXT_V1, 0xf2a00810, 0xffa00fd0, "vshrn%c.i64\t%12-15,22D, %0-3,5Q, #
%16-20e"}, | 731 {FPU_NEON_EXT_V1, 0xf2a00810, 0xffa00fd0, "vshrn%c.i64\t%12-15,22D, %0-3,5Q, #
%16-20e"}, |
695 {FPU_NEON_EXT_V1, 0xf2a00850, 0xffa00fd0, "vrshrn%c.i64\t%12-15,22D, %0-3,5Q,
#%16-20e"}, | 732 {FPU_NEON_EXT_V1, 0xf2a00850, 0xffa00fd0, "vrshrn%c.i64\t%12-15,22D, %0-3,5Q,
#%16-20e"}, |
696 {FPU_NEON_EXT_V1, 0xf2900510, 0xffb00f90, "vshl%c.%24?us16\t%12-15,22R, %0-3,5
R, #%16-19d"}, | 733 {FPU_NEON_EXT_V1, 0xf2900510, 0xffb00f90, "vshl%c.%24?us16\t%12-15,22R, %0-3,5
R, #%16-19d"}, |
697 {FPU_NEON_EXT_V1, 0xf3900410, 0xffb00f90, "vsri%c.16\t%12-15,22R, %0-3,5R, #%1
6-19e"}, | 734 {FPU_NEON_EXT_V1, 0xf3900410, 0xffb00f90, "vsri%c.16\t%12-15,22R, %0-3,5R, #%1
6-19e"}, |
698 {FPU_NEON_EXT_V1, 0xf3900510, 0xffb00f90, "vsli%c.16\t%12-15,22R, %0-3,5R, #%1
6-19d"}, | 735 {FPU_NEON_EXT_V1, 0xf3900510, 0xffb00f90, "vsli%c.16\t%12-15,22R, %0-3,5R, #%1
6-19d"}, |
699 {FPU_NEON_EXT_V1, 0xf3900610, 0xffb00f90, "vqshlu%c.s16\t%12-15,22R, %0-3,5R,
#%16-19d"}, | 736 {FPU_NEON_EXT_V1, 0xf3900610, 0xffb00f90, "vqshlu%c.s16\t%12-15,22R, %0-3,5R,
#%16-19d"}, |
700 {FPU_NEON_EXT_V1, 0xf2a00a10, 0xfea00fd0, "vshll%c.%24?us32\t%12-15,22D, %0-3,
5Q, #%16-20d"}, | 737 {FPU_NEON_EXT_V1, 0xf2a00a10, 0xfea00fd0, "vshll%c.%24?us32\t%12-15,22Q, %0-3,
5D, #%16-20d"}, |
701 {FPU_NEON_EXT_V1, 0xf2900010, 0xfeb00f90, "vshr%c.%24?us16\t%12-15,22R, %0-3,5
R, #%16-19e"}, | 738 {FPU_NEON_EXT_V1, 0xf2900010, 0xfeb00f90, "vshr%c.%24?us16\t%12-15,22R, %0-3,5
R, #%16-19e"}, |
702 {FPU_NEON_EXT_V1, 0xf2900110, 0xfeb00f90, "vsra%c.%24?us16\t%12-15,22R, %0-3,5
R, #%16-19e"}, | 739 {FPU_NEON_EXT_V1, 0xf2900110, 0xfeb00f90, "vsra%c.%24?us16\t%12-15,22R, %0-3,5
R, #%16-19e"}, |
703 {FPU_NEON_EXT_V1, 0xf2900210, 0xfeb00f90, "vrshr%c.%24?us16\t%12-15,22R, %0-3,
5R, #%16-19e"}, | 740 {FPU_NEON_EXT_V1, 0xf2900210, 0xfeb00f90, "vrshr%c.%24?us16\t%12-15,22R, %0-3,
5R, #%16-19e"}, |
704 {FPU_NEON_EXT_V1, 0xf2900310, 0xfeb00f90, "vrsra%c.%24?us16\t%12-15,22R, %0-3,
5R, #%16-19e"}, | 741 {FPU_NEON_EXT_V1, 0xf2900310, 0xfeb00f90, "vrsra%c.%24?us16\t%12-15,22R, %0-3,
5R, #%16-19e"}, |
705 {FPU_NEON_EXT_V1, 0xf2900710, 0xfeb00f90, "vqshl%c.%24?us16\t%12-15,22R, %0-3,
5R, #%16-19d"}, | 742 {FPU_NEON_EXT_V1, 0xf2900710, 0xfeb00f90, "vqshl%c.%24?us16\t%12-15,22R, %0-3,
5R, #%16-19d"}, |
706 {FPU_NEON_EXT_V1, 0xf2a00810, 0xfea00fd0, "vqshrun%c.s64\t%12-15,22D, %0-3,5Q,
#%16-20e"}, | 743 {FPU_NEON_EXT_V1, 0xf2a00810, 0xfea00fd0, "vqshrun%c.s64\t%12-15,22D, %0-3,5Q,
#%16-20e"}, |
707 {FPU_NEON_EXT_V1, 0xf2a00850, 0xfea00fd0, "vqrshrun%c.s64\t%12-15,22D, %0-3,5Q
, #%16-20e"}, | 744 {FPU_NEON_EXT_V1, 0xf2a00850, 0xfea00fd0, "vqrshrun%c.s64\t%12-15,22D, %0-3,5Q
, #%16-20e"}, |
708 {FPU_NEON_EXT_V1, 0xf2a00910, 0xfea00fd0, "vqshrn%c.%24?us64\t%12-15,22D, %0-3
,5Q, #%16-20e"}, | 745 {FPU_NEON_EXT_V1, 0xf2a00910, 0xfea00fd0, "vqshrn%c.%24?us64\t%12-15,22D, %0-3
,5Q, #%16-20e"}, |
709 {FPU_NEON_EXT_V1, 0xf2a00950, 0xfea00fd0, "vqrshrn%c.%24?us64\t%12-15,22D, %0-
3,5Q, #%16-20e"}, | 746 {FPU_NEON_EXT_V1, 0xf2a00950, 0xfea00fd0, "vqrshrn%c.%24?us64\t%12-15,22D, %0-
3,5Q, #%16-20e"}, |
710 {FPU_NEON_EXT_V1, 0xf2a00510, 0xffa00f90, "vshl%c.%24?us32\t%12-15,22R, %0-3,5
R, #%16-20d"}, | 747 {FPU_NEON_EXT_V1, 0xf2a00510, 0xffa00f90, "vshl%c.%24?us32\t%12-15,22R, %0-3,5
R, #%16-20d"}, |
(...skipping 10 matching lines...) Expand all Loading... |
721 {FPU_NEON_EXT_V1, 0xf3800590, 0xff800f90, "vsli%c.64\t%12-15,22R, %0-3,5R, #%1
6-21d"}, | 758 {FPU_NEON_EXT_V1, 0xf3800590, 0xff800f90, "vsli%c.64\t%12-15,22R, %0-3,5R, #%1
6-21d"}, |
722 {FPU_NEON_EXT_V1, 0xf3800690, 0xff800f90, "vqshlu%c.s64\t%12-15,22R, %0-3,5R,
#%16-21d"}, | 759 {FPU_NEON_EXT_V1, 0xf3800690, 0xff800f90, "vqshlu%c.s64\t%12-15,22R, %0-3,5R,
#%16-21d"}, |
723 {FPU_NEON_EXT_V1, 0xf2800090, 0xfe800f90, "vshr%c.%24?us64\t%12-15,22R, %0-3,5
R, #%16-21e"}, | 760 {FPU_NEON_EXT_V1, 0xf2800090, 0xfe800f90, "vshr%c.%24?us64\t%12-15,22R, %0-3,5
R, #%16-21e"}, |
724 {FPU_NEON_EXT_V1, 0xf2800190, 0xfe800f90, "vsra%c.%24?us64\t%12-15,22R, %0-3,5
R, #%16-21e"}, | 761 {FPU_NEON_EXT_V1, 0xf2800190, 0xfe800f90, "vsra%c.%24?us64\t%12-15,22R, %0-3,5
R, #%16-21e"}, |
725 {FPU_NEON_EXT_V1, 0xf2800290, 0xfe800f90, "vrshr%c.%24?us64\t%12-15,22R, %0-3,
5R, #%16-21e"}, | 762 {FPU_NEON_EXT_V1, 0xf2800290, 0xfe800f90, "vrshr%c.%24?us64\t%12-15,22R, %0-3,
5R, #%16-21e"}, |
726 {FPU_NEON_EXT_V1, 0xf2800390, 0xfe800f90, "vrsra%c.%24?us64\t%12-15,22R, %0-3,
5R, #%16-21e"}, | 763 {FPU_NEON_EXT_V1, 0xf2800390, 0xfe800f90, "vrsra%c.%24?us64\t%12-15,22R, %0-3,
5R, #%16-21e"}, |
727 {FPU_NEON_EXT_V1, 0xf2800790, 0xfe800f90, "vqshl%c.%24?us64\t%12-15,22R, %0-3,
5R, #%16-21d"}, | 764 {FPU_NEON_EXT_V1, 0xf2800790, 0xfe800f90, "vqshl%c.%24?us64\t%12-15,22R, %0-3,
5R, #%16-21d"}, |
728 {FPU_NEON_EXT_V1, 0xf2a00e10, 0xfea00e90, "vcvt%c.%24,8?usff32.%24,8?ffus32\t%
12-15,22R, %0-3,5R, #%16-20e"}, | 765 {FPU_NEON_EXT_V1, 0xf2a00e10, 0xfea00e90, "vcvt%c.%24,8?usff32.%24,8?ffus32\t%
12-15,22R, %0-3,5R, #%16-20e"}, |
729 | 766 |
730 /* Three registers of different lengths. */ | 767 /* Three registers of different lengths. */ |
| 768 {FPU_CRYPTO_EXT_ARMV8, 0xf2a00e00, 0xfeb00f50, "vmull%c.p64\t%12-15,22Q, %16-1
9,7D, %0-3,5D"}, |
731 {FPU_NEON_EXT_V1, 0xf2800e00, 0xfea00f50, "vmull%c.p%20S0\t%12-15,22Q, %16-19,
7D, %0-3,5D"}, | 769 {FPU_NEON_EXT_V1, 0xf2800e00, 0xfea00f50, "vmull%c.p%20S0\t%12-15,22Q, %16-19,
7D, %0-3,5D"}, |
732 {FPU_NEON_EXT_V1, 0xf2800400, 0xff800f50, "vaddhn%c.i%20-21T2\t%12-15,22D, %16
-19,7Q, %0-3,5Q"}, | 770 {FPU_NEON_EXT_V1, 0xf2800400, 0xff800f50, "vaddhn%c.i%20-21T2\t%12-15,22D, %16
-19,7Q, %0-3,5Q"}, |
733 {FPU_NEON_EXT_V1, 0xf2800600, 0xff800f50, "vsubhn%c.i%20-21T2\t%12-15,22D, %16
-19,7Q, %0-3,5Q"}, | 771 {FPU_NEON_EXT_V1, 0xf2800600, 0xff800f50, "vsubhn%c.i%20-21T2\t%12-15,22D, %16
-19,7Q, %0-3,5Q"}, |
734 {FPU_NEON_EXT_V1, 0xf2800900, 0xff800f50, "vqdmlal%c.s%20-21S6\t%12-15,22Q, %1
6-19,7D, %0-3,5D"}, | 772 {FPU_NEON_EXT_V1, 0xf2800900, 0xff800f50, "vqdmlal%c.s%20-21S6\t%12-15,22Q, %1
6-19,7D, %0-3,5D"}, |
735 {FPU_NEON_EXT_V1, 0xf2800b00, 0xff800f50, "vqdmlsl%c.s%20-21S6\t%12-15,22Q, %1
6-19,7D, %0-3,5D"}, | 773 {FPU_NEON_EXT_V1, 0xf2800b00, 0xff800f50, "vqdmlsl%c.s%20-21S6\t%12-15,22Q, %1
6-19,7D, %0-3,5D"}, |
736 {FPU_NEON_EXT_V1, 0xf2800d00, 0xff800f50, "vqdmull%c.s%20-21S6\t%12-15,22Q, %1
6-19,7D, %0-3,5D"}, | 774 {FPU_NEON_EXT_V1, 0xf2800d00, 0xff800f50, "vqdmull%c.s%20-21S6\t%12-15,22Q, %1
6-19,7D, %0-3,5D"}, |
737 {FPU_NEON_EXT_V1, 0xf3800400, 0xff800f50, "vraddhn%c.i%20-21T2\t%12-15,22D, %1
6-19,7Q, %0-3,5Q"}, | 775 {FPU_NEON_EXT_V1, 0xf3800400, 0xff800f50, "vraddhn%c.i%20-21T2\t%12-15,22D, %1
6-19,7Q, %0-3,5Q"}, |
738 {FPU_NEON_EXT_V1, 0xf3800600, 0xff800f50, "vrsubhn%c.i%20-21T2\t%12-15,22D, %1
6-19,7Q, %0-3,5Q"}, | 776 {FPU_NEON_EXT_V1, 0xf3800600, 0xff800f50, "vrsubhn%c.i%20-21T2\t%12-15,22D, %1
6-19,7Q, %0-3,5Q"}, |
739 {FPU_NEON_EXT_V1, 0xf2800000, 0xfe800f50, "vaddl%c.%24?us%20-21S2\t%12-15,22Q,
%16-19,7D, %0-3,5D"}, | 777 {FPU_NEON_EXT_V1, 0xf2800000, 0xfe800f50, "vaddl%c.%24?us%20-21S2\t%12-15,22Q,
%16-19,7D, %0-3,5D"}, |
740 {FPU_NEON_EXT_V1, 0xf2800100, 0xfe800f50, "vaddw%c.%24?us%20-21S2\t%12-15,22Q,
%16-19,7Q, %0-3,5D"}, | 778 {FPU_NEON_EXT_V1, 0xf2800100, 0xfe800f50, "vaddw%c.%24?us%20-21S2\t%12-15,22Q,
%16-19,7Q, %0-3,5D"}, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 %m print register mask for ldm/stm instruction | 848 %m print register mask for ldm/stm instruction |
811 %o print operand2 (immediate or register + shift) | 849 %o print operand2 (immediate or register + shift) |
812 %p print 'p' iff bits 12-15 are 15 | 850 %p print 'p' iff bits 12-15 are 15 |
813 %t print 't' iff bit 21 set and bit 24 clear | 851 %t print 't' iff bit 21 set and bit 24 clear |
814 %B print arm BLX(1) destination | 852 %B print arm BLX(1) destination |
815 %C print the PSR sub type. | 853 %C print the PSR sub type. |
816 %U print barrier type. | 854 %U print barrier type. |
817 %P print address for pli instruction. | 855 %P print address for pli instruction. |
818 | 856 |
819 %<bitfield>r print as an ARM register | 857 %<bitfield>r print as an ARM register |
| 858 %<bitfield>T print as an ARM register + 1 |
820 %<bitfield>R as %r but r15 is UNPREDICTABLE | 859 %<bitfield>R as %r but r15 is UNPREDICTABLE |
821 %<bitfield>{r|R}u as %{r|R} but if matches the other %u field then is UNPR
EDICTABLE | 860 %<bitfield>{r|R}u as %{r|R} but if matches the other %u field then is UNPR
EDICTABLE |
822 %<bitfield>{r|R}U as %{r|R} but if matches the other %U field then is UNPR
EDICTABLE | 861 %<bitfield>{r|R}U as %{r|R} but if matches the other %U field then is UNPR
EDICTABLE |
823 %<bitfield>d print the bitfield in decimal | 862 %<bitfield>d print the bitfield in decimal |
824 %<bitfield>W print the bitfield plus one in decimal | 863 %<bitfield>W print the bitfield plus one in decimal |
825 %<bitfield>x print the bitfield in hex | 864 %<bitfield>x print the bitfield in hex |
826 %<bitfield>X print the bitfield as 1 hex digit without leading "0x" | 865 %<bitfield>X print the bitfield as 1 hex digit without leading "0x" |
827 | 866 |
828 %<bitfield>'c print specified char iff bitfield is all ones | 867 %<bitfield>'c print specified char iff bitfield is all ones |
829 %<bitfield>`c print specified char iff bitfield is all zeroes | 868 %<bitfield>`c print specified char iff bitfield is all zeroes |
830 %<bitfield>?ab... select from array of values in big endian order | 869 %<bitfield>?ab... select from array of values in big endian order |
831 | 870 |
832 %e print arm SMI operand (bits 0..7,8..19). | 871 %e print arm SMI operand (bits 0..7,8..19). |
833 %E print the LSB and WIDTH fields of a BFI or BFC instructi
on. | 872 %E print the LSB and WIDTH fields of a BFI or BFC instructi
on. |
834 %V print the 16-bit immediate field of a MOVT or MOVW instr
uction. | 873 %V print the 16-bit immediate field of a MOVT or MOVW instr
uction. |
835 %R print the SPSR/CPSR or banked register of an MRS. */ | 874 %R print the SPSR/CPSR or banked register of an MRS. */ |
836 | 875 |
837 static const struct opcode32 arm_opcodes[] = | 876 static const struct opcode32 arm_opcodes[] = |
838 { | 877 { |
839 /* ARM instructions. */ | 878 /* ARM instructions. */ |
840 {ARM_EXT_V1, 0xe1a00000, 0xffffffff, "nop\t\t\t; (mov r0, r0)"}, | 879 {ARM_EXT_V1, 0xe1a00000, 0xffffffff, "nop\t\t\t; (mov r0, r0)"}, |
| 880 {ARM_EXT_V1, 0xe7f000f0, 0xfff000f0, "udf\t#%e"}, |
| 881 |
841 {ARM_EXT_V4T | ARM_EXT_V5, 0x012FFF10, 0x0ffffff0, "bx%c\t%0-3r"}, | 882 {ARM_EXT_V4T | ARM_EXT_V5, 0x012FFF10, 0x0ffffff0, "bx%c\t%0-3r"}, |
842 {ARM_EXT_V2, 0x00000090, 0x0fe000f0, "mul%20's%c\t%16-19R, %0-3R, %8-11R"}, | 883 {ARM_EXT_V2, 0x00000090, 0x0fe000f0, "mul%20's%c\t%16-19R, %0-3R, %8-11R"}, |
843 {ARM_EXT_V2, 0x00200090, 0x0fe000f0, "mla%20's%c\t%16-19R, %0-3R, %8-11R, %12-
15R"}, | 884 {ARM_EXT_V2, 0x00200090, 0x0fe000f0, "mla%20's%c\t%16-19R, %0-3R, %8-11R, %12-
15R"}, |
844 {ARM_EXT_V2S, 0x01000090, 0x0fb00ff0, "swp%22'b%c\t%12-15RU, %0-3Ru, [%16-19Ru
U]"}, | 885 {ARM_EXT_V2S, 0x01000090, 0x0fb00ff0, "swp%22'b%c\t%12-15RU, %0-3Ru, [%16-19Ru
U]"}, |
845 {ARM_EXT_V3M, 0x00800090, 0x0fa000f0, "%22?sumull%20's%c\t%12-15Ru, %16-19Ru,
%0-3R, %8-11R"}, | 886 {ARM_EXT_V3M, 0x00800090, 0x0fa000f0, "%22?sumull%20's%c\t%12-15Ru, %16-19Ru,
%0-3R, %8-11R"}, |
846 {ARM_EXT_V3M, 0x00a00090, 0x0fa000f0, "%22?sumlal%20's%c\t%12-15Ru, %16-19Ru,
%0-3R, %8-11R"}, | 887 {ARM_EXT_V3M, 0x00a00090, 0x0fa000f0, "%22?sumlal%20's%c\t%12-15Ru, %16-19Ru,
%0-3R, %8-11R"}, |
847 | 888 |
| 889 /* V8 instructions. */ |
| 890 {ARM_EXT_V8, 0x0320f005, 0x0fffffff, "sevl"}, |
| 891 {ARM_EXT_V8, 0xe1000070, 0xfff000f0, "hlt\t0x%16-19X%12-15X%8-11X%0-3X"}, |
| 892 {ARM_EXT_V8, 0x01800e90, 0x0ff00ff0, "stlex%c\t%12-15r, %0-3r, [%16-19R]"}, |
| 893 {ARM_EXT_V8, 0x01900e9f, 0x0ff00fff, "ldaex%c\t%12-15r, [%16-19R]"}, |
| 894 {ARM_EXT_V8, 0x01a00e90, 0x0ff00ff0, "stlexd%c\t%12-15r, %0-3r, %0-3T, [%16-
19R]"}, |
| 895 {ARM_EXT_V8, 0x01b00e9f, 0x0ff00fff, "ldaexd%c\t%12-15r, %12-15T, [%16-19R]"
}, |
| 896 {ARM_EXT_V8, 0x01c00e90, 0x0ff00ff0, "stlexb%c\t%12-15r, %0-3r, [%16-19R]"}, |
| 897 {ARM_EXT_V8, 0x01d00e9f, 0x0ff00fff, "ldaexb%c\t%12-15r, [%16-19R]"}, |
| 898 {ARM_EXT_V8, 0x01e00e90, 0x0ff00ff0, "stlexh%c\t%12-15r, %0-3r, [%16-19R]"}, |
| 899 {ARM_EXT_V8, 0x01f00e9f, 0x0ff00fff, "ldaexh%c\t%12-15r, [%16-19R]"}, |
| 900 {ARM_EXT_V8, 0x0180fc90, 0x0ff0fff0, "stl%c\t%0-3r, [%16-19R]"}, |
| 901 {ARM_EXT_V8, 0x01900c9f, 0x0ff00fff, "lda%c\t%12-15r, [%16-19R]"}, |
| 902 {ARM_EXT_V8, 0x01c0fc90, 0x0ff0fff0, "stlb%c\t%0-3r, [%16-19R]"}, |
| 903 {ARM_EXT_V8, 0x01d00c9f, 0x0ff00fff, "ldab%c\t%12-15r, [%16-19R]"}, |
| 904 {ARM_EXT_V8, 0x01e0fc90, 0x0ff0fff0, "stlh%c\t%0-3r, [%16-19R]"}, |
| 905 {ARM_EXT_V8, 0x01f00c9f, 0x0ff00fff, "ldaexh%c\t%12-15r, [%16-19R]"}, |
| 906 /* CRC32 instructions. */ |
| 907 {CRC_EXT_ARMV8, 0xe1000040, 0xfff00ff0, "crc32b\t%12-15R, %16-19R, %0-3R"}, |
| 908 {CRC_EXT_ARMV8, 0xe1200040, 0xfff00ff0, "crc32h\t%12-15R, %16-19R, %0-3R"}, |
| 909 {CRC_EXT_ARMV8, 0xe1400040, 0xfff00ff0, "crc32w\t%12-15R, %16-19R, %0-3R"}, |
| 910 {CRC_EXT_ARMV8, 0xe1000240, 0xfff00ff0, "crc32cb\t%12-15R, %16-19R, %0-3R"}, |
| 911 {CRC_EXT_ARMV8, 0xe1200240, 0xfff00ff0, "crc32ch\t%12-15R, %16-19R, %0-3R"}, |
| 912 {CRC_EXT_ARMV8, 0xe1400240, 0xfff00ff0, "crc32cw\t%12-15R, %16-19R, %0-3R"}, |
| 913 |
848 /* Virtualization Extension instructions. */ | 914 /* Virtualization Extension instructions. */ |
849 {ARM_EXT_VIRT, 0x0160006e, 0x0fffffff, "eret%c"}, | 915 {ARM_EXT_VIRT, 0x0160006e, 0x0fffffff, "eret%c"}, |
850 {ARM_EXT_VIRT, 0x01400070, 0x0ff000f0, "hvc%c\t%e"}, | 916 {ARM_EXT_VIRT, 0x01400070, 0x0ff000f0, "hvc%c\t%e"}, |
851 | 917 |
852 /* Integer Divide Extension instructions. */ | 918 /* Integer Divide Extension instructions. */ |
853 {ARM_EXT_ADIV, 0x0710f010, 0x0ff0f0f0, "sdiv%c\t%16-19r, %0-3r, %8-11r"}, | 919 {ARM_EXT_ADIV, 0x0710f010, 0x0ff0f0f0, "sdiv%c\t%16-19r, %0-3r, %8-11r"}, |
854 {ARM_EXT_ADIV, 0x0730f010, 0x0ff0f0f0, "udiv%c\t%16-19r, %0-3r, %8-11r"}, | 920 {ARM_EXT_ADIV, 0x0730f010, 0x0ff0f0f0, "udiv%c\t%16-19r, %0-3r, %8-11r"}, |
855 | 921 |
856 /* MP Extension instructions. */ | 922 /* MP Extension instructions. */ |
857 {ARM_EXT_MP, 0xf410f000, 0xfc70f000, "pldw\t%a"}, | 923 {ARM_EXT_MP, 0xf410f000, 0xfc70f000, "pldw\t%a"}, |
858 | 924 |
859 /* V7 instructions. */ | 925 /* V7 instructions. */ |
860 {ARM_EXT_V7, 0xf450f000, 0xfd70f000, "pli\t%P"}, | 926 {ARM_EXT_V7, 0xf450f000, 0xfd70f000, "pli\t%P"}, |
861 {ARM_EXT_V7, 0x0320f0f0, 0x0ffffff0, "dbg%c\t#%0-3d"}, | 927 {ARM_EXT_V7, 0x0320f0f0, 0x0ffffff0, "dbg%c\t#%0-3d"}, |
| 928 {ARM_EXT_V8, 0xf57ff051, 0xfffffff3, "dmb\t%U"}, |
| 929 {ARM_EXT_V8, 0xf57ff041, 0xfffffff3, "dsb\t%U"}, |
862 {ARM_EXT_V7, 0xf57ff050, 0xfffffff0, "dmb\t%U"}, | 930 {ARM_EXT_V7, 0xf57ff050, 0xfffffff0, "dmb\t%U"}, |
863 {ARM_EXT_V7, 0xf57ff040, 0xfffffff0, "dsb\t%U"}, | 931 {ARM_EXT_V7, 0xf57ff040, 0xfffffff0, "dsb\t%U"}, |
864 {ARM_EXT_V7, 0xf57ff060, 0xfffffff0, "isb\t%U"}, | 932 {ARM_EXT_V7, 0xf57ff060, 0xfffffff0, "isb\t%U"}, |
865 | 933 |
866 /* ARM V6T2 instructions. */ | 934 /* ARM V6T2 instructions. */ |
867 {ARM_EXT_V6T2, 0x07c0001f, 0x0fe0007f, "bfc%c\t%12-15R, %E"}, | 935 {ARM_EXT_V6T2, 0x07c0001f, 0x0fe0007f, "bfc%c\t%12-15R, %E"}, |
868 {ARM_EXT_V6T2, 0x07c00010, 0x0fe00070, "bfi%c\t%12-15R, %0-3r, %E"}, | 936 {ARM_EXT_V6T2, 0x07c00010, 0x0fe00070, "bfi%c\t%12-15R, %0-3r, %E"}, |
869 {ARM_EXT_V6T2, 0x00600090, 0x0ff000f0, "mls%c\t%16-19R, %0-3R, %8-11R, %12-15R
"}, | 937 {ARM_EXT_V6T2, 0x00600090, 0x0ff000f0, "mls%c\t%16-19R, %0-3R, %8-11R, %12-15R
"}, |
870 {ARM_EXT_V6T2, 0x006000b0, 0x0f7000f0, "strht%c\t%12-15R, %S"}, | 938 {ARM_EXT_V6T2, 0x002000b0, 0x0f3000f0, "strht%c\t%12-15R, %S"}, |
871 | 939 |
872 {ARM_EXT_V6T2, 0x00300090, 0x0f3000f0, UNDEFINED_INSTRUCTION }, | 940 {ARM_EXT_V6T2, 0x00300090, 0x0f3000f0, UNDEFINED_INSTRUCTION }, |
873 {ARM_EXT_V6T2, 0x00300090, 0x0f300090, "ldr%6's%5?hbt%c\t%12-15R, %S"}, | 941 {ARM_EXT_V6T2, 0x00300090, 0x0f300090, "ldr%6's%5?hbt%c\t%12-15R, %S"}, |
874 | 942 |
875 {ARM_EXT_V6T2, 0x03000000, 0x0ff00000, "movw%c\t%12-15R, %V"}, | 943 {ARM_EXT_V6T2, 0x03000000, 0x0ff00000, "movw%c\t%12-15R, %V"}, |
876 {ARM_EXT_V6T2, 0x03400000, 0x0ff00000, "movt%c\t%12-15R, %V"}, | 944 {ARM_EXT_V6T2, 0x03400000, 0x0ff00000, "movt%c\t%12-15R, %V"}, |
877 {ARM_EXT_V6T2, 0x06ff0f30, 0x0fff0ff0, "rbit%c\t%12-15R, %0-3R"}, | 945 {ARM_EXT_V6T2, 0x06ff0f30, 0x0fff0ff0, "rbit%c\t%12-15R, %0-3R"}, |
878 {ARM_EXT_V6T2, 0x07a00050, 0x0fa00070, "%22?usbfx%c\t%12-15r, %0-3r, #%7-11d,
#%16-20W"}, | 946 {ARM_EXT_V6T2, 0x07a00050, 0x0fa00070, "%22?usbfx%c\t%12-15r, %0-3r, #%7-11d,
#%16-20W"}, |
879 | 947 |
880 /* ARM Security extension instructions. */ | 948 /* ARM Security extension instructions. */ |
881 {ARM_EXT_SEC, 0x01600070, 0x0ff000f0, "smc%c\t%e"}, | 949 {ARM_EXT_SEC, 0x01600070, 0x0ff000f0, "smc%c\t%e"}, |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1231 %<bitfield>a print (bitfield * 4) as a pc-rel offset + decoded symbol | 1299 %<bitfield>a print (bitfield * 4) as a pc-rel offset + decoded symbol |
1232 %<bitfield>B print Thumb branch destination (signed displacement) | 1300 %<bitfield>B print Thumb branch destination (signed displacement) |
1233 %<bitfield>c print bitfield as a condition code | 1301 %<bitfield>c print bitfield as a condition code |
1234 %<bitnum>'c print specified char iff bit is one | 1302 %<bitnum>'c print specified char iff bit is one |
1235 %<bitnum>?ab print a if bit is one else print b. */ | 1303 %<bitnum>?ab print a if bit is one else print b. */ |
1236 | 1304 |
1237 static const struct opcode16 thumb_opcodes[] = | 1305 static const struct opcode16 thumb_opcodes[] = |
1238 { | 1306 { |
1239 /* Thumb instructions. */ | 1307 /* Thumb instructions. */ |
1240 | 1308 |
| 1309 /* ARM V8 instructions. */ |
| 1310 {ARM_EXT_V8, 0xbf50, 0xffff, "sevl%c"}, |
| 1311 {ARM_EXT_V8, 0xba80, 0xffc0, "hlt\t%0-5x"}, |
| 1312 |
1241 /* ARM V6K no-argument instructions. */ | 1313 /* ARM V6K no-argument instructions. */ |
1242 {ARM_EXT_V6K, 0xbf00, 0xffff, "nop%c"}, | 1314 {ARM_EXT_V6K, 0xbf00, 0xffff, "nop%c"}, |
1243 {ARM_EXT_V6K, 0xbf10, 0xffff, "yield%c"}, | 1315 {ARM_EXT_V6K, 0xbf10, 0xffff, "yield%c"}, |
1244 {ARM_EXT_V6K, 0xbf20, 0xffff, "wfe%c"}, | 1316 {ARM_EXT_V6K, 0xbf20, 0xffff, "wfe%c"}, |
1245 {ARM_EXT_V6K, 0xbf30, 0xffff, "wfi%c"}, | 1317 {ARM_EXT_V6K, 0xbf30, 0xffff, "wfi%c"}, |
1246 {ARM_EXT_V6K, 0xbf40, 0xffff, "sev%c"}, | 1318 {ARM_EXT_V6K, 0xbf40, 0xffff, "sev%c"}, |
1247 {ARM_EXT_V6K, 0xbf00, 0xff0f, "nop%c\t{%4-7d}"}, | 1319 {ARM_EXT_V6K, 0xbf00, 0xff0f, "nop%c\t{%4-7d}"}, |
1248 | 1320 |
1249 /* ARM V6T2 instructions. */ | 1321 /* ARM V6T2 instructions. */ |
1250 {ARM_EXT_V6T2, 0xb900, 0xfd00, "cbnz\t%0-2r, %b%X"}, | 1322 {ARM_EXT_V6T2, 0xb900, 0xfd00, "cbnz\t%0-2r, %b%X"}, |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1335 {ARM_EXT_V4T, 0x9800, 0xF800, "ldr%c\t%8-10r, [sp, #%0-7W]"}, | 1407 {ARM_EXT_V4T, 0x9800, 0xF800, "ldr%c\t%8-10r, [sp, #%0-7W]"}, |
1336 /* format 12 */ | 1408 /* format 12 */ |
1337 {ARM_EXT_V4T, 0xA000, 0xF800, "add%c\t%8-10r, pc, #%0-7W\t; (adr %8-10r, %0-7a
)"}, | 1409 {ARM_EXT_V4T, 0xA000, 0xF800, "add%c\t%8-10r, pc, #%0-7W\t; (adr %8-10r, %0-7a
)"}, |
1338 {ARM_EXT_V4T, 0xA800, 0xF800, "add%c\t%8-10r, sp, #%0-7W"}, | 1410 {ARM_EXT_V4T, 0xA800, 0xF800, "add%c\t%8-10r, sp, #%0-7W"}, |
1339 /* format 15 */ | 1411 /* format 15 */ |
1340 {ARM_EXT_V4T, 0xC000, 0xF800, "stmia%c\t%8-10r!, %M"}, | 1412 {ARM_EXT_V4T, 0xC000, 0xF800, "stmia%c\t%8-10r!, %M"}, |
1341 {ARM_EXT_V4T, 0xC800, 0xF800, "ldmia%c\t%8-10r%W, %M"}, | 1413 {ARM_EXT_V4T, 0xC800, 0xF800, "ldmia%c\t%8-10r%W, %M"}, |
1342 /* format 17 */ | 1414 /* format 17 */ |
1343 {ARM_EXT_V4T, 0xDF00, 0xFF00, "svc%c\t%0-7d"}, | 1415 {ARM_EXT_V4T, 0xDF00, 0xFF00, "svc%c\t%0-7d"}, |
1344 /* format 16 */ | 1416 /* format 16 */ |
| 1417 {ARM_EXT_V4T, 0xDE00, 0xFF00, "udf%c\t#%0-7d"}, |
1345 {ARM_EXT_V4T, 0xDE00, 0xFE00, UNDEFINED_INSTRUCTION}, | 1418 {ARM_EXT_V4T, 0xDE00, 0xFE00, UNDEFINED_INSTRUCTION}, |
1346 {ARM_EXT_V4T, 0xD000, 0xF000, "b%8-11c.n\t%0-7B%X"}, | 1419 {ARM_EXT_V4T, 0xD000, 0xF000, "b%8-11c.n\t%0-7B%X"}, |
1347 /* format 18 */ | 1420 /* format 18 */ |
1348 {ARM_EXT_V4T, 0xE000, 0xF800, "b%c.n\t%0-10B%x"}, | 1421 {ARM_EXT_V4T, 0xE000, 0xF800, "b%c.n\t%0-10B%x"}, |
1349 | 1422 |
1350 /* The E800 .. FFFF range is unconditionally redirected to the | 1423 /* The E800 .. FFFF range is unconditionally redirected to the |
1351 32-bit table, because even in pre-V6T2 ISAs, BL and BLX(1) pairs | 1424 32-bit table, because even in pre-V6T2 ISAs, BL and BLX(1) pairs |
1352 are processed via that table. Thus, we can never encounter a | 1425 are processed via that table. Thus, we can never encounter a |
1353 bare "second half of BL/BLX(1)" instruction here. */ | 1426 bare "second half of BL/BLX(1)" instruction here. */ |
1354 {ARM_EXT_V1, 0x0000, 0x0000, UNDEFINED_INSTRUCTION}, | 1427 {ARM_EXT_V1, 0x0000, 0x0000, UNDEFINED_INSTRUCTION}, |
(...skipping 28 matching lines...) Expand all Loading... |
1383 %R print the rotation field of an SXT instruction | 1456 %R print the rotation field of an SXT instruction |
1384 %U print barrier type. | 1457 %U print barrier type. |
1385 %P print address for pli instruction. | 1458 %P print address for pli instruction. |
1386 %c print the condition code | 1459 %c print the condition code |
1387 %x print warning if conditional an not at end of IT block" | 1460 %x print warning if conditional an not at end of IT block" |
1388 %X print "\t; unpredictable <IT:code>" if conditional | 1461 %X print "\t; unpredictable <IT:code>" if conditional |
1389 | 1462 |
1390 %<bitfield>d print bitfield in decimal | 1463 %<bitfield>d print bitfield in decimal |
1391 %<bitfield>W print bitfield*4 in decimal | 1464 %<bitfield>W print bitfield*4 in decimal |
1392 %<bitfield>r print bitfield as an ARM register | 1465 %<bitfield>r print bitfield as an ARM register |
1393 %<bitfield>R» as %<>r bit r15 is UNPREDICTABLE | 1466 %<bitfield>R» as %<>r but r15 is UNPREDICTABLE |
| 1467 %<bitfield>S» as %<>R but r13 is UNPREDICTABLE |
1394 %<bitfield>c print bitfield as a condition code | 1468 %<bitfield>c print bitfield as a condition code |
1395 | 1469 |
1396 %<bitfield>'c print specified char iff bitfield is all ones | 1470 %<bitfield>'c print specified char iff bitfield is all ones |
1397 %<bitfield>`c print specified char iff bitfield is all zeroes | 1471 %<bitfield>`c print specified char iff bitfield is all zeroes |
1398 %<bitfield>?ab... select from array of values in big endian order | 1472 %<bitfield>?ab... select from array of values in big endian order |
1399 | 1473 |
1400 With one exception at the bottom (done because BL and BLX(1) need | 1474 With one exception at the bottom (done because BL and BLX(1) need |
1401 to come dead last), this table was machine-sorted first in | 1475 to come dead last), this table was machine-sorted first in |
1402 decreasing order of number of bits set in the mask, then in | 1476 decreasing order of number of bits set in the mask, then in |
1403 increasing numeric order of mask, then in increasing numeric order | 1477 increasing numeric order of mask, then in increasing numeric order |
1404 of opcode. This order is not the clearest for a human reader, but | 1478 of opcode. This order is not the clearest for a human reader, but |
1405 is guaranteed never to catch a special-case bit pattern with a more | 1479 is guaranteed never to catch a special-case bit pattern with a more |
1406 general mask, which is important, because this instruction encoding | 1480 general mask, which is important, because this instruction encoding |
1407 makes heavy use of special-case bit patterns. */ | 1481 makes heavy use of special-case bit patterns. */ |
1408 static const struct opcode32 thumb32_opcodes[] = | 1482 static const struct opcode32 thumb32_opcodes[] = |
1409 { | 1483 { |
| 1484 /* V8 instructions. */ |
| 1485 {ARM_EXT_V8, 0xf3af8005, 0xffffffff, "sevl%c.w"}, |
| 1486 {ARM_EXT_V8, 0xf78f8000, 0xfffffffc, "dcps%0-1d"}, |
| 1487 {ARM_EXT_V8, 0xe8c00f8f, 0xfff00fff, "stlb%c\t%12-15r, [%16-19R]"}, |
| 1488 {ARM_EXT_V8, 0xe8c00f9f, 0xfff00fff, "stlh%c\t%12-15r, [%16-19R]"}, |
| 1489 {ARM_EXT_V8, 0xe8c00faf, 0xfff00fff, "stl%c\t%12-15r, [%16-19R]"}, |
| 1490 {ARM_EXT_V8, 0xe8c00fc0, 0xfff00ff0, "stlexb%c\t%0-3r, %12-15r, [%16-19R]"}, |
| 1491 {ARM_EXT_V8, 0xe8c00fd0, 0xfff00ff0, "stlexh%c\t%0-3r, %12-15r, [%16-19R]"}, |
| 1492 {ARM_EXT_V8, 0xe8c00fe0, 0xfff00ff0, "stlex%c\t%0-3r, %12-15r, [%16-19R]"}, |
| 1493 {ARM_EXT_V8, 0xe8c000f0, 0xfff000f0, "stlexd%c\t%0-3r, %12-15r, %8-11r, [%16-1
9R]"}, |
| 1494 {ARM_EXT_V8, 0xe8d00f8f, 0xfff00fff, "ldab%c\t%12-15r, [%16-19R]"}, |
| 1495 {ARM_EXT_V8, 0xe8d00f9f, 0xfff00fff, "ldah%c\t%12-15r, [%16-19R]"}, |
| 1496 {ARM_EXT_V8, 0xe8d00faf, 0xfff00fff, "lda%c\t%12-15r, [%16-19R]"}, |
| 1497 {ARM_EXT_V8, 0xe8d00fcf, 0xfff00fff, "ldaexb%c\t%12-15r, [%16-19R]"}, |
| 1498 {ARM_EXT_V8, 0xe8d00fdf, 0xfff00fff, "ldaexh%c\t%12-15r, [%16-19R]"}, |
| 1499 {ARM_EXT_V8, 0xe8d00fef, 0xfff00fff, "ldaex%c\t%12-15r, [%16-19R]"}, |
| 1500 {ARM_EXT_V8, 0xe8d000ff, 0xfff000ff, "ldaexd%c\t%12-15r, %8-11r, [%16-19R]"}, |
| 1501 |
| 1502 /* CRC32 instructions. */ |
| 1503 {CRC_EXT_ARMV8, 0xfac0f080, 0xfff0f0f0, "crc32b\t%8-11S, %16-19S, %0-3S"}, |
| 1504 {CRC_EXT_ARMV8, 0xfac0f090, 0xfff0f0f0, "crc32h\t%9-11S, %16-19S, %0-3S"}, |
| 1505 {CRC_EXT_ARMV8, 0xfac0f0a0, 0xfff0f0f0, "crc32w\t%8-11S, %16-19S, %0-3S"}, |
| 1506 {CRC_EXT_ARMV8, 0xfad0f080, 0xfff0f0f0, "crc32cb\t%8-11S, %16-19S, %0-3S"}, |
| 1507 {CRC_EXT_ARMV8, 0xfad0f090, 0xfff0f0f0, "crc32ch\t%8-11S, %16-19S, %0-3S"}, |
| 1508 {CRC_EXT_ARMV8, 0xfad0f0a0, 0xfff0f0f0, "crc32cw\t%8-11S, %16-19S, %0-3S"}, |
| 1509 |
1410 /* V7 instructions. */ | 1510 /* V7 instructions. */ |
1411 {ARM_EXT_V7, 0xf910f000, 0xff70f000, "pli%c\t%a"}, | 1511 {ARM_EXT_V7, 0xf910f000, 0xff70f000, "pli%c\t%a"}, |
1412 {ARM_EXT_V7, 0xf3af80f0, 0xfffffff0, "dbg%c\t#%0-3d"}, | 1512 {ARM_EXT_V7, 0xf3af80f0, 0xfffffff0, "dbg%c\t#%0-3d"}, |
| 1513 {ARM_EXT_V8, 0xf3bf8f51, 0xfffffff3, "dmb%c\t%U"}, |
| 1514 {ARM_EXT_V8, 0xf3bf8f41, 0xfffffff3, "dsb%c\t%U"}, |
1413 {ARM_EXT_V7, 0xf3bf8f50, 0xfffffff0, "dmb%c\t%U"}, | 1515 {ARM_EXT_V7, 0xf3bf8f50, 0xfffffff0, "dmb%c\t%U"}, |
1414 {ARM_EXT_V7, 0xf3bf8f40, 0xfffffff0, "dsb%c\t%U"}, | 1516 {ARM_EXT_V7, 0xf3bf8f40, 0xfffffff0, "dsb%c\t%U"}, |
1415 {ARM_EXT_V7, 0xf3bf8f60, 0xfffffff0, "isb%c\t%U"}, | 1517 {ARM_EXT_V7, 0xf3bf8f60, 0xfffffff0, "isb%c\t%U"}, |
1416 {ARM_EXT_DIV, 0xfb90f0f0, 0xfff0f0f0, "sdiv%c\t%8-11r, %16-19r, %0-3r"}, | 1518 {ARM_EXT_DIV, 0xfb90f0f0, 0xfff0f0f0, "sdiv%c\t%8-11r, %16-19r, %0-3r"}, |
1417 {ARM_EXT_DIV, 0xfbb0f0f0, 0xfff0f0f0, "udiv%c\t%8-11r, %16-19r, %0-3r"}, | 1519 {ARM_EXT_DIV, 0xfbb0f0f0, 0xfff0f0f0, "udiv%c\t%8-11r, %16-19r, %0-3r"}, |
1418 | 1520 |
1419 /* Virtualization Extension instructions. */ | 1521 /* Virtualization Extension instructions. */ |
1420 {ARM_EXT_VIRT, 0xf7e08000, 0xfff0f000, "hvc%c\t%V"}, | 1522 {ARM_EXT_VIRT, 0xf7e08000, 0xfff0f000, "hvc%c\t%V"}, |
1421 /* We skip ERET as that is SUBS pc, lr, #0. */ | 1523 /* We skip ERET as that is SUBS pc, lr, #0. */ |
1422 | 1524 |
1423 /* MP Extension instructions. */ | 1525 /* MP Extension instructions. */ |
1424 {ARM_EXT_MP, 0xf830f000, 0xff70f000, "pldw%c\t%a"}, | 1526 {ARM_EXT_MP, 0xf830f000, 0xff70f000, "pldw%c\t%a"}, |
1425 | 1527 |
1426 /* Security extension instructions. */ | 1528 /* Security extension instructions. */ |
1427 {ARM_EXT_SEC, 0xf7f08000, 0xfff0f000, "smc%c\t%K"}, | 1529 {ARM_EXT_SEC, 0xf7f08000, 0xfff0f000, "smc%c\t%K"}, |
1428 | 1530 |
1429 /* Instructions defined in the basic V6T2 set. */ | 1531 /* Instructions defined in the basic V6T2 set. */ |
1430 {ARM_EXT_V6T2, 0xf3af8000, 0xffffffff, "nop%c.w"}, | 1532 {ARM_EXT_V6T2, 0xf3af8000, 0xffffffff, "nop%c.w"}, |
1431 {ARM_EXT_V6T2, 0xf3af8001, 0xffffffff, "yield%c.w"}, | 1533 {ARM_EXT_V6T2, 0xf3af8001, 0xffffffff, "yield%c.w"}, |
1432 {ARM_EXT_V6T2, 0xf3af8002, 0xffffffff, "wfe%c.w"}, | 1534 {ARM_EXT_V6T2, 0xf3af8002, 0xffffffff, "wfe%c.w"}, |
1433 {ARM_EXT_V6T2, 0xf3af8003, 0xffffffff, "wfi%c.w"}, | 1535 {ARM_EXT_V6T2, 0xf3af8003, 0xffffffff, "wfi%c.w"}, |
1434 {ARM_EXT_V6T2, 0xf3af8004, 0xffffffff, "sev%c.w"}, | 1536 {ARM_EXT_V6T2, 0xf3af8004, 0xffffffff, "sev%c.w"}, |
1435 {ARM_EXT_V6T2, 0xf3af8000, 0xffffff00, "nop%c.w\t{%0-7d}"}, | 1537 {ARM_EXT_V6T2, 0xf3af8000, 0xffffff00, "nop%c.w\t{%0-7d}"}, |
| 1538 {ARM_EXT_V6T2, 0xf7f0a000, 0xfff0f000, "udf%c.w\t%H"}, |
1436 | 1539 |
1437 {ARM_EXT_V6T2, 0xf3bf8f2f, 0xffffffff, "clrex%c"}, | 1540 {ARM_EXT_V6T2, 0xf3bf8f2f, 0xffffffff, "clrex%c"}, |
1438 {ARM_EXT_V6T2, 0xf3af8400, 0xffffff1f, "cpsie.w\t%7'a%6'i%5'f%X"}, | 1541 {ARM_EXT_V6T2, 0xf3af8400, 0xffffff1f, "cpsie.w\t%7'a%6'i%5'f%X"}, |
1439 {ARM_EXT_V6T2, 0xf3af8600, 0xffffff1f, "cpsid.w\t%7'a%6'i%5'f%X"}, | 1542 {ARM_EXT_V6T2, 0xf3af8600, 0xffffff1f, "cpsid.w\t%7'a%6'i%5'f%X"}, |
1440 {ARM_EXT_V6T2, 0xf3c08f00, 0xfff0ffff, "bxj%c\t%16-19r%x"}, | 1543 {ARM_EXT_V6T2, 0xf3c08f00, 0xfff0ffff, "bxj%c\t%16-19r%x"}, |
1441 {ARM_EXT_V6T2, 0xe810c000, 0xffd0ffff, "rfedb%c\t%16-19r%21'!"}, | 1544 {ARM_EXT_V6T2, 0xe810c000, 0xffd0ffff, "rfedb%c\t%16-19r%21'!"}, |
1442 {ARM_EXT_V6T2, 0xe990c000, 0xffd0ffff, "rfeia%c\t%16-19r%21'!"}, | 1545 {ARM_EXT_V6T2, 0xe990c000, 0xffd0ffff, "rfeia%c\t%16-19r%21'!"}, |
1443 {ARM_EXT_V6T2, 0xf3e08000, 0xffe0f000, "mrs%c\t%8-11r, %D"}, | 1546 {ARM_EXT_V6T2, 0xf3e08000, 0xffe0f000, "mrs%c\t%8-11r, %D"}, |
1444 {ARM_EXT_V6T2, 0xf3af8100, 0xffffffe0, "cps\t#%0-4d%X"}, | 1547 {ARM_EXT_V6T2, 0xf3af8100, 0xffffffe0, "cps\t#%0-4d%X"}, |
1445 {ARM_EXT_V6T2, 0xe8d0f000, 0xfff0fff0, "tbb%c\t[%16-19r, %0-3r]%x"}, | 1548 {ARM_EXT_V6T2, 0xe8d0f000, 0xfff0fff0, "tbb%c\t[%16-19r, %0-3r]%x"}, |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1681 #define NUM_ARM_REGNAMES NUM_ELEM (regnames) | 1784 #define NUM_ARM_REGNAMES NUM_ELEM (regnames) |
1682 #define arm_regnames regnames[regname_selected].reg_names | 1785 #define arm_regnames regnames[regname_selected].reg_names |
1683 | 1786 |
1684 static bfd_boolean force_thumb = FALSE; | 1787 static bfd_boolean force_thumb = FALSE; |
1685 | 1788 |
1686 /* Current IT instruction state. This contains the same state as the IT | 1789 /* Current IT instruction state. This contains the same state as the IT |
1687 bits in the CPSR. */ | 1790 bits in the CPSR. */ |
1688 static unsigned int ifthen_state; | 1791 static unsigned int ifthen_state; |
1689 /* IT state for the next instruction. */ | 1792 /* IT state for the next instruction. */ |
1690 static unsigned int ifthen_next_state; | 1793 static unsigned int ifthen_next_state; |
error: old chunk mismatch |
None
OLD | NEW |