summaryrefslogtreecommitdiff
path: root/opcodes/aarch64-dis-2.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2020-01-03 10:12:49 +0100
committerJan Beulich <jbeulich@suse.com>2020-01-03 10:12:49 +0100
commitf4950f76fa56bd60314f05620c39fb31e96bb088 (patch)
treecbf63ab1f340a2528f40b48b590b3a38f92ab264 /opcodes/aarch64-dis-2.c
parent4bb7a87e74e66a7d32cbd39e6fc8e54f25a5ad0d (diff)
Arm64: correct 64-bit element fmmla encoding
There's just one bit of difference to the 32-bit element form, as per the documentation.
Diffstat (limited to 'opcodes/aarch64-dis-2.c')
-rw-r--r--opcodes/aarch64-dis-2.c90
1 files changed, 45 insertions, 45 deletions
diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c
index 3de1dc3dca..950a5f2e99 100644
--- a/opcodes/aarch64-dis-2.c
+++ b/opcodes/aarch64-dis-2.c
@@ -8839,9 +8839,9 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 22) & 0x1) == 0)
+ if (((word >> 20) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
@@ -8855,69 +8855,58 @@ aarch64_opcode_lookup_1 (uint32_t word)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x00001xxxx111xxxxxxxxxxxxx
- stnt1b. */
- return 1933;
+ x11001x00100xxxx111xxxxxxxxxxxxx
+ st1b. */
+ return 1872;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x01001xxxx111xxxxxxxxxxxxx
- stnt1h. */
- return 1937;
+ x11001x01100xxxx111xxxxxxxxxxxxx
+ st1h. */
+ return 1893;
}
}
}
else
{
- if (((word >> 23) & 0x1) == 0)
+ if (((word >> 22) & 0x1) == 0)
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 23) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x00100xxxx111xxxxxxxxxxxxx
- st1b. */
- return 1872;
+ x11001x00001xxxx111xxxxxxxxxxxxx
+ stnt1b. */
+ return 1933;
}
else
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x00101xxxx111xxxxxxxxxxxxx
- st3b. */
- return 1917;
+ x11001x01001xxxx111xxxxxxxxxxxxx
+ stnt1h. */
+ return 1937;
}
}
else
{
- if (((word >> 31) & 0x1) == 0)
+ if (((word >> 23) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- 011001x0110xxxxx111xxxxxxxxxxxxx
- fmmla. */
- return 2398;
+ x11001x00101xxxx111xxxxxxxxxxxxx
+ st3b. */
+ return 1917;
}
else
{
- if (((word >> 20) & 0x1) == 0)
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 111001x01100xxxx111xxxxxxxxxxxxx
- st1h. */
- return 1893;
- }
- else
- {
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- 111001x01101xxxx111xxxxxxxxxxxxx
- st3h. */
- return 1921;
- }
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ x11001x01101xxxx111xxxxxxxxxxxxx
+ st3h. */
+ return 1921;
}
}
}
@@ -9780,21 +9769,32 @@ aarch64_opcode_lookup_1 (uint32_t word)
}
else
{
- if (((word >> 20) & 0x1) == 0)
+ if (((word >> 31) & 0x1) == 0)
{
/* 33222222222211111111110000000000
10987654321098765432109876543210
- x11001x01110xxxx111xxxxxxxxxxxxx
- st1h. */
- return 1895;
+ 011001x0111xxxxx111xxxxxxxxxxxxx
+ fmmla. */
+ return 2398;
}
else
{
- /* 33222222222211111111110000000000
- 10987654321098765432109876543210
- x11001x01111xxxx111xxxxxxxxxxxxx
- st4h. */
- return 1929;
+ if (((word >> 20) & 0x1) == 0)
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x01110xxxx111xxxxxxxxxxxxx
+ st1h. */
+ return 1895;
+ }
+ else
+ {
+ /* 33222222222211111111110000000000
+ 10987654321098765432109876543210
+ 111001x01111xxxx111xxxxxxxxxxxxx
+ st4h. */
+ return 1929;
+ }
}
}
}