[AArch64][PATCH 3/14] Support ARMv8.2 FP16 Scalar Three Same instructions.
ARMv8.2 adds 16-bit floating point operations as an optional extension to the floating point and Adv.SIMD support. This patch adds FP16 instructions to the group Scalar Three Register Same, making them available when +simd+fp16 is enabled. The instructions added are: FABD, FMULX, FCMEQ, FCMGE, FCMGT, FACGE, FACGT, FRECPS and FRSQRTS. The general form for these instructions is <OP> <Hd>, <Hs>, <Hm> 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 scalar three register same 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 (aarch64_opcode_table): Add fp16 versions of fmulx, fcmeq, frecps, frsqrts, fcmge, facge, fabd, fcmgt and facgt to the scalar three same group. Change-Id: I155eb8d7c1e9a7c89d691d7e4aae83be51ff1238
This commit is contained in:
parent
51d543ed93
commit
6b4680fbd0
8 changed files with 1268 additions and 1081 deletions
|
@ -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 scalar three register
|
||||||
|
same instructions.
|
||||||
|
|
||||||
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
|
||||||
|
|
||||||
* gas/aarch64/advsimd-fp16.d: New.
|
* gas/aarch64/advsimd-fp16.d: New.
|
||||||
|
|
|
@ -167,3 +167,39 @@ Disassembly of section \.text:
|
||||||
[0-9a-f]+: 0ec33c41 frsqrts v1.4h, v2.4h, v3.4h
|
[0-9a-f]+: 0ec33c41 frsqrts v1.4h, v2.4h, v3.4h
|
||||||
[0-9a-f]+: 4ec03c00 frsqrts v0.8h, v0.8h, v0.8h
|
[0-9a-f]+: 4ec03c00 frsqrts v0.8h, v0.8h, v0.8h
|
||||||
[0-9a-f]+: 4ec33c41 frsqrts v1.8h, v2.8h, v3.8h
|
[0-9a-f]+: 4ec33c41 frsqrts v1.8h, v2.8h, v3.8h
|
||||||
|
[0-9a-f]+: 7ee2d420 fabd d0, d1, d2
|
||||||
|
[0-9a-f]+: 7ea2d420 fabd s0, s1, s2
|
||||||
|
[0-9a-f]+: 7ec21420 fabd h0, h1, h2
|
||||||
|
[0-9a-f]+: 7ec01400 fabd h0, h0, h0
|
||||||
|
[0-9a-f]+: 5e62dc20 fmulx d0, d1, d2
|
||||||
|
[0-9a-f]+: 5e22dc20 fmulx s0, s1, s2
|
||||||
|
[0-9a-f]+: 5e421c20 fmulx h0, h1, h2
|
||||||
|
[0-9a-f]+: 5e401c00 fmulx h0, h0, h0
|
||||||
|
[0-9a-f]+: 5e62e420 fcmeq d0, d1, d2
|
||||||
|
[0-9a-f]+: 5e22e420 fcmeq s0, s1, s2
|
||||||
|
[0-9a-f]+: 5e422420 fcmeq h0, h1, h2
|
||||||
|
[0-9a-f]+: 5e402400 fcmeq h0, h0, h0
|
||||||
|
[0-9a-f]+: 7ee2e420 fcmgt d0, d1, d2
|
||||||
|
[0-9a-f]+: 7ea2e420 fcmgt s0, s1, s2
|
||||||
|
[0-9a-f]+: 7ec22420 fcmgt h0, h1, h2
|
||||||
|
[0-9a-f]+: 7ec02400 fcmgt h0, h0, h0
|
||||||
|
[0-9a-f]+: 7e62e420 fcmge d0, d1, d2
|
||||||
|
[0-9a-f]+: 7e22e420 fcmge s0, s1, s2
|
||||||
|
[0-9a-f]+: 7e422420 fcmge h0, h1, h2
|
||||||
|
[0-9a-f]+: 7e402400 fcmge h0, h0, h0
|
||||||
|
[0-9a-f]+: 7e62ec20 facge d0, d1, d2
|
||||||
|
[0-9a-f]+: 7e22ec20 facge s0, s1, s2
|
||||||
|
[0-9a-f]+: 7e422c20 facge h0, h1, h2
|
||||||
|
[0-9a-f]+: 7e402c00 facge h0, h0, h0
|
||||||
|
[0-9a-f]+: 7ee2ec20 facgt d0, d1, d2
|
||||||
|
[0-9a-f]+: 7ea2ec20 facgt s0, s1, s2
|
||||||
|
[0-9a-f]+: 7ec22c20 facgt h0, h1, h2
|
||||||
|
[0-9a-f]+: 7ec02c00 facgt h0, h0, h0
|
||||||
|
[0-9a-f]+: 5e62fc20 frecps d0, d1, d2
|
||||||
|
[0-9a-f]+: 5e22fc20 frecps s0, s1, s2
|
||||||
|
[0-9a-f]+: 5e423c20 frecps h0, h1, h2
|
||||||
|
[0-9a-f]+: 5e403c00 frecps h0, h0, h0
|
||||||
|
[0-9a-f]+: 5ee2fc20 frsqrts d0, d1, d2
|
||||||
|
[0-9a-f]+: 5ea2fc20 frsqrts s0, s1, s2
|
||||||
|
[0-9a-f]+: 5ec23c20 frsqrts h0, h1, h2
|
||||||
|
[0-9a-f]+: 5ec03c00 frsqrts h0, h0, h0
|
||||||
|
|
|
@ -38,3 +38,22 @@
|
||||||
three_same frecps
|
three_same frecps
|
||||||
three_same fdiv
|
three_same fdiv
|
||||||
three_same frsqrts
|
three_same frsqrts
|
||||||
|
|
||||||
|
/* Scalar three-same. */
|
||||||
|
|
||||||
|
.macro sthree_same, op
|
||||||
|
\op d0, d1, d2
|
||||||
|
\op s0, s1, s2
|
||||||
|
\op h0, h1, h2
|
||||||
|
\op h0, h0, h0
|
||||||
|
.endm
|
||||||
|
|
||||||
|
sthree_same fabd
|
||||||
|
sthree_same fmulx
|
||||||
|
sthree_same fcmeq
|
||||||
|
sthree_same fcmgt
|
||||||
|
sthree_same fcmge
|
||||||
|
sthree_same facge
|
||||||
|
sthree_same facgt
|
||||||
|
sthree_same frecps
|
||||||
|
sthree_same frsqrts
|
||||||
|
|
|
@ -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 (aarch64_opcode_table): Add fp16 versions of
|
||||||
|
fmulx, fcmeq, frecps, frsqrts, fcmge, facge, fabd, fcmgt and facgt
|
||||||
|
to the scalar three same 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.
|
||||||
|
|
|
@ -111,334 +111,334 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode)
|
||||||
case 460: /* dup */
|
case 460: /* dup */
|
||||||
value = 460; /* --> dup. */
|
value = 460; /* --> dup. */
|
||||||
break;
|
break;
|
||||||
case 530: /* sxtw */
|
case 539: /* sxtw */
|
||||||
case 529: /* sxth */
|
case 538: /* sxth */
|
||||||
case 528: /* sxtb */
|
case 537: /* sxtb */
|
||||||
case 531: /* asr */
|
case 540: /* asr */
|
||||||
case 527: /* sbfx */
|
case 536: /* sbfx */
|
||||||
case 526: /* sbfiz */
|
case 535: /* sbfiz */
|
||||||
case 525: /* sbfm */
|
case 534: /* sbfm */
|
||||||
value = 525; /* --> sbfm. */
|
value = 534; /* --> sbfm. */
|
||||||
break;
|
break;
|
||||||
case 534: /* bfc */
|
case 543: /* bfc */
|
||||||
case 535: /* bfxil */
|
case 544: /* bfxil */
|
||||||
case 533: /* bfi */
|
case 542: /* bfi */
|
||||||
case 532: /* bfm */
|
case 541: /* bfm */
|
||||||
value = 532; /* --> bfm. */
|
value = 541; /* --> bfm. */
|
||||||
break;
|
break;
|
||||||
case 540: /* uxth */
|
case 549: /* uxth */
|
||||||
case 539: /* uxtb */
|
case 548: /* uxtb */
|
||||||
case 542: /* lsr */
|
case 551: /* lsr */
|
||||||
case 541: /* lsl */
|
case 550: /* lsl */
|
||||||
case 538: /* ubfx */
|
case 547: /* ubfx */
|
||||||
case 537: /* ubfiz */
|
case 546: /* ubfiz */
|
||||||
case 536: /* ubfm */
|
case 545: /* ubfm */
|
||||||
value = 536; /* --> ubfm. */
|
value = 545; /* --> ubfm. */
|
||||||
break;
|
break;
|
||||||
case 560: /* cset */
|
case 569: /* cset */
|
||||||
case 559: /* cinc */
|
case 568: /* cinc */
|
||||||
case 558: /* csinc */
|
case 567: /* csinc */
|
||||||
value = 558; /* --> csinc. */
|
value = 567; /* --> csinc. */
|
||||||
break;
|
break;
|
||||||
case 563: /* csetm */
|
case 572: /* csetm */
|
||||||
case 562: /* cinv */
|
case 571: /* cinv */
|
||||||
case 561: /* csinv */
|
case 570: /* csinv */
|
||||||
value = 561; /* --> csinv. */
|
value = 570; /* --> csinv. */
|
||||||
break;
|
break;
|
||||||
case 565: /* cneg */
|
case 574: /* cneg */
|
||||||
case 564: /* csneg */
|
case 573: /* csneg */
|
||||||
value = 564; /* --> csneg. */
|
value = 573; /* --> csneg. */
|
||||||
break;
|
break;
|
||||||
case 583: /* rev */
|
case 592: /* rev */
|
||||||
case 584: /* rev64 */
|
case 593: /* rev64 */
|
||||||
value = 583; /* --> rev. */
|
value = 592; /* --> rev. */
|
||||||
break;
|
break;
|
||||||
case 591: /* lsl */
|
case 600: /* lsl */
|
||||||
case 590: /* lslv */
|
case 599: /* lslv */
|
||||||
value = 590; /* --> lslv. */
|
value = 599; /* --> lslv. */
|
||||||
break;
|
break;
|
||||||
case 593: /* lsr */
|
case 602: /* lsr */
|
||||||
case 592: /* lsrv */
|
case 601: /* lsrv */
|
||||||
value = 592; /* --> lsrv. */
|
value = 601; /* --> lsrv. */
|
||||||
break;
|
break;
|
||||||
case 595: /* asr */
|
case 604: /* asr */
|
||||||
case 594: /* asrv */
|
case 603: /* asrv */
|
||||||
value = 594; /* --> asrv. */
|
value = 603; /* --> asrv. */
|
||||||
break;
|
break;
|
||||||
case 597: /* ror */
|
case 606: /* ror */
|
||||||
case 596: /* rorv */
|
case 605: /* rorv */
|
||||||
value = 596; /* --> rorv. */
|
value = 605; /* --> rorv. */
|
||||||
break;
|
break;
|
||||||
case 607: /* mul */
|
case 616: /* mul */
|
||||||
case 606: /* madd */
|
case 615: /* madd */
|
||||||
value = 606; /* --> madd. */
|
value = 615; /* --> madd. */
|
||||||
break;
|
break;
|
||||||
case 609: /* mneg */
|
case 618: /* mneg */
|
||||||
case 608: /* msub */
|
case 617: /* msub */
|
||||||
value = 608; /* --> msub. */
|
value = 617; /* --> msub. */
|
||||||
break;
|
break;
|
||||||
case 611: /* smull */
|
case 620: /* smull */
|
||||||
case 610: /* smaddl */
|
case 619: /* smaddl */
|
||||||
value = 610; /* --> smaddl. */
|
value = 619; /* --> smaddl. */
|
||||||
break;
|
break;
|
||||||
case 613: /* smnegl */
|
case 622: /* smnegl */
|
||||||
case 612: /* smsubl */
|
case 621: /* smsubl */
|
||||||
value = 612; /* --> smsubl. */
|
value = 621; /* --> smsubl. */
|
||||||
break;
|
break;
|
||||||
case 616: /* umull */
|
case 625: /* umull */
|
||||||
case 615: /* umaddl */
|
case 624: /* umaddl */
|
||||||
value = 615; /* --> umaddl. */
|
value = 624; /* --> umaddl. */
|
||||||
break;
|
break;
|
||||||
case 618: /* umnegl */
|
case 627: /* umnegl */
|
||||||
case 617: /* umsubl */
|
case 626: /* umsubl */
|
||||||
value = 617; /* --> umsubl. */
|
value = 626; /* --> umsubl. */
|
||||||
break;
|
break;
|
||||||
case 629: /* ror */
|
case 638: /* ror */
|
||||||
case 628: /* extr */
|
case 637: /* extr */
|
||||||
value = 628; /* --> extr. */
|
value = 637; /* --> extr. */
|
||||||
break;
|
break;
|
||||||
case 836: /* bic */
|
case 845: /* bic */
|
||||||
case 835: /* and */
|
case 844: /* and */
|
||||||
value = 835; /* --> and. */
|
value = 844; /* --> and. */
|
||||||
break;
|
break;
|
||||||
case 838: /* mov */
|
case 847: /* mov */
|
||||||
case 837: /* orr */
|
case 846: /* orr */
|
||||||
value = 837; /* --> orr. */
|
value = 846; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 841: /* tst */
|
case 850: /* tst */
|
||||||
case 840: /* ands */
|
case 849: /* ands */
|
||||||
value = 840; /* --> ands. */
|
value = 849; /* --> ands. */
|
||||||
break;
|
break;
|
||||||
case 846: /* uxtw */
|
case 855: /* uxtw */
|
||||||
case 845: /* mov */
|
case 854: /* mov */
|
||||||
case 844: /* orr */
|
case 853: /* orr */
|
||||||
value = 844; /* --> orr. */
|
value = 853; /* --> orr. */
|
||||||
break;
|
break;
|
||||||
case 848: /* mvn */
|
case 857: /* mvn */
|
||||||
case 847: /* orn */
|
case 856: /* orn */
|
||||||
value = 847; /* --> orn. */
|
value = 856; /* --> orn. */
|
||||||
break;
|
break;
|
||||||
case 852: /* tst */
|
case 861: /* tst */
|
||||||
case 851: /* ands */
|
case 860: /* ands */
|
||||||
value = 851; /* --> ands. */
|
value = 860; /* --> ands. */
|
||||||
break;
|
break;
|
||||||
case 978: /* staddb */
|
case 987: /* staddb */
|
||||||
case 882: /* ldaddb */
|
case 891: /* ldaddb */
|
||||||
value = 882; /* --> ldaddb. */
|
value = 891; /* --> ldaddb. */
|
||||||
break;
|
break;
|
||||||
case 979: /* staddh */
|
case 988: /* staddh */
|
||||||
case 883: /* ldaddh */
|
case 892: /* ldaddh */
|
||||||
value = 883; /* --> ldaddh. */
|
value = 892; /* --> ldaddh. */
|
||||||
break;
|
break;
|
||||||
case 980: /* stadd */
|
case 989: /* stadd */
|
||||||
case 884: /* ldadd */
|
case 893: /* ldadd */
|
||||||
value = 884; /* --> ldadd. */
|
value = 893; /* --> ldadd. */
|
||||||
break;
|
break;
|
||||||
case 981: /* staddlb */
|
case 990: /* staddlb */
|
||||||
case 886: /* ldaddlb */
|
case 895: /* ldaddlb */
|
||||||
value = 886; /* --> ldaddlb. */
|
value = 895; /* --> ldaddlb. */
|
||||||
break;
|
break;
|
||||||
case 982: /* staddlh */
|
case 991: /* staddlh */
|
||||||
case 889: /* ldaddlh */
|
case 898: /* ldaddlh */
|
||||||
value = 889; /* --> ldaddlh. */
|
value = 898; /* --> ldaddlh. */
|
||||||
break;
|
break;
|
||||||
case 983: /* staddl */
|
case 992: /* staddl */
|
||||||
case 892: /* ldaddl */
|
case 901: /* ldaddl */
|
||||||
value = 892; /* --> ldaddl. */
|
value = 901; /* --> ldaddl. */
|
||||||
break;
|
break;
|
||||||
case 984: /* stclrb */
|
case 993: /* stclrb */
|
||||||
case 894: /* ldclrb */
|
case 903: /* ldclrb */
|
||||||
value = 894; /* --> ldclrb. */
|
value = 903; /* --> ldclrb. */
|
||||||
break;
|
break;
|
||||||
case 985: /* stclrh */
|
case 994: /* stclrh */
|
||||||
case 895: /* ldclrh */
|
case 904: /* ldclrh */
|
||||||
value = 895; /* --> ldclrh. */
|
value = 904; /* --> ldclrh. */
|
||||||
break;
|
break;
|
||||||
case 986: /* stclr */
|
case 995: /* stclr */
|
||||||
case 896: /* ldclr */
|
case 905: /* ldclr */
|
||||||
value = 896; /* --> ldclr. */
|
value = 905; /* --> ldclr. */
|
||||||
break;
|
break;
|
||||||
case 987: /* stclrlb */
|
case 996: /* stclrlb */
|
||||||
case 898: /* ldclrlb */
|
case 907: /* ldclrlb */
|
||||||
value = 898; /* --> ldclrlb. */
|
value = 907; /* --> ldclrlb. */
|
||||||
break;
|
break;
|
||||||
case 988: /* stclrlh */
|
case 997: /* stclrlh */
|
||||||
case 901: /* ldclrlh */
|
case 910: /* ldclrlh */
|
||||||
value = 901; /* --> ldclrlh. */
|
value = 910; /* --> ldclrlh. */
|
||||||
break;
|
break;
|
||||||
case 989: /* stclrl */
|
case 998: /* stclrl */
|
||||||
case 904: /* ldclrl */
|
case 913: /* ldclrl */
|
||||||
value = 904; /* --> ldclrl. */
|
value = 913; /* --> ldclrl. */
|
||||||
break;
|
break;
|
||||||
case 990: /* steorb */
|
case 999: /* steorb */
|
||||||
case 906: /* ldeorb */
|
case 915: /* ldeorb */
|
||||||
value = 906; /* --> ldeorb. */
|
value = 915; /* --> ldeorb. */
|
||||||
break;
|
break;
|
||||||
case 991: /* steorh */
|
case 1000: /* steorh */
|
||||||
case 907: /* ldeorh */
|
case 916: /* ldeorh */
|
||||||
value = 907; /* --> ldeorh. */
|
value = 916; /* --> ldeorh. */
|
||||||
break;
|
break;
|
||||||
case 992: /* steor */
|
case 1001: /* steor */
|
||||||
case 908: /* ldeor */
|
case 917: /* ldeor */
|
||||||
value = 908; /* --> ldeor. */
|
value = 917; /* --> ldeor. */
|
||||||
break;
|
break;
|
||||||
case 993: /* steorlb */
|
case 1002: /* steorlb */
|
||||||
case 910: /* ldeorlb */
|
case 919: /* ldeorlb */
|
||||||
value = 910; /* --> ldeorlb. */
|
value = 919; /* --> ldeorlb. */
|
||||||
break;
|
break;
|
||||||
case 994: /* steorlh */
|
case 1003: /* steorlh */
|
||||||
case 913: /* ldeorlh */
|
case 922: /* ldeorlh */
|
||||||
value = 913; /* --> ldeorlh. */
|
value = 922; /* --> ldeorlh. */
|
||||||
break;
|
break;
|
||||||
case 995: /* steorl */
|
case 1004: /* steorl */
|
||||||
case 916: /* ldeorl */
|
case 925: /* ldeorl */
|
||||||
value = 916; /* --> ldeorl. */
|
value = 925; /* --> ldeorl. */
|
||||||
break;
|
break;
|
||||||
case 996: /* stsetb */
|
case 1005: /* stsetb */
|
||||||
case 918: /* ldsetb */
|
case 927: /* ldsetb */
|
||||||
value = 918; /* --> ldsetb. */
|
value = 927; /* --> ldsetb. */
|
||||||
break;
|
break;
|
||||||
case 997: /* stseth */
|
case 1006: /* stseth */
|
||||||
case 919: /* ldseth */
|
case 928: /* ldseth */
|
||||||
value = 919; /* --> ldseth. */
|
value = 928; /* --> ldseth. */
|
||||||
break;
|
break;
|
||||||
case 998: /* stset */
|
case 1007: /* stset */
|
||||||
case 920: /* ldset */
|
case 929: /* ldset */
|
||||||
value = 920; /* --> ldset. */
|
value = 929; /* --> ldset. */
|
||||||
break;
|
break;
|
||||||
case 999: /* stsetlb */
|
case 1008: /* stsetlb */
|
||||||
case 922: /* ldsetlb */
|
case 931: /* ldsetlb */
|
||||||
value = 922; /* --> ldsetlb. */
|
value = 931; /* --> ldsetlb. */
|
||||||
break;
|
break;
|
||||||
case 1000: /* stsetlh */
|
case 1009: /* stsetlh */
|
||||||
case 925: /* ldsetlh */
|
case 934: /* ldsetlh */
|
||||||
value = 925; /* --> ldsetlh. */
|
value = 934; /* --> ldsetlh. */
|
||||||
break;
|
break;
|
||||||
case 1001: /* stsetl */
|
case 1010: /* stsetl */
|
||||||
case 928: /* ldsetl */
|
case 937: /* ldsetl */
|
||||||
value = 928; /* --> ldsetl. */
|
value = 937; /* --> ldsetl. */
|
||||||
break;
|
break;
|
||||||
case 1002: /* stsmaxb */
|
case 1011: /* stsmaxb */
|
||||||
case 930: /* ldsmaxb */
|
case 939: /* ldsmaxb */
|
||||||
value = 930; /* --> ldsmaxb. */
|
value = 939; /* --> ldsmaxb. */
|
||||||
break;
|
break;
|
||||||
case 1003: /* stsmaxh */
|
case 1012: /* stsmaxh */
|
||||||
case 931: /* ldsmaxh */
|
case 940: /* ldsmaxh */
|
||||||
value = 931; /* --> ldsmaxh. */
|
value = 940; /* --> ldsmaxh. */
|
||||||
break;
|
break;
|
||||||
case 1004: /* stsmax */
|
case 1013: /* stsmax */
|
||||||
case 932: /* ldsmax */
|
case 941: /* ldsmax */
|
||||||
value = 932; /* --> ldsmax. */
|
value = 941; /* --> ldsmax. */
|
||||||
break;
|
break;
|
||||||
case 1005: /* stsmaxlb */
|
case 1014: /* stsmaxlb */
|
||||||
case 934: /* ldsmaxlb */
|
case 943: /* ldsmaxlb */
|
||||||
value = 934; /* --> ldsmaxlb. */
|
value = 943; /* --> ldsmaxlb. */
|
||||||
break;
|
break;
|
||||||
case 1006: /* stsmaxlh */
|
case 1015: /* stsmaxlh */
|
||||||
case 937: /* ldsmaxlh */
|
case 946: /* ldsmaxlh */
|
||||||
value = 937; /* --> ldsmaxlh. */
|
value = 946; /* --> ldsmaxlh. */
|
||||||
break;
|
break;
|
||||||
case 1007: /* stsmaxl */
|
case 1016: /* stsmaxl */
|
||||||
case 940: /* ldsmaxl */
|
case 949: /* ldsmaxl */
|
||||||
value = 940; /* --> ldsmaxl. */
|
value = 949; /* --> ldsmaxl. */
|
||||||
break;
|
break;
|
||||||
case 1008: /* stsminb */
|
case 1017: /* stsminb */
|
||||||
case 942: /* ldsminb */
|
case 951: /* ldsminb */
|
||||||
value = 942; /* --> ldsminb. */
|
value = 951; /* --> ldsminb. */
|
||||||
break;
|
break;
|
||||||
case 1009: /* stsminh */
|
case 1018: /* stsminh */
|
||||||
case 943: /* ldsminh */
|
case 952: /* ldsminh */
|
||||||
value = 943; /* --> ldsminh. */
|
value = 952; /* --> ldsminh. */
|
||||||
break;
|
break;
|
||||||
case 1010: /* stsmin */
|
case 1019: /* stsmin */
|
||||||
case 944: /* ldsmin */
|
case 953: /* ldsmin */
|
||||||
value = 944; /* --> ldsmin. */
|
value = 953; /* --> ldsmin. */
|
||||||
break;
|
break;
|
||||||
case 1011: /* stsminlb */
|
case 1020: /* stsminlb */
|
||||||
case 946: /* ldsminlb */
|
case 955: /* ldsminlb */
|
||||||
value = 946; /* --> ldsminlb. */
|
value = 955; /* --> ldsminlb. */
|
||||||
break;
|
break;
|
||||||
case 1012: /* stsminlh */
|
case 1021: /* stsminlh */
|
||||||
case 949: /* ldsminlh */
|
case 958: /* ldsminlh */
|
||||||
value = 949; /* --> ldsminlh. */
|
value = 958; /* --> ldsminlh. */
|
||||||
break;
|
break;
|
||||||
case 1013: /* stsminl */
|
case 1022: /* stsminl */
|
||||||
case 952: /* ldsminl */
|
case 961: /* ldsminl */
|
||||||
value = 952; /* --> ldsminl. */
|
value = 961; /* --> ldsminl. */
|
||||||
break;
|
break;
|
||||||
case 1014: /* stumaxb */
|
case 1023: /* stumaxb */
|
||||||
case 954: /* ldumaxb */
|
case 963: /* ldumaxb */
|
||||||
value = 954; /* --> ldumaxb. */
|
value = 963; /* --> ldumaxb. */
|
||||||
break;
|
break;
|
||||||
case 1015: /* stumaxh */
|
case 1024: /* stumaxh */
|
||||||
case 955: /* ldumaxh */
|
case 964: /* ldumaxh */
|
||||||
value = 955; /* --> ldumaxh. */
|
value = 964; /* --> ldumaxh. */
|
||||||
break;
|
break;
|
||||||
case 1016: /* stumax */
|
case 1025: /* stumax */
|
||||||
case 956: /* ldumax */
|
case 965: /* ldumax */
|
||||||
value = 956; /* --> ldumax. */
|
value = 965; /* --> ldumax. */
|
||||||
break;
|
break;
|
||||||
case 1017: /* stumaxlb */
|
case 1026: /* stumaxlb */
|
||||||
case 958: /* ldumaxlb */
|
case 967: /* ldumaxlb */
|
||||||
value = 958; /* --> ldumaxlb. */
|
value = 967; /* --> ldumaxlb. */
|
||||||
break;
|
break;
|
||||||
case 1018: /* stumaxlh */
|
case 1027: /* stumaxlh */
|
||||||
case 961: /* ldumaxlh */
|
case 970: /* ldumaxlh */
|
||||||
value = 961; /* --> ldumaxlh. */
|
value = 970; /* --> ldumaxlh. */
|
||||||
break;
|
break;
|
||||||
case 1019: /* stumaxl */
|
case 1028: /* stumaxl */
|
||||||
case 964: /* ldumaxl */
|
case 973: /* ldumaxl */
|
||||||
value = 964; /* --> ldumaxl. */
|
value = 973; /* --> ldumaxl. */
|
||||||
break;
|
break;
|
||||||
case 1020: /* stuminb */
|
case 1029: /* stuminb */
|
||||||
case 966: /* lduminb */
|
case 975: /* lduminb */
|
||||||
value = 966; /* --> lduminb. */
|
value = 975; /* --> lduminb. */
|
||||||
break;
|
break;
|
||||||
case 1021: /* stuminh */
|
case 1030: /* stuminh */
|
||||||
case 967: /* lduminh */
|
case 976: /* lduminh */
|
||||||
value = 967; /* --> lduminh. */
|
value = 976; /* --> lduminh. */
|
||||||
break;
|
break;
|
||||||
case 1022: /* stumin */
|
case 1031: /* stumin */
|
||||||
case 968: /* ldumin */
|
case 977: /* ldumin */
|
||||||
value = 968; /* --> ldumin. */
|
value = 977; /* --> ldumin. */
|
||||||
break;
|
break;
|
||||||
case 1023: /* stuminlb */
|
case 1032: /* stuminlb */
|
||||||
case 970: /* lduminlb */
|
case 979: /* lduminlb */
|
||||||
value = 970; /* --> lduminlb. */
|
value = 979; /* --> lduminlb. */
|
||||||
break;
|
break;
|
||||||
case 1024: /* stuminlh */
|
case 1033: /* stuminlh */
|
||||||
case 973: /* lduminlh */
|
case 982: /* lduminlh */
|
||||||
value = 973; /* --> lduminlh. */
|
value = 982; /* --> lduminlh. */
|
||||||
break;
|
break;
|
||||||
case 1025: /* stuminl */
|
case 1034: /* stuminl */
|
||||||
case 976: /* lduminl */
|
case 985: /* lduminl */
|
||||||
value = 976; /* --> lduminl. */
|
value = 985; /* --> lduminl. */
|
||||||
break;
|
break;
|
||||||
case 1027: /* mov */
|
case 1036: /* mov */
|
||||||
case 1026: /* movn */
|
case 1035: /* movn */
|
||||||
value = 1026; /* --> movn. */
|
value = 1035; /* --> movn. */
|
||||||
break;
|
break;
|
||||||
case 1029: /* mov */
|
case 1038: /* mov */
|
||||||
case 1028: /* movz */
|
case 1037: /* movz */
|
||||||
value = 1028; /* --> movz. */
|
value = 1037; /* --> movz. */
|
||||||
break;
|
break;
|
||||||
case 1042: /* psb */
|
case 1051: /* psb */
|
||||||
case 1041: /* esb */
|
case 1050: /* esb */
|
||||||
case 1040: /* sevl */
|
case 1049: /* sevl */
|
||||||
case 1039: /* sev */
|
case 1048: /* sev */
|
||||||
case 1038: /* wfi */
|
case 1047: /* wfi */
|
||||||
case 1037: /* wfe */
|
case 1046: /* wfe */
|
||||||
case 1036: /* yield */
|
case 1045: /* yield */
|
||||||
case 1035: /* nop */
|
case 1044: /* nop */
|
||||||
case 1034: /* hint */
|
case 1043: /* hint */
|
||||||
value = 1034; /* --> hint. */
|
value = 1043; /* --> hint. */
|
||||||
break;
|
break;
|
||||||
case 1051: /* tlbi */
|
case 1060: /* tlbi */
|
||||||
case 1050: /* ic */
|
case 1059: /* ic */
|
||||||
case 1049: /* dc */
|
case 1058: /* dc */
|
||||||
case 1048: /* at */
|
case 1057: /* at */
|
||||||
case 1047: /* sys */
|
case 1056: /* sys */
|
||||||
value = 1047; /* --> sys. */
|
value = 1056; /* --> sys. */
|
||||||
break;
|
break;
|
||||||
default: return NULL;
|
default: return NULL;
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -122,70 +122,70 @@ const struct aarch64_operand aarch64_operands[] =
|
||||||
static const unsigned op_enum_table [] =
|
static const unsigned op_enum_table [] =
|
||||||
{
|
{
|
||||||
0,
|
0,
|
||||||
744,
|
|
||||||
745,
|
|
||||||
746,
|
|
||||||
749,
|
|
||||||
750,
|
|
||||||
751,
|
|
||||||
752,
|
|
||||||
753,
|
753,
|
||||||
747,
|
|
||||||
748,
|
|
||||||
754,
|
754,
|
||||||
755,
|
755,
|
||||||
777,
|
758,
|
||||||
778,
|
759,
|
||||||
779,
|
760,
|
||||||
782,
|
761,
|
||||||
783,
|
762,
|
||||||
784,
|
756,
|
||||||
785,
|
757,
|
||||||
|
763,
|
||||||
|
764,
|
||||||
786,
|
786,
|
||||||
780,
|
|
||||||
781,
|
|
||||||
787,
|
787,
|
||||||
788,
|
788,
|
||||||
831,
|
791,
|
||||||
832,
|
792,
|
||||||
833,
|
793,
|
||||||
834,
|
794,
|
||||||
|
795,
|
||||||
|
789,
|
||||||
|
790,
|
||||||
|
796,
|
||||||
|
797,
|
||||||
|
840,
|
||||||
|
841,
|
||||||
|
842,
|
||||||
|
843,
|
||||||
12,
|
12,
|
||||||
543,
|
552,
|
||||||
544,
|
553,
|
||||||
1026,
|
1035,
|
||||||
1028,
|
1037,
|
||||||
1030,
|
1039,
|
||||||
838,
|
847,
|
||||||
1029,
|
1038,
|
||||||
1027,
|
1036,
|
||||||
273,
|
273,
|
||||||
531,
|
|
||||||
542,
|
|
||||||
541,
|
|
||||||
836,
|
|
||||||
538,
|
|
||||||
535,
|
|
||||||
527,
|
|
||||||
526,
|
|
||||||
533,
|
|
||||||
534,
|
|
||||||
537,
|
|
||||||
539,
|
|
||||||
540,
|
540,
|
||||||
846,
|
551,
|
||||||
559,
|
550,
|
||||||
562,
|
845,
|
||||||
565,
|
547,
|
||||||
560,
|
544,
|
||||||
563,
|
536,
|
||||||
688,
|
535,
|
||||||
|
542,
|
||||||
|
543,
|
||||||
|
546,
|
||||||
|
548,
|
||||||
|
549,
|
||||||
|
855,
|
||||||
|
568,
|
||||||
|
571,
|
||||||
|
574,
|
||||||
|
569,
|
||||||
|
572,
|
||||||
|
697,
|
||||||
162,
|
162,
|
||||||
163,
|
163,
|
||||||
164,
|
164,
|
||||||
165,
|
165,
|
||||||
450,
|
450,
|
||||||
629,
|
638,
|
||||||
342,
|
342,
|
||||||
344,
|
344,
|
||||||
364,
|
364,
|
||||||
|
|
|
@ -1855,9 +1855,17 @@ struct aarch64_opcode aarch64_opcode_table[] =
|
||||||
{"sqrshl", 0x5e205c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
|
{"sqrshl", 0x5e205c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
|
||||||
{"sqdmulh", 0x5e20b400, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE},
|
{"sqdmulh", 0x5e20b400, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE},
|
||||||
{"fmulx", 0x5e20dc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"fmulx", 0x5e20dc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"fmulx", 0x5e401c00, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"fcmeq", 0x5e20e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"fcmeq", 0x5e20e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"fcmeq", 0x5e402400, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"frecps", 0x5e20fc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"frecps", 0x5e20fc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"frecps", 0x5e403c00, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"frsqrts", 0x5ea0fc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"frsqrts", 0x5ea0fc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"frsqrts", 0x5ec03c00, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"cmgt", 0x5ee03400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
{"cmgt", 0x5ee03400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
||||||
{"cmge", 0x5ee03c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
{"cmge", 0x5ee03c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
||||||
{"sshl", 0x5ee04400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
{"sshl", 0x5ee04400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
||||||
|
@ -1870,10 +1878,20 @@ struct aarch64_opcode aarch64_opcode_table[] =
|
||||||
{"uqrshl", 0x7e205c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
|
{"uqrshl", 0x7e205c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
|
||||||
{"sqrdmulh", 0x7e20b400, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE},
|
{"sqrdmulh", 0x7e20b400, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE},
|
||||||
{"fcmge", 0x7e20e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"fcmge", 0x7e20e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"fcmge", 0x7e402400, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"facge", 0x7e20ec00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"facge", 0x7e20ec00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"facge", 0x7e402c00, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"fabd", 0x7ea0d400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"fabd", 0x7ea0d400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"fabd", 0x7ec01400, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"fcmgt", 0x7ea0e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"fcmgt", 0x7ea0e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"fcmgt", 0x7ec02400, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"facgt", 0x7ea0ec00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
{"facgt", 0x7ea0ec00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
|
||||||
|
{"facgt", 0x7ec02c00, 0xffe0fc00, asisdsame, 0, SIMD_F16,
|
||||||
|
OP3 (Sd, Sn, Sm), QL_FP3_H, F_SSIZE},
|
||||||
{"cmhi", 0x7ee03400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
{"cmhi", 0x7ee03400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
||||||
{"cmhs", 0x7ee03c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
{"cmhs", 0x7ee03c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
||||||
{"ushl", 0x7ee04400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
{"ushl", 0x7ee04400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue