aboutsummaryrefslogtreecommitdiff
path: root/opcodes/aarch64-dis-2.c
diff options
context:
space:
mode:
Diffstat (limited to 'opcodes/aarch64-dis-2.c')
-rw-r--r--opcodes/aarch64-dis-2.c336
1 files changed, 268 insertions, 68 deletions
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index 17edc76..cd1f6b9 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -8660,11 +8660,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 16) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 011001x0100xxxx0101xxxxxxxxxxxxx
- fcvtnt. */
- return 2068;
+ if (((word >> 17) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0100xxx00101xxxxxxxxxxxxx
+ fcvtnt. */
+ return 2068;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0100xxx10101xxxxxxxxxxxxx
+ bfcvtnt. */
+ return 2394;
+ }
}
else
{
@@ -9118,19 +9129,52 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 23) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0011xxxxx010xxxxxxxxxxxxx
- st1b. */
- return 1868;
+ if (((word >> 31) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0011xxxxx010xxxxxxxxxxxxx
+ bfdot. */
+ return 2391;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0011xxxxx010xxxxxxxxxxxxx
+ st1b. */
+ return 1868;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0111xxxxx010xxxxxxxxxxxxx
- st1h. */
- return 1889;
+ if (((word >> 31) & 0x1) == 0)
+ {
+ if (((word >> 10) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx010xx0xxxxxxxxxx
+ bfmlalb. */
+ return 2398;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx010xx1xxxxxxxxxx
+ bfmlalt. */
+ return 2397;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0111xxxxx010xxxxxxxxxxxxx
+ st1h. */
+ return 1889;
+ }
}
}
}
@@ -9169,11 +9213,44 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x0x11xxxxx1x0xxxxxxxxxxxxx
- st1h. */
- return 1890;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x11001x0011xxxxx1x0xxxxxxxxxxxxx
+ bfdot. */
+ return 2390;
+ }
+ else
+ {
+ if (((word >> 31) & 0x1) == 0)
+ {
+ if (((word >> 10) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx1x0xx0xxxxxxxxxx
+ bfmlalb. */
+ return 2396;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x0111xxxxx1x0xx1xxxxxxxxxx
+ bfmlalt. */
+ return 2395;
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x0111xxxxx1x0xxxxxxxxxxxxx
+ st1h. */
+ return 1890;
+ }
+ }
}
}
}
@@ -9529,9 +9606,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
if (((word >> 23) & 0x1) == 0)
{
@@ -9556,50 +9633,61 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x00110xxxx111xxxxxxxxxxxxx
- st1b. */
- return 1874;
+ x11001x00011xxxx111xxxxxxxxxxxxx
+ st2b. */
+ return 1909;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x01110xxxx111xxxxxxxxxxxxx
- st1h. */
- return 1895;
+ x11001x01011xxxx111xxxxxxxxxxxxx
+ st2h. */
+ return 1913;
}
}
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 23) & 0x1) == 0)
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 31) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x00011xxxx111xxxxxxxxxxxxx
- st2b. */
- return 1909;
+ 011001x0011xxxxx111xxxxxxxxxxxxx
+ bfmmla. */
+ return 2392;
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x01011xxxx111xxxxxxxxxxxxx
- st2h. */
- return 1913;
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x00110xxxx111xxxxxxxxxxxxx
+ st1b. */
+ return 1874;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x00111xxxx111xxxxxxxxxxxxx
+ st4b. */
+ return 1925;
+ }
}
}
else
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x00111xxxx111xxxxxxxxxxxxx
- st4b. */
- return 1925;
+ x11001x01110xxxx111xxxxxxxxxxxxx
+ st1h. */
+ return 1895;
}
else
{
@@ -13993,11 +14081,22 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
if (((word >> 22) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 011001x1x0001x10101xxxxxxxxxxxxx
- fcvtx. */
- return 2070;
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x100001x10101xxxxxxxxxxxxx
+ fcvtx. */
+ return 2070;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 011001x110001x10101xxxxxxxxxxxxx
+ bfcvt. */
+ return 2393;
+ }
}
else
{
@@ -16503,11 +16602,55 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- xx101110xx0xxxxx1x1xx1xxxxxxxxxx
- fcadd. */
- return 373;
+ if (((word >> 11) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ xx101110xx0xxxxx1x1x01xxxxxxxxxx
+ fcadd. */
+ return 373;
+ }
+ else
+ {
+ if (((word >> 12) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ xx101110xx0xxxxx1x1011xxxxxxxxxx
+ bfmmla. */
+ return 2401;
+ }
+ else
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ xx1011100x0xxxxx1x1111xxxxxxxxxx
+ bfdot. */
+ return 2399;
+ }
+ else
+ {
+ if (((word >> 30) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x01011101x0xxxxx1x1111xxxxxxxxxx
+ bfmlalb. */
+ return 2406;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x11011101x0xxxxx1x1111xxxxxxxxxx
+ bfmlalt. */
+ return 2405;
+ }
+ }
+ }
+ }
}
}
}
@@ -17060,21 +17203,43 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 30) & 0x1) == 0)
+ if (((word >> 23) & 0x1) == 0)
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 00001110xx1xxxx1011010xxxxxxxxxx
- fcvtn. */
- return 178;
+ if (((word >> 30) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000011100x1xxxx1011010xxxxxxxxxx
+ fcvtn. */
+ return 178;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 010011100x1xxxx1011010xxxxxxxxxx
+ fcvtn2. */
+ return 179;
+ }
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 01001110xx1xxxx1011010xxxxxxxxxx
- fcvtn2. */
- return 179;
+ if (((word >> 30) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 000011101x1xxxx1011010xxxxxxxxxx
+ bfcvtn. */
+ return 2402;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 010011101x1xxxx1011010xxxxxxxxxx
+ bfcvtn2. */
+ return 2403;
+ }
}
}
}
@@ -22165,11 +22330,44 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- xxx01111xxxxxxxx1111x0xxxxxxxxxx
- sqrdmlsh. */
- return 130;
+ if (((word >> 29) & 0x1) == 0)
+ {
+ if (((word >> 23) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ xx0011110xxxxxxx1111x0xxxxxxxxxx
+ bfdot. */
+ return 2400;
+ }
+ else
+ {
+ if (((word >> 30) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x00011111xxxxxxx1111x0xxxxxxxxxx
+ bfmlalb. */
+ return 2408;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x10011111xxxxxxx1111x0xxxxxxxxxx
+ bfmlalt. */
+ return 2407;
+ }
+ }
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ xx101111xxxxxxxx1111x0xxxxxxxxxx
+ sqrdmlsh. */
+ return 130;
+ }
}
}
}
@@ -22787,6 +22985,8 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode)
case 823: return NULL; /* fsqrt --> NULL. */
case 831: value = 832; break; /* frintz --> frintz. */
case 832: return NULL; /* frintz --> NULL. */
+ case 824: value = 2404; break; /* fcvt --> bfcvt. */
+ case 2404: return NULL; /* bfcvt --> NULL. */
case 833: value = 834; break; /* frinta --> frinta. */
case 834: return NULL; /* frinta --> NULL. */
case 835: value = 836; break; /* frintx --> frintx. */