diff options
author | Jan Beulich <jbeulich@suse.com> | 2020-01-03 10:12:49 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2020-01-03 10:12:49 +0100 |
commit | f4950f76fa56bd60314f05620c39fb31e96bb088 (patch) | |
tree | cbf63ab1f340a2528f40b48b590b3a38f92ab264 /opcodes/aarch64-dis-2.c | |
parent | 4bb7a87e74e66a7d32cbd39e6fc8e54f25a5ad0d (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.c | 90 |
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; + } } } } |