From: Srinath Parvathaneni Date: Fri, 10 Jan 2025 14:07:13 +0000 (+0000) Subject: aarch64: Add support for FEAT_SME_F16F16 fmops and fmopa instructions. X-Git-Tag: binutils-2_44~205 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5cc18af0fe5203278714813983efe0e990f78c5;p=thirdparty%2Fbinutils-gdb.git aarch64: Add support for FEAT_SME_F16F16 fmops and fmopa instructions. This patch adds support for FEAT_SME_F16F16 instructions fmops and fmopa, which are available on passing command line flags +sme-f16f16 and the spec is available here[1]. [1]: https://developer.arm.com/documentation/ddi0602/2024-06/SME-Instructions?lang=en --- diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.d b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.d new file mode 100644 index 00000000000..fec7d2a1125 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.d @@ -0,0 +1,4 @@ +#name: Test of invalid FEAT_SME_F16F16 fmops and fmopa instructions. +#as: -march=armv8-a+sme-f16f16 +#source: sme-f16f16-2-bad.s +#error_output: sme-f16f16-2-bad.l diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.l b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.l new file mode 100644 index 00000000000..083b3a08ca4 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.l @@ -0,0 +1,29 @@ +.*: Assembler messages: +.*: Error: operand mismatch -- `fmopa ZA1.h,p0,p0/m,z0.h,z0.h' +.*: Info: did you mean this\? +.*: Info: fmopa za1.h, p0/m, p0/m, z0.h, z0.h +.*: Error: operand mismatch -- `fmopa ZA0.h,p7/m,p0,z0.h,z0.h' +.*: Info: did you mean this\? +.*: Info: fmopa za0.h, p7/m, p0/m, z0.h, z0.h +.*: Error: operand mismatch -- `fmopa ZA0.h,p0/m,p7/m,z0.s,z0.s' +.*: Info: did you mean this\? +.*: Info: fmopa za0.s, p0/m, p7/m, z0.s, z0.s +.*: Error: operand mismatch -- `fmopa ZA0.h,p0/m,p0/m,z31.d,z0.d' +.*: Info: did you mean this\? +.*: Info: fmopa za0.d, p0/m, p0/m, z31.d, z0.d +.*: Error: ZA tile number out of range at operand 1 -- `fmopa ZA2.h,p0/m,p8/m,z0.s,z31.b' +.*: Error: ZA tile number out of range at operand 1 -- `fmopa ZA4.h,p15/m,p11/m,z0.s,z31.b' +.*: Error: operand mismatch -- `fmops ZA1.h,p0,p0/m,z0.h,z0.h' +.*: Info: did you mean this\? +.*: Info: fmops za1.h, p0/m, p0/m, z0.h, z0.h +.*: Error: operand mismatch -- `fmops ZA0.h,p7/m,p0,z0.h,z0.h' +.*: Info: did you mean this\? +.*: Info: fmops za0.h, p7/m, p0/m, z0.h, z0.h +.*: Error: operand mismatch -- `fmops ZA0.h,p0/m,p7/m,z0.s,z0.s' +.*: Info: did you mean this\? +.*: Info: fmops za0.s, p0/m, p7/m, z0.s, z0.s +.*: Error: operand mismatch -- `fmops ZA0.h,p0/m,p0/m,z31.d,z0.d' +.*: Info: did you mean this\? +.*: Info: fmops za0.d, p0/m, p0/m, z31.d, z0.d +.*: Error: ZA tile number out of range at operand 1 -- `fmops ZA2.h,p0/m,p8/m,z0.s,z31.b' +.*: Error: ZA tile number out of range at operand 1 -- `fmops ZA4.h,p15/m,p11/m,z0.s,z31.b' diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.s b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.s new file mode 100644 index 00000000000..4bce38087a9 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-f16f16-2-bad.s @@ -0,0 +1,17 @@ +/* FMOPA. */ +fmopa ZA0.s, p0/m, p0/m, z0.h, z0.h +fmopa ZA1.h, p0, p0/m, z0.h, z0.h +fmopa ZA0.h, p7/m, p0, z0.h, z0.h +fmopa ZA0.h, p0/m, p7/m, z0.s, z0.s +fmopa ZA0.h, p0/m, p0/m, z31.d, z0.d +fmopa ZA2.h, p0/m, p8/m, z0.s, z31.b +fmopa ZA4.h, p15/m, p11/m, z0.s, z31.b + +/* FMOPS. */ +fmops ZA0.s, p0/m, p0/m, z0.h, z0.h +fmops ZA1.h, p0, p0/m, z0.h, z0.h +fmops ZA0.h, p7/m, p0, z0.h, z0.h +fmops ZA0.h, p0/m, p7/m, z0.s, z0.s +fmops ZA0.h, p0/m, p0/m, z31.d, z0.d +fmops ZA2.h, p0/m, p8/m, z0.s, z31.b +fmops ZA4.h, p15/m, p11/m, z0.s, z31.b diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2.d b/gas/testsuite/gas/aarch64/sme-f16f16-2.d new file mode 100644 index 00000000000..f35c1b1890b --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-f16f16-2.d @@ -0,0 +1,28 @@ +#name: Test of FEAT_SME_F16F16 fmopa and fmops instructions. +#as: -march=armv8-a+sme-f16f16 +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +.*: 81800008 fmopa za0.h, p0/m, p0/m, z0.h, z0.h +.*: 81800009 fmopa za1.h, p0/m, p0/m, z0.h, z0.h +.*: 81801c08 fmopa za0.h, p7/m, p0/m, z0.h, z0.h +.*: 8180e008 fmopa za0.h, p0/m, p7/m, z0.h, z0.h +.*: 818003e8 fmopa za0.h, p0/m, p0/m, z31.h, z0.h +.*: 819f0008 fmopa za0.h, p0/m, p0/m, z0.h, z31.h +.*: 819fffe9 fmopa za1.h, p7/m, p7/m, z31.h, z31.h +.*: 818fad48 fmopa za0.h, p3/m, p5/m, z10.h, z15.h +.*: 819965e9 fmopa za1.h, p1/m, p3/m, z15.h, z25.h +.*: 81800018 fmops za0.h, p0/m, p0/m, z0.h, z0.h +.*: 81800019 fmops za1.h, p0/m, p0/m, z0.h, z0.h +.*: 81801c18 fmops za0.h, p7/m, p0/m, z0.h, z0.h +.*: 8180e018 fmops za0.h, p0/m, p7/m, z0.h, z0.h +.*: 818003f8 fmops za0.h, p0/m, p0/m, z31.h, z0.h +.*: 819f0018 fmops za0.h, p0/m, p0/m, z0.h, z31.h +.*: 819ffff9 fmops za1.h, p7/m, p7/m, z31.h, z31.h +.*: 818fad58 fmops za0.h, p3/m, p5/m, z10.h, z15.h +.*: 819965f9 fmops za1.h, p1/m, p3/m, z15.h, z25.h diff --git a/gas/testsuite/gas/aarch64/sme-f16f16-2.s b/gas/testsuite/gas/aarch64/sme-f16f16-2.s new file mode 100644 index 00000000000..2032cf36790 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme-f16f16-2.s @@ -0,0 +1,21 @@ +/* FMOPA. */ +fmopa ZA0.h, p0/m, p0/m, z0.h, z0.h +fmopa ZA1.h, p0/m, p0/m, z0.h, z0.h +fmopa ZA0.h, p7/m, p0/m, z0.h, z0.h +fmopa ZA0.h, p0/m, p7/m, z0.h, z0.h +fmopa ZA0.h, p0/m, p0/m, z31.h, z0.h +fmopa ZA0.h, p0/m, p0/m, z0.h, z31.h +fmopa ZA1.h, p7/m, p7/m, z31.h, z31.h +fmopa ZA0.h, p3/m, p5/m, z10.h, z15.h +fmopa ZA1.h, p1/m, p3/m, z15.h, z25.h + +/* FMOPS. */ +fmops ZA0.h, p0/m, p0/m, z0.h, z0.h +fmops ZA1.h, p0/m, p0/m, z0.h, z0.h +fmops ZA0.h, p7/m, p0/m, z0.h, z0.h +fmops ZA0.h, p0/m, p7/m, z0.h, z0.h +fmops ZA0.h, p0/m, p0/m, z31.h, z0.h +fmops ZA0.h, p0/m, p0/m, z0.h, z31.h +fmops ZA1.h, p7/m, p7/m, z31.h, z31.h +fmops ZA0.h, p3/m, p5/m, z10.h, z15.h +fmops ZA1.h, p1/m, p3/m, z15.h, z25.h diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index 95344740328..5a26e805a54 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -271,7 +271,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000000x000101x00xxxxxxxxxxxxxx luti4. */ - return 3428; + return 3430; } else { @@ -310,7 +310,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000000xx01101x00xxxxxxxxxxxxxx luti4. */ - return 3429; + return 3431; } else { @@ -542,7 +542,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000000010011x1xxxx00xxxxxxxxxx movt. */ - return 3430; + return 3432; } } else @@ -1366,7 +1366,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx000000101xxxxxxxxxxxxxxxx00xxx fmopa. */ - return 3496; + return 3498; } else { @@ -1374,7 +1374,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx000000101xxxxxxxxxxxxxxxx01xxx fmopa. */ - return 3495; + return 3497; } } else @@ -1722,7 +1722,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000010001xxxx1xx0xxxxx1000xxx fmlall. */ - return 3489; + return 3491; } } } @@ -1752,7 +1752,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000010001xxxxxxx1xxxxxx00xxxx fdot. */ - return 3474; + return 3476; } } else @@ -2077,11 +2077,22 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001100xxxxxxxxxxxxxxxx0xxxx - bfmopa. */ - return 2411; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001100xxxxxxxxxxxxxxxx00xxx + bfmopa. */ + return 2411; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001100xxxxxxxxxxxxxxxx01xxx + fmopa. */ + return 3325; + } } else { @@ -2124,7 +2135,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011001xxxxxxx0xxxxxx100xxx fmlall. */ - return 3488; + return 3490; } } } @@ -2229,7 +2240,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011001xxxxxxx1xxxxxx10xxxx fmlal. */ - return 3481; + return 3483; } } } @@ -2261,11 +2272,22 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 30) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - x0000001100xxxxxxxxxxxxxxxx1xxxx - bfmops. */ - return 2412; + if (((word >> 3) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001100xxxxxxxxxxxxxxxx10xxx + bfmops. */ + return 2412; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + x0000001100xxxxxxxxxxxxxxxx11xxx + fmops. */ + return 3326; + } } else { @@ -2402,7 +2424,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011001xxxxxxx1xxxxxx11xxxx fmlal. */ - return 3480; + return 3482; } } } @@ -2444,7 +2466,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000010100xxxxxxxxxxxxxxxx0xxx fmlall. */ - return 3487; + return 3489; } else { @@ -2812,7 +2834,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxx000010101xxxx0xx0xxxxxx111xxx fdot. */ - return 3467; + return 3469; } else { @@ -2881,7 +2903,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxx000010101xxxx1xx0xxxxxx001xxx fdot. */ - return 3468; + return 3470; } else { @@ -2960,7 +2982,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000011100xxxxxxx0xxxxxxx0xxxx fmlal. */ - return 3479; + return 3481; } else { @@ -3015,7 +3037,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000011101xxxx0xx01xxxxx00xxxx fvdotb. */ - return 3498; + return 3500; } else { @@ -3033,7 +3055,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000011101xxxxxxx0xxxxxx10xxxx fdot. */ - return 3473; + return 3475; } } } @@ -3107,7 +3129,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx0000011101xxxxxxx1xxxxxx10xxxx fvdot. */ - return 3497; + return 3499; } } } @@ -3187,7 +3209,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx000001110xxxxx0xx01xxxxxx1xxxx fvdott. */ - return 3499; + return 3501; } else { @@ -3364,7 +3386,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011x1xxxx00xx000xxxx10000x fmlall. */ - return 3493; + return 3495; } else { @@ -3372,7 +3394,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011x1xxxx10xx000xxxx10000x fmlall. */ - return 3494; + return 3496; } } } @@ -3427,7 +3449,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx10xxxx0xx000xxxxx00x1x fmlall. */ - return 3491; + return 3493; } else { @@ -3435,7 +3457,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx11xxxx0xx000xxxxx00x1x fmlall. */ - return 3492; + return 3494; } } } @@ -3489,7 +3511,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011x1xxxx00xx100xxxx100xxx fdot. */ - return 3477; + return 3479; } else { @@ -3497,7 +3519,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011x1xxxx10xx100xxxx100xxx fdot. */ - return 3478; + return 3480; } } } @@ -3559,7 +3581,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001101xxxx00xx010xxxx1000xx fmlal. */ - return 3485; + return 3487; } else { @@ -3567,7 +3589,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001101xxxx10xx010xxxx1000xx fmlal. */ - return 3486; + return 3488; } } } @@ -3622,7 +3644,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx10xxxx0xx010xxxxx001xx fmlal. */ - return 3483; + return 3485; } else { @@ -3630,7 +3652,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx11xxxx0xx010xxxxx001xx fmlal. */ - return 3484; + return 3486; } } } @@ -3699,7 +3721,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx11xxxx0xx001xxxxx000xx fmlall. */ - return 3490; + return 3492; } } else @@ -3782,7 +3804,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx11xxxx0xx011xxxxx00xxx fmlal. */ - return 3482; + return 3484; } } else @@ -3803,7 +3825,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xx1x00xx111xxxxx00xxx fadd. */ - return 3431; + return 3433; } } else @@ -3822,7 +3844,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xx1x10xx111xxxxx00xxx fadd. */ - return 3432; + return 3434; } } } @@ -3948,7 +3970,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011x1xxxx00xx100xxxx110xxx fdot. */ - return 3471; + return 3473; } else { @@ -3956,7 +3978,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011x1xxxx10xx100xxxx110xxx fdot. */ - return 3472; + return 3474; } } } @@ -4247,7 +4269,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx10xxxx0xx100xxxxx01xxx fdot. */ - return 3475; + return 3477; } else { @@ -4255,7 +4277,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx11xxxx0xx100xxxxx01xxx fdot. */ - return 3476; + return 3478; } } } @@ -4526,7 +4548,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xx1x00xx111xxxxx01xxx fsub. */ - return 3433; + return 3435; } } else @@ -4545,7 +4567,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xx1x10xx111xxxxx01xxx fsub. */ - return 3434; + return 3436; } } } @@ -4607,7 +4629,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx10xxxx0xx100xxxxx11xxx fdot. */ - return 3469; + return 3471; } else { @@ -4615,7 +4637,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx11xxxx0xx100xxxxx11xxx fdot. */ - return 3470; + return 3472; } } } @@ -5150,7 +5172,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xxxxx101000xx1x0xxxx0 fscale. */ - return 3405; + return 3407; } } else @@ -5298,7 +5320,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001x0100100111000xxxx0xxxxx fcvt. */ - return 3402; + return 3404; } else { @@ -5306,7 +5328,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001x1100100111000xxxx0xxxxx bfcvt. */ - return 3397; + return 3399; } } else @@ -5315,7 +5337,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx110100111000xxxx0xxxxx fcvt. */ - return 3403; + return 3405; } } else @@ -5366,7 +5388,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xx100111000xxxx1xxxxx fcvtn. */ - return 3404; + return 3406; } } } @@ -5449,7 +5471,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000010010x110111000xxxxxxxxx0 f1cvt. */ - return 3398; + return 3400; } else { @@ -5457,7 +5479,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011010x110111000xxxxxxxxx0 f2cvt. */ - return 3399; + return 3401; } } else @@ -5468,7 +5490,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000010110x110111000xxxxxxxxx0 bf1cvt. */ - return 3393; + return 3395; } else { @@ -5476,7 +5498,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x10000011110x110111000xxxxxxxxx0 bf2cvt. */ - return 3394; + return 3396; } } } @@ -5511,7 +5533,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001001xxx10111000xxxxxxxxx1 f1cvtl. */ - return 3400; + return 3402; } else { @@ -5519,7 +5541,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001101xxx10111000xxxxxxxxx1 f2cvtl. */ - return 3401; + return 3403; } } else @@ -5530,7 +5552,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001011xxx10111000xxxxxxxxx1 bf1cvtl. */ - return 3395; + return 3397; } else { @@ -5538,7 +5560,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001111xxx10111000xxxxxxxxx1 bf2cvtl. */ - return 3396; + return 3398; } } } @@ -5807,7 +5829,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xxxxx1x1100xx100xxxx0 fscale. */ - return 3407; + return 3409; } } else @@ -5983,7 +6005,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xxxxx1x1010xx100xxxx0 fscale. */ - return 3406; + return 3408; } else { @@ -5991,7 +6013,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1000001xx1xxxxx1x1110xx100xxxx0 fscale. */ - return 3408; + return 3410; } } } @@ -11159,7 +11181,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0x11010000xxxxxxx1xxxxxxxxxxxxx addpt. */ - return 3409; + return 3411; } else { @@ -11167,7 +11189,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1x11010000xxxxxxx1xxxxxxxxxxxxx subpt. */ - return 3410; + return 3412; } } } @@ -12085,7 +12107,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxx1011x11xxxxx0xxxxxxxxxxxxxxx maddpt. */ - return 3411; + return 3413; } else { @@ -12093,7 +12115,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxx1011x11xxxxx1xxxxxxxxxxxxxxx msubpt. */ - return 3412; + return 3414; } } } @@ -12178,7 +12200,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx000100000xxxxxxxxxxxxx addpt. */ - return 3413; + return 3415; } else { @@ -12285,7 +12307,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx000101000xxxxxxxxxxxxx subpt. */ - return 3415; + return 3417; } else { @@ -12490,7 +12512,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx1xxxxx000010xxxxxxxxxx addpt. */ - return 3414; + return 3416; } else { @@ -12531,7 +12553,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx1xxxxx000011xxxxxxxxxx subpt. */ - return 3416; + return 3418; } else { @@ -14189,7 +14211,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx110100xxxxxxxxxx mlapt. */ - return 3418; + return 3420; } } else @@ -14219,7 +14241,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx110110xxxxxxxxxx madpt. */ - return 3417; + return 3419; } } } @@ -14527,7 +14549,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx00x100001xxxxxxxxxxxxx smaxqv. */ - return 3327; + return 3329; } else { @@ -14535,7 +14557,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx01x100001xxxxxxxxxxxxx orqv. */ - return 3338; + return 3340; } } else @@ -14546,7 +14568,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx0x0101001xxxxxxxxxxxxx addqv. */ - return 3325; + return 3327; } else { @@ -14556,7 +14578,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx001101001xxxxxxxxxxxxx umaxqv. */ - return 3329; + return 3331; } else { @@ -14564,7 +14586,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx011101001xxxxxxxxxxxxx eorqv. */ - return 3331; + return 3333; } } } @@ -14601,7 +14623,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx00x110001xxxxxxxxxxxxx sminqv. */ - return 3328; + return 3330; } else { @@ -14609,7 +14631,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx01x110001xxxxxxxxxxxxx andqv. */ - return 3326; + return 3328; } } } @@ -14629,7 +14651,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x0xx0xx111001xxxxxxxxxxxxx uminqv. */ - return 3330; + return 3332; } } } @@ -15373,7 +15395,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 110001x0x00xxxxx101xxxxxxxxxxxxx ld1q. */ - return 3354; + return 3356; } else { @@ -16387,7 +16409,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx111x00xxxxxxxxxx zipq1. */ - return 3344; + return 3346; } else { @@ -16397,7 +16419,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx111010xxxxxxxxxx uzpq1. */ - return 3342; + return 3344; } else { @@ -16405,7 +16427,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx111110xxxxxxxxxx tblq. */ - return 3339; + return 3341; } } } @@ -16417,7 +16439,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx111x01xxxxxxxxxx zipq2. */ - return 3345; + return 3347; } else { @@ -16425,7 +16447,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x0xx0xxxxx111x11xxxxxxxxxx uzpq2. */ - return 3343; + return 3345; } } } @@ -16905,7 +16927,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x0x00xxxxx000xxxxxxxxxxxxx st3q. */ - return 3363; + return 3365; } else { @@ -16915,7 +16937,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x0010xxxxx000xxxxxxxxxxxxx st2q. */ - return 3362; + return 3364; } else { @@ -16923,7 +16945,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x0110xxxxx000xxxxxxxxxxxxx st4q. */ - return 3364; + return 3366; } } } @@ -17370,7 +17392,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0xx0x0000101xxxxxxxxxxxxx faddqv. */ - return 3332; + return 3334; } else { @@ -17387,7 +17409,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0xx0xx100101xxxxxxxxxxxxx fmaxnmqv. */ - return 3333; + return 3335; } } else @@ -17428,7 +17450,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0xx0xx110101xxxxxxxxxxxxx fmaxqv. */ - return 3334; + return 3336; } } } @@ -17450,7 +17472,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0xx0xx101101xxxxxxxxxxxxx fminnmqv. */ - return 3335; + return 3337; } } else @@ -17469,7 +17491,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0xx0xx111101xxxxxxxxxxxxx fminqv. */ - return 3336; + return 3338; } } } @@ -17589,7 +17611,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 101001x0xx01xxxx111xxxxxxxxxxxxx ld2q. */ - return 3355; + return 3357; } } } @@ -17725,7 +17747,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 101001x0xx1xxxxx100xxxxxxxxxxxxx ld2q. */ - return 3358; + return 3360; } } else @@ -17870,7 +17892,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x00x1xxxxx000xxxxxxxxxxxxx st2q. */ - return 3365; + return 3367; } } else @@ -17913,7 +17935,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x0101xxxxx000xxxxxxxxxxxxx st3q. */ - return 3366; + return 3368; } } else @@ -17954,7 +17976,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x0111xxxxx000xxxxxxxxxxxxx st4q. */ - return 3367; + return 3369; } } } @@ -17983,7 +18005,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0001xxxxx0100x1xxxxxxxxxx fdot. */ - return 3454; + return 3456; } } else @@ -17992,7 +18014,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0001xxxxx0101xxxxxxxxxxxx fmlalb. */ - return 3456; + return 3458; } } else @@ -18033,7 +18055,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx0101xxxxxxxxxxxx fmlalt. */ - return 3466; + return 3468; } } else @@ -18066,7 +18088,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0011xxxxx010xx1xxxxxxxxxx fdot. */ - return 3452; + return 3454; } } else @@ -18137,7 +18159,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx100010xxxxxxxxxx fmlallbb. */ - return 3457; + return 3459; } } else @@ -18146,7 +18168,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1000x1xxxxxxxxxx fdot. */ - return 3453; + return 3455; } } else @@ -18155,7 +18177,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1100xxxxxxxxxxxx fmlallbb. */ - return 3458; + return 3460; } } else @@ -18164,7 +18186,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1x01xxxxxxxxxxxx fmlallbt. */ - return 3459; + return 3461; } } else @@ -18191,7 +18213,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx100010xxxxxxxxxx fmlalb. */ - return 3455; + return 3457; } } else @@ -18209,7 +18231,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx1100xxxxxxxxxxxx fmlalltb. */ - return 3462; + return 3464; } } else @@ -18218,7 +18240,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0101xxxxx1x01xxxxxxxxxxxx fmlalt. */ - return 3465; + return 3467; } } else @@ -18251,7 +18273,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0011xxxxx100xx1xxxxxxxxxx fdot. */ - return 3451; + return 3453; } } else @@ -18260,7 +18282,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0011xxxxx110xxxxxxxxxxxxx fmlallbt. */ - return 3460; + return 3462; } } else @@ -18292,7 +18314,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x0111xxxxx110xxxxxxxxxxxxx fmlalltt. */ - return 3464; + return 3466; } } else @@ -18591,7 +18613,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 111001x0xx1xxxxx001xxxxxxxxxxxxx st1q. */ - return 3361; + return 3363; } } else @@ -18606,7 +18628,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1010xxxxxxxxxxxx fmlalltb. */ - return 3461; + return 3463; } else { @@ -18614,7 +18636,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x11001x0001xxxxx1011xxxxxxxxxxxx fmlalltt. */ - return 3463; + return 3465; } } else @@ -19332,7 +19354,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1001010x0001110xxxxxxxxxx pmov. */ - return 3346; + return 3348; } else { @@ -19340,7 +19362,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1001011x0001110xxxxxxxxxx pmov. */ - return 3347; + return 3349; } } else @@ -19349,7 +19371,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x101101xx0001110xxxxxxxxxx pmov. */ - return 3348; + return 3350; } } else @@ -19358,7 +19380,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x11x101xx0001110xxxxxxxxxx pmov. */ - return 3349; + return 3351; } } else @@ -19404,7 +19426,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1001x10x1001110xxxxxxxxxx pmov. */ - return 3350; + return 3352; } else { @@ -19412,7 +19434,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1001x11x1001110xxxxxxxxxx pmov. */ - return 3351; + return 3353; } } else @@ -19421,7 +19443,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1011x1xx1001110xxxxxxxxxx pmov. */ - return 3352; + return 3354; } } else @@ -19430,7 +19452,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x11x1x1xx1001110xxxxxxxxxx pmov. */ - return 3353; + return 3355; } } } @@ -19449,7 +19471,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1x01xxxxx001001xxxxxxxxxx dupq. */ - return 3337; + return 3339; } else { @@ -19457,7 +19479,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1x11xxxxx001001xxxxxxxxxx extq. */ - return 3341; + return 3343; } } else @@ -19466,7 +19488,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 000001x1xx1xxxxx001101xxxxxxxxxx tbxq. */ - return 3340; + return 3342; } } else @@ -21069,7 +21091,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x1xx1xxxxx101100xxxxxxxxxx luti2. */ - return 3423; + return 3425; } } else @@ -21078,7 +21100,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x1xx1xxxxx101x10xxxxxxxxxx luti2. */ - return 3424; + return 3426; } } else @@ -21091,7 +21113,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x1xx1xxxxx101001xxxxxxxxxx luti4. */ - return 3425; + return 3427; } else { @@ -21099,7 +21121,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x1xx1xxxxx101101xxxxxxxxxx luti4. */ - return 3426; + return 3428; } } else @@ -21108,7 +21130,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 010001x1xx1xxxxx101x11xxxxxxxxxx luti4. */ - return 3427; + return 3429; } } } @@ -22059,7 +22081,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx001000001x00xxxxxxxxxx f1cvt. */ - return 3385; + return 3387; } else { @@ -22067,7 +22089,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx001000001x10xxxxxxxxxx bf1cvt. */ - return 3381; + return 3383; } } else @@ -22078,7 +22100,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx001000001x01xxxxxxxxxx f2cvt. */ - return 3386; + return 3388; } else { @@ -22086,7 +22108,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx001000001x11xxxxxxxxxx bf2cvt. */ - return 3382; + return 3384; } } } @@ -22131,7 +22153,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1010001x00xxxxxxxxxx fcvtn. */ - return 3390; + return 3392; } else { @@ -22139,7 +22161,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1010001x10xxxxxxxxxx bfcvtn. */ - return 3389; + return 3391; } } else @@ -22150,7 +22172,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1010001x01xxxxxxxxxx fcvtnb. */ - return 3391; + return 3393; } else { @@ -22158,7 +22180,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1010001x11xxxxxxxxxx fcvtnt. */ - return 3392; + return 3394; } } } @@ -22219,7 +22241,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1001001x00xxxxxxxxxx f1cvtlt. */ - return 3387; + return 3389; } else { @@ -22227,7 +22249,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1001001x10xxxxxxxxxx bf1cvtlt. */ - return 3383; + return 3385; } } else @@ -22238,7 +22260,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1001001x01xxxxxxxxxx f2cvtlt. */ - return 3388; + return 3390; } else { @@ -22246,7 +22268,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 011001x1xx0x1001001x11xxxxxxxxxx bf2cvtlt. */ - return 3384; + return 3386; } } } @@ -23572,7 +23594,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 101001x10x01xxxx111xxxxxxxxxxxxx ld3q. */ - return 3356; + return 3358; } else { @@ -23580,7 +23602,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 101001x11x01xxxx111xxxxxxxxxxxxx ld4q. */ - return 3357; + return 3359; } } } @@ -24753,7 +24775,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 101001x10x1xxxxx100xxxxxxxxxxxxx ld3q. */ - return 3359; + return 3361; } else { @@ -24761,7 +24783,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 101001x11x1xxxxx100xxxxxxxxxxxxx ld4q. */ - return 3360; + return 3362; } } else @@ -26826,7 +26848,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110100xxxxxxxx100xxxxxxxxxx luti2. */ - return 3419; + return 3421; } } } @@ -26840,7 +26862,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110010xxxxxxxx000xxxxxxxxxx luti4. */ - return 3421; + return 3423; } else { @@ -26848,7 +26870,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110010xxxxxxxx100xxxxxxxxxx luti4. */ - return 3422; + return 3424; } } else @@ -26857,7 +26879,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110110xxxxxxxxx00xxxxxxxxxx luti2. */ - return 3420; + return 3422; } } } @@ -26973,7 +26995,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110x00xxxxxx10001xxxxxxxxxx fmlallbb. */ - return 3443; + return 3445; } else { @@ -26981,7 +27003,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110x00xxxxxx10001xxxxxxxxxx fmlalltb. */ - return 3445; + return 3447; } } else @@ -26992,7 +27014,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110x10xxxxxx10001xxxxxxxxxx fmlallbt. */ - return 3444; + return 3446; } else { @@ -27000,7 +27022,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110x10xxxxxx10001xxxxxxxxxx fmlalltt. */ - return 3446; + return 3448; } } } @@ -27088,7 +27110,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110x00xxxxxx11101xxxxxxxxxx fcvtn. */ - return 3376; + return 3378; } else { @@ -27096,7 +27118,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110x00xxxxxx11101xxxxxxxxxx fcvtn2. */ - return 3377; + return 3379; } } else @@ -27105,7 +27127,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110x10xxxxxx11101xxxxxxxxxx fcvtn. */ - return 3378; + return 3380; } } } @@ -27248,7 +27270,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110x00xxxxxx11111xxxxxxxxxx fdot. */ - return 3435; + return 3437; } else { @@ -27258,7 +27280,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 0x001110010xxxxxx11111xxxxxxxxxx fdot. */ - return 3437; + return 3439; } else { @@ -27268,7 +27290,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 00001110110xxxxxx11111xxxxxxxxxx fmlalb. */ - return 3439; + return 3441; } else { @@ -27276,7 +27298,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 01001110110xxxxxx11111xxxxxxxxxx fmlalt. */ - return 3440; + return 3442; } } } @@ -27550,7 +27572,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx101110110xxxxx0x1111xxxxxxxxxx fscale. */ - return 3379; + return 3381; } } } @@ -28942,7 +28964,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101110001xxxx1011110xxxxxxxxxx f1cvtl. */ - return 3372; + return 3374; } else { @@ -28950,7 +28972,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101110001xxxx1011110xxxxxxxxxx f1cvtl2. */ - return 3373; + return 3375; } } else @@ -28961,7 +28983,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101110101xxxx1011110xxxxxxxxxx bf1cvtl. */ - return 3368; + return 3370; } else { @@ -28969,7 +28991,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101110101xxxx1011110xxxxxxxxxx bf1cvtl2. */ - return 3369; + return 3371; } } } @@ -28983,7 +29005,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101110011xxxx1011110xxxxxxxxxx f2cvtl. */ - return 3374; + return 3376; } else { @@ -28991,7 +29013,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101110011xxxx1011110xxxxxxxxxx f2cvtl2. */ - return 3375; + return 3377; } } else @@ -29002,7 +29024,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101110111xxxx1011110xxxxxxxxxx bf2cvtl. */ - return 3370; + return 3372; } else { @@ -29010,7 +29032,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101110111xxxx1011110xxxxxxxxxx bf2cvtl2. */ - return 3371; + return 3373; } } } @@ -31009,7 +31031,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx1011101x1xxxxx111111xxxxxxxxxx fscale. */ - return 3380; + return 3382; } } } @@ -32725,7 +32747,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx00111100xxxxxx0000x0xxxxxxxxxx fdot. */ - return 3436; + return 3438; } else { @@ -32755,7 +32777,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xx00111101xxxxxx0000x0xxxxxxxxxx fdot. */ - return 3438; + return 3440; } else { @@ -32765,7 +32787,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x000111111xxxxxx0000x0xxxxxxxxxx fmlalb. */ - return 3441; + return 3443; } else { @@ -32773,7 +32795,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x100111111xxxxxx0000x0xxxxxxxxxx fmlalt. */ - return 3442; + return 3444; } } } @@ -33315,7 +33337,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x010111100xxxxxx1000x0xxxxxxxxxx fmlallbb. */ - return 3447; + return 3449; } else { @@ -33323,7 +33345,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x110111100xxxxxx1000x0xxxxxxxxxx fmlalltb. */ - return 3449; + return 3451; } } else @@ -33354,7 +33376,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x0101111x1xxxxxx1000x0xxxxxxxxxx fmlallbt. */ - return 3448; + return 3450; } else { @@ -33362,7 +33384,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 x1101111x1xxxxxx1000x0xxxxxxxxxx fmlalltt. */ - return 3450; + return 3452; } } } diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 28f9dd324f3..7619cd7acb7 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1715,6 +1715,10 @@ { \ QLF5(S_H,P_M,P_M,S_B,S_B) \ } +#define OP_SVE_HMMHH \ +{ \ + QLF5(S_H,P_M,P_M,S_H,S_H) \ +} #define OP_SVE_HMS \ { \ QLF3(S_H,P_M,S_S), \ @@ -2861,6 +2865,8 @@ static const aarch64_feature_set aarch64_feature_sme_f8f16 = AARCH64_FEATURES (2, SME_F8F32, SME2); static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 = AARCH64_FEATURES (2, SME_F16F16_F8F16, SME2); +static const aarch64_feature_set aarch64_feature_sme_f16f16 = + AARCH64_FEATURES (2, SME_F16F16, SME2); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -2948,6 +2954,7 @@ static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 = #define SME_F8F32 &aarch64_feature_sme_f8f32 #define SME_F8F16 &aarch64_feature_sme_f8f16 #define SME_F16F16_F8F16 &aarch64_feature_sme_f16f16_f8f16 +#define SME_F16F16 &aarch64_feature_sme_f16f16 #define CORE_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS) \ { NAME, OPCODE, MASK, CLASS, OP, CORE, OPS, QUALS, FLAGS, 0, 0, NULL } @@ -3169,6 +3176,9 @@ static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 = { NAME, OPCODE, MASK, CLASS, 0, SME_F8F16, OPS, QUALS, F_STRICT | FLAGS, CONSTRAINTS, 0, NULL } #define SME_F16F16_F8F16_INSNC(NAME,OPCODE,MASK,CLASS,OPS,QUALS,FLAGS,CONSTRAINTS) \ { NAME, OPCODE, MASK, CLASS, 0, SME_F16F16_F8F16, OPS, QUALS, F_STRICT | FLAGS, CONSTRAINTS, 0, NULL } +#define SME_F16F16_INSN(NAME,OPCODE,MASK,CLASS,OP,OPS,QUALS,FLAGS,TIED) \ + { NAME, OPCODE, MASK, CLASS, OP, SME_F16F16, OPS, QUALS, \ + FLAGS | F_STRICT, 0, TIED, NULL } #define MOPS_CPY_OP1_OP2_PME_INSN(NAME, OPCODE, MASK, FLAGS, CONSTRAINTS) \ MOPS_INSN (NAME, OPCODE, MASK, 0, \ @@ -6686,6 +6696,10 @@ const struct aarch64_opcode aarch64_opcode_table[] = SME2p1_INSN ("zero", 0xc00f0000, 0xffff9ffe, sme2_movaz, 0, OP1 (SME_ZA_array_off1x4), OP_SVE_D, F_OD (2) | F_VG_REQ, 0), SME2p1_INSN ("zero", 0xc00f8000, 0xffff9ffe, sme2_movaz, 0, OP1 (SME_ZA_array_off1x4), OP_SVE_D, F_OD (4) | F_VG_REQ, 0), +/* SME2.1 half-precision floating-point instructions. */ + SME_F16F16_INSN("fmopa", 0x81800008, 0xffe0001e, sme_misc, 0, OP5 (SME_ZAda_1b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SVE_HMMHH, 0, 0), + SME_F16F16_INSN("fmops", 0x81800018, 0xffe0001e, sme_misc, 0, OP5 (SME_ZAda_1b, SVE_Pg3, SME_Pm, SVE_Zn, SVE_Zm_16), OP_SVE_HMMHH, 0, 0), + /* SVE2p1 Instructions. */ SVE2p1_INSN("addqv",0x04052000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_BHSD_BHSD, F_OPD_SIZE, 0), SVE2p1_INSN("andqv",0x041e2000, 0xff3fe000, sve2_urqvs, 0, OP3 (Vd, SVE_Pg3, SVE_Zn), OP_SVE_vUS_BHSD_BHSD, F_OPD_SIZE, 0),