mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-25 19:14:52 +08:00
[AArch64][PATCH 9/14] Support FP16 Adv.SIMD Modified Immediate instructions.
ARMv8.2 adds 16-bit floating point operations as an optional extension to the floating point and Adv.SIMD support. This patch adds an FP16 instruction to the group Adv.SIMD Modified Immediate, making it available when +simd+fp16 is enabled. The instruction added is: FMOV. The form of this instructions is <OP> <Hd>, #<imm> gas/testsuite/ 2015-12-14 Matthew Wahab <matthew.wahab@arm.com> * gas/aarch64/advsimd-fp16.d: Update expected output. * gas/aarch64/advsimd-fp16.s: Add tests for Adv.SIMD modified immediate instructions. opcodes/ 2015-12-14 Matthew Wahab <matthew.wahab@arm.com> * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. * aarch64-opc-2.c: Regenerate. * aarch64-tbl.h (QL_SIMD_IMM_H): New. (aarch64_opcode_table): Add fp16 version of fmov to the Adv.SIMD modified immediate group. Change-Id: Ic66af44c494e6a53fb1cf01c372cdc62d12643e2
This commit is contained in:
parent
bb515fea4a
commit
4b5fc357a1
@ -1,3 +1,9 @@
|
|||||||
|
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
|
* gas/aarch64/advsimd-fp16.d: Update expected output.
|
||||||
|
* gas/aarch64/advsimd-fp16.s: Add tests for Adv.SIMD modified
|
||||||
|
immediate instructions.
|
||||||
|
|
||||||
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
* gas/aarch64/advsimd-fp16.d: Update expected output.
|
* gas/aarch64/advsimd-fp16.d: Update expected output.
|
||||||
|
@ -492,3 +492,10 @@ Disassembly of section \.text:
|
|||||||
[0-9a-f]+: 4eb0f841 fminv h1, v2.8h
|
[0-9a-f]+: 4eb0f841 fminv h1, v2.8h
|
||||||
[0-9a-f]+: 0eb0f800 fminv h0, v0.4h
|
[0-9a-f]+: 0eb0f800 fminv h0, v0.4h
|
||||||
[0-9a-f]+: 4eb0f800 fminv h0, v0.8h
|
[0-9a-f]+: 4eb0f800 fminv h0, v0.8h
|
||||||
|
[0-9a-f]+: 6f00f401 fmov v1.2d, #2.000000000000000000e\+00
|
||||||
|
[0-9a-f]+: 0f00f401 fmov v1.2s, #2.000000000000000000e\+00
|
||||||
|
[0-9a-f]+: 4f00f401 fmov v1.4s, #2.000000000000000000e\+00
|
||||||
|
[0-9a-f]+: 0f00fc01 fmov v1.4h, #2.000000000000000000e\+00
|
||||||
|
[0-9a-f]+: 4f00fc01 fmov v1.8h, #2.000000000000000000e\+00
|
||||||
|
[0-9a-f]+: 0f03fe00 fmov v0.4h, #1.000000000000000000e\+00
|
||||||
|
[0-9a-f]+: 4f03fe00 fmov v0.8h, #1.000000000000000000e\+00
|
||||||
|
@ -203,3 +203,12 @@
|
|||||||
across_lanes fminnmv
|
across_lanes fminnmv
|
||||||
across_lanes fminv
|
across_lanes fminv
|
||||||
|
|
||||||
|
/* Adv.SIMD modified immediate. */
|
||||||
|
|
||||||
|
fmov v1.2d, #2.0
|
||||||
|
fmov v1.2s, #2.0
|
||||||
|
fmov v1.4s, #2.0
|
||||||
|
fmov v1.4h, #2.0
|
||||||
|
fmov v1.8h, #2.0
|
||||||
|
fmov v0.4h, #1.0
|
||||||
|
fmov v0.8h, #1.0
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
|
* aarch64-asm-2.c: Regenerate.
|
||||||
|
* aarch64-dis-2.c: Regenerate.
|
||||||
|
* aarch64-opc-2.c: Regenerate.
|
||||||
|
* aarch64-tbl.h (QL_SIMD_IMM_H): New.
|
||||||
|
(aarch64_opcode_table): Add fp16 version of fmov to the Adv.SIMD
|
||||||
|
modified immediate group.
|
||||||
|
|
||||||
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
* aarch64-asm-2.c: Regenerate.
|
* aarch64-asm-2.c: Regenerate.
|
||||||
|
@ -71,374 +71,374 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
|
|||||||
case 24: /* subs */
|
case 24: /* subs */
|
||||||
value = 24; /* --> subs. */
|
value = 24; /* --> subs. */
|
||||||
break;
|
break;
|
||||||
case 149: /* mov */
|
case 150: /* mov */
|
||||||
case 148: /* umov */
|
case 149: /* umov */
|
||||||
value = 148; /* --> umov. */
|
value = 149; /* --> umov. */
|
||||||
break;
|
break;
|
||||||
case 151: /* mov */
|
case 152: /* mov */
|
||||||
case 150: /* ins */
|
case 151: /* ins */
|
||||||
value = 150; /* --> ins. */
|
value = 151; /* --> ins. */
|
||||||
break;
|
break;
|
||||||
case 153: /* mov */
|
case 154: /* mov */
|
||||||
case 152: /* ins */
|
case 153: /* ins */
|
||||||
value = 152; /* --> ins. */
|
value = 153; /* --> ins. */
|
||||||
break;
|
break;
|
||||||
case 235: /* mvn */
|
case 236: /* mvn */
|
||||||
case 234: /* not */
|
case 235: /* not */
|
||||||
value = 234; /* --> not. */
|
value = 235; /* --> not. */
|
||||||
break;
|
break;
|
||||||
case 310: /* mov */
|
case 311: /* mov */
|
||||||
case 309: /* orr */
|
case 310: /* orr */
|
||||||
value = 309; /* --> orr. */
|
value = 310; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 379: /* sxtl */
|
case 380: /* sxtl */
|
||||||
case 378: /* sshll */
|
case 379: /* sshll */
|
||||||
value = 378; /* --> sshll. */
|
value = 379; /* --> sshll. */
|
||||||
break;
|
break;
|
||||||
case 381: /* sxtl2 */
|
case 382: /* sxtl2 */
|
||||||
case 380: /* sshll2 */
|
case 381: /* sshll2 */
|
||||||
value = 380; /* --> sshll2. */
|
value = 381; /* --> sshll2. */
|
||||||
break;
|
break;
|
||||||
case 401: /* uxtl */
|
case 402: /* uxtl */
|
||||||
case 400: /* ushll */
|
case 401: /* ushll */
|
||||||
value = 400; /* --> ushll. */
|
value = 401; /* --> ushll. */
|
||||||
break;
|
break;
|
||||||
case 403: /* uxtl2 */
|
case 404: /* uxtl2 */
|
||||||
case 402: /* ushll2 */
|
case 403: /* ushll2 */
|
||||||
value = 402; /* --> ushll2. */
|
value = 403; /* --> ushll2. */
|
||||||
break;
|
break;
|
||||||
case 522: /* mov */
|
case 523: /* mov */
|
||||||
case 521: /* dup */
|
case 522: /* dup */
|
||||||
value = 521; /* --> dup. */
|
value = 522; /* --> dup. */
|
||||||
break;
|
break;
|
||||||
case 600: /* sxtw */
|
case 601: /* sxtw */
|
||||||
case 599: /* sxth */
|
case 600: /* sxth */
|
||||||
case 598: /* sxtb */
|
case 599: /* sxtb */
|
||||||
case 601: /* asr */
|
case 602: /* asr */
|
||||||
case 597: /* sbfx */
|
case 598: /* sbfx */
|
||||||
case 596: /* sbfiz */
|
case 597: /* sbfiz */
|
||||||
case 595: /* sbfm */
|
case 596: /* sbfm */
|
||||||
value = 595; /* --> sbfm. */
|
value = 596; /* --> sbfm. */
|
||||||
break;
|
break;
|
||||||
case 604: /* bfc */
|
case 605: /* bfc */
|
||||||
case 605: /* bfxil */
|
case 606: /* bfxil */
|
||||||
case 603: /* bfi */
|
case 604: /* bfi */
|
||||||
case 602: /* bfm */
|
case 603: /* bfm */
|
||||||
value = 602; /* --> bfm. */
|
value = 603; /* --> bfm. */
|
||||||
break;
|
break;
|
||||||
case 610: /* uxth */
|
case 611: /* uxth */
|
||||||
case 609: /* uxtb */
|
case 610: /* uxtb */
|
||||||
case 612: /* lsr */
|
case 613: /* lsr */
|
||||||
case 611: /* lsl */
|
case 612: /* lsl */
|
||||||
case 608: /* ubfx */
|
case 609: /* ubfx */
|
||||||
case 607: /* ubfiz */
|
case 608: /* ubfiz */
|
||||||
case 606: /* ubfm */
|
case 607: /* ubfm */
|
||||||
value = 606; /* --> ubfm. */
|
value = 607; /* --> ubfm. */
|
||||||
break;
|
break;
|
||||||
case 630: /* cset */
|
case 631: /* cset */
|
||||||
case 629: /* cinc */
|
case 630: /* cinc */
|
||||||
case 628: /* csinc */
|
case 629: /* csinc */
|
||||||
value = 628; /* --> csinc. */
|
value = 629; /* --> csinc. */
|
||||||
break;
|
break;
|
||||||
case 633: /* csetm */
|
case 634: /* csetm */
|
||||||
case 632: /* cinv */
|
case 633: /* cinv */
|
||||||
case 631: /* csinv */
|
case 632: /* csinv */
|
||||||
value = 631; /* --> csinv. */
|
value = 632; /* --> csinv. */
|
||||||
break;
|
break;
|
||||||
case 635: /* cneg */
|
case 636: /* cneg */
|
||||||
case 634: /* csneg */
|
case 635: /* csneg */
|
||||||
value = 634; /* --> csneg. */
|
value = 635; /* --> csneg. */
|
||||||
break;
|
break;
|
||||||
case 653: /* rev */
|
case 654: /* rev */
|
||||||
case 654: /* rev64 */
|
case 655: /* rev64 */
|
||||||
value = 653; /* --> rev. */
|
value = 654; /* --> rev. */
|
||||||
break;
|
break;
|
||||||
case 661: /* lsl */
|
case 662: /* lsl */
|
||||||
case 660: /* lslv */
|
case 661: /* lslv */
|
||||||
value = 660; /* --> lslv. */
|
value = 661; /* --> lslv. */
|
||||||
break;
|
break;
|
||||||
case 663: /* lsr */
|
case 664: /* lsr */
|
||||||
case 662: /* lsrv */
|
case 663: /* lsrv */
|
||||||
value = 662; /* --> lsrv. */
|
value = 663; /* --> lsrv. */
|
||||||
break;
|
break;
|
||||||
case 665: /* asr */
|
case 666: /* asr */
|
||||||
case 664: /* asrv */
|
case 665: /* asrv */
|
||||||
value = 664; /* --> asrv. */
|
value = 665; /* --> asrv. */
|
||||||
break;
|
break;
|
||||||
case 667: /* ror */
|
case 668: /* ror */
|
||||||
case 666: /* rorv */
|
case 667: /* rorv */
|
||||||
value = 666; /* --> rorv. */
|
value = 667; /* --> rorv. */
|
||||||
break;
|
break;
|
||||||
case 677: /* mul */
|
case 678: /* mul */
|
||||||
case 676: /* madd */
|
case 677: /* madd */
|
||||||
value = 676; /* --> madd. */
|
value = 677; /* --> madd. */
|
||||||
break;
|
break;
|
||||||
case 679: /* mneg */
|
case 680: /* mneg */
|
||||||
case 678: /* msub */
|
case 679: /* msub */
|
||||||
value = 678; /* --> msub. */
|
value = 679; /* --> msub. */
|
||||||
break;
|
break;
|
||||||
case 681: /* smull */
|
case 682: /* smull */
|
||||||
case 680: /* smaddl */
|
case 681: /* smaddl */
|
||||||
value = 680; /* --> smaddl. */
|
value = 681; /* --> smaddl. */
|
||||||
break;
|
break;
|
||||||
case 683: /* smnegl */
|
case 684: /* smnegl */
|
||||||
case 682: /* smsubl */
|
case 683: /* smsubl */
|
||||||
value = 682; /* --> smsubl. */
|
value = 683; /* --> smsubl. */
|
||||||
break;
|
break;
|
||||||
case 686: /* umull */
|
case 687: /* umull */
|
||||||
case 685: /* umaddl */
|
case 686: /* umaddl */
|
||||||
value = 685; /* --> umaddl. */
|
value = 686; /* --> umaddl. */
|
||||||
break;
|
break;
|
||||||
case 688: /* umnegl */
|
case 689: /* umnegl */
|
||||||
case 687: /* umsubl */
|
case 688: /* umsubl */
|
||||||
value = 687; /* --> umsubl. */
|
value = 688; /* --> umsubl. */
|
||||||
break;
|
break;
|
||||||
case 699: /* ror */
|
case 700: /* ror */
|
||||||
case 698: /* extr */
|
case 699: /* extr */
|
||||||
value = 698; /* --> extr. */
|
value = 699; /* --> extr. */
|
||||||
break;
|
break;
|
||||||
case 906: /* bic */
|
case 907: /* bic */
|
||||||
case 905: /* and */
|
case 906: /* and */
|
||||||
value = 905; /* --> and. */
|
value = 906; /* --> and. */
|
||||||
break;
|
break;
|
||||||
case 908: /* mov */
|
case 909: /* mov */
|
||||||
case 907: /* orr */
|
case 908: /* orr */
|
||||||
value = 907; /* --> orr. */
|
value = 908; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 911: /* tst */
|
case 912: /* tst */
|
||||||
case 910: /* ands */
|
case 911: /* ands */
|
||||||
value = 910; /* --> ands. */
|
value = 911; /* --> ands. */
|
||||||
break;
|
break;
|
||||||
case 916: /* uxtw */
|
case 917: /* uxtw */
|
||||||
case 915: /* mov */
|
case 916: /* mov */
|
||||||
case 914: /* orr */
|
case 915: /* orr */
|
||||||
value = 914; /* --> orr. */
|
value = 915; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 918: /* mvn */
|
case 919: /* mvn */
|
||||||
case 917: /* orn */
|
case 918: /* orn */
|
||||||
value = 917; /* --> orn. */
|
value = 918; /* --> orn. */
|
||||||
break;
|
break;
|
||||||
case 922: /* tst */
|
case 923: /* tst */
|
||||||
case 921: /* ands */
|
case 922: /* ands */
|
||||||
value = 921; /* --> ands. */
|
value = 922; /* --> ands. */
|
||||||
break;
|
break;
|
||||||
case 1048: /* staddb */
|
case 1049: /* staddb */
|
||||||
case 952: /* ldaddb */
|
case 953: /* ldaddb */
|
||||||
value = 952; /* --> ldaddb. */
|
value = 953; /* --> ldaddb. */
|
||||||
break;
|
break;
|
||||||
case 1049: /* staddh */
|
case 1050: /* staddh */
|
||||||
case 953: /* ldaddh */
|
case 954: /* ldaddh */
|
||||||
value = 953; /* --> ldaddh. */
|
value = 954; /* --> ldaddh. */
|
||||||
break;
|
break;
|
||||||
case 1050: /* stadd */
|
case 1051: /* stadd */
|
||||||
case 954: /* ldadd */
|
case 955: /* ldadd */
|
||||||
value = 954; /* --> ldadd. */
|
value = 955; /* --> ldadd. */
|
||||||
break;
|
break;
|
||||||
case 1051: /* staddlb */
|
case 1052: /* staddlb */
|
||||||
case 956: /* ldaddlb */
|
case 957: /* ldaddlb */
|
||||||
value = 956; /* --> ldaddlb. */
|
value = 957; /* --> ldaddlb. */
|
||||||
break;
|
break;
|
||||||
case 1052: /* staddlh */
|
case 1053: /* staddlh */
|
||||||
case 959: /* ldaddlh */
|
case 960: /* ldaddlh */
|
||||||
value = 959; /* --> ldaddlh. */
|
value = 960; /* --> ldaddlh. */
|
||||||
break;
|
break;
|
||||||
case 1053: /* staddl */
|
case 1054: /* staddl */
|
||||||
case 962: /* ldaddl */
|
case 963: /* ldaddl */
|
||||||
value = 962; /* --> ldaddl. */
|
value = 963; /* --> ldaddl. */
|
||||||
break;
|
break;
|
||||||
case 1054: /* stclrb */
|
case 1055: /* stclrb */
|
||||||
case 964: /* ldclrb */
|
case 965: /* ldclrb */
|
||||||
value = 964; /* --> ldclrb. */
|
value = 965; /* --> ldclrb. */
|
||||||
break;
|
break;
|
||||||
case 1055: /* stclrh */
|
case 1056: /* stclrh */
|
||||||
case 965: /* ldclrh */
|
case 966: /* ldclrh */
|
||||||
value = 965; /* --> ldclrh. */
|
value = 966; /* --> ldclrh. */
|
||||||
break;
|
break;
|
||||||
case 1056: /* stclr */
|
case 1057: /* stclr */
|
||||||
case 966: /* ldclr */
|
case 967: /* ldclr */
|
||||||
value = 966; /* --> ldclr. */
|
value = 967; /* --> ldclr. */
|
||||||
break;
|
break;
|
||||||
case 1057: /* stclrlb */
|
case 1058: /* stclrlb */
|
||||||
case 968: /* ldclrlb */
|
case 969: /* ldclrlb */
|
||||||
value = 968; /* --> ldclrlb. */
|
value = 969; /* --> ldclrlb. */
|
||||||
break;
|
break;
|
||||||
case 1058: /* stclrlh */
|
case 1059: /* stclrlh */
|
||||||
case 971: /* ldclrlh */
|
case 972: /* ldclrlh */
|
||||||
value = 971; /* --> ldclrlh. */
|
value = 972; /* --> ldclrlh. */
|
||||||
break;
|
break;
|
||||||
case 1059: /* stclrl */
|
case 1060: /* stclrl */
|
||||||
case 974: /* ldclrl */
|
case 975: /* ldclrl */
|
||||||
value = 974; /* --> ldclrl. */
|
value = 975; /* --> ldclrl. */
|
||||||
break;
|
break;
|
||||||
case 1060: /* steorb */
|
case 1061: /* steorb */
|
||||||
case 976: /* ldeorb */
|
case 977: /* ldeorb */
|
||||||
value = 976; /* --> ldeorb. */
|
value = 977; /* --> ldeorb. */
|
||||||
break;
|
break;
|
||||||
case 1061: /* steorh */
|
case 1062: /* steorh */
|
||||||
case 977: /* ldeorh */
|
case 978: /* ldeorh */
|
||||||
value = 977; /* --> ldeorh. */
|
value = 978; /* --> ldeorh. */
|
||||||
break;
|
break;
|
||||||
case 1062: /* steor */
|
case 1063: /* steor */
|
||||||
case 978: /* ldeor */
|
case 979: /* ldeor */
|
||||||
value = 978; /* --> ldeor. */
|
value = 979; /* --> ldeor. */
|
||||||
break;
|
break;
|
||||||
case 1063: /* steorlb */
|
case 1064: /* steorlb */
|
||||||
case 980: /* ldeorlb */
|
case 981: /* ldeorlb */
|
||||||
value = 980; /* --> ldeorlb. */
|
value = 981; /* --> ldeorlb. */
|
||||||
break;
|
break;
|
||||||
case 1064: /* steorlh */
|
case 1065: /* steorlh */
|
||||||
case 983: /* ldeorlh */
|
case 984: /* ldeorlh */
|
||||||
value = 983; /* --> ldeorlh. */
|
value = 984; /* --> ldeorlh. */
|
||||||
break;
|
break;
|
||||||
case 1065: /* steorl */
|
case 1066: /* steorl */
|
||||||
case 986: /* ldeorl */
|
case 987: /* ldeorl */
|
||||||
value = 986; /* --> ldeorl. */
|
value = 987; /* --> ldeorl. */
|
||||||
break;
|
break;
|
||||||
case 1066: /* stsetb */
|
case 1067: /* stsetb */
|
||||||
case 988: /* ldsetb */
|
case 989: /* ldsetb */
|
||||||
value = 988; /* --> ldsetb. */
|
value = 989; /* --> ldsetb. */
|
||||||
break;
|
break;
|
||||||
case 1067: /* stseth */
|
case 1068: /* stseth */
|
||||||
case 989: /* ldseth */
|
case 990: /* ldseth */
|
||||||
value = 989; /* --> ldseth. */
|
value = 990; /* --> ldseth. */
|
||||||
break;
|
break;
|
||||||
case 1068: /* stset */
|
case 1069: /* stset */
|
||||||
case 990: /* ldset */
|
case 991: /* ldset */
|
||||||
value = 990; /* --> ldset. */
|
value = 991; /* --> ldset. */
|
||||||
break;
|
break;
|
||||||
case 1069: /* stsetlb */
|
case 1070: /* stsetlb */
|
||||||
case 992: /* ldsetlb */
|
case 993: /* ldsetlb */
|
||||||
value = 992; /* --> ldsetlb. */
|
value = 993; /* --> ldsetlb. */
|
||||||
break;
|
break;
|
||||||
case 1070: /* stsetlh */
|
case 1071: /* stsetlh */
|
||||||
case 995: /* ldsetlh */
|
case 996: /* ldsetlh */
|
||||||
value = 995; /* --> ldsetlh. */
|
value = 996; /* --> ldsetlh. */
|
||||||
break;
|
break;
|
||||||
case 1071: /* stsetl */
|
case 1072: /* stsetl */
|
||||||
case 998: /* ldsetl */
|
case 999: /* ldsetl */
|
||||||
value = 998; /* --> ldsetl. */
|
value = 999; /* --> ldsetl. */
|
||||||
break;
|
break;
|
||||||
case 1072: /* stsmaxb */
|
case 1073: /* stsmaxb */
|
||||||
case 1000: /* ldsmaxb */
|
case 1001: /* ldsmaxb */
|
||||||
value = 1000; /* --> ldsmaxb. */
|
value = 1001; /* --> ldsmaxb. */
|
||||||
break;
|
break;
|
||||||
case 1073: /* stsmaxh */
|
case 1074: /* stsmaxh */
|
||||||
case 1001: /* ldsmaxh */
|
case 1002: /* ldsmaxh */
|
||||||
value = 1001; /* --> ldsmaxh. */
|
value = 1002; /* --> ldsmaxh. */
|
||||||
break;
|
break;
|
||||||
case 1074: /* stsmax */
|
case 1075: /* stsmax */
|
||||||
case 1002: /* ldsmax */
|
case 1003: /* ldsmax */
|
||||||
value = 1002; /* --> ldsmax. */
|
value = 1003; /* --> ldsmax. */
|
||||||
break;
|
break;
|
||||||
case 1075: /* stsmaxlb */
|
case 1076: /* stsmaxlb */
|
||||||
case 1004: /* ldsmaxlb */
|
case 1005: /* ldsmaxlb */
|
||||||
value = 1004; /* --> ldsmaxlb. */
|
value = 1005; /* --> ldsmaxlb. */
|
||||||
break;
|
break;
|
||||||
case 1076: /* stsmaxlh */
|
case 1077: /* stsmaxlh */
|
||||||
case 1007: /* ldsmaxlh */
|
case 1008: /* ldsmaxlh */
|
||||||
value = 1007; /* --> ldsmaxlh. */
|
value = 1008; /* --> ldsmaxlh. */
|
||||||
break;
|
break;
|
||||||
case 1077: /* stsmaxl */
|
case 1078: /* stsmaxl */
|
||||||
case 1010: /* ldsmaxl */
|
case 1011: /* ldsmaxl */
|
||||||
value = 1010; /* --> ldsmaxl. */
|
value = 1011; /* --> ldsmaxl. */
|
||||||
break;
|
break;
|
||||||
case 1078: /* stsminb */
|
case 1079: /* stsminb */
|
||||||
case 1012: /* ldsminb */
|
case 1013: /* ldsminb */
|
||||||
value = 1012; /* --> ldsminb. */
|
value = 1013; /* --> ldsminb. */
|
||||||
break;
|
break;
|
||||||
case 1079: /* stsminh */
|
case 1080: /* stsminh */
|
||||||
case 1013: /* ldsminh */
|
case 1014: /* ldsminh */
|
||||||
value = 1013; /* --> ldsminh. */
|
value = 1014; /* --> ldsminh. */
|
||||||
break;
|
break;
|
||||||
case 1080: /* stsmin */
|
case 1081: /* stsmin */
|
||||||
case 1014: /* ldsmin */
|
case 1015: /* ldsmin */
|
||||||
value = 1014; /* --> ldsmin. */
|
value = 1015; /* --> ldsmin. */
|
||||||
break;
|
break;
|
||||||
case 1081: /* stsminlb */
|
case 1082: /* stsminlb */
|
||||||
case 1016: /* ldsminlb */
|
case 1017: /* ldsminlb */
|
||||||
value = 1016; /* --> ldsminlb. */
|
value = 1017; /* --> ldsminlb. */
|
||||||
break;
|
break;
|
||||||
case 1082: /* stsminlh */
|
case 1083: /* stsminlh */
|
||||||
case 1019: /* ldsminlh */
|
case 1020: /* ldsminlh */
|
||||||
value = 1019; /* --> ldsminlh. */
|
value = 1020; /* --> ldsminlh. */
|
||||||
break;
|
break;
|
||||||
case 1083: /* stsminl */
|
case 1084: /* stsminl */
|
||||||
case 1022: /* ldsminl */
|
case 1023: /* ldsminl */
|
||||||
value = 1022; /* --> ldsminl. */
|
value = 1023; /* --> ldsminl. */
|
||||||
break;
|
break;
|
||||||
case 1084: /* stumaxb */
|
case 1085: /* stumaxb */
|
||||||
case 1024: /* ldumaxb */
|
case 1025: /* ldumaxb */
|
||||||
value = 1024; /* --> ldumaxb. */
|
value = 1025; /* --> ldumaxb. */
|
||||||
break;
|
break;
|
||||||
case 1085: /* stumaxh */
|
case 1086: /* stumaxh */
|
||||||
case 1025: /* ldumaxh */
|
case 1026: /* ldumaxh */
|
||||||
value = 1025; /* --> ldumaxh. */
|
value = 1026; /* --> ldumaxh. */
|
||||||
break;
|
break;
|
||||||
case 1086: /* stumax */
|
case 1087: /* stumax */
|
||||||
case 1026: /* ldumax */
|
case 1027: /* ldumax */
|
||||||
value = 1026; /* --> ldumax. */
|
value = 1027; /* --> ldumax. */
|
||||||
break;
|
break;
|
||||||
case 1087: /* stumaxlb */
|
case 1088: /* stumaxlb */
|
||||||
case 1028: /* ldumaxlb */
|
case 1029: /* ldumaxlb */
|
||||||
value = 1028; /* --> ldumaxlb. */
|
value = 1029; /* --> ldumaxlb. */
|
||||||
break;
|
break;
|
||||||
case 1088: /* stumaxlh */
|
case 1089: /* stumaxlh */
|
||||||
case 1031: /* ldumaxlh */
|
case 1032: /* ldumaxlh */
|
||||||
value = 1031; /* --> ldumaxlh. */
|
value = 1032; /* --> ldumaxlh. */
|
||||||
break;
|
break;
|
||||||
case 1089: /* stumaxl */
|
case 1090: /* stumaxl */
|
||||||
case 1034: /* ldumaxl */
|
case 1035: /* ldumaxl */
|
||||||
value = 1034; /* --> ldumaxl. */
|
value = 1035; /* --> ldumaxl. */
|
||||||
break;
|
break;
|
||||||
case 1090: /* stuminb */
|
case 1091: /* stuminb */
|
||||||
case 1036: /* lduminb */
|
case 1037: /* lduminb */
|
||||||
value = 1036; /* --> lduminb. */
|
value = 1037; /* --> lduminb. */
|
||||||
break;
|
break;
|
||||||
case 1091: /* stuminh */
|
case 1092: /* stuminh */
|
||||||
case 1037: /* lduminh */
|
case 1038: /* lduminh */
|
||||||
value = 1037; /* --> lduminh. */
|
value = 1038; /* --> lduminh. */
|
||||||
break;
|
break;
|
||||||
case 1092: /* stumin */
|
case 1093: /* stumin */
|
||||||
case 1038: /* ldumin */
|
case 1039: /* ldumin */
|
||||||
value = 1038; /* --> ldumin. */
|
value = 1039; /* --> ldumin. */
|
||||||
break;
|
break;
|
||||||
case 1093: /* stuminlb */
|
case 1094: /* stuminlb */
|
||||||
case 1040: /* lduminlb */
|
case 1041: /* lduminlb */
|
||||||
value = 1040; /* --> lduminlb. */
|
value = 1041; /* --> lduminlb. */
|
||||||
break;
|
break;
|
||||||
case 1094: /* stuminlh */
|
case 1095: /* stuminlh */
|
||||||
case 1043: /* lduminlh */
|
case 1044: /* lduminlh */
|
||||||
value = 1043; /* --> lduminlh. */
|
value = 1044; /* --> lduminlh. */
|
||||||
break;
|
break;
|
||||||
case 1095: /* stuminl */
|
case 1096: /* stuminl */
|
||||||
case 1046: /* lduminl */
|
case 1047: /* lduminl */
|
||||||
value = 1046; /* --> lduminl. */
|
value = 1047; /* --> lduminl. */
|
||||||
break;
|
break;
|
||||||
case 1097: /* mov */
|
case 1098: /* mov */
|
||||||
case 1096: /* movn */
|
case 1097: /* movn */
|
||||||
value = 1096; /* --> movn. */
|
value = 1097; /* --> movn. */
|
||||||
break;
|
break;
|
||||||
case 1099: /* mov */
|
case 1100: /* mov */
|
||||||
case 1098: /* movz */
|
case 1099: /* movz */
|
||||||
value = 1098; /* --> movz. */
|
value = 1099; /* --> movz. */
|
||||||
break;
|
break;
|
||||||
case 1112: /* psb */
|
case 1113: /* psb */
|
||||||
case 1111: /* esb */
|
case 1112: /* esb */
|
||||||
case 1110: /* sevl */
|
case 1111: /* sevl */
|
||||||
case 1109: /* sev */
|
case 1110: /* sev */
|
||||||
case 1108: /* wfi */
|
case 1109: /* wfi */
|
||||||
case 1107: /* wfe */
|
case 1108: /* wfe */
|
||||||
case 1106: /* yield */
|
case 1107: /* yield */
|
||||||
case 1105: /* nop */
|
case 1106: /* nop */
|
||||||
case 1104: /* hint */
|
case 1105: /* hint */
|
||||||
value = 1104; /* --> hint. */
|
value = 1105; /* --> hint. */
|
||||||
break;
|
break;
|
||||||
case 1121: /* tlbi */
|
case 1122: /* tlbi */
|
||||||
case 1120: /* ic */
|
case 1121: /* ic */
|
||||||
case 1119: /* dc */
|
case 1120: /* dc */
|
||||||
case 1118: /* at */
|
case 1119: /* at */
|
||||||
case 1117: /* sys */
|
case 1118: /* sys */
|
||||||
value = 1117; /* --> sys. */
|
value = 1118; /* --> sys. */
|
||||||
break;
|
break;
|
||||||
default: return NULL;
|
default: return NULL;
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -122,74 +122,74 @@ const struct aarch64_operand aarch64_operands[] =
|
|||||||
static const unsigned op_enum_table [] =
|
static const unsigned op_enum_table [] =
|
||||||
{
|
{
|
||||||
0,
|
0,
|
||||||
814,
|
|
||||||
815,
|
815,
|
||||||
816,
|
816,
|
||||||
819,
|
817,
|
||||||
820,
|
820,
|
||||||
821,
|
821,
|
||||||
822,
|
822,
|
||||||
823,
|
823,
|
||||||
817,
|
|
||||||
818,
|
|
||||||
824,
|
824,
|
||||||
|
818,
|
||||||
|
819,
|
||||||
825,
|
825,
|
||||||
847,
|
826,
|
||||||
848,
|
848,
|
||||||
849,
|
849,
|
||||||
852,
|
850,
|
||||||
853,
|
853,
|
||||||
854,
|
854,
|
||||||
855,
|
855,
|
||||||
856,
|
856,
|
||||||
850,
|
|
||||||
851,
|
|
||||||
857,
|
857,
|
||||||
|
851,
|
||||||
|
852,
|
||||||
858,
|
858,
|
||||||
901,
|
859,
|
||||||
902,
|
902,
|
||||||
903,
|
903,
|
||||||
904,
|
904,
|
||||||
|
905,
|
||||||
12,
|
12,
|
||||||
613,
|
|
||||||
614,
|
614,
|
||||||
1096,
|
615,
|
||||||
1098,
|
|
||||||
1100,
|
|
||||||
908,
|
|
||||||
1099,
|
|
||||||
1097,
|
1097,
|
||||||
310,
|
1099,
|
||||||
601,
|
1101,
|
||||||
|
909,
|
||||||
|
1100,
|
||||||
|
1098,
|
||||||
|
311,
|
||||||
|
602,
|
||||||
|
613,
|
||||||
612,
|
612,
|
||||||
611,
|
907,
|
||||||
906,
|
|
||||||
608,
|
|
||||||
605,
|
|
||||||
597,
|
|
||||||
596,
|
|
||||||
603,
|
|
||||||
604,
|
|
||||||
607,
|
|
||||||
609,
|
609,
|
||||||
|
606,
|
||||||
|
598,
|
||||||
|
597,
|
||||||
|
604,
|
||||||
|
605,
|
||||||
|
608,
|
||||||
610,
|
610,
|
||||||
916,
|
611,
|
||||||
629,
|
917,
|
||||||
632,
|
|
||||||
635,
|
|
||||||
630,
|
630,
|
||||||
633,
|
633,
|
||||||
758,
|
636,
|
||||||
170,
|
631,
|
||||||
|
634,
|
||||||
|
759,
|
||||||
171,
|
171,
|
||||||
172,
|
172,
|
||||||
173,
|
173,
|
||||||
502,
|
174,
|
||||||
699,
|
503,
|
||||||
379,
|
700,
|
||||||
381,
|
380,
|
||||||
401,
|
382,
|
||||||
403,
|
402,
|
||||||
|
404,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Given the opcode enumerator OP, return the pointer to the corresponding
|
/* Given the opcode enumerator OP, return the pointer to the corresponding
|
||||||
|
@ -1313,6 +1313,13 @@
|
|||||||
QLF2(S_D, NIL), \
|
QLF2(S_D, NIL), \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* e.g. FMOV <Vd>.<T>, #<imm>. */
|
||||||
|
#define QL_SIMD_IMM_H \
|
||||||
|
{ \
|
||||||
|
QLF2 (V_4H, NIL), \
|
||||||
|
QLF2 (V_8H, NIL), \
|
||||||
|
}
|
||||||
|
|
||||||
/* e.g. MOVI <Vd>.2D, #<imm>. */
|
/* e.g. MOVI <Vd>.2D, #<imm>. */
|
||||||
#define QL_SIMD_IMM_V2D \
|
#define QL_SIMD_IMM_V2D \
|
||||||
{ \
|
{ \
|
||||||
@ -1518,6 +1525,8 @@ struct aarch64_opcode aarch64_opcode_table[] =
|
|||||||
{"movi", 0xf00c400, 0xbff8ec00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S1W, F_SIZEQ},
|
{"movi", 0xf00c400, 0xbff8ec00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S1W, F_SIZEQ},
|
||||||
{"movi", 0xf00e400, 0xbff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_B, F_SIZEQ},
|
{"movi", 0xf00e400, 0xbff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_B, F_SIZEQ},
|
||||||
{"fmov", 0xf00f400, 0xbff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_S, F_SIZEQ},
|
{"fmov", 0xf00f400, 0xbff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_S, F_SIZEQ},
|
||||||
|
{"fmov", 0xf00fc00, 0xbff8fc00, asimdimm, 0, SIMD_F16,
|
||||||
|
OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_H, F_SIZEQ},
|
||||||
{"mvni", 0x2f000400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
|
{"mvni", 0x2f000400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
|
||||||
{"bic", 0x2f001400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
|
{"bic", 0x2f001400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
|
||||||
{"mvni", 0x2f008400, 0xbff8dc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ},
|
{"mvni", 0x2f008400, 0xbff8dc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ},
|
||||||
|
Loading…
Reference in New Issue
Block a user