From 290806fd94099361f28e012cebca058c8c4f0e45 Mon Sep 17 00:00:00 2001 From: Matthew Wahab Date: Tue, 2 Jun 2015 11:29:15 +0100 Subject: [PATCH] [AArch64] Support for ARMv8.1a Limited Ordering Regions extension 2015-06-02 Matthew Wahab include/ * aarch64.h (AARCH64_FEATURE_LOR): New. opcodes/ * aarch64-tbl.h (aarch64_feature_lor): New. (LOR): New. (aarch64_opdocde_table): Add "ldlar", "ldlarb", "ldlarh", "stllr", "stllrb", "stllrh". * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. * aarch64-opc-2.c: Regenerate. gas/ * config/tc-aarch64.c (aarch64_features): Add "lor". * doc/c-aarch64.c (Aarch64 Extensions): Add "lor" to list of architecture extensions. gas/testsuite/ * lor-directive.d: New. * lor.d: New. * lor.s: New. --- gas/ChangeLog | 6 + gas/config/tc-aarch64.c | 1 + gas/doc/c-aarch64.texi | 2 + gas/testsuite/ChangeLog | 6 + gas/testsuite/gas/aarch64/lor-directive.d | 25 ++ gas/testsuite/gas/aarch64/lor.d | 23 ++ gas/testsuite/gas/aarch64/lor.s | 43 +++ include/opcode/ChangeLog | 4 + include/opcode/aarch64.h | 1 + opcodes/ChangeLog | 10 + opcodes/aarch64-asm-2.c | 250 ++++++------- opcodes/aarch64-dis-2.c | 585 ++++++++++++++++-------------- opcodes/aarch64-opc-2.c | 24 +- opcodes/aarch64-tbl.h | 10 + 14 files changed, 589 insertions(+), 401 deletions(-) create mode 100644 gas/testsuite/gas/aarch64/lor-directive.d create mode 100644 gas/testsuite/gas/aarch64/lor.d create mode 100644 gas/testsuite/gas/aarch64/lor.s diff --git a/gas/ChangeLog b/gas/ChangeLog index dd2f446..2401a44 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2015-06-02 Matthew Wahab + + * config/tc-aarch64.c (aarch64_features): Add "lor". + * doc/c-aarch64.c (Aarch64 Extensions): Add "lor" to list of + architecture extensions. + 2015-06-01 Matthew Wahab * config/tc-aarch64.c (parse_sys_reg): New parameter. Check target diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 707936d..28fb41c 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -7400,6 +7400,7 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"lse", AARCH64_FEATURE (AARCH64_FEATURE_LSE, 0)}, {"simd", AARCH64_FEATURE (AARCH64_FEATURE_SIMD, 0)}, {"pan", AARCH64_FEATURE (AARCH64_FEATURE_PAN, 0)}, + {"lor", AARCH64_FEATURE (AARCH64_FEATURE_LOR, 0)}, {NULL, AARCH64_ARCH_NONE} }; diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index f790c7a..2b5689c 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -135,6 +135,8 @@ automatically cause those extensions to be disabled. @tab Enable Advanced SIMD extensions. This implies @code{fp}. @item @code{pan} @tab ARMv8-A @tab ARMv8-A or later @tab Enable Privileged Access Never support. +@item @code{lor} @tab ARMv8-A @tab ARMv8-A or later + @tab Enable Limited Ordering Regions extensions. @end multitable @node AArch64 Syntax diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 233e138..6e2ea2d 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-06-02 Matthew Wahab + + * lor-directive.d: New. + * lor.d: New. + * lor.s: New + 2015-06-01 Matthew Wahab * pan-directive.d: New. diff --git a/gas/testsuite/gas/aarch64/lor-directive.d b/gas/testsuite/gas/aarch64/lor-directive.d new file mode 100644 index 0000000..3238bb9 --- /dev/null +++ b/gas/testsuite/gas/aarch64/lor-directive.d @@ -0,0 +1,25 @@ +#objdump: -dr +#as: --defsym DIRECTIVE=1 +#source: lor.s + +.*: file format .* + + +Disassembly of section \.text: + +0000000000000000 <.text>: + 0: 889f7c00 stllr w0, \[x0\] + 4: c89f7c00 stllr x0, \[x0\] + 8: 889f7c01 stllr w1, \[x0\] + c: c89f7c22 stllr x2, \[x1\] + 10: 489f7c43 stllrh w3, \[x2\] + 14: 089f7c64 stllrb w4, \[x3\] + 18: 089f7fe5 stllrb w5, \[sp\] + 1c: 88df7c00 ldlar w0, \[x0\] + 20: c8df7c00 ldlar x0, \[x0\] + 24: 88df7c01 ldlar w1, \[x0\] + 28: c8df7c22 ldlar x2, \[x1\] + 2c: 08df7c43 ldlarb w3, \[x2\] + 30: 48df7c64 ldlarh w4, \[x3\] + 34: 88df7fe5 ldlar w5, \[sp\] + diff --git a/gas/testsuite/gas/aarch64/lor.d b/gas/testsuite/gas/aarch64/lor.d new file mode 100644 index 0000000..006983b --- /dev/null +++ b/gas/testsuite/gas/aarch64/lor.d @@ -0,0 +1,23 @@ +#objdump: -dr +#as: -march=armv8-a+lor + +.*: file format .* + + +Disassembly of section \.text: + +0000000000000000 <.text>: + 0: 889f7c00 stllr w0, \[x0\] + 4: c89f7c00 stllr x0, \[x0\] + 8: 889f7c01 stllr w1, \[x0\] + c: c89f7c22 stllr x2, \[x1\] + 10: 489f7c43 stllrh w3, \[x2\] + 14: 089f7c64 stllrb w4, \[x3\] + 18: 089f7fe5 stllrb w5, \[sp\] + 1c: 88df7c00 ldlar w0, \[x0\] + 20: c8df7c00 ldlar x0, \[x0\] + 24: 88df7c01 ldlar w1, \[x0\] + 28: c8df7c22 ldlar x2, \[x1\] + 2c: 08df7c43 ldlarb w3, \[x2\] + 30: 48df7c64 ldlarh w4, \[x3\] + 34: 88df7fe5 ldlar w5, \[sp\] diff --git a/gas/testsuite/gas/aarch64/lor.s b/gas/testsuite/gas/aarch64/lor.s new file mode 100644 index 0000000..3d296ab --- /dev/null +++ b/gas/testsuite/gas/aarch64/lor.s @@ -0,0 +1,43 @@ +/* lor.s Test file for AArch64 LOR extension instructions. + + Copyright (C) 2015 Free Software Foundation, Inc. Contributed by ARM Ltd. + + This file is part of GAS. + + GAS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the license, or + (at your option) any later version. + + GAS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING3. If not, + see . */ + + .text + .ifdef DIRECTIVE + .arch_extension lor + .endif + + stllr w0, [x0] + stllr x0, [x0] + + stllr w1, [x0] + stllr x2, [x1] + stllrh w3, [x2] + stllrb w4, [x3] + stllrb w5, [sp] + + ldlar w0, [x0] + ldlar x0, [x0] + + ldlar w1, [x0] + ldlar x2, [x1] + ldlarb w3, [x2] + ldlarh w4, [x3] + ldlar w5, [sp] + diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index 5b8a1ff..0154b89 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -1,3 +1,7 @@ +2015-06-02 Matthew Wahab + + * aarch64.h (AARCH64_FEATURE_LOR): New. + 2015-06-01 Matthew Wahab * aarch64.h (AARCH64_FEATURE_PAN): New. diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 8df82a1..764c6ec 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -40,6 +40,7 @@ typedef uint32_t aarch64_insn; #define AARCH64_FEATURE_CRC 0x00080000 /* CRC instructions. */ #define AARCH64_FEATURE_LSE 0x00100000 /* LSE instructions. */ #define AARCH64_FEATURE_PAN 0x00200000 /* PAN instructions. */ +#define AARCH64_FEATURE_LOR 0x00400000 /* LOR instructions. */ /* Architectures are the sum of the base and extensions. */ #define AARCH64_ARCH_V8 AARCH64_FEATURE (AARCH64_FEATURE_V8, \ diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index f4688c8..32b0456 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,13 @@ +2015-06-02 Matthew Wahab + + * aarch64-tbl.h (aarch64_feature_lor): New. + (LOR): New. + (aarch64_opdocde_table): Add "ldlar", "ldlarb", "ldlarh", "stllr", + "stllrb", "stllrh". + * aarch64-asm-2.c: Regenerate. + * aarch64-dis-2.c: Regenerate. + * aarch64-opc-2.c: Regenerate. + 2015-06-01 Matthew Wahab * aarch64-opc.c (F_ARCHEXT): New. diff --git a/opcodes/aarch64-asm-2.c b/opcodes/aarch64-asm-2.c index dd69dbe..4894f34 100644 --- a/opcodes/aarch64-asm-2.c +++ b/opcodes/aarch64-asm-2.c @@ -155,188 +155,188 @@ aarch64_find_real_opcode (const aarch64_opcode *opcode) case 595: /* ror */ value = 594; /* --> extr. */ break; - case 746: /* bic */ - value = 745; /* --> and. */ + case 752: /* bic */ + value = 751; /* --> and. */ break; - case 748: /* mov */ - value = 747; /* --> orr. */ + case 754: /* mov */ + value = 753; /* --> orr. */ break; - case 751: /* tst */ - value = 750; /* --> ands. */ + case 757: /* tst */ + value = 756; /* --> ands. */ break; - case 756: /* uxtw */ - case 755: /* mov */ - value = 754; /* --> orr. */ + case 762: /* uxtw */ + case 761: /* mov */ + value = 760; /* --> orr. */ break; - case 758: /* mvn */ - value = 757; /* --> orn. */ + case 764: /* mvn */ + value = 763; /* --> orn. */ break; - case 762: /* tst */ - value = 761; /* --> ands. */ + case 768: /* tst */ + value = 767; /* --> ands. */ break; - case 888: /* staddb */ - value = 792; /* --> ldaddb. */ + case 894: /* staddb */ + value = 798; /* --> ldaddb. */ break; - case 889: /* staddh */ - value = 793; /* --> ldaddh. */ + case 895: /* staddh */ + value = 799; /* --> ldaddh. */ break; - case 890: /* stadd */ - value = 794; /* --> ldadd. */ + case 896: /* stadd */ + value = 800; /* --> ldadd. */ break; - case 891: /* staddlb */ - value = 796; /* --> ldaddlb. */ + case 897: /* staddlb */ + value = 802; /* --> ldaddlb. */ break; - case 892: /* staddlh */ - value = 799; /* --> ldaddlh. */ + case 898: /* staddlh */ + value = 805; /* --> ldaddlh. */ break; - case 893: /* staddl */ - value = 802; /* --> ldaddl. */ + case 899: /* staddl */ + value = 808; /* --> ldaddl. */ break; - case 894: /* stclrb */ - value = 804; /* --> ldclrb. */ + case 900: /* stclrb */ + value = 810; /* --> ldclrb. */ break; - case 895: /* stclrh */ - value = 805; /* --> ldclrh. */ + case 901: /* stclrh */ + value = 811; /* --> ldclrh. */ break; - case 896: /* stclr */ - value = 806; /* --> ldclr. */ + case 902: /* stclr */ + value = 812; /* --> ldclr. */ break; - case 897: /* stclrlb */ - value = 808; /* --> ldclrlb. */ + case 903: /* stclrlb */ + value = 814; /* --> ldclrlb. */ break; - case 898: /* stclrlh */ - value = 811; /* --> ldclrlh. */ + case 904: /* stclrlh */ + value = 817; /* --> ldclrlh. */ break; - case 899: /* stclrl */ - value = 814; /* --> ldclrl. */ + case 905: /* stclrl */ + value = 820; /* --> ldclrl. */ break; - case 900: /* steorb */ - value = 816; /* --> ldeorb. */ + case 906: /* steorb */ + value = 822; /* --> ldeorb. */ break; - case 901: /* steorh */ - value = 817; /* --> ldeorh. */ + case 907: /* steorh */ + value = 823; /* --> ldeorh. */ break; - case 902: /* steor */ - value = 818; /* --> ldeor. */ + case 908: /* steor */ + value = 824; /* --> ldeor. */ break; - case 903: /* steorlb */ - value = 820; /* --> ldeorlb. */ + case 909: /* steorlb */ + value = 826; /* --> ldeorlb. */ break; - case 904: /* steorlh */ - value = 823; /* --> ldeorlh. */ + case 910: /* steorlh */ + value = 829; /* --> ldeorlh. */ break; - case 905: /* steorl */ - value = 826; /* --> ldeorl. */ + case 911: /* steorl */ + value = 832; /* --> ldeorl. */ break; - case 906: /* stsetb */ - value = 828; /* --> ldsetb. */ + case 912: /* stsetb */ + value = 834; /* --> ldsetb. */ break; - case 907: /* stseth */ - value = 829; /* --> ldseth. */ + case 913: /* stseth */ + value = 835; /* --> ldseth. */ break; - case 908: /* stset */ - value = 830; /* --> ldset. */ + case 914: /* stset */ + value = 836; /* --> ldset. */ break; - case 909: /* stsetlb */ - value = 832; /* --> ldsetlb. */ + case 915: /* stsetlb */ + value = 838; /* --> ldsetlb. */ break; - case 910: /* stsetlh */ - value = 835; /* --> ldsetlh. */ + case 916: /* stsetlh */ + value = 841; /* --> ldsetlh. */ break; - case 911: /* stsetl */ - value = 838; /* --> ldsetl. */ + case 917: /* stsetl */ + value = 844; /* --> ldsetl. */ break; - case 912: /* stsmaxb */ - value = 840; /* --> ldsmaxb. */ + case 918: /* stsmaxb */ + value = 846; /* --> ldsmaxb. */ break; - case 913: /* stsmaxh */ - value = 841; /* --> ldsmaxh. */ + case 919: /* stsmaxh */ + value = 847; /* --> ldsmaxh. */ break; - case 914: /* stsmax */ - value = 842; /* --> ldsmax. */ + case 920: /* stsmax */ + value = 848; /* --> ldsmax. */ break; - case 915: /* stsmaxlb */ - value = 844; /* --> ldsmaxlb. */ + case 921: /* stsmaxlb */ + value = 850; /* --> ldsmaxlb. */ break; - case 916: /* stsmaxlh */ - value = 847; /* --> ldsmaxlh. */ + case 922: /* stsmaxlh */ + value = 853; /* --> ldsmaxlh. */ break; - case 917: /* stsmaxl */ - value = 850; /* --> ldsmaxl. */ + case 923: /* stsmaxl */ + value = 856; /* --> ldsmaxl. */ break; - case 918: /* stsminb */ - value = 852; /* --> ldsminb. */ + case 924: /* stsminb */ + value = 858; /* --> ldsminb. */ break; - case 919: /* stsminh */ - value = 853; /* --> ldsminh. */ + case 925: /* stsminh */ + value = 859; /* --> ldsminh. */ break; - case 920: /* stsmin */ - value = 854; /* --> ldsmin. */ + case 926: /* stsmin */ + value = 860; /* --> ldsmin. */ break; - case 921: /* stsminlb */ - value = 856; /* --> ldsminlb. */ + case 927: /* stsminlb */ + value = 862; /* --> ldsminlb. */ break; - case 922: /* stsminlh */ - value = 859; /* --> ldsminlh. */ + case 928: /* stsminlh */ + value = 865; /* --> ldsminlh. */ break; - case 923: /* stsminl */ - value = 862; /* --> ldsminl. */ + case 929: /* stsminl */ + value = 868; /* --> ldsminl. */ break; - case 924: /* stumaxb */ - value = 864; /* --> ldumaxb. */ + case 930: /* stumaxb */ + value = 870; /* --> ldumaxb. */ break; - case 925: /* stumaxh */ - value = 865; /* --> ldumaxh. */ + case 931: /* stumaxh */ + value = 871; /* --> ldumaxh. */ break; - case 926: /* stumax */ - value = 866; /* --> ldumax. */ + case 932: /* stumax */ + value = 872; /* --> ldumax. */ break; - case 927: /* stumaxlb */ - value = 868; /* --> ldumaxlb. */ + case 933: /* stumaxlb */ + value = 874; /* --> ldumaxlb. */ break; - case 928: /* stumaxlh */ - value = 871; /* --> ldumaxlh. */ + case 934: /* stumaxlh */ + value = 877; /* --> ldumaxlh. */ break; - case 929: /* stumaxl */ - value = 874; /* --> ldumaxl. */ + case 935: /* stumaxl */ + value = 880; /* --> ldumaxl. */ break; - case 930: /* stuminb */ - value = 876; /* --> lduminb. */ + case 936: /* stuminb */ + value = 882; /* --> lduminb. */ break; - case 931: /* stuminh */ - value = 877; /* --> lduminh. */ + case 937: /* stuminh */ + value = 883; /* --> lduminh. */ break; - case 932: /* stumin */ - value = 878; /* --> ldumin. */ + case 938: /* stumin */ + value = 884; /* --> ldumin. */ break; - case 933: /* stuminlb */ - value = 880; /* --> lduminlb. */ + case 939: /* stuminlb */ + value = 886; /* --> lduminlb. */ break; - case 934: /* stuminlh */ - value = 883; /* --> lduminlh. */ + case 940: /* stuminlh */ + value = 889; /* --> lduminlh. */ break; - case 935: /* stuminl */ - value = 886; /* --> lduminl. */ + case 941: /* stuminl */ + value = 892; /* --> lduminl. */ break; - case 937: /* mov */ - value = 936; /* --> movn. */ + case 943: /* mov */ + value = 942; /* --> movn. */ break; - case 939: /* mov */ - value = 938; /* --> movz. */ + case 945: /* mov */ + value = 944; /* --> movz. */ break; - case 950: /* sevl */ - case 949: /* sev */ - case 948: /* wfi */ - case 947: /* wfe */ - case 946: /* yield */ - case 945: /* nop */ - value = 944; /* --> hint. */ + case 956: /* sevl */ + case 955: /* sev */ + case 954: /* wfi */ + case 953: /* wfe */ + case 952: /* yield */ + case 951: /* nop */ + value = 950; /* --> hint. */ break; - case 959: /* tlbi */ - case 958: /* ic */ - case 957: /* dc */ - case 956: /* at */ - value = 955; /* --> sys. */ + case 965: /* tlbi */ + case 964: /* ic */ + case 963: /* dc */ + case 962: /* at */ + value = 961; /* --> sys. */ break; default: return NULL; } diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index ded9292..40ccc08 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -40,7 +40,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx0000xxx0 adr. */ - return 941; + return 947; } else { @@ -48,7 +48,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx0000xxx1 adrp. */ - return 942; + return 948; } } else @@ -143,7 +143,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx0xxxxx100x00100x0 casp. */ - return 776; + return 782; } else { @@ -195,7 +195,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx100x00100x0 caspl. */ - return 778; + return 784; } else { @@ -214,7 +214,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx00x00101xx stnp. */ - return 727; + return 733; } } else @@ -223,32 +223,54 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxxxxxxxxxxxxxx0xxxxxx01x0010000 - casb. */ - return 764; + xxxxxxxxxxxxxxx0xxxxx001x00100x0 + stllrb. */ + return 731; } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxxxxxxxxxxxxxx0xxxxxx01x0010010 - cash. */ - return 765; + xxxxxxxxxxxxxxx0xxxxx001x00100x1 + stllr. */ + return 730; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxxxxxxxxxxxxxx0xxxxxx01x00100x1 - cas. */ - return 766; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx101x0010000 + casb. */ + return 770; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx101x0010010 + cash. */ + return 771; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx101x00100x1 + cas. */ + return 772; + } } } else @@ -293,7 +315,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx101x0010000 caslb. */ - return 768; + return 774; } else { @@ -301,7 +323,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx101x0010010 caslh. */ - return 771; + return 777; } } else @@ -310,7 +332,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx101x00100x1 casl. */ - return 774; + return 780; } } } @@ -321,7 +343,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx01x00101xx stp. */ - return 736; + return 742; } } } @@ -371,7 +393,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx0xxxxx110x00100x0 caspa. */ - return 777; + return 783; } else { @@ -423,7 +445,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx110x00100x0 caspal. */ - return 779; + return 785; } else { @@ -444,7 +466,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx10x001010x ldnp. */ - return 728; + return 734; } else { @@ -452,7 +474,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx10x001011x ldpsw. */ - return 735; + return 741; } } } @@ -462,32 +484,65 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 15) & 0x1) == 0) { - if (((word >> 31) & 0x1) == 0) + if (((word >> 21) & 0x1) == 0) { - if (((word >> 30) & 0x1) == 0) + if (((word >> 31) & 0x1) == 0) { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxxxxxxxxxxxxxx0xxxxxx11x0010000 - casab. */ - return 767; + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx011x0010000 + ldlarb. */ + return 728; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx011x0010010 + ldlarh. */ + return 729; + } } else { /* 33222222222211111111110000000000 10987654321098765432109876543210 - xxxxxxxxxxxxxxx0xxxxxx11x0010010 - casah. */ - return 770; + xxxxxxxxxxxxxxx0xxxxx011x00100x1 + ldlar. */ + return 727; } } else { - /* 33222222222211111111110000000000 - 10987654321098765432109876543210 - xxxxxxxxxxxxxxx0xxxxxx11x00100x1 - casa. */ - return 773; + if (((word >> 31) & 0x1) == 0) + { + if (((word >> 30) & 0x1) == 0) + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx111x0010000 + casab. */ + return 773; + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx111x0010010 + casah. */ + return 776; + } + } + else + { + /* 33222222222211111111110000000000 + 10987654321098765432109876543210 + xxxxxxxxxxxxxxx0xxxxx111x00100x1 + casa. */ + return 779; + } } } else @@ -532,7 +587,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx111x0010000 casalb. */ - return 769; + return 775; } else { @@ -540,7 +595,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx111x0010010 casalh. */ - return 772; + return 778; } } else @@ -549,7 +604,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxx1xxxxx111x00100x1 casal. */ - return 775; + return 781; } } } @@ -562,7 +617,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx11x001010x ldp. */ - return 737; + return 743; } else { @@ -570,7 +625,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx11x001011x ldpsw. */ - return 740; + return 746; } } } @@ -588,7 +643,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx000110x0 ldr. */ - return 741; + return 747; } else { @@ -598,7 +653,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx00011001 ldrsw. */ - return 743; + return 749; } else { @@ -606,7 +661,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx00011011 prfm. */ - return 744; + return 750; } } } @@ -745,7 +800,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx10000011100 ldaddb. */ - return 792; + return 798; } else { @@ -753,7 +808,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx10000011110 ldaddh. */ - return 793; + return 799; } } else @@ -762,7 +817,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx100000111x1 ldadd. */ - return 794; + return 800; } } else @@ -775,7 +830,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx10100011100 ldaddab. */ - return 795; + return 801; } else { @@ -783,7 +838,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx10100011110 ldaddah. */ - return 798; + return 804; } } else @@ -792,7 +847,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx101000111x1 ldadda. */ - return 801; + return 807; } } } @@ -808,7 +863,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx11000011100 ldaddlb. */ - return 796; + return 802; } else { @@ -816,7 +871,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx11000011110 ldaddlh. */ - return 799; + return 805; } } else @@ -825,7 +880,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx110000111x1 ldaddl. */ - return 802; + return 808; } } else @@ -838,7 +893,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx11100011100 ldaddalb. */ - return 797; + return 803; } else { @@ -846,7 +901,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx11100011110 ldaddalh. */ - return 800; + return 806; } } else @@ -855,7 +910,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000000xxxxx111000111x1 ldaddal. */ - return 803; + return 809; } } } @@ -874,7 +929,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx10000011100 swpb. */ - return 780; + return 786; } else { @@ -882,7 +937,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx10000011110 swph. */ - return 781; + return 787; } } else @@ -891,7 +946,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx100000111x1 swp. */ - return 782; + return 788; } } else @@ -904,7 +959,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx10100011100 swpab. */ - return 783; + return 789; } else { @@ -912,7 +967,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx10100011110 swpah. */ - return 786; + return 792; } } else @@ -921,7 +976,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx101000111x1 swpa. */ - return 789; + return 795; } } } @@ -937,7 +992,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx11000011100 swplb. */ - return 784; + return 790; } else { @@ -945,7 +1000,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx11000011110 swplh. */ - return 787; + return 793; } } else @@ -954,7 +1009,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx110000111x1 swpl. */ - return 790; + return 796; } } else @@ -967,7 +1022,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx11100011100 swpalb. */ - return 785; + return 791; } else { @@ -975,7 +1030,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx11100011110 swpalh. */ - return 788; + return 794; } } else @@ -984,7 +1039,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx000001xxxxx111000111x1 swpal. */ - return 791; + return 797; } } } @@ -1004,7 +1059,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx10000011100 ldsmaxb. */ - return 840; + return 846; } else { @@ -1012,7 +1067,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx10000011110 ldsmaxh. */ - return 841; + return 847; } } else @@ -1021,7 +1076,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx100000111x1 ldsmax. */ - return 842; + return 848; } } else @@ -1034,7 +1089,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx10100011100 ldsmaxab. */ - return 843; + return 849; } else { @@ -1042,7 +1097,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx10100011110 ldsmaxah. */ - return 846; + return 852; } } else @@ -1051,7 +1106,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx101000111x1 ldsmaxa. */ - return 849; + return 855; } } } @@ -1067,7 +1122,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx11000011100 ldsmaxlb. */ - return 844; + return 850; } else { @@ -1075,7 +1130,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx11000011110 ldsmaxlh. */ - return 847; + return 853; } } else @@ -1084,7 +1139,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx110000111x1 ldsmaxl. */ - return 850; + return 856; } } else @@ -1097,7 +1152,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx11100011100 ldsmaxalb. */ - return 845; + return 851; } else { @@ -1105,7 +1160,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx11100011110 ldsmaxalh. */ - return 848; + return 854; } } else @@ -1114,7 +1169,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00001xxxxxx111000111x1 ldsmaxal. */ - return 851; + return 857; } } } @@ -1136,7 +1191,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx10000011100 ldeorb. */ - return 816; + return 822; } else { @@ -1144,7 +1199,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx10000011110 ldeorh. */ - return 817; + return 823; } } else @@ -1153,7 +1208,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx100000111x1 ldeor. */ - return 818; + return 824; } } else @@ -1166,7 +1221,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx10100011100 ldeorab. */ - return 819; + return 825; } else { @@ -1174,7 +1229,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx10100011110 ldeorah. */ - return 822; + return 828; } } else @@ -1183,7 +1238,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx101000111x1 ldeora. */ - return 825; + return 831; } } } @@ -1199,7 +1254,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx11000011100 ldeorlb. */ - return 820; + return 826; } else { @@ -1207,7 +1262,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx11000011110 ldeorlh. */ - return 823; + return 829; } } else @@ -1216,7 +1271,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx110000111x1 ldeorl. */ - return 826; + return 832; } } else @@ -1229,7 +1284,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx11100011100 ldeoralb. */ - return 821; + return 827; } else { @@ -1237,7 +1292,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx11100011110 ldeoralh. */ - return 824; + return 830; } } else @@ -1246,7 +1301,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00010xxxxxx111000111x1 ldeoral. */ - return 827; + return 833; } } } @@ -1265,7 +1320,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx10000011100 ldumaxb. */ - return 864; + return 870; } else { @@ -1273,7 +1328,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx10000011110 ldumaxh. */ - return 865; + return 871; } } else @@ -1282,7 +1337,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx100000111x1 ldumax. */ - return 866; + return 872; } } else @@ -1295,7 +1350,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx10100011100 ldumaxab. */ - return 867; + return 873; } else { @@ -1303,7 +1358,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx10100011110 ldumaxah. */ - return 870; + return 876; } } else @@ -1312,7 +1367,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx101000111x1 ldumaxa. */ - return 873; + return 879; } } } @@ -1328,7 +1383,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx11000011100 ldumaxlb. */ - return 868; + return 874; } else { @@ -1336,7 +1391,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx11000011110 ldumaxlh. */ - return 871; + return 877; } } else @@ -1345,7 +1400,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx110000111x1 ldumaxl. */ - return 874; + return 880; } } else @@ -1358,7 +1413,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx11100011100 ldumaxalb. */ - return 869; + return 875; } else { @@ -1366,7 +1421,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx11100011110 ldumaxalh. */ - return 872; + return 878; } } else @@ -1375,7 +1430,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00011xxxxxx111000111x1 ldumaxal. */ - return 875; + return 881; } } } @@ -1400,7 +1455,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx10000011100 ldclrb. */ - return 804; + return 810; } else { @@ -1408,7 +1463,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx10000011110 ldclrh. */ - return 805; + return 811; } } else @@ -1417,7 +1472,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx100000111x1 ldclr. */ - return 806; + return 812; } } else @@ -1430,7 +1485,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx10100011100 ldclrab. */ - return 807; + return 813; } else { @@ -1438,7 +1493,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx10100011110 ldclrah. */ - return 810; + return 816; } } else @@ -1447,7 +1502,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx101000111x1 ldclra. */ - return 813; + return 819; } } } @@ -1463,7 +1518,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx11000011100 ldclrlb. */ - return 808; + return 814; } else { @@ -1471,7 +1526,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx11000011110 ldclrlh. */ - return 811; + return 817; } } else @@ -1480,7 +1535,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx110000111x1 ldclrl. */ - return 814; + return 820; } } else @@ -1493,7 +1548,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx11100011100 ldclralb. */ - return 809; + return 815; } else { @@ -1501,7 +1556,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx11100011110 ldclralh. */ - return 812; + return 818; } } else @@ -1510,7 +1565,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00100xxxxxx111000111x1 ldclral. */ - return 815; + return 821; } } } @@ -1529,7 +1584,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx10000011100 ldsminb. */ - return 852; + return 858; } else { @@ -1537,7 +1592,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx10000011110 ldsminh. */ - return 853; + return 859; } } else @@ -1546,7 +1601,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx100000111x1 ldsmin. */ - return 854; + return 860; } } else @@ -1559,7 +1614,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx10100011100 ldsminab. */ - return 855; + return 861; } else { @@ -1567,7 +1622,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx10100011110 ldsminah. */ - return 858; + return 864; } } else @@ -1576,7 +1631,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx101000111x1 ldsmina. */ - return 861; + return 867; } } } @@ -1592,7 +1647,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx11000011100 ldsminlb. */ - return 856; + return 862; } else { @@ -1600,7 +1655,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx11000011110 ldsminlh. */ - return 859; + return 865; } } else @@ -1609,7 +1664,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx110000111x1 ldsminl. */ - return 862; + return 868; } } else @@ -1622,7 +1677,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx11100011100 ldsminalb. */ - return 857; + return 863; } else { @@ -1630,7 +1685,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx11100011110 ldsminalh. */ - return 860; + return 866; } } else @@ -1639,7 +1694,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00101xxxxxx111000111x1 ldsminal. */ - return 863; + return 869; } } } @@ -1661,7 +1716,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx10000011100 ldsetb. */ - return 828; + return 834; } else { @@ -1669,7 +1724,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx10000011110 ldseth. */ - return 829; + return 835; } } else @@ -1678,7 +1733,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx100000111x1 ldset. */ - return 830; + return 836; } } else @@ -1691,7 +1746,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx10100011100 ldsetab. */ - return 831; + return 837; } else { @@ -1699,7 +1754,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx10100011110 ldsetah. */ - return 834; + return 840; } } else @@ -1708,7 +1763,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx101000111x1 ldseta. */ - return 837; + return 843; } } } @@ -1724,7 +1779,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx11000011100 ldsetlb. */ - return 832; + return 838; } else { @@ -1732,7 +1787,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx11000011110 ldsetlh. */ - return 835; + return 841; } } else @@ -1741,7 +1796,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx110000111x1 ldsetl. */ - return 838; + return 844; } } else @@ -1754,7 +1809,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx11100011100 ldsetalb. */ - return 833; + return 839; } else { @@ -1762,7 +1817,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx11100011110 ldsetalh. */ - return 836; + return 842; } } else @@ -1771,7 +1826,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00110xxxxxx111000111x1 ldsetal. */ - return 839; + return 845; } } } @@ -1790,7 +1845,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx10000011100 lduminb. */ - return 876; + return 882; } else { @@ -1798,7 +1853,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx10000011110 lduminh. */ - return 877; + return 883; } } else @@ -1807,7 +1862,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx100000111x1 ldumin. */ - return 878; + return 884; } } else @@ -1820,7 +1875,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx10100011100 lduminab. */ - return 879; + return 885; } else { @@ -1828,7 +1883,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx10100011110 lduminah. */ - return 882; + return 888; } } else @@ -1837,7 +1892,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx101000111x1 ldumina. */ - return 885; + return 891; } } } @@ -1853,7 +1908,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx11000011100 lduminlb. */ - return 880; + return 886; } else { @@ -1861,7 +1916,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx11000011110 lduminlh. */ - return 883; + return 889; } } else @@ -1870,7 +1925,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx110000111x1 lduminl. */ - return 886; + return 892; } } else @@ -1883,7 +1938,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx11100011100 lduminalb. */ - return 881; + return 887; } else { @@ -1891,7 +1946,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx11100011110 lduminalh. */ - return 884; + return 890; } } else @@ -1900,7 +1955,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxx00111xxxxxx111000111x1 lduminal. */ - return 887; + return 893; } } } @@ -2340,7 +2395,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx00100x00x and. */ - return 745; + return 751; } else { @@ -2348,7 +2403,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx00100x01x eor. */ - return 749; + return 755; } } else @@ -2359,7 +2414,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx00100x10x orr. */ - return 747; + return 753; } else { @@ -2367,7 +2422,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx00100x11x ands. */ - return 750; + return 756; } } } @@ -2381,7 +2436,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx10100x00x movn. */ - return 936; + return 942; } else { @@ -2389,7 +2444,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx10100x01x movz. */ - return 938; + return 944; } } else @@ -2398,7 +2453,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxx10100x1xx movk. */ - return 940; + return 946; } } } @@ -2416,7 +2471,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx0xx0101000x and. */ - return 752; + return 758; } else { @@ -2424,7 +2479,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx0xx0101001x eor. */ - return 759; + return 765; } } else @@ -2435,7 +2490,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx0xx0101010x orr. */ - return 754; + return 760; } else { @@ -2443,7 +2498,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx0xx0101011x ands. */ - return 761; + return 767; } } } @@ -2818,7 +2873,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx1xx0101x00x bic. */ - return 753; + return 759; } else { @@ -2826,7 +2881,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx1xx0101x01x eon. */ - return 760; + return 766; } } else @@ -2837,7 +2892,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx1xx0101x10x orn. */ - return 757; + return 763; } else { @@ -2845,7 +2900,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx1xx0101x11x bics. */ - return 763; + return 769; } } } @@ -3256,7 +3311,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx0xx1x10x01x msr. */ - return 943; + return 949; } else { @@ -3264,7 +3319,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxx1xx1x10x01x sysl. */ - return 961; + return 967; } } } @@ -3287,7 +3342,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx0110x1xx tbz. */ - return 963; + return 969; } } else @@ -3306,7 +3361,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx1110x1xx tbnz. */ - return 964; + return 970; } } } @@ -3337,7 +3392,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx00001101xx stnp. */ - return 729; + return 735; } } else @@ -3389,7 +3444,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx00101101xx stp. */ - return 733; + return 739; } } } @@ -3453,7 +3508,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx01x01101xx stp. */ - return 738; + return 744; } } } @@ -3477,7 +3532,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx10001101xx ldnp. */ - return 730; + return 736; } } else @@ -3529,7 +3584,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx10101101xx ldp. */ - return 734; + return 740; } } } @@ -3593,7 +3648,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxx11x01101xx ldp. */ - return 739; + return 745; } } } @@ -3608,7 +3663,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765432109876543210 xxxxxxxxxxxxxxxxxxxxxxxx001110xx ldr. */ - return 742; + return 748; } else { @@ -8707,20 +8762,22 @@ aarch64_find_next_opcode (const aarch64_opcode *opcode) int value; switch (key) { - case 727: value = 731; break; /* stnp --> stp. */ - case 731: return NULL; /* stp --> NULL. */ - case 728: value = 732; break; /* ldnp --> ldp. */ - case 732: return NULL; /* ldp --> NULL. */ - case 943: value = 944; break; /* msr --> hint. */ - case 944: value = 951; break; /* hint --> clrex. */ - case 951: value = 952; break; /* clrex --> dsb. */ - case 952: value = 953; break; /* dsb --> dmb. */ - case 953: value = 954; break; /* dmb --> isb. */ - case 954: value = 955; break; /* isb --> sys. */ - case 955: value = 960; break; /* sys --> msr. */ - case 960: return NULL; /* msr --> NULL. */ - case 961: value = 962; break; /* sysl --> mrs. */ - case 962: return NULL; /* mrs --> NULL. */ + case 733: value = 737; break; /* stnp --> stp. */ + case 737: return NULL; /* stp --> NULL. */ + case 731: value = 732; break; /* stllrb --> stllrh. */ + case 732: return NULL; /* stllrh --> NULL. */ + case 734: value = 738; break; /* ldnp --> ldp. */ + case 738: return NULL; /* ldp --> NULL. */ + case 949: value = 950; break; /* msr --> hint. */ + case 950: value = 957; break; /* hint --> clrex. */ + case 957: value = 958; break; /* clrex --> dsb. */ + case 958: value = 959; break; /* dsb --> dmb. */ + case 959: value = 960; break; /* dmb --> isb. */ + case 960: value = 961; break; /* isb --> sys. */ + case 961: value = 966; break; /* sys --> msr. */ + case 966: return NULL; /* msr --> NULL. */ + case 967: value = 968; break; /* sysl --> mrs. */ + case 968: return NULL; /* mrs --> NULL. */ case 355: value = 356; break; /* st4 --> st1. */ case 356: value = 357; break; /* st1 --> st2. */ case 357: value = 358; break; /* st2 --> st3. */ @@ -8843,64 +8900,64 @@ aarch64_find_alias_opcode (const aarch64_opcode *opcode) case 581: value = 582; break; /* umaddl --> umull. */ case 583: value = 584; break; /* umsubl --> umnegl. */ case 594: value = 595; break; /* extr --> ror. */ - case 745: value = 746; break; /* and --> bic. */ - case 747: value = 748; break; /* orr --> mov. */ - case 750: value = 751; break; /* ands --> tst. */ - case 754: value = 756; break; /* orr --> uxtw. */ - case 757: value = 758; break; /* orn --> mvn. */ - case 761: value = 762; break; /* ands --> tst. */ - case 792: value = 888; break; /* ldaddb --> staddb. */ - case 793: value = 889; break; /* ldaddh --> staddh. */ - case 794: value = 890; break; /* ldadd --> stadd. */ - case 796: value = 891; break; /* ldaddlb --> staddlb. */ - case 799: value = 892; break; /* ldaddlh --> staddlh. */ - case 802: value = 893; break; /* ldaddl --> staddl. */ - case 804: value = 894; break; /* ldclrb --> stclrb. */ - case 805: value = 895; break; /* ldclrh --> stclrh. */ - case 806: value = 896; break; /* ldclr --> stclr. */ - case 808: value = 897; break; /* ldclrlb --> stclrlb. */ - case 811: value = 898; break; /* ldclrlh --> stclrlh. */ - case 814: value = 899; break; /* ldclrl --> stclrl. */ - case 816: value = 900; break; /* ldeorb --> steorb. */ - case 817: value = 901; break; /* ldeorh --> steorh. */ - case 818: value = 902; break; /* ldeor --> steor. */ - case 820: value = 903; break; /* ldeorlb --> steorlb. */ - case 823: value = 904; break; /* ldeorlh --> steorlh. */ - case 826: value = 905; break; /* ldeorl --> steorl. */ - case 828: value = 906; break; /* ldsetb --> stsetb. */ - case 829: value = 907; break; /* ldseth --> stseth. */ - case 830: value = 908; break; /* ldset --> stset. */ - case 832: value = 909; break; /* ldsetlb --> stsetlb. */ - case 835: value = 910; break; /* ldsetlh --> stsetlh. */ - case 838: value = 911; break; /* ldsetl --> stsetl. */ - case 840: value = 912; break; /* ldsmaxb --> stsmaxb. */ - case 841: value = 913; break; /* ldsmaxh --> stsmaxh. */ - case 842: value = 914; break; /* ldsmax --> stsmax. */ - case 844: value = 915; break; /* ldsmaxlb --> stsmaxlb. */ - case 847: value = 916; break; /* ldsmaxlh --> stsmaxlh. */ - case 850: value = 917; break; /* ldsmaxl --> stsmaxl. */ - case 852: value = 918; break; /* ldsminb --> stsminb. */ - case 853: value = 919; break; /* ldsminh --> stsminh. */ - case 854: value = 920; break; /* ldsmin --> stsmin. */ - case 856: value = 921; break; /* ldsminlb --> stsminlb. */ - case 859: value = 922; break; /* ldsminlh --> stsminlh. */ - case 862: value = 923; break; /* ldsminl --> stsminl. */ - case 864: value = 924; break; /* ldumaxb --> stumaxb. */ - case 865: value = 925; break; /* ldumaxh --> stumaxh. */ - case 866: value = 926; break; /* ldumax --> stumax. */ - case 868: value = 927; break; /* ldumaxlb --> stumaxlb. */ - case 871: value = 928; break; /* ldumaxlh --> stumaxlh. */ - case 874: value = 929; break; /* ldumaxl --> stumaxl. */ - case 876: value = 930; break; /* lduminb --> stuminb. */ - case 877: value = 931; break; /* lduminh --> stuminh. */ - case 878: value = 932; break; /* ldumin --> stumin. */ - case 880: value = 933; break; /* lduminlb --> stuminlb. */ - case 883: value = 934; break; /* lduminlh --> stuminlh. */ - case 886: value = 935; break; /* lduminl --> stuminl. */ - case 936: value = 937; break; /* movn --> mov. */ - case 938: value = 939; break; /* movz --> mov. */ - case 944: value = 950; break; /* hint --> sevl. */ - case 955: value = 959; break; /* sys --> tlbi. */ + case 751: value = 752; break; /* and --> bic. */ + case 753: value = 754; break; /* orr --> mov. */ + case 756: value = 757; break; /* ands --> tst. */ + case 760: value = 762; break; /* orr --> uxtw. */ + case 763: value = 764; break; /* orn --> mvn. */ + case 767: value = 768; break; /* ands --> tst. */ + case 798: value = 894; break; /* ldaddb --> staddb. */ + case 799: value = 895; break; /* ldaddh --> staddh. */ + case 800: value = 896; break; /* ldadd --> stadd. */ + case 802: value = 897; break; /* ldaddlb --> staddlb. */ + case 805: value = 898; break; /* ldaddlh --> staddlh. */ + case 808: value = 899; break; /* ldaddl --> staddl. */ + case 810: value = 900; break; /* ldclrb --> stclrb. */ + case 811: value = 901; break; /* ldclrh --> stclrh. */ + case 812: value = 902; break; /* ldclr --> stclr. */ + case 814: value = 903; break; /* ldclrlb --> stclrlb. */ + case 817: value = 904; break; /* ldclrlh --> stclrlh. */ + case 820: value = 905; break; /* ldclrl --> stclrl. */ + case 822: value = 906; break; /* ldeorb --> steorb. */ + case 823: value = 907; break; /* ldeorh --> steorh. */ + case 824: value = 908; break; /* ldeor --> steor. */ + case 826: value = 909; break; /* ldeorlb --> steorlb. */ + case 829: value = 910; break; /* ldeorlh --> steorlh. */ + case 832: value = 911; break; /* ldeorl --> steorl. */ + case 834: value = 912; break; /* ldsetb --> stsetb. */ + case 835: value = 913; break; /* ldseth --> stseth. */ + case 836: value = 914; break; /* ldset --> stset. */ + case 838: value = 915; break; /* ldsetlb --> stsetlb. */ + case 841: value = 916; break; /* ldsetlh --> stsetlh. */ + case 844: value = 917; break; /* ldsetl --> stsetl. */ + case 846: value = 918; break; /* ldsmaxb --> stsmaxb. */ + case 847: value = 919; break; /* ldsmaxh --> stsmaxh. */ + case 848: value = 920; break; /* ldsmax --> stsmax. */ + case 850: value = 921; break; /* ldsmaxlb --> stsmaxlb. */ + case 853: value = 922; break; /* ldsmaxlh --> stsmaxlh. */ + case 856: value = 923; break; /* ldsmaxl --> stsmaxl. */ + case 858: value = 924; break; /* ldsminb --> stsminb. */ + case 859: value = 925; break; /* ldsminh --> stsminh. */ + case 860: value = 926; break; /* ldsmin --> stsmin. */ + case 862: value = 927; break; /* ldsminlb --> stsminlb. */ + case 865: value = 928; break; /* ldsminlh --> stsminlh. */ + case 868: value = 929; break; /* ldsminl --> stsminl. */ + case 870: value = 930; break; /* ldumaxb --> stumaxb. */ + case 871: value = 931; break; /* ldumaxh --> stumaxh. */ + case 872: value = 932; break; /* ldumax --> stumax. */ + case 874: value = 933; break; /* ldumaxlb --> stumaxlb. */ + case 877: value = 934; break; /* ldumaxlh --> stumaxlh. */ + case 880: value = 935; break; /* ldumaxl --> stumaxl. */ + case 882: value = 936; break; /* lduminb --> stuminb. */ + case 883: value = 937; break; /* lduminh --> stuminh. */ + case 884: value = 938; break; /* ldumin --> stumin. */ + case 886: value = 939; break; /* lduminlb --> stuminlb. */ + case 889: value = 940; break; /* lduminlh --> stuminlh. */ + case 892: value = 941; break; /* lduminl --> stuminl. */ + case 942: value = 943; break; /* movn --> mov. */ + case 944: value = 945; break; /* movz --> mov. */ + case 950: value = 956; break; /* hint --> sevl. */ + case 961: value = 965; break; /* sys --> tlbi. */ default: return NULL; } @@ -8929,15 +8986,15 @@ aarch64_find_next_alias_opcode (const aarch64_opcode *opcode) case 505: value = 504; break; /* ubfx --> ubfiz. */ case 527: value = 526; break; /* cset --> cinc. */ case 530: value = 529; break; /* csetm --> cinv. */ - case 756: value = 755; break; /* uxtw --> mov. */ - case 950: value = 949; break; /* sevl --> sev. */ - case 949: value = 948; break; /* sev --> wfi. */ - case 948: value = 947; break; /* wfi --> wfe. */ - case 947: value = 946; break; /* wfe --> yield. */ - case 946: value = 945; break; /* yield --> nop. */ - case 959: value = 958; break; /* tlbi --> ic. */ - case 958: value = 957; break; /* ic --> dc. */ - case 957: value = 956; break; /* dc --> at. */ + case 762: value = 761; break; /* uxtw --> mov. */ + case 956: value = 955; break; /* sevl --> sev. */ + case 955: value = 954; break; /* sev --> wfi. */ + case 954: value = 953; break; /* wfi --> wfe. */ + case 953: value = 952; break; /* wfe --> yield. */ + case 952: value = 951; break; /* yield --> nop. */ + case 965: value = 964; break; /* tlbi --> ic. */ + case 964: value = 963; break; /* ic --> dc. */ + case 963: value = 962; break; /* dc --> at. */ default: return NULL; } diff --git a/opcodes/aarch64-opc-2.c b/opcodes/aarch64-opc-2.c index 4a9c6c3..fe1cc12 100644 --- a/opcodes/aarch64-opc-2.c +++ b/opcodes/aarch64-opc-2.c @@ -145,24 +145,24 @@ static const unsigned op_enum_table [] = 697, 703, 704, - 741, - 742, - 743, - 744, + 747, + 748, + 749, + 750, 12, 510, 511, - 936, - 938, - 940, - 748, - 939, - 937, + 942, + 944, + 946, + 754, + 945, + 943, 259, 499, 509, 508, - 746, + 752, 505, 502, 495, @@ -171,7 +171,7 @@ static const unsigned op_enum_table [] = 504, 506, 507, - 756, + 762, 526, 529, 532, diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 228ce35..0e43914 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -1222,6 +1222,8 @@ static const aarch64_feature_set aarch64_feature_crc = AARCH64_FEATURE (AARCH64_FEATURE_CRC, 0); static const aarch64_feature_set aarch64_feature_lse = AARCH64_FEATURE (AARCH64_FEATURE_LSE, 0); +static const aarch64_feature_set aarch64_feature_lor = + AARCH64_FEATURE (AARCH64_FEATURE_LOR, 0); #define CORE &aarch64_feature_v8 #define FP &aarch64_feature_fp @@ -1229,6 +1231,7 @@ static const aarch64_feature_set aarch64_feature_lse = #define CRYPTO &aarch64_feature_crypto #define CRC &aarch64_feature_crc #define LSE &aarch64_feature_lse +#define LOR &aarch64_feature_lor struct aarch64_opcode aarch64_opcode_table[] = { @@ -2017,6 +2020,13 @@ struct aarch64_opcode aarch64_opcode_table[] = {"ldaxp", 0x887f8000, 0xbfe08000, ldstexcl, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMPLE), QL_R2NIL, F_GPRSIZE_IN_Q}, {"stlr", 0x889ffc00, 0xbfe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q}, {"ldar", 0x88dffc00, 0xbfeffc00, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q}, + /* Limited Ordering Regions load/store instructions. */ + {"ldlar", 0x88df7c00, 0xbfe08000, ldstexcl, 0, LOR, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q}, + {"ldlarb", 0x08df7c00, 0xffe08000, ldstexcl, 0, LOR, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0}, + {"ldlarh", 0x48df7c00, 0xffe08000, ldstexcl, 0, LOR, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0}, + {"stllr", 0x889f7c00, 0xbfe08000, ldstexcl, 0, LOR, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q}, + {"stllrb", 0x089f7c00, 0xffe08000, ldstexcl, 0, LOR, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0}, + {"stllrh", 0x489f7c00, 0xbfe08000, ldstexcl, 0, LOR, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0}, /* Load/store no-allocate pair (offset). */ {"stnp", 0x28000000, 0x7fc00000, ldstnapair_offs, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF}, {"ldnp", 0x28400000, 0x7fc00000, ldstnapair_offs, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF}, -- 2.7.4