aboutsummaryrefslogtreecommitdiff
path: root/opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes')
-rw-r--r--opcodes/aarch64-dis-2.c448
-rw-r--r--opcodes/aarch64-tbl.h16
2 files changed, 328 insertions, 136 deletions
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index 36d4744..46f4e2f 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -4465,33 +4465,44 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 5) & 0x1) == 0)
{
- if (((word >> 8) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx101000x0xx0xxxx0
- smax. */
- return 2710;
- }
- else
+ if (((word >> 7) & 0x1) == 0)
{
- if (((word >> 9) & 0x1) == 0)
+ if (((word >> 8) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xxxxx10100001xx0xxxx0
- fmax. */
- return 2545;
+ x1000001xx1xxxxx101000x00x0xxxx0
+ smax. */
+ return 2710;
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx10100011xx0xxxx0
- add. */
- return 2499;
+ if (((word >> 9) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx101000010x0xxxx0
+ fmax. */
+ return 2545;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx101000110x0xxxx0
+ add. */
+ return 2499;
+ }
}
}
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx101000xx1x0xxxx0
+ fscale. */
+ return 3370;
+ }
}
else
{
@@ -4581,9 +4592,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 16) & 0x1) == 0)
{
- if (((word >> 5) & 0x1) == 0)
+ if (((word >> 17) & 0x1) == 0)
{
- if (((word >> 17) & 0x1) == 0)
+ if (((word >> 5) & 0x1) == 0)
{
if (((word >> 18) & 0x1) == 0)
{
@@ -4628,45 +4639,34 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 20) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx10x100111000xxxx0xxxxx
- frinta. */
- return 2589;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx11x100111000xxxx0xxxxx
- frinta. */
- return 2590;
- }
- }
- }
- else
- {
- if (((word >> 18) & 0x1) == 0)
- {
if (((word >> 19) & 0x1) == 0)
{
if (((word >> 20) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx100010111000xxxx0xxxxx
- scvtf. */
- return 2694;
+ if (((word >> 22) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x0100100111000xxxx0xxxxx
+ fcvt. */
+ return 3367;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001x1100100111000xxxx0xxxxx
+ bfcvt. */
+ return 3362;
+ }
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx110010111000xxxx0xxxxx
- scvtf. */
- return 2695;
+ x1000001xx110100111000xxxx0xxxxx
+ fcvt. */
+ return 3368;
}
}
else
@@ -4675,79 +4675,222 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx101010111000xxxx0xxxxx
- frintm. */
- return 2591;
+ x1000001xx101100111000xxxx0xxxxx
+ frinta. */
+ return 2589;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx111010111000xxxx0xxxxx
- frintm. */
- return 2592;
+ x1000001xx111100111000xxxx0xxxxx
+ frinta. */
+ return 2590;
}
}
}
- else
+ }
+ else
+ {
+ if (((word >> 18) & 0x1) == 0)
{
- if (((word >> 1) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xx110111000xxxx0xxx0x
- zip. */
- return 2959;
+ x1000001x01xx000111000xxxx1xxxxx
+ fcvtn. */
+ return 2534;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xx110111000xxxx0xxx1x
- uzp. */
- return 2946;
+ x1000001x11xx000111000xxxx1xxxxx
+ bfcvtn. */
+ return 2502;
}
}
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xx100111000xxxx1xxxxx
+ fcvtn. */
+ return 3369;
+ }
}
}
else
{
- if (((word >> 17) & 0x1) == 0)
+ if (((word >> 0) & 0x1) == 0)
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 18) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001x01xxx00111000xxxx1xxxxx
- fcvtn. */
- return 2534;
+ if (((word >> 5) & 0x1) == 0)
+ {
+ if (((word >> 19) & 0x1) == 0)
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx100010111000xxxx0xxxx0
+ scvtf. */
+ return 2694;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx110010111000xxxx0xxxx0
+ scvtf. */
+ return 2695;
+ }
+ }
+ else
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx101010111000xxxx0xxxx0
+ frintm. */
+ return 2591;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx111010111000xxxx0xxxx0
+ frintm. */
+ return 2592;
+ }
+ }
+ }
+ else
+ {
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx10x010111000xxxx1xxxx0
+ ucvtf. */
+ return 2859;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx11x010111000xxxx1xxxx0
+ ucvtf. */
+ return 2860;
+ }
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001x11xxx00111000xxxx1xxxxx
- bfcvtn. */
- return 2502;
+ if (((word >> 20) & 0x1) == 0)
+ {
+ if (((word >> 22) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x10000010010x110111000xxxxxxxxx0
+ f1cvt. */
+ return 3363;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x10000011010x110111000xxxxxxxxx0
+ f2cvt. */
+ return 3364;
+ }
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x10000010110x110111000xxxxxxxxx0
+ bf1cvt. */
+ return 3358;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x10000011110x110111000xxxxxxxxx0
+ bf2cvt. */
+ return 3359;
+ }
+ }
+ }
+ else
+ {
+ if (((word >> 1) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx11x110111000xxxxxxxx00
+ zip. */
+ return 2959;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx11x110111000xxxxxxxx10
+ uzp. */
+ return 2946;
+ }
+ }
}
}
else
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx10xx10111000xxxx1xxxxx
- ucvtf. */
- return 2859;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001001xxx10111000xxxxxxxxx1
+ f1cvtl. */
+ return 3365;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001101xxx10111000xxxxxxxxx1
+ f2cvtl. */
+ return 3366;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx11xx10111000xxxx1xxxxx
- ucvtf. */
- return 2860;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001011xxx10111000xxxxxxxxx1
+ bf1cvtl. */
+ return 3360;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001111xxx10111000xxxxxxxxx1
+ bf2cvtl. */
+ return 3361;
+ }
}
}
}
@@ -4990,21 +5133,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 6) & 0x1) == 0)
{
- if (((word >> 8) & 0x1) == 0)
+ if (((word >> 7) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx1x1100x0x00xxxx0
- smax. */
- return 2712;
+ if (((word >> 8) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx1x1100x0000xxxx0
+ smax. */
+ return 2712;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx1x1100x1000xxxx0
+ fmax. */
+ return 2547;
+ }
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xxxxx1x1100x1x00xxxx0
- fmax. */
- return 2547;
+ x1000001xx1xxxxx1x1100xx100xxxx0
+ fscale. */
+ return 3372;
}
}
else
@@ -5120,53 +5274,75 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 6) & 0x1) == 0)
{
- if (((word >> 8) & 0x1) == 0)
+ if (((word >> 7) & 0x1) == 0)
{
- if (((word >> 12) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx1x1010x0x00xxxx0
- smax. */
- return 2711;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x1000001xx1xxxxx1x1110x0x00xxxx0
- smax. */
- return 2713;
- }
- }
- else
- {
- if (((word >> 9) & 0x1) == 0)
+ if (((word >> 8) & 0x1) == 0)
{
if (((word >> 12) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xxxxx1x101001x00xxxx0
- fmax. */
- return 2546;
+ x1000001xx1xxxxx1x1010x0000xxxx0
+ smax. */
+ return 2711;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xxxxx1x111001x00xxxx0
- fmax. */
- return 2548;
+ x1000001xx1xxxxx1x1110x0000xxxx0
+ smax. */
+ return 2713;
+ }
+ }
+ else
+ {
+ if (((word >> 9) & 0x1) == 0)
+ {
+ if (((word >> 12) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx1x101001000xxxx0
+ fmax. */
+ return 2546;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx1x111001000xxxx0
+ fmax. */
+ return 2548;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx1x1x1011000xxxx0
+ add. */
+ return 2500;
}
}
+ }
+ else
+ {
+ if (((word >> 12) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x1000001xx1xxxxx1x1010xx100xxxx0
+ fscale. */
+ return 3371;
+ }
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x1000001xx1xxxxx1x1x1011x00xxxx0
- add. */
- return 2500;
+ x1000001xx1xxxxx1x1110xx100xxxx0
+ fscale. */
+ return 3373;
}
}
}
@@ -10334,7 +10510,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x0x11010000xxxxxxx1xxxxxxxxxxxxx
addpt. */
- return 3358;
+ return 3374;
}
else
{
@@ -10342,7 +10518,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
x1x11010000xxxxxxx1xxxxxxxxxxxxx
subpt. */
- return 3359;
+ return 3375;
}
}
}
@@ -11260,7 +11436,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xxxx1011x11xxxxx0xxxxxxxxxxxxxxx
maddpt. */
- return 3360;
+ return 3376;
}
else
{
@@ -11268,7 +11444,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
xxxx1011x11xxxxx1xxxxxxxxxxxxxxx
msubpt. */
- return 3361;
+ return 3377;
}
}
}
@@ -11353,7 +11529,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
000001x0xx000100000xxxxxxxxxxxxx
addpt. */
- return 3362;
+ return 3378;
}
else
{
@@ -11460,7 +11636,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
000001x0xx000101000xxxxxxxxxxxxx
subpt. */
- return 3364;
+ return 3380;
}
else
{
@@ -11665,7 +11841,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
000001x0xx1xxxxx000010xxxxxxxxxx
addpt. */
- return 3363;
+ return 3379;
}
else
{
@@ -11706,7 +11882,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
000001x0xx1xxxxx000011xxxxxxxxxx
subpt. */
- return 3365;
+ return 3381;
}
else
{
@@ -13364,7 +13540,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
010001x0xx0xxxxx110100xxxxxxxxxx
mlapt. */
- return 3367;
+ return 3383;
}
}
else
@@ -13394,7 +13570,7 @@ aarch64_opcode_lookup_1 (uint32_t word)
10987654321098765432109876543210
010001x0xx0xxxxx110110xxxxxxxxxx
madpt. */
- return 3366;
+ return 3382;
}
}
}
diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h
index 464d931..43153f4 100644
--- a/opcodes/aarch64-tbl.h
+++ b/opcodes/aarch64-tbl.h
@@ -6520,6 +6520,22 @@ const struct aarch64_opcode aarch64_opcode_table[] =
FP8_SVE2_INSN ("fcvtn", 0x650a3000, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BH, 0, 0),
FP8_SVE2_INSN ("fcvtnb", 0x650a3400, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BS, 0, 0),
FP8_SVE2_INSN ("fcvtnt", 0x650a3c00, 0xfffffc20, sve_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BS, 0, 0),
+ FP8_SME2_INSN ("bf1cvt", 0xc166e000, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("bf2cvt", 0xc1e6e000, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("bf1cvtl", 0xc166e001, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("bf2cvtl", 0xc1e6e001, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("bfcvt", 0xc164e000, 0xfffffc20, sme_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BH, 0, 0),
+ FP8_SME2_INSN ("f1cvt", 0xc126e000, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("f2cvt", 0xc1a6e000, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("f1cvtl", 0xc126e001, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("f2cvtl", 0xc1a6e001, 0xfffffc01, sme_misc, 0, OP2 (SME_Zdnx2, SVE_Zn), OP_SVE_HB, 0, 0),
+ FP8_SME2_INSN ("fcvt", 0xc124e000, 0xfffffc20, sme_misc, 0, OP2 (SVE_Zd, SME_Znx2), OP_SVE_BH, 0, 0),
+ FP8_SME2_INSN ("fcvt", 0xc134e000, 0xfffffc60, sme_misc, 0, OP2 (SVE_Zd, SME_Znx4), OP_SVE_BS, 0, 0),
+ FP8_SME2_INSN ("fcvtn", 0xc134e020, 0xfffffc60, sme_misc, 0, OP2 (SVE_Zd, SME_Znx4), OP_SVE_BS, 0, 0),
+ FP8_SME2_INSN ("fscale", 0xc120a180, 0xff30ffe1, sme_size_22_hsd, 0, OP3 (SME_Zdnx2, SME_Zdnx2, SME_Zm), OP_SVE_VVV_HSD, 0, 1),
+ FP8_SME2_INSN ("fscale", 0xc120a980, 0xff30ffe3, sme_size_22_hsd, 0, OP3 (SME_Zdnx4, SME_Zdnx4, SME_Zm), OP_SVE_VVV_HSD, 0, 1),
+ FP8_SME2_INSN ("fscale", 0xc120b180, 0xff21ffe1, sme_size_22_hsd, 0, OP3 (SME_Zdnx2, SME_Zdnx2, SME_Zmx2), OP_SVE_VVV_HSD, 0, 1),
+ FP8_SME2_INSN ("fscale", 0xc120b980, 0xff23ffe3, sme_size_22_hsd, 0, OP3 (SME_Zdnx4, SME_Zdnx4, SME_Zmx4), OP_SVE_VVV_HSD, 0, 1),
/* Checked Pointer Arithmetic Instructions. */
CPA_INSN ("addpt", 0x9a002000, 0xffe0e000, aarch64_misc, OP3 (Rd_SP, Rn_SP, Rm_LSL), QL_I3SAMEX),