Home | History | Annotate | Line # | Download | only in opcodes
aarch64-tbl.h revision 1.1
      1  1.1  christos /* aarch64-tbl.h -- AArch64 opcode description table and instruction
      2  1.1  christos    operand description table.
      3  1.1  christos    Copyright 2012, 2013  Free Software Foundation, Inc.
      4  1.1  christos 
      5  1.1  christos    This file is part of the GNU opcodes library.
      6  1.1  christos 
      7  1.1  christos    This library is free software; you can redistribute it and/or modify
      8  1.1  christos    it under the terms of the GNU General Public License as published by
      9  1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     10  1.1  christos    any later version.
     11  1.1  christos 
     12  1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     13  1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     14  1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     15  1.1  christos    License for more details.
     16  1.1  christos 
     17  1.1  christos    You should have received a copy of the GNU General Public License
     18  1.1  christos    along with this file; see the file COPYING.  If not, write to the
     19  1.1  christos    Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
     20  1.1  christos    MA 02110-1301, USA.  */
     21  1.1  christos 
     22  1.1  christos #include "aarch64-opc.h"
     23  1.1  christos 
     24  1.1  christos /* Operand type.  */
     25  1.1  christos 
     26  1.1  christos #define OPND(x)	AARCH64_OPND_##x
     27  1.1  christos #define OP0() {}
     28  1.1  christos #define OP1(a) {OPND(a)}
     29  1.1  christos #define OP2(a,b) {OPND(a), OPND(b)}
     30  1.1  christos #define OP3(a,b,c) {OPND(a), OPND(b), OPND(c)}
     31  1.1  christos #define OP4(a,b,c,d) {OPND(a), OPND(b), OPND(c), OPND(d)}
     32  1.1  christos #define OP5(a,b,c,d,e) {OPND(a), OPND(b), OPND(c), OPND(d), OPND(e)}
     33  1.1  christos 
     34  1.1  christos #define QLF(x) AARCH64_OPND_QLF_##x
     35  1.1  christos #define QLF1(a) {QLF(a)}
     36  1.1  christos #define QLF2(a,b) {QLF(a), QLF(b)}
     37  1.1  christos #define QLF3(a,b,c) {QLF(a), QLF(b), QLF(c)}
     38  1.1  christos #define QLF4(a,b,c,d) {QLF(a), QLF(b), QLF(c), QLF(d)}
     39  1.1  christos #define QLF5(a,b,c,d,e) {QLF(a), QLF(b), QLF(c), QLF(d), QLF(e)}
     40  1.1  christos 
     41  1.1  christos /* Qualifiers list.  */
     42  1.1  christos 
     43  1.1  christos /* e.g. MSR <systemreg>, <Xt>.  */
     44  1.1  christos #define QL_SRC_X		\
     45  1.1  christos {				\
     46  1.1  christos   QLF2(NIL,X),			\
     47  1.1  christos }
     48  1.1  christos 
     49  1.1  christos /* e.g. MRS <Xt>, <systemreg>.  */
     50  1.1  christos #define QL_DST_X		\
     51  1.1  christos {				\
     52  1.1  christos   QLF2(X,NIL),			\
     53  1.1  christos }
     54  1.1  christos 
     55  1.1  christos /* e.g. SYS #<op1>, <Cn>, <Cm>, #<op2>{, <Xt>}.  */
     56  1.1  christos #define QL_SYS			\
     57  1.1  christos {				\
     58  1.1  christos   QLF5(NIL,NIL,NIL,NIL,X),	\
     59  1.1  christos }
     60  1.1  christos 
     61  1.1  christos /* e.g. SYSL <Xt>, #<op1>, <Cn>, <Cm>, #<op2>.  */
     62  1.1  christos #define QL_SYSL			\
     63  1.1  christos {				\
     64  1.1  christos   QLF5(X,NIL,NIL,NIL,NIL),	\
     65  1.1  christos }
     66  1.1  christos 
     67  1.1  christos /* e.g. ADRP <Xd>, <label>.  */
     68  1.1  christos #define QL_ADRP			\
     69  1.1  christos {				\
     70  1.1  christos   QLF2(X,NIL),			\
     71  1.1  christos }
     72  1.1  christos 
     73  1.1  christos /* e.g. B.<cond> <label>.  */
     74  1.1  christos #define QL_PCREL_NIL		\
     75  1.1  christos {				\
     76  1.1  christos   QLF1(NIL),			\
     77  1.1  christos }
     78  1.1  christos 
     79  1.1  christos /* e.g. TBZ <Xt>, #<imm>, <label>.  */
     80  1.1  christos #define QL_PCREL_14		\
     81  1.1  christos {				\
     82  1.1  christos   QLF3(X,imm_0_63,NIL),		\
     83  1.1  christos }
     84  1.1  christos 
     85  1.1  christos /* e.g. BL <label>.  */
     86  1.1  christos #define QL_PCREL_26		\
     87  1.1  christos {				\
     88  1.1  christos   QLF1(NIL),			\
     89  1.1  christos }
     90  1.1  christos 
     91  1.1  christos /* e.g. LDRSW <Xt>, <label>.  */
     92  1.1  christos #define QL_X_PCREL		\
     93  1.1  christos {				\
     94  1.1  christos   QLF2(X,NIL),			\
     95  1.1  christos }
     96  1.1  christos 
     97  1.1  christos /* e.g. LDR <Wt>, <label>.  */
     98  1.1  christos #define QL_R_PCREL		\
     99  1.1  christos {				\
    100  1.1  christos   QLF2(W,NIL),			\
    101  1.1  christos   QLF2(X,NIL),			\
    102  1.1  christos }
    103  1.1  christos 
    104  1.1  christos /* e.g. LDR <Dt>, <label>.  */
    105  1.1  christos #define QL_FP_PCREL		\
    106  1.1  christos {				\
    107  1.1  christos   QLF2(S_S,NIL),		\
    108  1.1  christos   QLF2(S_D,NIL),		\
    109  1.1  christos   QLF2(S_Q,NIL),		\
    110  1.1  christos }
    111  1.1  christos 
    112  1.1  christos /* e.g. PRFM <prfop>, <label>.  */
    113  1.1  christos #define QL_PRFM_PCREL		\
    114  1.1  christos {				\
    115  1.1  christos   QLF2(NIL,NIL),		\
    116  1.1  christos }
    117  1.1  christos 
    118  1.1  christos /* e.g. BR <Xn>.  */
    119  1.1  christos #define QL_I1X			\
    120  1.1  christos {				\
    121  1.1  christos   QLF1(X),			\
    122  1.1  christos }
    123  1.1  christos 
    124  1.1  christos /* e.g. RBIT <Wd>, <Wn>.  */
    125  1.1  christos #define QL_I2SAME		\
    126  1.1  christos {				\
    127  1.1  christos   QLF2(W,W),			\
    128  1.1  christos   QLF2(X,X),			\
    129  1.1  christos }
    130  1.1  christos 
    131  1.1  christos /* e.g. CMN <Wn|WSP>, <Wm>{, <extend> {#<amount>}}.  */
    132  1.1  christos #define QL_I2_EXT		\
    133  1.1  christos {				\
    134  1.1  christos   QLF2(W,W),			\
    135  1.1  christos   QLF2(X,W),			\
    136  1.1  christos   QLF2(X,X),			\
    137  1.1  christos }
    138  1.1  christos 
    139  1.1  christos /* e.g. MOV <Wd|WSP>, <Wn|WSP>, at least one SP.  */
    140  1.1  christos #define QL_I2SP			\
    141  1.1  christos {				\
    142  1.1  christos   QLF2(WSP,W),			\
    143  1.1  christos   QLF2(W,WSP),			\
    144  1.1  christos   QLF2(SP,X),			\
    145  1.1  christos   QLF2(X,SP),			\
    146  1.1  christos }
    147  1.1  christos 
    148  1.1  christos /* e.g. REV <Wd>, <Wn>.  */
    149  1.1  christos #define QL_I2SAMEW		\
    150  1.1  christos {				\
    151  1.1  christos   QLF2(W,W),			\
    152  1.1  christos }
    153  1.1  christos 
    154  1.1  christos /* e.g. REV32 <Xd>, <Xn>.  */
    155  1.1  christos #define QL_I2SAMEX		\
    156  1.1  christos {				\
    157  1.1  christos   QLF2(X,X),			\
    158  1.1  christos }
    159  1.1  christos 
    160  1.1  christos #define QL_I2SAMER		\
    161  1.1  christos {				\
    162  1.1  christos   QLF2(W,W),			\
    163  1.1  christos   QLF2(X,X),			\
    164  1.1  christos }
    165  1.1  christos 
    166  1.1  christos /* e.g. CRC32B <Wd>, <Wn>, <Wm>.  */
    167  1.1  christos #define QL_I3SAMEW		\
    168  1.1  christos {				\
    169  1.1  christos   QLF3(W,W,W),			\
    170  1.1  christos }
    171  1.1  christos 
    172  1.1  christos /* e.g. SMULH <Xd>, <Xn>, <Xm>.  */
    173  1.1  christos #define QL_I3SAMEX		\
    174  1.1  christos {				\
    175  1.1  christos   QLF3(X,X,X),			\
    176  1.1  christos }
    177  1.1  christos 
    178  1.1  christos /* e.g. CRC32X <Wd>, <Wn>, <Xm>.  */
    179  1.1  christos #define QL_I3WWX		\
    180  1.1  christos {				\
    181  1.1  christos   QLF3(W,W,X),			\
    182  1.1  christos }
    183  1.1  christos 
    184  1.1  christos /* e.g. UDIV <Xd>, <Xn>, <Xm>.  */
    185  1.1  christos #define QL_I3SAMER		\
    186  1.1  christos {				\
    187  1.1  christos   QLF3(W,W,W),			\
    188  1.1  christos   QLF3(X,X,X),			\
    189  1.1  christos }
    190  1.1  christos 
    191  1.1  christos /* e.g. ADDS <Xd>, <Xn|SP>, <R><m>{, <extend> {#<amount>}}.  */
    192  1.1  christos #define QL_I3_EXT		\
    193  1.1  christos {				\
    194  1.1  christos   QLF3(W,W,W),			\
    195  1.1  christos   QLF3(X,X,W),			\
    196  1.1  christos   QLF3(X,X,X),			\
    197  1.1  christos }
    198  1.1  christos 
    199  1.1  christos /* e.g. MADD <Xd>, <Xn>, <Xm>, <Xa>.  */
    200  1.1  christos #define QL_I4SAMER		\
    201  1.1  christos {				\
    202  1.1  christos   QLF4(W,W,W,W),		\
    203  1.1  christos   QLF4(X,X,X,X),		\
    204  1.1  christos }
    205  1.1  christos 
    206  1.1  christos /* e.g. SMADDL <Xd>, <Wn>, <Wm>, <Xa>.  */
    207  1.1  christos #define QL_I3SAMEL		\
    208  1.1  christos {				\
    209  1.1  christos   QLF3(X,W,W),			\
    210  1.1  christos }
    211  1.1  christos 
    212  1.1  christos /* e.g. SMADDL <Xd>, <Wn>, <Wm>, <Xa>.  */
    213  1.1  christos #define QL_I4SAMEL		\
    214  1.1  christos {				\
    215  1.1  christos   QLF4(X,W,W,X),		\
    216  1.1  christos }
    217  1.1  christos 
    218  1.1  christos /* e.g. CSINC <Xd>, <Xn>, <Xm>, <cond>.  */
    219  1.1  christos #define QL_CSEL			\
    220  1.1  christos {				\
    221  1.1  christos   QLF4(W, W, W, NIL),		\
    222  1.1  christos   QLF4(X, X, X, NIL),		\
    223  1.1  christos }
    224  1.1  christos 
    225  1.1  christos /* e.g. CSET <Wd>, <cond>.  */
    226  1.1  christos #define QL_DST_R			\
    227  1.1  christos {				\
    228  1.1  christos   QLF2(W, NIL),			\
    229  1.1  christos   QLF2(X, NIL),			\
    230  1.1  christos }
    231  1.1  christos 
    232  1.1  christos /* e.g. BFM <Wd>, <Wn>, #<immr>, #<imms>.  */
    233  1.1  christos #define QL_BF			\
    234  1.1  christos {				\
    235  1.1  christos   QLF4(W,W,imm_0_31,imm_0_31),	\
    236  1.1  christos   QLF4(X,X,imm_0_63,imm_0_63),	\
    237  1.1  christos }
    238  1.1  christos 
    239  1.1  christos /* e.g. UBFIZ <Wd>, <Wn>, #<lsb>, #<width>.  */
    240  1.1  christos #define QL_BF2			\
    241  1.1  christos {				\
    242  1.1  christos   QLF4(W,W,imm_0_31,imm_1_32),	\
    243  1.1  christos   QLF4(X,X,imm_0_63,imm_1_64),	\
    244  1.1  christos }
    245  1.1  christos 
    246  1.1  christos /* e.g. SCVTF <Sd>, <Xn>, #<fbits>.  */
    247  1.1  christos #define QL_FIX2FP		\
    248  1.1  christos {				\
    249  1.1  christos   QLF3(S_D,W,imm_1_32),		\
    250  1.1  christos   QLF3(S_S,W,imm_1_32),		\
    251  1.1  christos   QLF3(S_D,X,imm_1_64),		\
    252  1.1  christos   QLF3(S_S,X,imm_1_64),		\
    253  1.1  christos }
    254  1.1  christos 
    255  1.1  christos /* e.g. FCVTZS <Wd>, <Dn>, #<fbits>.  */
    256  1.1  christos #define QL_FP2FIX		\
    257  1.1  christos {				\
    258  1.1  christos   QLF3(W,S_D,imm_1_32),		\
    259  1.1  christos   QLF3(W,S_S,imm_1_32),		\
    260  1.1  christos   QLF3(X,S_D,imm_1_64),		\
    261  1.1  christos   QLF3(X,S_S,imm_1_64),		\
    262  1.1  christos }
    263  1.1  christos 
    264  1.1  christos /* e.g. SCVTF <Dd>, <Wn>.  */
    265  1.1  christos #define QL_INT2FP		\
    266  1.1  christos {				\
    267  1.1  christos   QLF2(S_D,W),			\
    268  1.1  christos   QLF2(S_S,W),			\
    269  1.1  christos   QLF2(S_D,X),			\
    270  1.1  christos   QLF2(S_S,X),			\
    271  1.1  christos }
    272  1.1  christos 
    273  1.1  christos /* e.g. FCVTNS <Xd>, <Dn>.  */
    274  1.1  christos #define QL_FP2INT		\
    275  1.1  christos {				\
    276  1.1  christos   QLF2(W,S_D),			\
    277  1.1  christos   QLF2(W,S_S),			\
    278  1.1  christos   QLF2(X,S_D),			\
    279  1.1  christos   QLF2(X,S_S),			\
    280  1.1  christos }
    281  1.1  christos 
    282  1.1  christos /* e.g. FMOV <Xd>, <Vn>.D[1].  */
    283  1.1  christos #define QL_XVD1			\
    284  1.1  christos {				\
    285  1.1  christos   QLF2(X,S_D),			\
    286  1.1  christos }
    287  1.1  christos 
    288  1.1  christos /* e.g. FMOV <Vd>.D[1], <Xn>.  */
    289  1.1  christos #define QL_VD1X			\
    290  1.1  christos {				\
    291  1.1  christos   QLF2(S_D,X),			\
    292  1.1  christos }
    293  1.1  christos 
    294  1.1  christos /* e.g. EXTR <Xd>, <Xn>, <Xm>, #<lsb>.  */
    295  1.1  christos #define QL_EXTR			\
    296  1.1  christos {				\
    297  1.1  christos   QLF4(W,W,W,imm_0_31),		\
    298  1.1  christos   QLF4(X,X,X,imm_0_63),		\
    299  1.1  christos }
    300  1.1  christos 
    301  1.1  christos /* e.g. LSL <Wd>, <Wn>, #<uimm>.  */
    302  1.1  christos #define QL_SHIFT		\
    303  1.1  christos {				\
    304  1.1  christos   QLF3(W,W,imm_0_31),		\
    305  1.1  christos   QLF3(X,X,imm_0_63),		\
    306  1.1  christos }
    307  1.1  christos 
    308  1.1  christos /* e.g. UXTH <Xd>, <Wn>.  */
    309  1.1  christos #define QL_EXT			\
    310  1.1  christos {				\
    311  1.1  christos   QLF2(W,W),			\
    312  1.1  christos   QLF2(X,W),			\
    313  1.1  christos }
    314  1.1  christos 
    315  1.1  christos /* e.g. UXTW <Xd>, <Wn>.  */
    316  1.1  christos #define QL_EXT_W		\
    317  1.1  christos {				\
    318  1.1  christos   QLF2(X,W),			\
    319  1.1  christos }
    320  1.1  christos 
    321  1.1  christos /* e.g. SQSHL <V><d>, <V><n>, #<shift>.  */
    322  1.1  christos #define QL_SSHIFT		\
    323  1.1  christos {				\
    324  1.1  christos   QLF3(S_B , S_B , S_B ),	\
    325  1.1  christos   QLF3(S_H , S_H , S_H ),	\
    326  1.1  christos   QLF3(S_S , S_S , S_S ),	\
    327  1.1  christos   QLF3(S_D , S_D , S_D )	\
    328  1.1  christos }
    329  1.1  christos 
    330  1.1  christos /* e.g. SSHR <V><d>, <V><n>, #<shift>.  */
    331  1.1  christos #define QL_SSHIFT_D		\
    332  1.1  christos {				\
    333  1.1  christos   QLF3(S_D , S_D , S_D )	\
    334  1.1  christos }
    335  1.1  christos 
    336  1.1  christos /* e.g. UCVTF <Vd>.<T>, <Vn>.<T>, #<fbits>.  */
    337  1.1  christos #define QL_SSHIFT_SD		\
    338  1.1  christos {				\
    339  1.1  christos   QLF3(S_S , S_S , S_S ),	\
    340  1.1  christos   QLF3(S_D , S_D , S_D )	\
    341  1.1  christos }
    342  1.1  christos 
    343  1.1  christos /* e.g. SQSHRUN <Vb><d>, <Va><n>, #<shift>.  */
    344  1.1  christos #define QL_SSHIFTN		\
    345  1.1  christos {				\
    346  1.1  christos   QLF3(S_B , S_H , S_B ),	\
    347  1.1  christos   QLF3(S_H , S_S , S_H ),	\
    348  1.1  christos   QLF3(S_S , S_D , S_S ),	\
    349  1.1  christos }
    350  1.1  christos 
    351  1.1  christos /* e.g. SSHR <Vd>.<T>, <Vn>.<T>, #<shift>.
    352  1.1  christos    The register operand variant qualifiers are deliberately used for the
    353  1.1  christos    immediate operand to ease the operand encoding/decoding and qualifier
    354  1.1  christos    sequence matching.  */
    355  1.1  christos #define QL_VSHIFT		\
    356  1.1  christos {				\
    357  1.1  christos   QLF3(V_8B , V_8B , V_8B ),	\
    358  1.1  christos   QLF3(V_16B, V_16B, V_16B),	\
    359  1.1  christos   QLF3(V_4H , V_4H , V_4H ),	\
    360  1.1  christos   QLF3(V_8H , V_8H , V_8H ),	\
    361  1.1  christos   QLF3(V_2S , V_2S , V_2S ),	\
    362  1.1  christos   QLF3(V_4S , V_4S , V_4S ),	\
    363  1.1  christos   QLF3(V_2D , V_2D , V_2D )	\
    364  1.1  christos }
    365  1.1  christos 
    366  1.1  christos /* e.g. SCVTF <Vd>.<T>, <Vn>.<T>, #<fbits>.  */
    367  1.1  christos #define QL_VSHIFT_SD		\
    368  1.1  christos {				\
    369  1.1  christos   QLF3(V_2S , V_2S , V_2S ),	\
    370  1.1  christos   QLF3(V_4S , V_4S , V_4S ),	\
    371  1.1  christos   QLF3(V_2D , V_2D , V_2D )	\
    372  1.1  christos }
    373  1.1  christos 
    374  1.1  christos /* e.g. SHRN<Q> <Vd>.<Tb>, <Vn>.<Ta>, #<shift>.  */
    375  1.1  christos #define QL_VSHIFTN		\
    376  1.1  christos {				\
    377  1.1  christos   QLF3(V_8B , V_8H , V_8B ),	\
    378  1.1  christos   QLF3(V_4H , V_4S , V_4H ),	\
    379  1.1  christos   QLF3(V_2S , V_2D , V_2S ),	\
    380  1.1  christos }
    381  1.1  christos 
    382  1.1  christos /* e.g. SHRN<Q> <Vd>.<Tb>, <Vn>.<Ta>, #<shift>.  */
    383  1.1  christos #define QL_VSHIFTN2		\
    384  1.1  christos {				\
    385  1.1  christos   QLF3(V_16B, V_8H, V_16B),	\
    386  1.1  christos   QLF3(V_8H , V_4S , V_8H ),	\
    387  1.1  christos   QLF3(V_4S , V_2D , V_4S ),	\
    388  1.1  christos }
    389  1.1  christos 
    390  1.1  christos /* e.g. SSHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>.
    391  1.1  christos    the 3rd qualifier is used to help the encoding.  */
    392  1.1  christos #define QL_VSHIFTL		\
    393  1.1  christos {				\
    394  1.1  christos   QLF3(V_8H , V_8B , V_8B ),	\
    395  1.1  christos   QLF3(V_4S , V_4H , V_4H ),	\
    396  1.1  christos   QLF3(V_2D , V_2S , V_2S ),	\
    397  1.1  christos }
    398  1.1  christos 
    399  1.1  christos /* e.g. SSHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>.  */
    400  1.1  christos #define QL_VSHIFTL2		\
    401  1.1  christos {				\
    402  1.1  christos   QLF3(V_8H , V_16B, V_16B),	\
    403  1.1  christos   QLF3(V_4S , V_8H , V_8H ),	\
    404  1.1  christos   QLF3(V_2D , V_4S , V_4S ),	\
    405  1.1  christos }
    406  1.1  christos 
    407  1.1  christos /* e.g. TBL.  */
    408  1.1  christos #define QL_TABLE		\
    409  1.1  christos {				\
    410  1.1  christos   QLF3(V_8B , V_16B, V_8B ),	\
    411  1.1  christos   QLF3(V_16B, V_16B, V_16B),	\
    412  1.1  christos }
    413  1.1  christos 
    414  1.1  christos /* e.g. SHA1H.  */
    415  1.1  christos #define QL_2SAMES		\
    416  1.1  christos {				\
    417  1.1  christos   QLF2(S_S, S_S),		\
    418  1.1  christos }
    419  1.1  christos 
    420  1.1  christos /* e.g. ABS <V><d>, <V><n>.  */
    421  1.1  christos #define QL_2SAMED		\
    422  1.1  christos {				\
    423  1.1  christos   QLF2(S_D, S_D),		\
    424  1.1  christos }
    425  1.1  christos 
    426  1.1  christos /* e.g. CMGT <V><d>, <V><n>, #0.  */
    427  1.1  christos #define QL_SISD_CMP_0		\
    428  1.1  christos {				\
    429  1.1  christos   QLF3(S_D, S_D, NIL),		\
    430  1.1  christos }
    431  1.1  christos 
    432  1.1  christos /* e.g. FCMEQ <V><d>, <V><n>, #0.  */
    433  1.1  christos #define QL_SISD_FCMP_0		\
    434  1.1  christos {				\
    435  1.1  christos   QLF3(S_S, S_S, NIL),		\
    436  1.1  christos   QLF3(S_D, S_D, NIL),		\
    437  1.1  christos }
    438  1.1  christos 
    439  1.1  christos /* e.g. FMAXNMP <V><d>, <Vn>.<T>.  */
    440  1.1  christos #define QL_SISD_PAIR		\
    441  1.1  christos {				\
    442  1.1  christos   QLF2(S_S, V_2S),		\
    443  1.1  christos   QLF2(S_D, V_2D),		\
    444  1.1  christos }
    445  1.1  christos 
    446  1.1  christos /* e.g. ADDP <V><d>, <Vn>.<T>.  */
    447  1.1  christos #define QL_SISD_PAIR_D		\
    448  1.1  christos {				\
    449  1.1  christos   QLF2(S_D, V_2D),		\
    450  1.1  christos }
    451  1.1  christos 
    452  1.1  christos /* e.g. DUP <V><d>, <Vn>.<T>[<index>].  */
    453  1.1  christos #define QL_S_2SAME		\
    454  1.1  christos {				\
    455  1.1  christos   QLF2(S_B, S_B),		\
    456  1.1  christos   QLF2(S_H, S_H),		\
    457  1.1  christos   QLF2(S_S, S_S),		\
    458  1.1  christos   QLF2(S_D, S_D),		\
    459  1.1  christos }
    460  1.1  christos 
    461  1.1  christos /* e.g. FCVTNS <V><d>, <V><n>.  */
    462  1.1  christos #define QL_S_2SAMESD		\
    463  1.1  christos {				\
    464  1.1  christos   QLF2(S_S, S_S),		\
    465  1.1  christos   QLF2(S_D, S_D),		\
    466  1.1  christos }
    467  1.1  christos 
    468  1.1  christos /* e.g. SQXTN <Vb><d>, <Va><n>.  */
    469  1.1  christos #define QL_SISD_NARROW		\
    470  1.1  christos {				\
    471  1.1  christos   QLF2(S_B, S_H),		\
    472  1.1  christos   QLF2(S_H, S_S),		\
    473  1.1  christos   QLF2(S_S, S_D),		\
    474  1.1  christos }
    475  1.1  christos 
    476  1.1  christos /* e.g. FCVTXN <Vb><d>, <Va><n>.  */
    477  1.1  christos #define QL_SISD_NARROW_S	\
    478  1.1  christos {				\
    479  1.1  christos   QLF2(S_S, S_D),		\
    480  1.1  christos }
    481  1.1  christos 
    482  1.1  christos /* e.g. FCVT.  */
    483  1.1  christos #define QL_FCVT			\
    484  1.1  christos {				\
    485  1.1  christos   QLF2(S_S, S_H),		\
    486  1.1  christos   QLF2(S_S, S_D),		\
    487  1.1  christos   QLF2(S_D, S_H),		\
    488  1.1  christos   QLF2(S_D, S_S),		\
    489  1.1  christos   QLF2(S_H, S_S),		\
    490  1.1  christos   QLF2(S_H, S_D),		\
    491  1.1  christos }
    492  1.1  christos 
    493  1.1  christos /* FMOV <Dd>, <Dn>.  */
    494  1.1  christos #define QL_FP2			\
    495  1.1  christos {				\
    496  1.1  christos   QLF2(S_S, S_S),		\
    497  1.1  christos   QLF2(S_D, S_D),		\
    498  1.1  christos }
    499  1.1  christos 
    500  1.1  christos /* e.g. SQADD <V><d>, <V><n>, <V><m>.  */
    501  1.1  christos #define QL_S_3SAME		\
    502  1.1  christos {				\
    503  1.1  christos   QLF3(S_B, S_B, S_B),		\
    504  1.1  christos   QLF3(S_H, S_H, S_H),		\
    505  1.1  christos   QLF3(S_S, S_S, S_S),		\
    506  1.1  christos   QLF3(S_D, S_D, S_D),		\
    507  1.1  christos }
    508  1.1  christos 
    509  1.1  christos /* e.g. CMGE <V><d>, <V><n>, <V><m>.  */
    510  1.1  christos #define QL_S_3SAMED		\
    511  1.1  christos {				\
    512  1.1  christos   QLF3(S_D, S_D, S_D),		\
    513  1.1  christos }
    514  1.1  christos 
    515  1.1  christos /* e.g. SQDMULH <V><d>, <V><n>, <V><m>.  */
    516  1.1  christos #define QL_SISD_HS		\
    517  1.1  christos {				\
    518  1.1  christos   QLF3(S_H, S_H, S_H),		\
    519  1.1  christos   QLF3(S_S, S_S, S_S),		\
    520  1.1  christos }
    521  1.1  christos 
    522  1.1  christos /* e.g. SQDMLAL <Va><d>, <Vb><n>, <Vb><m>.  */
    523  1.1  christos #define QL_SISDL_HS		\
    524  1.1  christos {				\
    525  1.1  christos   QLF3(S_S, S_H, S_H),		\
    526  1.1  christos   QLF3(S_D, S_S, S_S),		\
    527  1.1  christos }
    528  1.1  christos 
    529  1.1  christos /* FMUL <Sd>, <Sn>, <Sm>.  */
    530  1.1  christos #define QL_FP3			\
    531  1.1  christos {				\
    532  1.1  christos   QLF3(S_S, S_S, S_S),		\
    533  1.1  christos   QLF3(S_D, S_D, S_D),		\
    534  1.1  christos }
    535  1.1  christos 
    536  1.1  christos /* FMADD <Dd>, <Dn>, <Dm>, <Da>.  */
    537  1.1  christos #define QL_FP4			\
    538  1.1  christos {				\
    539  1.1  christos   QLF4(S_S, S_S, S_S, S_S),	\
    540  1.1  christos   QLF4(S_D, S_D, S_D, S_D),	\
    541  1.1  christos }
    542  1.1  christos 
    543  1.1  christos /* e.g. FCMP <Dn>, #0.0.  */
    544  1.1  christos #define QL_DST_SD			\
    545  1.1  christos {				\
    546  1.1  christos   QLF2(S_S, NIL),		\
    547  1.1  christos   QLF2(S_D, NIL),		\
    548  1.1  christos }
    549  1.1  christos 
    550  1.1  christos /* FCSEL <Sd>, <Sn>, <Sm>, <cond>.  */
    551  1.1  christos #define QL_FP_COND		\
    552  1.1  christos {				\
    553  1.1  christos   QLF4(S_S, S_S, S_S, NIL),	\
    554  1.1  christos   QLF4(S_D, S_D, S_D, NIL),	\
    555  1.1  christos }
    556  1.1  christos 
    557  1.1  christos /* e.g. CCMN <Xn>, <Xm>, #<nzcv>, <cond>.  */
    558  1.1  christos #define QL_CCMP			\
    559  1.1  christos {				\
    560  1.1  christos   QLF4(W, W, NIL, NIL),		\
    561  1.1  christos   QLF4(X, X, NIL, NIL),		\
    562  1.1  christos }
    563  1.1  christos 
    564  1.1  christos /* e.g. CCMN <Xn>, #<imm>, #<nzcv>, <cond>,  */
    565  1.1  christos #define QL_CCMP_IMM		\
    566  1.1  christos {				\
    567  1.1  christos   QLF4(W, NIL, NIL, NIL),	\
    568  1.1  christos   QLF4(X, NIL, NIL, NIL),	\
    569  1.1  christos }
    570  1.1  christos 
    571  1.1  christos /* e.g. FCCMP <Sn>, <Sm>, #<nzcv>, <cond>.  */
    572  1.1  christos #define QL_FCCMP		\
    573  1.1  christos {				\
    574  1.1  christos   QLF4(S_S, S_S, NIL, NIL),	\
    575  1.1  christos   QLF4(S_D, S_D, NIL, NIL),	\
    576  1.1  christos }
    577  1.1  christos 
    578  1.1  christos /* e.g. DUP <Vd>.<T>, <Vn>.<Ts>[<index>].  */
    579  1.1  christos #define QL_DUP_VX		\
    580  1.1  christos {				\
    581  1.1  christos   QLF2(V_8B , S_B ),		\
    582  1.1  christos   QLF2(V_16B, S_B ),		\
    583  1.1  christos   QLF2(V_4H , S_H ),		\
    584  1.1  christos   QLF2(V_8H , S_H ),		\
    585  1.1  christos   QLF2(V_2S , S_S ),		\
    586  1.1  christos   QLF2(V_4S , S_S ),		\
    587  1.1  christos   QLF2(V_2D , S_D ),		\
    588  1.1  christos }
    589  1.1  christos 
    590  1.1  christos /* e.g. DUP <Vd>.<T>, <Wn>.  */
    591  1.1  christos #define QL_DUP_VR		\
    592  1.1  christos {				\
    593  1.1  christos   QLF2(V_8B , W ),		\
    594  1.1  christos   QLF2(V_16B, W ),		\
    595  1.1  christos   QLF2(V_4H , W ),		\
    596  1.1  christos   QLF2(V_8H , W ),		\
    597  1.1  christos   QLF2(V_2S , W ),		\
    598  1.1  christos   QLF2(V_4S , W ),		\
    599  1.1  christos   QLF2(V_2D , X ),		\
    600  1.1  christos }
    601  1.1  christos 
    602  1.1  christos /* e.g. INS <Vd>.<Ts>[<index>], <Wn>.  */
    603  1.1  christos #define QL_INS_XR		\
    604  1.1  christos {				\
    605  1.1  christos   QLF2(S_H , W ),		\
    606  1.1  christos   QLF2(S_S , W ),		\
    607  1.1  christos   QLF2(S_D , X ),		\
    608  1.1  christos   QLF2(S_B , W ),		\
    609  1.1  christos }
    610  1.1  christos 
    611  1.1  christos /* e.g. SMOV <Wd>, <Vn>.<Ts>[<index>].  */
    612  1.1  christos #define QL_SMOV			\
    613  1.1  christos {				\
    614  1.1  christos   QLF2(W , S_H),		\
    615  1.1  christos   QLF2(X , S_H),		\
    616  1.1  christos   QLF2(X , S_S),		\
    617  1.1  christos   QLF2(W , S_B),		\
    618  1.1  christos   QLF2(X , S_B),		\
    619  1.1  christos }
    620  1.1  christos 
    621  1.1  christos /* e.g. UMOV <Wd>, <Vn>.<Ts>[<index>].  */
    622  1.1  christos #define QL_UMOV			\
    623  1.1  christos {				\
    624  1.1  christos   QLF2(W , S_H),		\
    625  1.1  christos   QLF2(W , S_S),		\
    626  1.1  christos   QLF2(X , S_D),		\
    627  1.1  christos   QLF2(W , S_B),		\
    628  1.1  christos }
    629  1.1  christos 
    630  1.1  christos /* e.g. MOV <Wd>, <Vn>.<Ts>[<index>].  */
    631  1.1  christos #define QL_MOV			\
    632  1.1  christos {				\
    633  1.1  christos   QLF2(W , S_S),		\
    634  1.1  christos   QLF2(X , S_D),		\
    635  1.1  christos }
    636  1.1  christos 
    637  1.1  christos /* e.g. SUQADD <Vd>.<T>, <Vn>.<T>.  */
    638  1.1  christos #define QL_V2SAME		\
    639  1.1  christos {				\
    640  1.1  christos   QLF2(V_8B , V_8B ),		\
    641  1.1  christos   QLF2(V_16B, V_16B),		\
    642  1.1  christos   QLF2(V_4H , V_4H ),		\
    643  1.1  christos   QLF2(V_8H , V_8H ),		\
    644  1.1  christos   QLF2(V_2S , V_2S ),		\
    645  1.1  christos   QLF2(V_4S , V_4S ),		\
    646  1.1  christos   QLF2(V_2D , V_2D ),		\
    647  1.1  christos }
    648  1.1  christos 
    649  1.1  christos /* e.g. URSQRTE <Vd>.<T>, <Vn>.<T>.  */
    650  1.1  christos #define QL_V2SAMES		\
    651  1.1  christos {				\
    652  1.1  christos   QLF2(V_2S , V_2S ),		\
    653  1.1  christos   QLF2(V_4S , V_4S ),		\
    654  1.1  christos }
    655  1.1  christos 
    656  1.1  christos /* e.g. REV32 <Vd>.<T>, <Vn>.<T>.  */
    657  1.1  christos #define QL_V2SAMEBH		\
    658  1.1  christos {				\
    659  1.1  christos   QLF2(V_8B , V_8B ),		\
    660  1.1  christos   QLF2(V_16B, V_16B),		\
    661  1.1  christos   QLF2(V_4H , V_4H ),		\
    662  1.1  christos   QLF2(V_8H , V_8H ),		\
    663  1.1  christos }
    664  1.1  christos 
    665  1.1  christos /* e.g. FRINTN <Vd>.<T>, <Vn>.<T>.  */
    666  1.1  christos #define QL_V2SAMESD		\
    667  1.1  christos {				\
    668  1.1  christos   QLF2(V_2S , V_2S ),		\
    669  1.1  christos   QLF2(V_4S , V_4S ),		\
    670  1.1  christos   QLF2(V_2D , V_2D ),		\
    671  1.1  christos }
    672  1.1  christos 
    673  1.1  christos /* e.g. REV64 <Vd>.<T>, <Vn>.<T>.  */
    674  1.1  christos #define QL_V2SAMEBHS		\
    675  1.1  christos {				\
    676  1.1  christos   QLF2(V_8B , V_8B ),		\
    677  1.1  christos   QLF2(V_16B, V_16B),		\
    678  1.1  christos   QLF2(V_4H , V_4H ),		\
    679  1.1  christos   QLF2(V_8H , V_8H ),		\
    680  1.1  christos   QLF2(V_2S , V_2S ),		\
    681  1.1  christos   QLF2(V_4S , V_4S ),		\
    682  1.1  christos }
    683  1.1  christos 
    684  1.1  christos /* e.g. REV16 <Vd>.<T>, <Vn>.<T>.  */
    685  1.1  christos #define QL_V2SAMEB		\
    686  1.1  christos {				\
    687  1.1  christos   QLF2(V_8B , V_8B ),		\
    688  1.1  christos   QLF2(V_16B, V_16B),		\
    689  1.1  christos }
    690  1.1  christos 
    691  1.1  christos /* e.g. SADDLP <Vd>.<Ta>, <Vn>.<Tb>.  */
    692  1.1  christos #define QL_V2PAIRWISELONGBHS		\
    693  1.1  christos {				\
    694  1.1  christos   QLF2(V_4H , V_8B ),		\
    695  1.1  christos   QLF2(V_8H , V_16B),		\
    696  1.1  christos   QLF2(V_2S , V_4H ),		\
    697  1.1  christos   QLF2(V_4S , V_8H ),		\
    698  1.1  christos   QLF2(V_1D , V_2S ),		\
    699  1.1  christos   QLF2(V_2D , V_4S ),		\
    700  1.1  christos }
    701  1.1  christos 
    702  1.1  christos /* e.g. SHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>.  */
    703  1.1  christos #define QL_V2LONGBHS		\
    704  1.1  christos {				\
    705  1.1  christos   QLF2(V_8H , V_8B ),		\
    706  1.1  christos   QLF2(V_4S , V_4H ),		\
    707  1.1  christos   QLF2(V_2D , V_2S ),		\
    708  1.1  christos }
    709  1.1  christos 
    710  1.1  christos /* e.g. SHLL<Q> <Vd>.<Ta>, <Vn>.<Tb>, #<shift>.  */
    711  1.1  christos #define QL_V2LONGBHS2		\
    712  1.1  christos {				\
    713  1.1  christos   QLF2(V_8H , V_16B),		\
    714  1.1  christos   QLF2(V_4S , V_8H ),		\
    715  1.1  christos   QLF2(V_2D , V_4S ),		\
    716  1.1  christos }
    717  1.1  christos 
    718  1.1  christos /* */
    719  1.1  christos #define QL_V3SAME		\
    720  1.1  christos {				\
    721  1.1  christos   QLF3(V_8B , V_8B , V_8B ),	\
    722  1.1  christos   QLF3(V_16B, V_16B, V_16B),	\
    723  1.1  christos   QLF3(V_4H , V_4H , V_4H ),	\
    724  1.1  christos   QLF3(V_8H , V_8H , V_8H ),	\
    725  1.1  christos   QLF3(V_2S , V_2S , V_2S ),	\
    726  1.1  christos   QLF3(V_4S , V_4S , V_4S ),	\
    727  1.1  christos   QLF3(V_2D , V_2D , V_2D )	\
    728  1.1  christos }
    729  1.1  christos 
    730  1.1  christos /* e.g. SHADD.  */
    731  1.1  christos #define QL_V3SAMEBHS		\
    732  1.1  christos {				\
    733  1.1  christos   QLF3(V_8B , V_8B , V_8B ),	\
    734  1.1  christos   QLF3(V_16B, V_16B, V_16B),	\
    735  1.1  christos   QLF3(V_4H , V_4H , V_4H ),	\
    736  1.1  christos   QLF3(V_8H , V_8H , V_8H ),	\
    737  1.1  christos   QLF3(V_2S , V_2S , V_2S ),	\
    738  1.1  christos   QLF3(V_4S , V_4S , V_4S ),	\
    739  1.1  christos }
    740  1.1  christos 
    741  1.1  christos /* e.g. FCVTXN<Q> <Vd>.<Tb>, <Vn>.<Ta>.  */
    742  1.1  christos #define QL_V2NARRS		\
    743  1.1  christos {				\
    744  1.1  christos   QLF2(V_2S , V_2D ),		\
    745  1.1  christos }
    746  1.1  christos 
    747  1.1  christos /* e.g. FCVTXN<Q> <Vd>.<Tb>, <Vn>.<Ta>.  */
    748  1.1  christos #define QL_V2NARRS2		\
    749  1.1  christos {				\
    750  1.1  christos   QLF2(V_4S , V_2D ),		\
    751  1.1  christos }
    752  1.1  christos 
    753  1.1  christos /* e.g. FCVTN<Q> <Vd>.<Tb>, <Vn>.<Ta>.  */
    754  1.1  christos #define QL_V2NARRHS		\
    755  1.1  christos {				\
    756  1.1  christos   QLF2(V_4H , V_4S ),		\
    757  1.1  christos   QLF2(V_2S , V_2D ),		\
    758  1.1  christos }
    759  1.1  christos 
    760  1.1  christos /* e.g. FCVTN<Q> <Vd>.<Tb>, <Vn>.<Ta>.  */
    761  1.1  christos #define QL_V2NARRHS2		\
    762  1.1  christos {				\
    763  1.1  christos   QLF2(V_8H , V_4S ),		\
    764  1.1  christos   QLF2(V_4S , V_2D ),		\
    765  1.1  christos }
    766  1.1  christos 
    767  1.1  christos /* e.g. FCVTL<Q> <Vd>.<Ta>, <Vn>.<Tb>.  */
    768  1.1  christos #define QL_V2LONGHS		\
    769  1.1  christos {				\
    770  1.1  christos   QLF2(V_4S , V_4H ),		\
    771  1.1  christos   QLF2(V_2D , V_2S ),		\
    772  1.1  christos }
    773  1.1  christos 
    774  1.1  christos /* e.g. FCVTL<Q> <Vd>.<Ta>, <Vn>.<Tb>.  */
    775  1.1  christos #define QL_V2LONGHS2		\
    776  1.1  christos {				\
    777  1.1  christos   QLF2(V_4S , V_8H ),		\
    778  1.1  christos   QLF2(V_2D , V_4S ),		\
    779  1.1  christos }
    780  1.1  christos 
    781  1.1  christos /* e.g. XTN<Q> <Vd>.<Tb>, <Vn>.<Ta>.  */
    782  1.1  christos #define QL_V2NARRBHS		\
    783  1.1  christos {				\
    784  1.1  christos   QLF2(V_8B , V_8H ),		\
    785  1.1  christos   QLF2(V_4H , V_4S ),		\
    786  1.1  christos   QLF2(V_2S , V_2D ),		\
    787  1.1  christos }
    788  1.1  christos 
    789  1.1  christos /* e.g. XTN<Q> <Vd>.<Tb>, <Vn>.<Ta>.  */
    790  1.1  christos #define QL_V2NARRBHS2		\
    791  1.1  christos {				\
    792  1.1  christos   QLF2(V_16B, V_8H ),		\
    793  1.1  christos   QLF2(V_8H , V_4S ),		\
    794  1.1  christos   QLF2(V_4S , V_2D ),		\
    795  1.1  christos }
    796  1.1  christos 
    797  1.1  christos /* e.g. ORR.  */
    798  1.1  christos #define QL_V2SAMEB		\
    799  1.1  christos {				\
    800  1.1  christos   QLF2(V_8B , V_8B ),		\
    801  1.1  christos   QLF2(V_16B, V_16B),		\
    802  1.1  christos }
    803  1.1  christos 
    804  1.1  christos /* e.g. AESE.  */
    805  1.1  christos #define QL_V2SAME16B		\
    806  1.1  christos {				\
    807  1.1  christos   QLF2(V_16B, V_16B),		\
    808  1.1  christos }
    809  1.1  christos 
    810  1.1  christos /* e.g. SHA1SU1.  */
    811  1.1  christos #define QL_V2SAME4S		\
    812  1.1  christos {				\
    813  1.1  christos   QLF2(V_4S, V_4S),		\
    814  1.1  christos }
    815  1.1  christos 
    816  1.1  christos /* e.g. SHA1SU0.  */
    817  1.1  christos #define QL_V3SAME4S		\
    818  1.1  christos {				\
    819  1.1  christos   QLF3(V_4S, V_4S, V_4S),	\
    820  1.1  christos }
    821  1.1  christos 
    822  1.1  christos /* e.g. SHADD.  */
    823  1.1  christos #define QL_V3SAMEB		\
    824  1.1  christos {				\
    825  1.1  christos   QLF3(V_8B , V_8B , V_8B ),	\
    826  1.1  christos   QLF3(V_16B, V_16B, V_16B),	\
    827  1.1  christos }
    828  1.1  christos 
    829  1.1  christos /* e.g. EXT <Vd>.<T>, <Vn>.<T>, <Vm>.<T>, #<index>.  */
    830  1.1  christos #define QL_VEXT			\
    831  1.1  christos {					\
    832  1.1  christos   QLF4(V_8B , V_8B , V_8B , imm_0_7),	\
    833  1.1  christos   QLF4(V_16B, V_16B, V_16B, imm_0_15),	\
    834  1.1  christos }
    835  1.1  christos 
    836  1.1  christos /* e.g. .  */
    837  1.1  christos #define QL_V3SAMEHS		\
    838  1.1  christos {				\
    839  1.1  christos   QLF3(V_4H , V_4H , V_4H ),	\
    840  1.1  christos   QLF3(V_8H , V_8H , V_8H ),	\
    841  1.1  christos   QLF3(V_2S , V_2S , V_2S ),	\
    842  1.1  christos   QLF3(V_4S , V_4S , V_4S ),	\
    843  1.1  christos }
    844  1.1  christos 
    845  1.1  christos /* */
    846  1.1  christos #define QL_V3SAMESD		\
    847  1.1  christos {				\
    848  1.1  christos   QLF3(V_2S , V_2S , V_2S ),	\
    849  1.1  christos   QLF3(V_4S , V_4S , V_4S ),	\
    850  1.1  christos   QLF3(V_2D , V_2D , V_2D )	\
    851  1.1  christos }
    852  1.1  christos 
    853  1.1  christos /* e.g. SQDMLAL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>.  */
    854  1.1  christos #define QL_V3LONGHS		\
    855  1.1  christos {				\
    856  1.1  christos   QLF3(V_4S , V_4H , V_4H ),	\
    857  1.1  christos   QLF3(V_2D , V_2S , V_2S ),	\
    858  1.1  christos }
    859  1.1  christos 
    860  1.1  christos /* e.g. SQDMLAL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>.  */
    861  1.1  christos #define QL_V3LONGHS2		\
    862  1.1  christos {				\
    863  1.1  christos   QLF3(V_4S , V_8H , V_8H ),	\
    864  1.1  christos   QLF3(V_2D , V_4S , V_4S ),	\
    865  1.1  christos }
    866  1.1  christos 
    867  1.1  christos /* e.g. SADDL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>.  */
    868  1.1  christos #define QL_V3LONGBHS		\
    869  1.1  christos {				\
    870  1.1  christos   QLF3(V_8H , V_8B , V_8B ),	\
    871  1.1  christos   QLF3(V_4S , V_4H , V_4H ),	\
    872  1.1  christos   QLF3(V_2D , V_2S , V_2S ),	\
    873  1.1  christos }
    874  1.1  christos 
    875  1.1  christos /* e.g. SADDL<Q> <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Tb>.  */
    876  1.1  christos #define QL_V3LONGBHS2		\
    877  1.1  christos {				\
    878  1.1  christos   QLF3(V_8H , V_16B , V_16B ),	\
    879  1.1  christos   QLF3(V_4S , V_8H , V_8H ),	\
    880  1.1  christos   QLF3(V_2D , V_4S , V_4S ),	\
    881  1.1  christos }
    882  1.1  christos 
    883  1.1  christos /* e.g. SADDW<Q> <Vd>.<Ta>, <Vn>.<Ta>, <Vm>.<Tb>.  */
    884  1.1  christos #define QL_V3WIDEBHS		\
    885  1.1  christos {				\
    886  1.1  christos   QLF3(V_8H , V_8H , V_8B ),	\
    887  1.1  christos   QLF3(V_4S , V_4S , V_4H ),	\
    888  1.1  christos   QLF3(V_2D , V_2D , V_2S ),	\
    889  1.1  christos }
    890  1.1  christos 
    891  1.1  christos /* e.g. SADDW<Q> <Vd>.<Ta>, <Vn>.<Ta>, <Vm>.<Tb>.  */
    892  1.1  christos #define QL_V3WIDEBHS2		\
    893  1.1  christos {				\
    894  1.1  christos   QLF3(V_8H , V_8H , V_16B ),	\
    895  1.1  christos   QLF3(V_4S , V_4S , V_8H ),	\
    896  1.1  christos   QLF3(V_2D , V_2D , V_4S ),	\
    897  1.1  christos }
    898  1.1  christos 
    899  1.1  christos /* e.g. ADDHN<Q> <Vd>.<Tb>, <Vn>.<Ta>, <Vm>.<Ta>.  */
    900  1.1  christos #define QL_V3NARRBHS		\
    901  1.1  christos {				\
    902  1.1  christos   QLF3(V_8B , V_8H , V_8H ),	\
    903  1.1  christos   QLF3(V_4H , V_4S , V_4S ),	\
    904  1.1  christos   QLF3(V_2S , V_2D , V_2D ),	\
    905  1.1  christos }
    906  1.1  christos 
    907  1.1  christos /* e.g. ADDHN<Q> <Vd>.<Tb>, <Vn>.<Ta>, <Vm>.<Ta>.  */
    908  1.1  christos #define QL_V3NARRBHS2		\
    909  1.1  christos {				\
    910  1.1  christos   QLF3(V_16B , V_8H , V_8H ),	\
    911  1.1  christos   QLF3(V_8H , V_4S , V_4S ),	\
    912  1.1  christos   QLF3(V_4S , V_2D , V_2D ),	\
    913  1.1  christos }
    914  1.1  christos 
    915  1.1  christos /* e.g. PMULL.  */
    916  1.1  christos #define QL_V3LONGB		\
    917  1.1  christos {				\
    918  1.1  christos   QLF3(V_8H , V_8B , V_8B ),	\
    919  1.1  christos }
    920  1.1  christos 
    921  1.1  christos /* e.g. PMULL crypto.  */
    922  1.1  christos #define QL_V3LONGD		\
    923  1.1  christos {				\
    924  1.1  christos   QLF3(V_1Q , V_1D , V_1D ),	\
    925  1.1  christos }
    926  1.1  christos 
    927  1.1  christos /* e.g. PMULL2.  */
    928  1.1  christos #define QL_V3LONGB2		\
    929  1.1  christos {				\
    930  1.1  christos   QLF3(V_8H , V_16B, V_16B),	\
    931  1.1  christos }
    932  1.1  christos 
    933  1.1  christos /* e.g. PMULL2 crypto.  */
    934  1.1  christos #define QL_V3LONGD2		\
    935  1.1  christos {				\
    936  1.1  christos   QLF3(V_1Q , V_2D , V_2D ),	\
    937  1.1  christos }
    938  1.1  christos 
    939  1.1  christos /* e.g. SHA1C.  */
    940  1.1  christos #define QL_SHAUPT		\
    941  1.1  christos {				\
    942  1.1  christos   QLF3(S_Q, S_S, V_4S),		\
    943  1.1  christos }
    944  1.1  christos 
    945  1.1  christos /* e.g. SHA256H2.  */
    946  1.1  christos #define QL_SHA256UPT		\
    947  1.1  christos {				\
    948  1.1  christos   QLF3(S_Q, S_Q, V_4S),		\
    949  1.1  christos }
    950  1.1  christos 
    951  1.1  christos /* e.g. LDXRB <Wt>, [<Xn|SP>{,#0}].  */
    952  1.1  christos #define QL_W1_LDST_EXC		\
    953  1.1  christos {				\
    954  1.1  christos   QLF2(W, NIL),			\
    955  1.1  christos }
    956  1.1  christos 
    957  1.1  christos /* e.g. LDXR <Xt>, [<Xn|SP>{,#0}].  */
    958  1.1  christos #define QL_R1NIL		\
    959  1.1  christos {				\
    960  1.1  christos   QLF2(W, NIL),			\
    961  1.1  christos   QLF2(X, NIL),			\
    962  1.1  christos }
    963  1.1  christos 
    964  1.1  christos /* e.g. STXRB <Ws>, <Wt>, [<Xn|SP>{,#0}].  */
    965  1.1  christos #define QL_W2_LDST_EXC		\
    966  1.1  christos {				\
    967  1.1  christos   QLF3(W, W, NIL),		\
    968  1.1  christos }
    969  1.1  christos 
    970  1.1  christos /* e.g. STXR <Ws>, <Xt>, [<Xn|SP>{,#0}].  */
    971  1.1  christos #define QL_R2_LDST_EXC		\
    972  1.1  christos {				\
    973  1.1  christos   QLF3(W, W, NIL),		\
    974  1.1  christos   QLF3(W, X, NIL),		\
    975  1.1  christos }
    976  1.1  christos 
    977  1.1  christos /* e.g. LDXP <Xt1>, <Xt2>, [<Xn|SP>{,#0}].  */
    978  1.1  christos #define QL_R2NIL		\
    979  1.1  christos {				\
    980  1.1  christos   QLF3(W, W, NIL),		\
    981  1.1  christos   QLF3(X, X, NIL),		\
    982  1.1  christos }
    983  1.1  christos 
    984  1.1  christos /* e.g. STXP <Ws>, <Xt1>, <Xt2>, [<Xn|SP>{,#0}].  */
    985  1.1  christos #define QL_R3_LDST_EXC		\
    986  1.1  christos {				\
    987  1.1  christos   QLF4(W, W, W, NIL),		\
    988  1.1  christos   QLF4(W, X, X, NIL),		\
    989  1.1  christos }
    990  1.1  christos 
    991  1.1  christos /* e.g. STR <Qt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
    992  1.1  christos #define QL_LDST_FP		\
    993  1.1  christos {				\
    994  1.1  christos   QLF2(S_B, S_B),		\
    995  1.1  christos   QLF2(S_H, S_H),		\
    996  1.1  christos   QLF2(S_S, S_S),		\
    997  1.1  christos   QLF2(S_D, S_D),		\
    998  1.1  christos   QLF2(S_Q, S_Q),		\
    999  1.1  christos }
   1000  1.1  christos 
   1001  1.1  christos /* e.g. STR <Xt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1002  1.1  christos #define QL_LDST_R		\
   1003  1.1  christos {				\
   1004  1.1  christos   QLF2(W, S_S),			\
   1005  1.1  christos   QLF2(X, S_D),			\
   1006  1.1  christos }
   1007  1.1  christos 
   1008  1.1  christos /* e.g. STRB <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1009  1.1  christos #define QL_LDST_W8		\
   1010  1.1  christos {				\
   1011  1.1  christos   QLF2(W, S_B),			\
   1012  1.1  christos }
   1013  1.1  christos 
   1014  1.1  christos /* e.g. LDRSB <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1015  1.1  christos #define QL_LDST_R8		\
   1016  1.1  christos {				\
   1017  1.1  christos   QLF2(W, S_B),			\
   1018  1.1  christos   QLF2(X, S_B),			\
   1019  1.1  christos }
   1020  1.1  christos 
   1021  1.1  christos /* e.g. STRH <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1022  1.1  christos #define QL_LDST_W16		\
   1023  1.1  christos {				\
   1024  1.1  christos   QLF2(W, S_H),			\
   1025  1.1  christos }
   1026  1.1  christos 
   1027  1.1  christos /* e.g. LDRSW <Xt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1028  1.1  christos #define QL_LDST_X32		\
   1029  1.1  christos {				\
   1030  1.1  christos   QLF2(X, S_S),			\
   1031  1.1  christos }
   1032  1.1  christos 
   1033  1.1  christos /* e.g. LDRSH <Wt>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1034  1.1  christos #define QL_LDST_R16		\
   1035  1.1  christos {				\
   1036  1.1  christos   QLF2(W, S_H),			\
   1037  1.1  christos   QLF2(X, S_H),			\
   1038  1.1  christos }
   1039  1.1  christos 
   1040  1.1  christos /* e.g. PRFM <prfop>, [<Xn|SP>, <R><m>{, <extend> {<amount>}}].  */
   1041  1.1  christos #define QL_LDST_PRFM		\
   1042  1.1  christos {				\
   1043  1.1  christos   QLF2(NIL, S_D),		\
   1044  1.1  christos }
   1045  1.1  christos 
   1046  1.1  christos /* e.g. LDPSW <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}].  */
   1047  1.1  christos #define QL_LDST_PAIR_X32	\
   1048  1.1  christos {				\
   1049  1.1  christos   QLF3(X, X, S_S),		\
   1050  1.1  christos }
   1051  1.1  christos 
   1052  1.1  christos /* e.g. STP <Wt1>, <Wt2>, [<Xn|SP>, #<imm>]!.  */
   1053  1.1  christos #define QL_LDST_PAIR_R		\
   1054  1.1  christos {				\
   1055  1.1  christos   QLF3(W, W, S_S),		\
   1056  1.1  christos   QLF3(X, X, S_D),		\
   1057  1.1  christos }
   1058  1.1  christos 
   1059  1.1  christos /* e.g. STNP <Qt1>, <Qt2>, [<Xn|SP>{, #<imm>}].  */
   1060  1.1  christos #define QL_LDST_PAIR_FP		\
   1061  1.1  christos {				\
   1062  1.1  christos   QLF3(S_S, S_S, S_S),		\
   1063  1.1  christos   QLF3(S_D, S_D, S_D),		\
   1064  1.1  christos   QLF3(S_Q, S_Q, S_Q),		\
   1065  1.1  christos }
   1066  1.1  christos 
   1067  1.1  christos /* e.g. LD3 {<Vt>.<T>, <Vt2>.<T>, <Vt3>.<T>}, [<Xn|SP>].  */
   1068  1.1  christos #define QL_SIMD_LDST		\
   1069  1.1  christos {				\
   1070  1.1  christos   QLF2(V_8B, NIL),		\
   1071  1.1  christos   QLF2(V_16B, NIL),		\
   1072  1.1  christos   QLF2(V_4H, NIL),		\
   1073  1.1  christos   QLF2(V_8H, NIL),		\
   1074  1.1  christos   QLF2(V_2S, NIL),		\
   1075  1.1  christos   QLF2(V_4S, NIL),		\
   1076  1.1  christos   QLF2(V_2D, NIL),		\
   1077  1.1  christos }
   1078  1.1  christos 
   1079  1.1  christos /* e.g. LD1 {<Vt>.<T>, <Vt2>.<T>, <Vt3>.<T>}, [<Xn|SP>].  */
   1080  1.1  christos #define QL_SIMD_LDST_ANY	\
   1081  1.1  christos {				\
   1082  1.1  christos   QLF2(V_8B, NIL),		\
   1083  1.1  christos   QLF2(V_16B, NIL),		\
   1084  1.1  christos   QLF2(V_4H, NIL),		\
   1085  1.1  christos   QLF2(V_8H, NIL),		\
   1086  1.1  christos   QLF2(V_2S, NIL),		\
   1087  1.1  christos   QLF2(V_4S, NIL),		\
   1088  1.1  christos   QLF2(V_1D, NIL),		\
   1089  1.1  christos   QLF2(V_2D, NIL),		\
   1090  1.1  christos }
   1091  1.1  christos 
   1092  1.1  christos /* e.g. LD4 {<Vt>.<T>, <Vt2a>.<T>, <Vt3a>.<T>, <Vt4a>.<T>}[<index>], [<Xn|SP>].  */
   1093  1.1  christos #define QL_SIMD_LDSTONE		\
   1094  1.1  christos {				\
   1095  1.1  christos   QLF2(S_B, NIL),		\
   1096  1.1  christos   QLF2(S_H, NIL),		\
   1097  1.1  christos   QLF2(S_S, NIL),		\
   1098  1.1  christos   QLF2(S_D, NIL),		\
   1099  1.1  christos }
   1100  1.1  christos 
   1101  1.1  christos /* e.g. ADDV <V><d>, <Vn>.<T>.  */
   1102  1.1  christos #define QL_XLANES		\
   1103  1.1  christos {				\
   1104  1.1  christos   QLF2(S_B, V_8B),		\
   1105  1.1  christos   QLF2(S_B, V_16B),		\
   1106  1.1  christos   QLF2(S_H, V_4H),		\
   1107  1.1  christos   QLF2(S_H, V_8H),		\
   1108  1.1  christos   QLF2(S_S, V_4S),		\
   1109  1.1  christos }
   1110  1.1  christos 
   1111  1.1  christos /* e.g. FMINV <V><d>, <Vn>.<T>.  */
   1112  1.1  christos #define QL_XLANES_FP		\
   1113  1.1  christos {				\
   1114  1.1  christos   QLF2(S_S, V_4S),		\
   1115  1.1  christos }
   1116  1.1  christos 
   1117  1.1  christos /* e.g. SADDLV <V><d>, <Vn>.<T>.  */
   1118  1.1  christos #define QL_XLANES_L		\
   1119  1.1  christos {				\
   1120  1.1  christos   QLF2(S_H, V_8B),		\
   1121  1.1  christos   QLF2(S_H, V_16B),		\
   1122  1.1  christos   QLF2(S_S, V_4H),		\
   1123  1.1  christos   QLF2(S_S, V_8H),		\
   1124  1.1  christos   QLF2(S_D, V_4S),		\
   1125  1.1  christos }
   1126  1.1  christos 
   1127  1.1  christos /* e.g. MUL <Vd>.<T>, <Vn>.<T>, <Vm>.<Ts>[<index>].  */
   1128  1.1  christos #define QL_ELEMENT		\
   1129  1.1  christos {				\
   1130  1.1  christos   QLF3(V_4H, V_4H, S_H),	\
   1131  1.1  christos   QLF3(V_8H, V_8H, S_H),	\
   1132  1.1  christos   QLF3(V_2S, V_2S, S_S),	\
   1133  1.1  christos   QLF3(V_4S, V_4S, S_S),	\
   1134  1.1  christos }
   1135  1.1  christos 
   1136  1.1  christos /* e.g. SMLAL <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Ts>[<index>].  */
   1137  1.1  christos #define QL_ELEMENT_L		\
   1138  1.1  christos {				\
   1139  1.1  christos   QLF3(V_4S, V_4H, S_H),	\
   1140  1.1  christos   QLF3(V_2D, V_2S, S_S),	\
   1141  1.1  christos }
   1142  1.1  christos 
   1143  1.1  christos /* e.g. SMLAL2 <Vd>.<Ta>, <Vn>.<Tb>, <Vm>.<Ts>[<index>].  */
   1144  1.1  christos #define QL_ELEMENT_L2		\
   1145  1.1  christos {				\
   1146  1.1  christos   QLF3(V_4S, V_8H, S_H),	\
   1147  1.1  christos   QLF3(V_2D, V_4S, S_S),	\
   1148  1.1  christos }
   1149  1.1  christos 
   1150  1.1  christos /* e.g. FMLA <V><d>, <V><n>, <Vm>.<Ts>[<index>].  */
   1151  1.1  christos #define QL_ELEMENT_FP		\
   1152  1.1  christos {				\
   1153  1.1  christos   QLF3(V_2S, V_2S, S_S),	\
   1154  1.1  christos   QLF3(V_4S, V_4S, S_S),	\
   1155  1.1  christos   QLF3(V_2D, V_2D, S_D),	\
   1156  1.1  christos }
   1157  1.1  christos 
   1158  1.1  christos /* e.g. MOVI <Vd>.4S, #<imm8> {, LSL #<amount>}.  */
   1159  1.1  christos #define QL_SIMD_IMM_S0W		\
   1160  1.1  christos {				\
   1161  1.1  christos   QLF2(V_2S, LSL),		\
   1162  1.1  christos   QLF2(V_4S, LSL),		\
   1163  1.1  christos }
   1164  1.1  christos 
   1165  1.1  christos /* e.g. MOVI <Vd>.4S, #<imm8>, MSL #<amount>.  */
   1166  1.1  christos #define QL_SIMD_IMM_S1W		\
   1167  1.1  christos {				\
   1168  1.1  christos   QLF2(V_2S, MSL),		\
   1169  1.1  christos   QLF2(V_4S, MSL),		\
   1170  1.1  christos }
   1171  1.1  christos 
   1172  1.1  christos /* e.g. MOVI <Vd>.4H, #<imm8> {, LSL #<amount>}.  */
   1173  1.1  christos #define QL_SIMD_IMM_S0H		\
   1174  1.1  christos {				\
   1175  1.1  christos   QLF2(V_4H, LSL),		\
   1176  1.1  christos   QLF2(V_8H, LSL),		\
   1177  1.1  christos }
   1178  1.1  christos 
   1179  1.1  christos /* e.g. FMOV <Vd>.<T>, #<imm>.  */
   1180  1.1  christos #define QL_SIMD_IMM_S		\
   1181  1.1  christos {				\
   1182  1.1  christos   QLF2(V_2S, NIL),		\
   1183  1.1  christos   QLF2(V_4S, NIL),		\
   1184  1.1  christos }
   1185  1.1  christos 
   1186  1.1  christos /* e.g. MOVI <Vd>.8B, #<imm8> {, LSL #<amount>}.  */
   1187  1.1  christos #define QL_SIMD_IMM_B		\
   1188  1.1  christos {				\
   1189  1.1  christos   QLF2(V_8B, LSL),		\
   1190  1.1  christos   QLF2(V_16B, LSL),		\
   1191  1.1  christos }
   1192  1.1  christos /* e.g. MOVI <Dd>, #<imm>.  */
   1193  1.1  christos #define QL_SIMD_IMM_D		\
   1194  1.1  christos {				\
   1195  1.1  christos   QLF2(S_D, NIL),		\
   1196  1.1  christos }
   1197  1.1  christos 
   1198  1.1  christos /* e.g. MOVI <Vd>.2D, #<imm>.  */
   1199  1.1  christos #define QL_SIMD_IMM_V2D		\
   1200  1.1  christos {				\
   1201  1.1  christos   QLF2(V_2D, NIL),		\
   1202  1.1  christos }
   1203  1.1  christos 
   1204  1.1  christos /* Opcode table.  */
   1206  1.1  christos 
   1207  1.1  christos static const aarch64_feature_set aarch64_feature_v8 =
   1208  1.1  christos   AARCH64_FEATURE (AARCH64_FEATURE_V8, 0);
   1209  1.1  christos static const aarch64_feature_set aarch64_feature_fp =
   1210  1.1  christos   AARCH64_FEATURE (AARCH64_FEATURE_FP, 0);
   1211  1.1  christos static const aarch64_feature_set aarch64_feature_simd =
   1212  1.1  christos   AARCH64_FEATURE (AARCH64_FEATURE_SIMD, 0);
   1213  1.1  christos static const aarch64_feature_set aarch64_feature_crypto =
   1214  1.1  christos   AARCH64_FEATURE (AARCH64_FEATURE_CRYPTO, 0);
   1215  1.1  christos static const aarch64_feature_set aarch64_feature_crc =
   1216  1.1  christos   AARCH64_FEATURE (AARCH64_FEATURE_CRC, 0);
   1217  1.1  christos 
   1218  1.1  christos #define CORE	&aarch64_feature_v8
   1219  1.1  christos #define FP	&aarch64_feature_fp
   1220  1.1  christos #define SIMD	&aarch64_feature_simd
   1221  1.1  christos #define CRYPTO	&aarch64_feature_crypto
   1222  1.1  christos #define CRC	&aarch64_feature_crc
   1223  1.1  christos 
   1224  1.1  christos struct aarch64_opcode aarch64_opcode_table[] =
   1225  1.1  christos {
   1226  1.1  christos   /* Add/subtract (with carry).  */
   1227  1.1  christos   {"adc", 0x1a000000, 0x7fe0fc00, addsub_carry, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF},
   1228  1.1  christos   {"adcs", 0x3a000000, 0x7fe0fc00, addsub_carry, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF},
   1229  1.1  christos   {"sbc", 0x5a000000, 0x7fe0fc00, addsub_carry, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   1230  1.1  christos   {"ngc", 0x5a0003e0, 0x7fe0ffe0, addsub_carry, 0, CORE, OP2 (Rd, Rm), QL_I2SAME, F_ALIAS | F_SF},
   1231  1.1  christos   {"sbcs", 0x7a000000, 0x7fe0fc00, addsub_carry, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   1232  1.1  christos   {"ngcs", 0x7a0003e0, 0x7fe0ffe0, addsub_carry, 0, CORE, OP2 (Rd, Rm), QL_I2SAME, F_ALIAS | F_SF},
   1233  1.1  christos   /* Add/subtract (extended register).  */
   1234  1.1  christos   {"add", 0x0b200000, 0x7fe00000, addsub_ext, 0, CORE, OP3 (Rd_SP, Rn_SP, Rm_EXT), QL_I3_EXT, F_SF},
   1235  1.1  christos   {"adds", 0x2b200000, 0x7fe00000, addsub_ext, 0, CORE, OP3 (Rd, Rn_SP, Rm_EXT), QL_I3_EXT, F_HAS_ALIAS | F_SF},
   1236  1.1  christos   {"cmn", 0x2b20001f, 0x7fe0001f, addsub_ext, 0, CORE, OP2 (Rn_SP, Rm_EXT), QL_I2_EXT, F_ALIAS | F_SF},
   1237  1.1  christos   {"sub", 0x4b200000, 0x7fe00000, addsub_ext, 0, CORE, OP3 (Rd_SP, Rn_SP, Rm_EXT), QL_I3_EXT, F_SF},
   1238  1.1  christos   {"subs", 0x6b200000, 0x7fe00000, addsub_ext, 0, CORE, OP3 (Rd, Rn_SP, Rm_EXT), QL_I3_EXT, F_HAS_ALIAS | F_SF},
   1239  1.1  christos   {"cmp", 0x6b20001f, 0x7fe0001f, addsub_ext, 0, CORE, OP2 (Rn_SP, Rm_EXT), QL_I2_EXT, F_ALIAS | F_SF},
   1240  1.1  christos   /* Add/subtract (immediate).  */
   1241  1.1  christos   {"add", 0x11000000, 0x7f000000, addsub_imm, OP_ADD, CORE, OP3 (Rd_SP, Rn_SP, AIMM), QL_R2NIL, F_HAS_ALIAS | F_SF},
   1242  1.1  christos   {"mov", 0x11000000, 0x7ffffc00, addsub_imm, 0, CORE, OP2 (Rd_SP, Rn_SP), QL_I2SP, F_ALIAS | F_SF},
   1243  1.1  christos   {"adds", 0x31000000, 0x7f000000, addsub_imm, 0, CORE, OP3 (Rd, Rn_SP, AIMM), QL_R2NIL, F_HAS_ALIAS | F_SF},
   1244  1.1  christos   {"cmn", 0x3100001f, 0x7f00001f, addsub_imm, 0, CORE, OP2 (Rn_SP, AIMM), QL_R1NIL, F_ALIAS | F_SF},
   1245  1.1  christos   {"sub", 0x51000000, 0x7f000000, addsub_imm, 0, CORE, OP3 (Rd_SP, Rn_SP, AIMM), QL_R2NIL, F_SF},
   1246  1.1  christos   {"subs", 0x71000000, 0x7f000000, addsub_imm, 0, CORE, OP3 (Rd, Rn_SP, AIMM), QL_R2NIL, F_HAS_ALIAS | F_SF},
   1247  1.1  christos   {"cmp", 0x7100001f, 0x7f00001f, addsub_imm, 0, CORE, OP2 (Rn_SP, AIMM), QL_R1NIL, F_ALIAS | F_SF},
   1248  1.1  christos   /* Add/subtract (shifted register).  */
   1249  1.1  christos   {"add", 0xb000000, 0x7f200000, addsub_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF},
   1250  1.1  christos   {"adds", 0x2b000000, 0x7f200000, addsub_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   1251  1.1  christos   {"cmn", 0x2b00001f, 0x7f20001f, addsub_shift, 0, CORE, OP2 (Rn, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF},
   1252  1.1  christos   {"sub", 0x4b000000, 0x7f200000, addsub_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   1253  1.1  christos   {"neg", 0x4b0003e0, 0x7f2003e0, addsub_shift, 0, CORE, OP2 (Rd, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF},
   1254  1.1  christos   {"subs", 0x6b000000, 0x7f200000, addsub_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   1255  1.1  christos   {"cmp", 0x6b00001f, 0x7f20001f, addsub_shift, 0, CORE, OP2 (Rn, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF},
   1256  1.1  christos   {"negs", 0x6b0003e0, 0x7f2003e0, addsub_shift, 0, CORE, OP2 (Rd, Rm_SFT), QL_I2SAME, F_ALIAS | F_SF},
   1257  1.1  christos   /* AdvSIMD across lanes.  */
   1258  1.1  christos   {"saddlv", 0xe303800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES_L, F_SIZEQ},
   1259  1.1  christos   {"smaxv", 0xe30a800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ},
   1260  1.1  christos   {"sminv", 0xe31a800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ},
   1261  1.1  christos   {"addv", 0xe31b800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ},
   1262  1.1  christos   {"uaddlv", 0x2e303800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES_L, F_SIZEQ},
   1263  1.1  christos   {"umaxv", 0x2e30a800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ},
   1264  1.1  christos   {"uminv", 0x2e31a800, 0xbf3ffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES, F_SIZEQ},
   1265  1.1  christos   {"fmaxnmv", 0x2e30c800, 0xbfbffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ},
   1266  1.1  christos   {"fmaxv", 0x2e30f800, 0xbfbffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ},
   1267  1.1  christos   {"fminnmv", 0x2eb0c800, 0xbfbffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ},
   1268  1.1  christos   {"fminv", 0x2eb0f800, 0xbfbffc00, asimdall, 0, SIMD, OP2 (Fd, Vn), QL_XLANES_FP, F_SIZEQ},
   1269  1.1  christos   /* AdvSIMD three different.  */
   1270  1.1  christos   {"saddl", 0x0e200000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1271  1.1  christos   {"saddl2", 0x4e200000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1272  1.1  christos   {"saddw", 0x0e201000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ},
   1273  1.1  christos   {"saddw2", 0x4e201000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ},
   1274  1.1  christos   {"ssubl", 0x0e202000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1275  1.1  christos   {"ssubl2", 0x4e202000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1276  1.1  christos   {"ssubw", 0x0e203000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ},
   1277  1.1  christos   {"ssubw2", 0x4e203000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ},
   1278  1.1  christos   {"addhn", 0x0e204000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ},
   1279  1.1  christos   {"addhn2", 0x4e204000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ},
   1280  1.1  christos   {"sabal", 0x0e205000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1281  1.1  christos   {"sabal2", 0x4e205000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1282  1.1  christos   {"subhn", 0x0e206000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ},
   1283  1.1  christos   {"subhn2", 0x4e206000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ},
   1284  1.1  christos   {"sabdl", 0x0e207000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1285  1.1  christos   {"sabdl2", 0x4e207000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1286  1.1  christos   {"smlal", 0x0e208000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1287  1.1  christos   {"smlal2", 0x4e208000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1288  1.1  christos   {"sqdmlal", 0x0e209000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGHS, F_SIZEQ},
   1289  1.1  christos   {"sqdmlal2", 0x4e209000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGHS2, F_SIZEQ},
   1290  1.1  christos   {"smlsl", 0x0e20a000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1291  1.1  christos   {"smlsl2", 0x4e20a000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1292  1.1  christos   {"sqdmlsl", 0x0e20b000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGHS, F_SIZEQ},
   1293  1.1  christos   {"sqdmlsl2", 0x4e20b000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGHS2, F_SIZEQ},
   1294  1.1  christos   {"smull", 0x0e20c000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1295  1.1  christos   {"smull2", 0x4e20c000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1296  1.1  christos   {"sqdmull", 0x0e20d000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGHS, F_SIZEQ},
   1297  1.1  christos   {"sqdmull2", 0x4e20d000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGHS2, F_SIZEQ},
   1298  1.1  christos   {"pmull", 0x0e20e000, 0xffe0fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGB, 0},
   1299  1.1  christos   {"pmull", 0x0ee0e000, 0xffe0fc00, asimddiff, 0, CRYPTO, OP3 (Vd, Vn, Vm), QL_V3LONGD, 0},
   1300  1.1  christos   {"pmull2", 0x4e20e000, 0xffe0fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGB2, 0},
   1301  1.1  christos   {"pmull2", 0x4ee0e000, 0xffe0fc00, asimddiff, 0, CRYPTO, OP3 (Vd, Vn, Vm), QL_V3LONGD2, 0},
   1302  1.1  christos   {"uaddl", 0x2e200000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1303  1.1  christos   {"uaddl2", 0x6e200000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1304  1.1  christos   {"uaddw", 0x2e201000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ},
   1305  1.1  christos   {"uaddw2", 0x6e201000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ},
   1306  1.1  christos   {"usubl", 0x2e202000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1307  1.1  christos   {"usubl2", 0x6e202000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1308  1.1  christos   {"usubw", 0x2e203000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS, F_SIZEQ},
   1309  1.1  christos   {"usubw2", 0x6e203000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3WIDEBHS2, F_SIZEQ},
   1310  1.1  christos   {"raddhn", 0x2e204000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ},
   1311  1.1  christos   {"raddhn2", 0x6e204000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ},
   1312  1.1  christos   {"uabal", 0x2e205000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1313  1.1  christos   {"uabal2", 0x6e205000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1314  1.1  christos   {"rsubhn", 0x2e206000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS, F_SIZEQ},
   1315  1.1  christos   {"rsubhn2", 0x6e206000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3NARRBHS2, F_SIZEQ},
   1316  1.1  christos   {"uabdl", 0x2e207000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1317  1.1  christos   {"uabdl2", 0x6e207000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1318  1.1  christos   {"umlal", 0x2e208000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1319  1.1  christos   {"umlal2", 0x6e208000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1320  1.1  christos   {"umlsl", 0x2e20a000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1321  1.1  christos   {"umlsl2", 0x6e20a000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1322  1.1  christos   {"umull", 0x2e20c000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS, F_SIZEQ},
   1323  1.1  christos   {"umull2", 0x6e20c000, 0xff20fc00, asimddiff, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3LONGBHS2, F_SIZEQ},
   1324  1.1  christos   /* AdvSIMD vector x indexed element.  */
   1325  1.1  christos   {"smlal", 0x0f002000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1326  1.1  christos   {"smlal2", 0x4f002000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1327  1.1  christos   {"sqdmlal", 0x0f003000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1328  1.1  christos   {"sqdmlal2", 0x4f003000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1329  1.1  christos   {"smlsl", 0x0f006000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1330  1.1  christos   {"smlsl2", 0x4f006000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1331  1.1  christos   {"sqdmlsl", 0x0f007000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1332  1.1  christos   {"sqdmlsl2", 0x4f007000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1333  1.1  christos   {"mul", 0xf008000, 0xbf00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ},
   1334  1.1  christos   {"smull", 0x0f00a000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1335  1.1  christos   {"smull2", 0x4f00a000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1336  1.1  christos   {"sqdmull", 0x0f00b000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1337  1.1  christos   {"sqdmull2", 0x4f00b000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1338  1.1  christos   {"sqdmulh", 0xf00c000, 0xbf00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ},
   1339  1.1  christos   {"sqrdmulh", 0xf00d000, 0xbf00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ},
   1340  1.1  christos   {"fmla", 0xf801000, 0xbf80f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ},
   1341  1.1  christos   {"fmls", 0xf805000, 0xbf80f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ},
   1342  1.1  christos   {"fmul", 0xf809000, 0xbf80f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ},
   1343  1.1  christos   {"mla", 0x2f000000, 0xbf00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ},
   1344  1.1  christos   {"umlal", 0x2f002000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1345  1.1  christos   {"umlal2", 0x6f002000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1346  1.1  christos   {"mls", 0x2f004000, 0xbf00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT, F_SIZEQ},
   1347  1.1  christos   {"umlsl", 0x2f006000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1348  1.1  christos   {"umlsl2", 0x6f006000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1349  1.1  christos   {"umull", 0x2f00a000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L, F_SIZEQ},
   1350  1.1  christos   {"umull2", 0x6f00a000, 0xff00f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_L2, F_SIZEQ},
   1351  1.1  christos   {"fmulx", 0x2f809000, 0xbf80f400, asimdelem, 0, SIMD, OP3 (Vd, Vn, Em), QL_ELEMENT_FP, F_SIZEQ},
   1352  1.1  christos   /* AdvSIMD EXT.  */
   1353  1.1  christos   {"ext", 0x2e000000, 0xbfe0c400, asimdext, 0, SIMD, OP4 (Vd, Vn, Vm, IDX), QL_VEXT, F_SIZEQ},
   1354  1.1  christos   /* AdvSIMD modified immediate.  */
   1355  1.1  christos   {"movi", 0xf000400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
   1356  1.1  christos   {"orr", 0xf001400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
   1357  1.1  christos   {"movi", 0xf008400, 0xbff8dc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ},
   1358  1.1  christos   {"orr", 0xf009400, 0xbff8dc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ},
   1359  1.1  christos   {"movi", 0xf00c400, 0xbff8ec00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S1W, F_SIZEQ},
   1360  1.1  christos   {"movi", 0xf00e400, 0xbff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_B, F_SIZEQ},
   1361  1.1  christos   {"fmov", 0xf00f400, 0xbff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_S, F_SIZEQ},
   1362  1.1  christos   {"mvni", 0x2f000400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
   1363  1.1  christos   {"bic", 0x2f001400, 0xbff89c00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0W, F_SIZEQ},
   1364  1.1  christos   {"mvni", 0x2f008400, 0xbff8dc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ},
   1365  1.1  christos   {"bic", 0x2f009400, 0xbff8dc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S0H, F_SIZEQ},
   1366  1.1  christos   {"mvni", 0x2f00c400, 0xbff8ec00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM_SFT), QL_SIMD_IMM_S1W, F_SIZEQ},
   1367  1.1  christos   {"movi", 0x2f00e400, 0xfff8fc00, asimdimm, 0, SIMD, OP2 (Sd, SIMD_IMM), QL_SIMD_IMM_D, F_SIZEQ},
   1368  1.1  christos   {"movi", 0x6f00e400, 0xfff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_IMM), QL_SIMD_IMM_V2D, F_SIZEQ},
   1369  1.1  christos   {"fmov", 0x6f00f400, 0xfff8fc00, asimdimm, 0, SIMD, OP2 (Vd, SIMD_FPIMM), QL_SIMD_IMM_V2D, F_SIZEQ},
   1370  1.1  christos   /* AdvSIMD copy.  */
   1371  1.1  christos   {"dup", 0xe000400, 0xbfe0fc00, asimdins, 0, SIMD, OP2 (Vd, En), QL_DUP_VX, F_T},
   1372  1.1  christos   {"dup", 0xe000c00, 0xbfe0fc00, asimdins, 0, SIMD, OP2 (Vd, Rn), QL_DUP_VR, F_T},
   1373  1.1  christos   {"smov", 0xe002c00, 0xbfe0fc00, asimdins, 0, SIMD, OP2 (Rd, En), QL_SMOV, F_GPRSIZE_IN_Q},
   1374  1.1  christos   {"umov", 0xe003c00, 0xbfe0fc00, asimdins, 0, SIMD, OP2 (Rd, En), QL_UMOV, F_HAS_ALIAS | F_GPRSIZE_IN_Q},
   1375  1.1  christos   {"mov", 0xe003c00, 0xbfe0fc00, asimdins, 0, SIMD, OP2 (Rd, En), QL_MOV, F_ALIAS | F_GPRSIZE_IN_Q},
   1376  1.1  christos   {"ins", 0x4e001c00, 0xffe0fc00, asimdins, 0, SIMD, OP2 (Ed, Rn), QL_INS_XR, F_HAS_ALIAS},
   1377  1.1  christos   {"mov", 0x4e001c00, 0xffe0fc00, asimdins, 0, SIMD, OP2 (Ed, Rn), QL_INS_XR, F_ALIAS},
   1378  1.1  christos   {"ins", 0x6e000400, 0xffe08400, asimdins, 0, SIMD, OP2 (Ed, En), QL_S_2SAME, F_HAS_ALIAS},
   1379  1.1  christos   {"mov", 0x6e000400, 0xffe08400, asimdins, 0, SIMD, OP2 (Ed, En), QL_S_2SAME, F_ALIAS},
   1380  1.1  christos   /* AdvSIMD two-reg misc.  */
   1381  1.1  christos   {"rev64", 0xe200800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEBHS, F_SIZEQ},
   1382  1.1  christos   {"rev16", 0xe201800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ},
   1383  1.1  christos   {"saddlp", 0xe202800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ},
   1384  1.1  christos   {"suqadd", 0xe203800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ},
   1385  1.1  christos   {"cls", 0xe204800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEBHS, F_SIZEQ},
   1386  1.1  christos   {"cnt", 0xe205800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ},
   1387  1.1  christos   {"sadalp", 0xe206800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ},
   1388  1.1  christos   {"sqabs", 0xe207800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ},
   1389  1.1  christos   {"cmgt", 0xe208800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ},
   1390  1.1  christos   {"cmeq", 0xe209800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ},
   1391  1.1  christos   {"cmlt", 0xe20a800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ},
   1392  1.1  christos   {"abs", 0xe20b800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ},
   1393  1.1  christos   {"xtn", 0xe212800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ},
   1394  1.1  christos   {"xtn2", 0x4e212800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ},
   1395  1.1  christos   {"sqxtn", 0xe214800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ},
   1396  1.1  christos   {"sqxtn2", 0x4e214800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ},
   1397  1.1  christos   {"fcvtn", 0xe216800, 0xffbffc00, asimdmisc, OP_FCVTN, SIMD, OP2 (Vd, Vn), QL_V2NARRHS, F_MISC},
   1398  1.1  christos   {"fcvtn2", 0x4e216800, 0xffbffc00, asimdmisc, OP_FCVTN2, SIMD, OP2 (Vd, Vn), QL_V2NARRHS2, F_MISC},
   1399  1.1  christos   {"fcvtl", 0xe217800, 0xffbffc00, asimdmisc, OP_FCVTL, SIMD, OP2 (Vd, Vn), QL_V2LONGHS, F_MISC},
   1400  1.1  christos   {"fcvtl2", 0x4e217800, 0xffbffc00, asimdmisc, OP_FCVTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGHS2, F_MISC},
   1401  1.1  christos   {"frintn", 0xe218800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1402  1.1  christos   {"frintm", 0xe219800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1403  1.1  christos   {"fcvtns", 0xe21a800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1404  1.1  christos   {"fcvtms", 0xe21b800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1405  1.1  christos   {"fcvtas", 0xe21c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1406  1.1  christos   {"scvtf", 0xe21d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1407  1.1  christos   {"fcmgt", 0xea0c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
   1408  1.1  christos   {"fcmeq", 0xea0d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
   1409  1.1  christos   {"fcmlt", 0xea0e800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
   1410  1.1  christos   {"fabs", 0xea0f800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1411  1.1  christos   {"frintp", 0xea18800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1412  1.1  christos   {"frintz", 0xea19800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1413  1.1  christos   {"fcvtps", 0xea1a800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1414  1.1  christos   {"fcvtzs", 0xea1b800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1415  1.1  christos   {"urecpe", 0xea1c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMES, F_SIZEQ},
   1416  1.1  christos   {"frecpe", 0xea1d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1417  1.1  christos   {"rev32", 0x2e200800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEBH, F_SIZEQ},
   1418  1.1  christos   {"uaddlp", 0x2e202800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ},
   1419  1.1  christos   {"usqadd", 0x2e203800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ},
   1420  1.1  christos   {"clz", 0x2e204800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEBHS, F_SIZEQ},
   1421  1.1  christos   {"uadalp", 0x2e206800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2PAIRWISELONGBHS, F_SIZEQ},
   1422  1.1  christos   {"sqneg", 0x2e207800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ},
   1423  1.1  christos   {"cmge", 0x2e208800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ},
   1424  1.1  christos   {"cmle", 0x2e209800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAME, F_SIZEQ},
   1425  1.1  christos   {"neg", 0x2e20b800, 0xbf3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAME, F_SIZEQ},
   1426  1.1  christos   {"sqxtun", 0x2e212800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ},
   1427  1.1  christos   {"sqxtun2", 0x6e212800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ},
   1428  1.1  christos   {"shll", 0x2e213800, 0xff3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, SHLL_IMM), QL_V2LONGBHS, F_SIZEQ},
   1429  1.1  christos   {"shll2", 0x6e213800, 0xff3ffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, SHLL_IMM), QL_V2LONGBHS2, F_SIZEQ},
   1430  1.1  christos   {"uqxtn", 0x2e214800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS, F_SIZEQ},
   1431  1.1  christos   {"uqxtn2", 0x6e214800, 0xff3ffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRBHS2, F_SIZEQ},
   1432  1.1  christos   {"fcvtxn", 0x2e616800, 0xfffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRS, 0},
   1433  1.1  christos   {"fcvtxn2", 0x6e616800, 0xfffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2NARRS2, 0},
   1434  1.1  christos   {"frinta", 0x2e218800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1435  1.1  christos   {"frintx", 0x2e219800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1436  1.1  christos   {"fcvtnu", 0x2e21a800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1437  1.1  christos   {"fcvtmu", 0x2e21b800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1438  1.1  christos   {"fcvtau", 0x2e21c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1439  1.1  christos   {"ucvtf", 0x2e21d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1440  1.1  christos   {"not", 0x2e205800, 0xbffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ | F_HAS_ALIAS},
   1441  1.1  christos   {"mvn", 0x2e205800, 0xbffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ | F_ALIAS},
   1442  1.1  christos   {"rbit", 0x2e605800, 0xbffffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_SIZEQ},
   1443  1.1  christos   {"fcmge", 0x2ea0c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
   1444  1.1  christos   {"fcmle", 0x2ea0d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP3 (Vd, Vn, IMM0), QL_V2SAMESD, F_SIZEQ},
   1445  1.1  christos   {"fneg", 0x2ea0f800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1446  1.1  christos   {"frinti", 0x2ea19800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1447  1.1  christos   {"fcvtpu", 0x2ea1a800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1448  1.1  christos   {"fcvtzu", 0x2ea1b800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1449  1.1  christos   {"ursqrte", 0x2ea1c800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMES, F_SIZEQ},
   1450  1.1  christos   {"frsqrte", 0x2ea1d800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1451  1.1  christos   {"fsqrt", 0x2ea1f800, 0xbfbffc00, asimdmisc, 0, SIMD, OP2 (Vd, Vn), QL_V2SAMESD, F_SIZEQ},
   1452  1.1  christos   /* AdvSIMD ZIP/UZP/TRN.  */
   1453  1.1  christos   {"uzp1", 0xe001800, 0xbf20fc00, asimdperm, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1454  1.1  christos   {"trn1", 0xe002800, 0xbf20fc00, asimdperm, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1455  1.1  christos   {"zip1", 0xe003800, 0xbf20fc00, asimdperm, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1456  1.1  christos   {"uzp2", 0xe005800, 0xbf20fc00, asimdperm, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1457  1.1  christos   {"trn2", 0xe006800, 0xbf20fc00, asimdperm, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1458  1.1  christos   {"zip2", 0xe007800, 0xbf20fc00, asimdperm, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1459  1.1  christos   /* AdvSIMD three same.  */
   1460  1.1  christos   {"shadd", 0xe200400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1461  1.1  christos   {"sqadd", 0xe200c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1462  1.1  christos   {"srhadd", 0xe201400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1463  1.1  christos   {"shsub", 0xe202400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1464  1.1  christos   {"sqsub", 0xe202c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1465  1.1  christos   {"cmgt", 0xe203400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1466  1.1  christos   {"cmge", 0xe203c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1467  1.1  christos   {"sshl", 0xe204400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1468  1.1  christos   {"sqshl", 0xe204c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1469  1.1  christos   {"srshl", 0xe205400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1470  1.1  christos   {"sqrshl", 0xe205c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1471  1.1  christos   {"smax", 0xe206400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1472  1.1  christos   {"smin", 0xe206c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1473  1.1  christos   {"sabd", 0xe207400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1474  1.1  christos   {"saba", 0xe207c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1475  1.1  christos   {"add", 0xe208400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1476  1.1  christos   {"cmtst", 0xe208c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1477  1.1  christos   {"mla", 0xe209400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1478  1.1  christos   {"mul", 0xe209c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1479  1.1  christos   {"smaxp", 0xe20a400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1480  1.1  christos   {"sminp", 0xe20ac00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1481  1.1  christos   {"sqdmulh", 0xe20b400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEHS, F_SIZEQ},
   1482  1.1  christos   {"addp", 0xe20bc00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1483  1.1  christos   {"fmaxnm", 0xe20c400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1484  1.1  christos   {"fmla", 0xe20cc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1485  1.1  christos   {"fadd", 0xe20d400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1486  1.1  christos   {"fmulx", 0xe20dc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1487  1.1  christos   {"fcmeq", 0xe20e400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1488  1.1  christos   {"fmax", 0xe20f400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1489  1.1  christos   {"frecps", 0xe20fc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1490  1.1  christos   {"and", 0xe201c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1491  1.1  christos   {"bic", 0xe601c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1492  1.1  christos   {"fminnm", 0xea0c400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1493  1.1  christos   {"fmls", 0xea0cc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1494  1.1  christos   {"fsub", 0xea0d400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1495  1.1  christos   {"fmin", 0xea0f400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1496  1.1  christos   {"frsqrts", 0xea0fc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1497  1.1  christos   {"orr", 0xea01c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_HAS_ALIAS | F_SIZEQ},
   1498  1.1  christos   {"mov", 0xea01c00, 0xbfe0fc00, asimdsame, OP_MOV_V, SIMD, OP2 (Vd, Vn), QL_V2SAMEB, F_ALIAS | F_CONV},
   1499  1.1  christos   {"orn", 0xee01c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1500  1.1  christos   {"uhadd", 0x2e200400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1501  1.1  christos   {"uqadd", 0x2e200c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1502  1.1  christos   {"urhadd", 0x2e201400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1503  1.1  christos   {"uhsub", 0x2e202400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1504  1.1  christos   {"uqsub", 0x2e202c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1505  1.1  christos   {"cmhi", 0x2e203400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1506  1.1  christos   {"cmhs", 0x2e203c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1507  1.1  christos   {"ushl", 0x2e204400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1508  1.1  christos   {"uqshl", 0x2e204c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1509  1.1  christos   {"urshl", 0x2e205400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1510  1.1  christos   {"uqrshl", 0x2e205c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1511  1.1  christos   {"umax", 0x2e206400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1512  1.1  christos   {"umin", 0x2e206c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1513  1.1  christos   {"uabd", 0x2e207400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1514  1.1  christos   {"uaba", 0x2e207c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1515  1.1  christos   {"sub", 0x2e208400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1516  1.1  christos   {"cmeq", 0x2e208c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAME, F_SIZEQ},
   1517  1.1  christos   {"mls", 0x2e209400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1518  1.1  christos   {"pmul", 0x2e209c00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1519  1.1  christos   {"umaxp", 0x2e20a400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1520  1.1  christos   {"uminp", 0x2e20ac00, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEBHS, F_SIZEQ},
   1521  1.1  christos   {"sqrdmulh", 0x2e20b400, 0xbf20fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEHS, F_SIZEQ},
   1522  1.1  christos   {"fmaxnmp", 0x2e20c400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1523  1.1  christos   {"faddp", 0x2e20d400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1524  1.1  christos   {"fmul", 0x2e20dc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1525  1.1  christos   {"fcmge", 0x2e20e400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1526  1.1  christos   {"facge", 0x2e20ec00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1527  1.1  christos   {"fmaxp", 0x2e20f400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1528  1.1  christos   {"fdiv", 0x2e20fc00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1529  1.1  christos   {"eor", 0x2e201c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1530  1.1  christos   {"bsl", 0x2e601c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1531  1.1  christos   {"fminnmp", 0x2ea0c400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1532  1.1  christos   {"fabd", 0x2ea0d400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1533  1.1  christos   {"fcmgt", 0x2ea0e400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1534  1.1  christos   {"facgt", 0x2ea0ec00, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1535  1.1  christos   {"fminp", 0x2ea0f400, 0xbfa0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMESD, F_SIZEQ},
   1536  1.1  christos   {"bit", 0x2ea01c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1537  1.1  christos   {"bif", 0x2ee01c00, 0xbfe0fc00, asimdsame, 0, SIMD, OP3 (Vd, Vn, Vm), QL_V3SAMEB, F_SIZEQ},
   1538  1.1  christos   /* AdvSIMD shift by immediate.  */
   1539  1.1  christos   {"sshr", 0xf000400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1540  1.1  christos   {"ssra", 0xf001400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1541  1.1  christos   {"srshr", 0xf002400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1542  1.1  christos   {"srsra", 0xf003400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1543  1.1  christos   {"shl", 0xf005400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0},
   1544  1.1  christos   {"sqshl", 0xf007400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0},
   1545  1.1  christos   {"shrn", 0xf008400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1546  1.1  christos   {"shrn2", 0x4f008400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1547  1.1  christos   {"rshrn", 0xf008c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1548  1.1  christos   {"rshrn2", 0x4f008c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1549  1.1  christos   {"sqshrn", 0xf009400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1550  1.1  christos   {"sqshrn2", 0x4f009400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1551  1.1  christos   {"sqrshrn", 0xf009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1552  1.1  christos   {"sqrshrn2", 0x4f009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1553  1.1  christos   {"sshll", 0xf00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, F_HAS_ALIAS},
   1554  1.1  christos   {"sxtl", 0xf00a400, 0xff87fc00, asimdshf, OP_SXTL, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS, F_ALIAS | F_CONV},
   1555  1.1  christos   {"sshll2", 0x4f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, F_HAS_ALIAS},
   1556  1.1  christos   {"sxtl2", 0x4f00a400, 0xff87fc00, asimdshf, OP_SXTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS2, F_ALIAS | F_CONV},
   1557  1.1  christos   {"scvtf", 0xf00e400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0},
   1558  1.1  christos   {"fcvtzs", 0xf00fc00, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0},
   1559  1.1  christos   {"ushr", 0x2f000400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1560  1.1  christos   {"usra", 0x2f001400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1561  1.1  christos   {"urshr", 0x2f002400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1562  1.1  christos   {"ursra", 0x2f003400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1563  1.1  christos   {"sri", 0x2f004400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT, 0},
   1564  1.1  christos   {"sli", 0x2f005400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0},
   1565  1.1  christos   {"sqshlu", 0x2f006400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0},
   1566  1.1  christos   {"uqshl", 0x2f007400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFT, 0},
   1567  1.1  christos   {"sqshrun", 0x2f008400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1568  1.1  christos   {"sqshrun2", 0x6f008400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1569  1.1  christos   {"sqrshrun", 0x2f008c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1570  1.1  christos   {"sqrshrun2", 0x6f008c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1571  1.1  christos   {"uqshrn", 0x2f009400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1572  1.1  christos   {"uqshrn2", 0x6f009400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1573  1.1  christos   {"uqrshrn", 0x2f009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN, 0},
   1574  1.1  christos   {"uqrshrn2", 0x6f009c00, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFTN2, 0},
   1575  1.1  christos   {"ushll", 0x2f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL, F_HAS_ALIAS},
   1576  1.1  christos   {"uxtl", 0x2f00a400, 0xff87fc00, asimdshf, OP_UXTL, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS, F_ALIAS | F_CONV},
   1577  1.1  christos   {"ushll2", 0x6f00a400, 0xff80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSL), QL_VSHIFTL2, F_HAS_ALIAS},
   1578  1.1  christos   {"uxtl2", 0x6f00a400, 0xff87fc00, asimdshf, OP_UXTL2, SIMD, OP2 (Vd, Vn), QL_V2LONGBHS2, F_ALIAS | F_CONV},
   1579  1.1  christos   {"ucvtf", 0x2f00e400, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0},
   1580  1.1  christos   {"fcvtzu", 0x2f00fc00, 0xbf80fc00, asimdshf, 0, SIMD, OP3 (Vd, Vn, IMM_VLSR), QL_VSHIFT_SD, 0},
   1581  1.1  christos   /* AdvSIMD TBL/TBX.  */
   1582  1.1  christos   {"tbl", 0xe000000, 0xbfe09c00, asimdtbl, 0, SIMD, OP3 (Vd, LVn, Vm), QL_TABLE, F_SIZEQ},
   1583  1.1  christos   {"tbx", 0xe001000, 0xbfe09c00, asimdtbl, 0, SIMD, OP3 (Vd, LVn, Vm), QL_TABLE, F_SIZEQ},
   1584  1.1  christos   /* AdvSIMD scalar three different.  */
   1585  1.1  christos   {"sqdmlal", 0x5e209000, 0xff20fc00, asisddiff, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISDL_HS, F_SSIZE},
   1586  1.1  christos   {"sqdmlsl", 0x5e20b000, 0xff20fc00, asisddiff, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISDL_HS, F_SSIZE},
   1587  1.1  christos   {"sqdmull", 0x5e20d000, 0xff20fc00, asisddiff, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISDL_HS, F_SSIZE},
   1588  1.1  christos   /* AdvSIMD scalar x indexed element.  */
   1589  1.1  christos   {"sqdmlal", 0x5f003000, 0xff00f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_SISDL_HS, F_SSIZE},
   1590  1.1  christos   {"sqdmlsl", 0x5f007000, 0xff00f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_SISDL_HS, F_SSIZE},
   1591  1.1  christos   {"sqdmull", 0x5f00b000, 0xff00f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_SISDL_HS, F_SSIZE},
   1592  1.1  christos   {"sqdmulh", 0x5f00c000, 0xff00f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_SISD_HS, F_SSIZE},
   1593  1.1  christos   {"sqrdmulh", 0x5f00d000, 0xff00f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_SISD_HS, F_SSIZE},
   1594  1.1  christos   {"fmla", 0x5f801000, 0xff80f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE},
   1595  1.1  christos   {"fmls", 0x5f805000, 0xff80f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE},
   1596  1.1  christos   {"fmul", 0x5f809000, 0xff80f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE},
   1597  1.1  christos   {"fmulx", 0x7f809000, 0xff80f400, asisdelem, 0, SIMD, OP3 (Sd, Sn, Em), QL_FP3, F_SSIZE},
   1598  1.1  christos   /* AdvSIMD load/store multiple structures.  */
   1599  1.1  christos   {"st4", 0xc000000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(4)},
   1600  1.1  christos   {"st1", 0xc000000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)},
   1601  1.1  christos   {"st2", 0xc000000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(2)},
   1602  1.1  christos   {"st3", 0xc000000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(3)},
   1603  1.1  christos   {"ld4", 0xc400000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(4)},
   1604  1.1  christos   {"ld1", 0xc400000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)},
   1605  1.1  christos   {"ld2", 0xc400000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(2)},
   1606  1.1  christos   {"ld3", 0xc400000, 0xbfff0000, asisdlse, 0, SIMD, OP2 (LVt, SIMD_ADDR_SIMPLE), QL_SIMD_LDST, F_SIZEQ | F_OD(3)},
   1607  1.1  christos   /* AdvSIMD load/store multiple structures (post-indexed).  */
   1608  1.1  christos   {"st4", 0xc800000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(4)},
   1609  1.1  christos   {"st1", 0xc800000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)},
   1610  1.1  christos   {"st2", 0xc800000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(2)},
   1611  1.1  christos   {"st3", 0xc800000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(3)},
   1612  1.1  christos   {"ld4", 0xcc00000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(4)},
   1613  1.1  christos   {"ld1", 0xcc00000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)},
   1614  1.1  christos   {"ld2", 0xcc00000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(2)},
   1615  1.1  christos   {"ld3", 0xcc00000, 0xbfe00000, asisdlsep, 0, SIMD, OP2 (LVt, SIMD_ADDR_POST), QL_SIMD_LDST, F_SIZEQ | F_OD(3)},
   1616  1.1  christos   /* AdvSIMD load/store single structure.  */
   1617  1.1  christos   {"st1", 0xd000000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(1)},
   1618  1.1  christos   {"st3", 0xd002000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(3)},
   1619  1.1  christos   {"st2", 0xd200000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(2)},
   1620  1.1  christos   {"st4", 0xd202000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(4)},
   1621  1.1  christos   {"ld1", 0xd400000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(1)},
   1622  1.1  christos   {"ld3", 0xd402000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(3)},
   1623  1.1  christos   {"ld1r", 0xd40c000, 0xbfffe000, asisdlso, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)},
   1624  1.1  christos   {"ld3r", 0xd40e000, 0xbfffe000, asisdlso, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(3)},
   1625  1.1  christos   {"ld2", 0xd600000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(2)},
   1626  1.1  christos   {"ld4", 0xd602000, 0xbfff2000, asisdlso, 0, SIMD, OP2 (LEt, SIMD_ADDR_SIMPLE), QL_SIMD_LDSTONE, F_OD(4)},
   1627  1.1  christos   {"ld2r", 0xd60c000, 0xbfffe000, asisdlso, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(2)},
   1628  1.1  christos   {"ld4r", 0xd60e000, 0xbfffe000, asisdlso, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_SIMPLE), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(4)},
   1629  1.1  christos   /* AdvSIMD load/store single structure (post-indexed).  */
   1630  1.1  christos   {"st1", 0xd800000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(1)},
   1631  1.1  christos   {"st3", 0xd802000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(3)},
   1632  1.1  christos   {"st2", 0xda00000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(2)},
   1633  1.1  christos   {"st4", 0xda02000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(4)},
   1634  1.1  christos   {"ld1", 0xdc00000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(1)},
   1635  1.1  christos   {"ld3", 0xdc02000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(3)},
   1636  1.1  christos   {"ld1r", 0xdc0c000, 0xbfe0e000, asisdlsop, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(1)},
   1637  1.1  christos   {"ld3r", 0xdc0e000, 0xbfe0e000, asisdlsop, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(3)},
   1638  1.1  christos   {"ld2", 0xde00000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(2)},
   1639  1.1  christos   {"ld4", 0xde02000, 0xbfe02000, asisdlsop, 0, SIMD, OP2 (LEt, SIMD_ADDR_POST), QL_SIMD_LDSTONE, F_OD(4)},
   1640  1.1  christos   {"ld2r", 0xde0c000, 0xbfe0e000, asisdlsop, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(2)},
   1641  1.1  christos   {"ld4r", 0xde0e000, 0xbfe0e000, asisdlsop, 0, SIMD, OP2 (LVt_AL, SIMD_ADDR_POST), QL_SIMD_LDST_ANY, F_SIZEQ | F_OD(4)},
   1642  1.1  christos   /* AdvSIMD scalar two-reg misc.  */
   1643  1.1  christos   {"suqadd", 0x5e203800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE},
   1644  1.1  christos   {"sqabs", 0x5e207800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE},
   1645  1.1  christos   {"cmgt", 0x5e208800, 0xff3ffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE},
   1646  1.1  christos   {"cmeq", 0x5e209800, 0xff3ffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE},
   1647  1.1  christos   {"cmlt", 0x5e20a800, 0xff3ffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE},
   1648  1.1  christos   {"abs", 0x5e20b800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_2SAMED, F_SSIZE},
   1649  1.1  christos   {"sqxtn", 0x5e214800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_SISD_NARROW, F_SSIZE},
   1650  1.1  christos   {"fcvtns", 0x5e21a800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1651  1.1  christos   {"fcvtms", 0x5e21b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1652  1.1  christos   {"fcvtas", 0x5e21c800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1653  1.1  christos   {"scvtf", 0x5e21d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1654  1.1  christos   {"fcmgt", 0x5ea0c800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
   1655  1.1  christos   {"fcmeq", 0x5ea0d800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
   1656  1.1  christos   {"fcmlt", 0x5ea0e800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
   1657  1.1  christos   {"fcvtps", 0x5ea1a800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1658  1.1  christos   {"fcvtzs", 0x5ea1b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1659  1.1  christos   {"frecpe", 0x5ea1d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1660  1.1  christos   {"frecpx", 0x5ea1f800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1661  1.1  christos   {"usqadd", 0x7e203800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE},
   1662  1.1  christos   {"sqneg", 0x7e207800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAME, F_SSIZE},
   1663  1.1  christos   {"cmge", 0x7e208800, 0xff3ffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE},
   1664  1.1  christos   {"cmle", 0x7e209800, 0xff3ffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_CMP_0, F_SSIZE},
   1665  1.1  christos   {"neg", 0x7e20b800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_2SAMED, F_SSIZE},
   1666  1.1  christos   {"sqxtun", 0x7e212800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_SISD_NARROW, F_SSIZE},
   1667  1.1  christos   {"uqxtn", 0x7e214800, 0xff3ffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_SISD_NARROW, F_SSIZE},
   1668  1.1  christos   {"fcvtxn", 0x7e216800, 0xffbffc00, asisdmisc, OP_FCVTXN_S, SIMD, OP2 (Sd, Sn), QL_SISD_NARROW_S, F_MISC},
   1669  1.1  christos   {"fcvtnu", 0x7e21a800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1670  1.1  christos   {"fcvtmu", 0x7e21b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1671  1.1  christos   {"fcvtau", 0x7e21c800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1672  1.1  christos   {"ucvtf", 0x7e21d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1673  1.1  christos   {"fcmge", 0x7ea0c800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
   1674  1.1  christos   {"fcmle", 0x7ea0d800, 0xffbffc00, asisdmisc, 0, SIMD, OP3 (Sd, Sn, IMM0), QL_SISD_FCMP_0, F_SSIZE},
   1675  1.1  christos   {"fcvtpu", 0x7ea1a800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1676  1.1  christos   {"fcvtzu", 0x7ea1b800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1677  1.1  christos   {"frsqrte", 0x7ea1d800, 0xffbffc00, asisdmisc, 0, SIMD, OP2 (Sd, Sn), QL_S_2SAMESD, F_SSIZE},
   1678  1.1  christos   /* AdvSIMD scalar copy.  */
   1679  1.1  christos   {"dup", 0x5e000400, 0xffe0fc00, asisdone, 0, SIMD, OP2 (Sd, En), QL_S_2SAME, F_HAS_ALIAS},
   1680  1.1  christos   {"mov", 0x5e000400, 0xffe0fc00, asisdone, 0, SIMD, OP2 (Sd, En), QL_S_2SAME, F_ALIAS},
   1681  1.1  christos   /* AdvSIMD scalar pairwise.  */
   1682  1.1  christos   {"addp", 0x5e31b800, 0xff3ffc00, asisdpair, 0, SIMD, OP2 (Sd, Vn), QL_SISD_PAIR_D, F_SIZEQ},
   1683  1.1  christos   {"fmaxnmp", 0x7e30c800, 0xffbffc00, asisdpair, 0, SIMD, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ},
   1684  1.1  christos   {"faddp", 0x7e30d800, 0xffbffc00, asisdpair, 0, SIMD, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ},
   1685  1.1  christos   {"fmaxp", 0x7e30f800, 0xffbffc00, asisdpair, 0, SIMD, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ},
   1686  1.1  christos   {"fminnmp", 0x7eb0c800, 0xffbffc00, asisdpair, 0, SIMD, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ},
   1687  1.1  christos   {"fminp", 0x7eb0f800, 0xffbffc00, asisdpair, 0, SIMD, OP2 (Sd, Vn), QL_SISD_PAIR, F_SIZEQ},
   1688  1.1  christos   /* AdvSIMD scalar three same.  */
   1689  1.1  christos   {"sqadd", 0x5e200c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1690  1.1  christos   {"sqsub", 0x5e202c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1691  1.1  christos   {"sqshl", 0x5e204c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1692  1.1  christos   {"sqrshl", 0x5e205c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1693  1.1  christos   {"sqdmulh", 0x5e20b400, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE},
   1694  1.1  christos   {"fmulx", 0x5e20dc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1695  1.1  christos   {"fcmeq", 0x5e20e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1696  1.1  christos   {"frecps", 0x5e20fc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1697  1.1  christos   {"frsqrts", 0x5ea0fc00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1698  1.1  christos   {"cmgt", 0x5ee03400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1699  1.1  christos   {"cmge", 0x5ee03c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1700  1.1  christos   {"sshl", 0x5ee04400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1701  1.1  christos   {"srshl", 0x5ee05400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1702  1.1  christos   {"add", 0x5ee08400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1703  1.1  christos   {"cmtst", 0x5ee08c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1704  1.1  christos   {"uqadd", 0x7e200c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1705  1.1  christos   {"uqsub", 0x7e202c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1706  1.1  christos   {"uqshl", 0x7e204c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1707  1.1  christos   {"uqrshl", 0x7e205c00, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAME, F_SSIZE},
   1708  1.1  christos   {"sqrdmulh", 0x7e20b400, 0xff20fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_SISD_HS, F_SSIZE},
   1709  1.1  christos   {"fcmge", 0x7e20e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1710  1.1  christos   {"facge", 0x7e20ec00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1711  1.1  christos   {"fabd", 0x7ea0d400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1712  1.1  christos   {"fcmgt", 0x7ea0e400, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1713  1.1  christos   {"facgt", 0x7ea0ec00, 0xffa0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_FP3, F_SSIZE},
   1714  1.1  christos   {"cmhi", 0x7ee03400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1715  1.1  christos   {"cmhs", 0x7ee03c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1716  1.1  christos   {"ushl", 0x7ee04400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1717  1.1  christos   {"urshl", 0x7ee05400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1718  1.1  christos   {"sub", 0x7ee08400, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1719  1.1  christos   {"cmeq", 0x7ee08c00, 0xffe0fc00, asisdsame, 0, SIMD, OP3 (Sd, Sn, Sm), QL_S_3SAMED, F_SSIZE},
   1720  1.1  christos   /* AdvSIMD scalar shift by immediate.  */
   1721  1.1  christos   {"sshr", 0x5f000400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1722  1.1  christos   {"ssra", 0x5f001400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1723  1.1  christos   {"srshr", 0x5f002400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1724  1.1  christos   {"srsra", 0x5f003400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1725  1.1  christos   {"shl", 0x5f005400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT_D, 0},
   1726  1.1  christos   {"sqshl", 0x5f007400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT, 0},
   1727  1.1  christos   {"sqshrn", 0x5f009400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0},
   1728  1.1  christos   {"sqrshrn", 0x5f009c00, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0},
   1729  1.1  christos   {"scvtf", 0x5f00e400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0},
   1730  1.1  christos   {"fcvtzs", 0x5f00fc00, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0},
   1731  1.1  christos   {"ushr", 0x7f000400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1732  1.1  christos   {"usra", 0x7f001400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1733  1.1  christos   {"urshr", 0x7f002400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1734  1.1  christos   {"ursra", 0x7f003400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1735  1.1  christos   {"sri", 0x7f004400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_D, 0},
   1736  1.1  christos   {"sli", 0x7f005400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT_D, 0},
   1737  1.1  christos   {"sqshlu", 0x7f006400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT, 0},
   1738  1.1  christos   {"uqshl", 0x7f007400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSL), QL_SSHIFT, 0},
   1739  1.1  christos   {"sqshrun", 0x7f008400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0},
   1740  1.1  christos   {"sqrshrun", 0x7f008c00, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0},
   1741  1.1  christos   {"uqshrn", 0x7f009400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0},
   1742  1.1  christos   {"uqrshrn", 0x7f009c00, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFTN, 0},
   1743  1.1  christos   {"ucvtf", 0x7f00e400, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0},
   1744  1.1  christos   {"fcvtzu", 0x7f00fc00, 0xff80fc00, asisdshf, 0, SIMD, OP3 (Sd, Sn, IMM_VLSR), QL_SSHIFT_SD, 0},
   1745  1.1  christos   /* Bitfield.  */
   1746  1.1  christos   {"sbfm", 0x13000000, 0x7f800000, bitfield, 0, CORE, OP4 (Rd, Rn, IMMR, IMMS), QL_BF, F_HAS_ALIAS | F_SF | F_N},
   1747  1.1  christos   {"sbfiz", 0x13000000, 0x7f800000, bitfield, OP_SBFIZ, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV},
   1748  1.1  christos   {"sbfx", 0x13000000, 0x7f800000, bitfield, OP_SBFX, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV},
   1749  1.1  christos   {"sxtb", 0x13001c00, 0x7fbffc00, bitfield, 0, CORE, OP2 (Rd, Rn), QL_EXT, F_ALIAS | F_P3 | F_SF | F_N},
   1750  1.1  christos   {"sxth", 0x13003c00, 0x7fbffc00, bitfield, 0, CORE, OP2 (Rd, Rn), QL_EXT, F_ALIAS | F_P3 | F_SF | F_N},
   1751  1.1  christos   {"sxtw", 0x93407c00, 0xfffffc00, bitfield, 0, CORE, OP2 (Rd, Rn), QL_EXT_W, F_ALIAS | F_P3},
   1752  1.1  christos   {"asr", 0x13000000, 0x7f800000, bitfield, OP_ASR_IMM, CORE, OP3 (Rd, Rn, IMM), QL_SHIFT, F_ALIAS | F_P2 | F_CONV},
   1753  1.1  christos   {"bfm", 0x33000000, 0x7f800000, bitfield, 0, CORE, OP4 (Rd, Rn, IMMR, IMMS), QL_BF, F_HAS_ALIAS | F_SF | F_N},
   1754  1.1  christos   {"bfi", 0x33000000, 0x7f800000, bitfield, OP_BFI, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV},
   1755  1.1  christos   {"bfxil", 0x33000000, 0x7f800000, bitfield, OP_BFXIL, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV},
   1756  1.1  christos   {"ubfm", 0x53000000, 0x7f800000, bitfield, 0, CORE, OP4 (Rd, Rn, IMMR, IMMS), QL_BF, F_HAS_ALIAS | F_SF | F_N},
   1757  1.1  christos   {"ubfiz", 0x53000000, 0x7f800000, bitfield, OP_UBFIZ, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV},
   1758  1.1  christos   {"ubfx", 0x53000000, 0x7f800000, bitfield, OP_UBFX, CORE, OP4 (Rd, Rn, IMM, WIDTH), QL_BF2, F_ALIAS | F_P1 | F_CONV},
   1759  1.1  christos   {"uxtb", 0x53001c00, 0xfffffc00, bitfield, OP_UXTB, CORE, OP2 (Rd, Rn), QL_I2SAMEW, F_ALIAS | F_P3},
   1760  1.1  christos   {"uxth", 0x53003c00, 0xfffffc00, bitfield, OP_UXTH, CORE, OP2 (Rd, Rn), QL_I2SAMEW, F_ALIAS | F_P3},
   1761  1.1  christos   {"lsl", 0x53000000, 0x7f800000, bitfield, OP_LSL_IMM, CORE, OP3 (Rd, Rn, IMM), QL_SHIFT, F_ALIAS | F_P2 | F_CONV},
   1762  1.1  christos   {"lsr", 0x53000000, 0x7f800000, bitfield, OP_LSR_IMM, CORE, OP3 (Rd, Rn, IMM), QL_SHIFT, F_ALIAS | F_P2 | F_CONV},
   1763  1.1  christos   /* Unconditional branch (immediate).  */
   1764  1.1  christos   {"b", 0x14000000, 0xfc000000, branch_imm, OP_B, CORE, OP1 (ADDR_PCREL26), QL_PCREL_26, 0},
   1765  1.1  christos   {"bl", 0x94000000, 0xfc000000, branch_imm, OP_BL, CORE, OP1 (ADDR_PCREL26), QL_PCREL_26, 0},
   1766  1.1  christos   /* Unconditional branch (register).  */
   1767  1.1  christos   {"br", 0xd61f0000, 0xfffffc1f, branch_reg, 0, CORE, OP1 (Rn), QL_I1X, 0},
   1768  1.1  christos   {"blr", 0xd63f0000, 0xfffffc1f, branch_reg, 0, CORE, OP1 (Rn), QL_I1X, 0},
   1769  1.1  christos   {"ret", 0xd65f0000, 0xfffffc1f, branch_reg, 0, CORE, OP1 (Rn), QL_I1X, F_OPD0_OPT | F_DEFAULT (30)},
   1770  1.1  christos   {"eret", 0xd69f03e0, 0xffffffff, branch_reg, 0, CORE, OP0 (), {}, 0},
   1771  1.1  christos   {"drps", 0xd6bf03e0, 0xffffffff, branch_reg, 0, CORE, OP0 (), {}, 0},
   1772  1.1  christos   /* Compare & branch (immediate).  */
   1773  1.1  christos   {"cbz", 0x34000000, 0x7f000000, compbranch, 0, CORE, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_SF},
   1774  1.1  christos   {"cbnz", 0x35000000, 0x7f000000, compbranch, 0, CORE, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_SF},
   1775  1.1  christos   /* Conditional branch (immediate).  */
   1776  1.1  christos   {"b.c", 0x54000000, 0xff000010, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_COND},
   1777  1.1  christos   /* Conditional compare (immediate).  */
   1778  1.1  christos   {"ccmn", 0x3a400800, 0x7fe00c10, condcmp_imm, 0, CORE, OP4 (Rn, CCMP_IMM, NZCV, COND), QL_CCMP_IMM, F_SF},
   1779  1.1  christos   {"ccmp", 0x7a400800, 0x7fe00c10, condcmp_imm, 0, CORE, OP4 (Rn, CCMP_IMM, NZCV, COND), QL_CCMP_IMM, F_SF},
   1780  1.1  christos   /* Conditional compare (register).  */
   1781  1.1  christos   {"ccmn", 0x3a400000, 0x7fe00c10, condcmp_reg, 0, CORE, OP4 (Rn, Rm, NZCV, COND), QL_CCMP, F_SF},
   1782  1.1  christos   {"ccmp", 0x7a400000, 0x7fe00c10, condcmp_reg, 0, CORE, OP4 (Rn, Rm, NZCV, COND), QL_CCMP, F_SF},
   1783  1.1  christos   /* Conditional select.  */
   1784  1.1  christos   {"csel", 0x1a800000, 0x7fe00c00, condsel, 0, CORE, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_SF},
   1785  1.1  christos   {"csinc", 0x1a800400, 0x7fe00c00, condsel, 0, CORE, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_HAS_ALIAS | F_SF},
   1786  1.1  christos   {"cinc", 0x1a800400, 0x7fe00c00, condsel, OP_CINC, CORE, OP3 (Rd, Rn, COND1), QL_CSEL, F_ALIAS | F_SF | F_CONV},
   1787  1.1  christos   {"cset", 0x1a9f07e0, 0x7fff0fe0, condsel, OP_CSET, CORE, OP2 (Rd, COND1), QL_DST_R, F_ALIAS | F_P1 | F_SF | F_CONV},
   1788  1.1  christos   {"csinv", 0x5a800000, 0x7fe00c00, condsel, 0, CORE, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_HAS_ALIAS | F_SF},
   1789  1.1  christos   {"cinv", 0x5a800000, 0x7fe00c00, condsel, OP_CINV, CORE, OP3 (Rd, Rn, COND1), QL_CSEL, F_ALIAS | F_SF | F_CONV},
   1790  1.1  christos   {"csetm", 0x5a9f03e0, 0x7fff0fe0, condsel, OP_CSETM, CORE, OP2 (Rd, COND1), QL_DST_R, F_ALIAS | F_P1 | F_SF | F_CONV},
   1791  1.1  christos   {"csneg", 0x5a800400, 0x7fe00c00, condsel, 0, CORE, OP4 (Rd, Rn, Rm, COND), QL_CSEL, F_HAS_ALIAS | F_SF},
   1792  1.1  christos   {"cneg", 0x5a800400, 0x7fe00c00, condsel, OP_CNEG, CORE, OP3 (Rd, Rn, COND1), QL_CSEL, F_ALIAS | F_SF | F_CONV},
   1793  1.1  christos   /* Crypto AES.  */
   1794  1.1  christos   {"aese", 0x4e284800, 0xfffffc00, cryptoaes, 0, CRYPTO, OP2 (Vd, Vn), QL_V2SAME16B, 0},
   1795  1.1  christos   {"aesd", 0x4e285800, 0xfffffc00, cryptoaes, 0, CRYPTO, OP2 (Vd, Vn), QL_V2SAME16B, 0},
   1796  1.1  christos   {"aesmc", 0x4e286800, 0xfffffc00, cryptoaes, 0, CRYPTO, OP2 (Vd, Vn), QL_V2SAME16B, 0},
   1797  1.1  christos   {"aesimc", 0x4e287800, 0xfffffc00, cryptoaes, 0, CRYPTO, OP2 (Vd, Vn), QL_V2SAME16B, 0},
   1798  1.1  christos   /* Crypto two-reg SHA.  */
   1799  1.1  christos   {"sha1h", 0x5e280800, 0xfffffc00, cryptosha2, 0, CRYPTO, OP2 (Fd, Fn), QL_2SAMES, 0},
   1800  1.1  christos   {"sha1su1", 0x5e281800, 0xfffffc00, cryptosha2, 0, CRYPTO, OP2 (Vd, Vn), QL_V2SAME4S, 0},
   1801  1.1  christos   {"sha256su0", 0x5e282800, 0xfffffc00, cryptosha2, 0, CRYPTO, OP2 (Vd, Vn), QL_V2SAME4S, 0},
   1802  1.1  christos   /* Crypto three-reg SHA.  */
   1803  1.1  christos   {"sha1c", 0x5e000000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Fd, Fn, Vm), QL_SHAUPT, 0},
   1804  1.1  christos   {"sha1p", 0x5e001000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Fd, Fn, Vm), QL_SHAUPT, 0},
   1805  1.1  christos   {"sha1m", 0x5e002000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Fd, Fn, Vm), QL_SHAUPT, 0},
   1806  1.1  christos   {"sha1su0", 0x5e003000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Vd, Vn, Vm), QL_V3SAME4S, 0},
   1807  1.1  christos   {"sha256h", 0x5e004000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Fd, Fn, Vm), QL_SHA256UPT, 0},
   1808  1.1  christos   {"sha256h2", 0x5e005000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Fd, Fn, Vm), QL_SHA256UPT, 0},
   1809  1.1  christos   {"sha256su1", 0x5e006000, 0xffe0fc00, cryptosha3, 0, CRYPTO, OP3 (Vd, Vn, Vm), QL_V3SAME4S, 0},
   1810  1.1  christos   /* Data-processing (1 source).  */
   1811  1.1  christos   {"rbit", 0x5ac00000, 0x7ffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAME, F_SF},
   1812  1.1  christos   {"rev16", 0x5ac00400, 0x7ffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAME, F_SF},
   1813  1.1  christos   {"rev", 0x5ac00800, 0xfffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAMEW, 0},
   1814  1.1  christos   {"rev", 0xdac00c00, 0x7ffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAMEX, 0},
   1815  1.1  christos   {"clz", 0x5ac01000, 0x7ffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAME, F_SF},
   1816  1.1  christos   {"cls", 0x5ac01400, 0x7ffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAME, F_SF},
   1817  1.1  christos   {"rev32", 0xdac00800, 0xfffffc00, dp_1src, 0, CORE, OP2 (Rd, Rn), QL_I2SAMEX, 0},
   1818  1.1  christos   /* Data-processing (2 source).  */
   1819  1.1  christos   {"udiv", 0x1ac00800, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF},
   1820  1.1  christos   {"sdiv", 0x1ac00c00, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF},
   1821  1.1  christos   {"lslv", 0x1ac02000, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS},
   1822  1.1  christos   {"lsl", 0x1ac02000, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS},
   1823  1.1  christos   {"lsrv", 0x1ac02400, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS},
   1824  1.1  christos   {"lsr", 0x1ac02400, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS},
   1825  1.1  christos   {"asrv", 0x1ac02800, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS},
   1826  1.1  christos   {"asr", 0x1ac02800, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS},
   1827  1.1  christos   {"rorv", 0x1ac02c00, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_HAS_ALIAS},
   1828  1.1  christos   {"ror", 0x1ac02c00, 0x7fe0fc00, dp_2src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_SF | F_ALIAS},
   1829  1.1  christos   /* CRC instructions.  */
   1830  1.1  christos   {"crc32b", 0x1ac04000, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0},
   1831  1.1  christos   {"crc32h", 0x1ac04400, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0},
   1832  1.1  christos   {"crc32w", 0x1ac04800, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0},
   1833  1.1  christos   {"crc32x", 0x9ac04c00, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3WWX, 0},
   1834  1.1  christos   {"crc32cb", 0x1ac05000, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0},
   1835  1.1  christos   {"crc32ch", 0x1ac05400, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0},
   1836  1.1  christos   {"crc32cw", 0x1ac05800, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3SAMEW, 0},
   1837  1.1  christos   {"crc32cx", 0x9ac05c00, 0xffe0fc00, dp_2src, 0, CRC, OP3 (Rd, Rn, Rm), QL_I3WWX, 0},
   1838  1.1  christos   /* Data-processing (3 source).  */
   1839  1.1  christos   {"madd", 0x1b000000, 0x7fe08000, dp_3src, 0, CORE, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMER, F_HAS_ALIAS | F_SF},
   1840  1.1  christos   {"mul", 0x1b007c00, 0x7fe0fc00, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_ALIAS | F_SF},
   1841  1.1  christos   {"msub", 0x1b008000, 0x7fe08000, dp_3src, 0, CORE, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMER, F_HAS_ALIAS | F_SF},
   1842  1.1  christos   {"mneg", 0x1b00fc00, 0x7fe0fc00, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMER, F_ALIAS | F_SF},
   1843  1.1  christos   {"smaddl", 0x9b200000, 0xffe08000, dp_3src, 0, CORE, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS},
   1844  1.1  christos   {"smull", 0x9b207c00, 0xffe0fc00, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS},
   1845  1.1  christos   {"smsubl", 0x9b208000, 0xffe08000, dp_3src, 0, CORE, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS},
   1846  1.1  christos   {"smnegl", 0x9b20fc00, 0xffe0fc00, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS},
   1847  1.1  christos   {"smulh", 0x9b407c00, 0xffe08000, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMEX, 0},
   1848  1.1  christos   {"umaddl", 0x9ba00000, 0xffe08000, dp_3src, 0, CORE, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS},
   1849  1.1  christos   {"umull", 0x9ba07c00, 0xffe0fc00, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS},
   1850  1.1  christos   {"umsubl", 0x9ba08000, 0xffe08000, dp_3src, 0, CORE, OP4 (Rd, Rn, Rm, Ra), QL_I4SAMEL, F_HAS_ALIAS},
   1851  1.1  christos   {"umnegl", 0x9ba0fc00, 0xffe0fc00, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMEL, F_ALIAS},
   1852  1.1  christos   {"umulh", 0x9bc07c00, 0xffe08000, dp_3src, 0, CORE, OP3 (Rd, Rn, Rm), QL_I3SAMEX, 0},
   1853  1.1  christos   /* Excep'n generation.  */
   1854  1.1  christos   {"svc", 0xd4000001, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, 0},
   1855  1.1  christos   {"hvc", 0xd4000002, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, 0},
   1856  1.1  christos   {"smc", 0xd4000003, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, 0},
   1857  1.1  christos   {"brk", 0xd4200000, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, 0},
   1858  1.1  christos   {"hlt", 0xd4400000, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, 0},
   1859  1.1  christos   {"dcps1", 0xd4a00001, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, F_OPD0_OPT | F_DEFAULT (0)},
   1860  1.1  christos   {"dcps2", 0xd4a00002, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, F_OPD0_OPT | F_DEFAULT (0)},
   1861  1.1  christos   {"dcps3", 0xd4a00003, 0xffe0001f, exception, 0, CORE, OP1 (EXCEPTION), {}, F_OPD0_OPT | F_DEFAULT (0)},
   1862  1.1  christos   /* Extract.  */
   1863  1.1  christos   {"extr", 0x13800000, 0x7fa00000, extract, 0, CORE, OP4 (Rd, Rn, Rm, IMMS), QL_EXTR, F_HAS_ALIAS | F_SF | F_N},
   1864  1.1  christos   {"ror", 0x13800000, 0x7fa00000, extract, OP_ROR_IMM, CORE, OP3 (Rd, Rm, IMMS), QL_SHIFT, F_ALIAS | F_CONV},
   1865  1.1  christos   /* Floating-point<->fixed-point conversions.  */
   1866  1.1  christos   {"scvtf", 0x1e020000, 0x7f3f0000, float2fix, 0, FP, OP3 (Fd, Rn, FBITS), QL_FIX2FP, F_FPTYPE | F_SF},
   1867  1.1  christos   {"ucvtf", 0x1e030000, 0x7f3f0000, float2fix, 0, FP, OP3 (Fd, Rn, FBITS), QL_FIX2FP, F_FPTYPE | F_SF},
   1868  1.1  christos   {"fcvtzs", 0x1e180000, 0x7f3f0000, float2fix, 0, FP, OP3 (Rd, Fn, FBITS), QL_FP2FIX, F_FPTYPE | F_SF},
   1869  1.1  christos   {"fcvtzu", 0x1e190000, 0x7f3f0000, float2fix, 0, FP, OP3 (Rd, Fn, FBITS), QL_FP2FIX, F_FPTYPE | F_SF},
   1870  1.1  christos   /* Floating-point<->integer conversions.  */
   1871  1.1  christos   {"fcvtns", 0x1e200000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1872  1.1  christos   {"fcvtnu", 0x1e210000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1873  1.1  christos   {"scvtf", 0x1e220000, 0x7f3ffc00, float2int, 0, FP, OP2 (Fd, Rn), QL_INT2FP, F_FPTYPE | F_SF},
   1874  1.1  christos   {"ucvtf", 0x1e230000, 0x7f3ffc00, float2int, 0, FP, OP2 (Fd, Rn), QL_INT2FP, F_FPTYPE | F_SF},
   1875  1.1  christos   {"fcvtas", 0x1e240000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1876  1.1  christos   {"fcvtau", 0x1e250000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1877  1.1  christos   {"fmov", 0x1e260000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1878  1.1  christos   {"fmov", 0x1e270000, 0x7f3ffc00, float2int, 0, FP, OP2 (Fd, Rn), QL_INT2FP, F_FPTYPE | F_SF},
   1879  1.1  christos   {"fcvtps", 0x1e280000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1880  1.1  christos   {"fcvtpu", 0x1e290000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1881  1.1  christos   {"fcvtms", 0x1e300000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1882  1.1  christos   {"fcvtmu", 0x1e310000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1883  1.1  christos   {"fcvtzs", 0x1e380000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1884  1.1  christos   {"fcvtzu", 0x1e390000, 0x7f3ffc00, float2int, 0, FP, OP2 (Rd, Fn), QL_FP2INT, F_FPTYPE | F_SF},
   1885  1.1  christos   {"fmov", 0x9eae0000, 0xfffffc00, float2int, 0, FP, OP2 (Rd, VnD1), QL_XVD1, 0},
   1886  1.1  christos   {"fmov", 0x9eaf0000, 0xfffffc00, float2int, 0, FP, OP2 (VdD1, Rn), QL_VD1X, 0},
   1887  1.1  christos   /* Floating-point conditional compare.  */
   1888  1.1  christos   {"fccmp", 0x1e200400, 0xff200c10, floatccmp, 0, FP, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP, F_FPTYPE},
   1889  1.1  christos   {"fccmpe", 0x1e200410, 0xff200c10, floatccmp, 0, FP, OP4 (Fn, Fm, NZCV, COND), QL_FCCMP, F_FPTYPE},
   1890  1.1  christos   /* Floating-point compare.  */
   1891  1.1  christos   {"fcmp", 0x1e202000, 0xff20fc1f, floatcmp, 0, FP, OP2 (Fn, Fm), QL_FP2, F_FPTYPE},
   1892  1.1  christos   {"fcmpe", 0x1e202010, 0xff20fc1f, floatcmp, 0, FP, OP2 (Fn, Fm), QL_FP2, F_FPTYPE},
   1893  1.1  christos   {"fcmp", 0x1e202008, 0xff20fc1f, floatcmp, 0, FP, OP2 (Fn, FPIMM0), QL_DST_SD, F_FPTYPE},
   1894  1.1  christos   {"fcmpe", 0x1e202018, 0xff20fc1f, floatcmp, 0, FP, OP2 (Fn, FPIMM0), QL_DST_SD, F_FPTYPE},
   1895  1.1  christos   /* Floating-point data-processing (1 source).  */
   1896  1.1  christos   {"fmov", 0x1e204000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1897  1.1  christos   {"fabs", 0x1e20c000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1898  1.1  christos   {"fneg", 0x1e214000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1899  1.1  christos   {"fsqrt", 0x1e21c000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1900  1.1  christos   {"fcvt", 0x1e224000, 0xff3e7c00, floatdp1, OP_FCVT, FP, OP2 (Fd, Fn), QL_FCVT, F_FPTYPE | F_MISC},
   1901  1.1  christos   {"frintn", 0x1e244000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1902  1.1  christos   {"frintp", 0x1e24c000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1903  1.1  christos   {"frintm", 0x1e254000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1904  1.1  christos   {"frintz", 0x1e25c000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1905  1.1  christos   {"frinta", 0x1e264000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1906  1.1  christos   {"frintx", 0x1e274000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1907  1.1  christos   {"frinti", 0x1e27c000, 0xff3ffc00, floatdp1, 0, FP, OP2 (Fd, Fn), QL_FP2, F_FPTYPE},
   1908  1.1  christos   /* Floating-point data-processing (2 source).  */
   1909  1.1  christos   {"fmul", 0x1e200800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1910  1.1  christos   {"fdiv", 0x1e201800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1911  1.1  christos   {"fadd", 0x1e202800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1912  1.1  christos   {"fsub", 0x1e203800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1913  1.1  christos   {"fmax", 0x1e204800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1914  1.1  christos   {"fmin", 0x1e205800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1915  1.1  christos   {"fmaxnm", 0x1e206800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1916  1.1  christos   {"fminnm", 0x1e207800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1917  1.1  christos   {"fnmul", 0x1e208800, 0xff20fc00, floatdp2, 0, FP, OP3 (Fd, Fn, Fm), QL_FP3, F_FPTYPE},
   1918  1.1  christos   /* Floating-point data-processing (3 source).  */
   1919  1.1  christos   {"fmadd", 0x1f000000, 0xff208000, floatdp3, 0, FP, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE},
   1920  1.1  christos   {"fmsub", 0x1f008000, 0xff208000, floatdp3, 0, FP, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE},
   1921  1.1  christos   {"fnmadd", 0x1f200000, 0xff208000, floatdp3, 0, FP, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE},
   1922  1.1  christos   {"fnmsub", 0x1f208000, 0xff208000, floatdp3, 0, FP, OP4 (Fd, Fn, Fm, Fa), QL_FP4, F_FPTYPE},
   1923  1.1  christos   /* Floating-point immediate.  */
   1924  1.1  christos   {"fmov", 0x1e201000, 0xff201fe0, floatimm, 0, FP, OP2 (Fd, FPIMM), QL_DST_SD, F_FPTYPE},
   1925  1.1  christos   /* Floating-point conditional select.  */
   1926  1.1  christos   {"fcsel", 0x1e200c00, 0xff200c00, floatsel, 0, FP, OP4 (Fd, Fn, Fm, COND), QL_FP_COND, F_FPTYPE},
   1927  1.1  christos   /* Load/store register (immediate indexed).  */
   1928  1.1  christos   {"strb", 0x38000400, 0xffe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0},
   1929  1.1  christos   {"ldrb", 0x38400400, 0xffe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0},
   1930  1.1  christos   {"ldrsb", 0x38800400, 0xffa00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R8, F_LDS_SIZE},
   1931  1.1  christos   {"str", 0x3c000400, 0x3f600400, ldst_imm9, 0, CORE, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, 0},
   1932  1.1  christos   {"ldr", 0x3c400400, 0x3f600400, ldst_imm9, 0, CORE, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, 0},
   1933  1.1  christos   {"strh", 0x78000400, 0xffe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0},
   1934  1.1  christos   {"ldrh", 0x78400400, 0xffe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0},
   1935  1.1  christos   {"ldrsh", 0x78800400, 0xffa00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R16, F_LDS_SIZE},
   1936  1.1  christos   {"str", 0xb8000400, 0xbfe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q},
   1937  1.1  christos   {"ldr", 0xb8400400, 0xbfe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q},
   1938  1.1  christos   {"ldrsw", 0xb8800400, 0xffe00400, ldst_imm9, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_X32, 0},
   1939  1.1  christos   /* Load/store register (unsigned immediate).  */
   1940  1.1  christos   {"strb", 0x39000000, 0xffc00000, ldst_pos, OP_STRB_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W8, 0},
   1941  1.1  christos   {"ldrb", 0x39400000, 0xffc00000, ldst_pos, OP_LDRB_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W8, 0},
   1942  1.1  christos   {"ldrsb", 0x39800000, 0xff800000, ldst_pos, OP_LDRSB_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R8, F_LDS_SIZE},
   1943  1.1  christos   {"str", 0x3d000000, 0x3f400000, ldst_pos, OP_STRF_POS, CORE, OP2 (Ft, ADDR_UIMM12), QL_LDST_FP, 0},
   1944  1.1  christos   {"ldr", 0x3d400000, 0x3f400000, ldst_pos, OP_LDRF_POS, CORE, OP2 (Ft, ADDR_UIMM12), QL_LDST_FP, 0},
   1945  1.1  christos   {"strh", 0x79000000, 0xffc00000, ldst_pos, OP_STRH_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W16, 0},
   1946  1.1  christos   {"ldrh", 0x79400000, 0xffc00000, ldst_pos, OP_LDRH_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_W16, 0},
   1947  1.1  christos   {"ldrsh", 0x79800000, 0xff800000, ldst_pos, OP_LDRSH_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R16, F_LDS_SIZE},
   1948  1.1  christos   {"str", 0xb9000000, 0xbfc00000, ldst_pos, OP_STR_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R, F_GPRSIZE_IN_Q},
   1949  1.1  christos   {"ldr", 0xb9400000, 0xbfc00000, ldst_pos, OP_LDR_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_R, F_GPRSIZE_IN_Q},
   1950  1.1  christos   {"ldrsw", 0xb9800000, 0xffc00000, ldst_pos, OP_LDRSW_POS, CORE, OP2 (Rt, ADDR_UIMM12), QL_LDST_X32, 0},
   1951  1.1  christos   {"prfm", 0xf9800000, 0xffc00000, ldst_pos, OP_PRFM_POS, CORE, OP2 (PRFOP, ADDR_UIMM12), QL_LDST_PRFM, 0},
   1952  1.1  christos   /* Load/store register (register offset).  */
   1953  1.1  christos   {"strb", 0x38200800, 0xffe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_W8, 0},
   1954  1.1  christos   {"ldrb", 0x38600800, 0xffe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_W8, 0},
   1955  1.1  christos   {"ldrsb", 0x38a00800, 0xffa00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_R8, F_LDS_SIZE},
   1956  1.1  christos   {"str", 0x3c200800, 0x3f600c00, ldst_regoff, 0, CORE, OP2 (Ft, ADDR_REGOFF), QL_LDST_FP, 0},
   1957  1.1  christos   {"ldr", 0x3c600800, 0x3f600c00, ldst_regoff, 0, CORE, OP2 (Ft, ADDR_REGOFF), QL_LDST_FP, 0},
   1958  1.1  christos   {"strh", 0x78200800, 0xffe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_W16, 0},
   1959  1.1  christos   {"ldrh", 0x78600800, 0xffe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_W16, 0},
   1960  1.1  christos   {"ldrsh", 0x78a00800, 0xffa00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_R16, F_LDS_SIZE},
   1961  1.1  christos   {"str", 0xb8200800, 0xbfe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_R, F_GPRSIZE_IN_Q},
   1962  1.1  christos   {"ldr", 0xb8600800, 0xbfe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_R, F_GPRSIZE_IN_Q},
   1963  1.1  christos   {"ldrsw", 0xb8a00800, 0xffe00c00, ldst_regoff, 0, CORE, OP2 (Rt, ADDR_REGOFF), QL_LDST_X32, 0},
   1964  1.1  christos   {"prfm", 0xf8a00800, 0xffe00c00, ldst_regoff, 0, CORE, OP2 (PRFOP, ADDR_REGOFF), QL_LDST_PRFM, 0},
   1965  1.1  christos   /* Load/store register (unprivileged).  */
   1966  1.1  christos   {"sttrb", 0x38000800, 0xffe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0},
   1967  1.1  christos   {"ldtrb", 0x38400800, 0xffe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, 0},
   1968  1.1  christos   {"ldtrsb", 0x38800800, 0xffa00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R8, F_LDS_SIZE},
   1969  1.1  christos   {"sttrh", 0x78000800, 0xffe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0},
   1970  1.1  christos   {"ldtrh", 0x78400800, 0xffe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, 0},
   1971  1.1  christos   {"ldtrsh", 0x78800800, 0xffa00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R16, F_LDS_SIZE},
   1972  1.1  christos   {"sttr", 0xb8000800, 0xbfe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q},
   1973  1.1  christos   {"ldtr", 0xb8400800, 0xbfe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_GPRSIZE_IN_Q},
   1974  1.1  christos   {"ldtrsw", 0xb8800800, 0xffe00c00, ldst_unpriv, 0, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_X32, 0},
   1975  1.1  christos   /* Load/store register (unscaled immediate).  */
   1976  1.1  christos   {"sturb", 0x38000000, 0xffe00c00, ldst_unscaled, OP_STURB, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, F_HAS_ALIAS},
   1977  1.1  christos   {"ldurb", 0x38400000, 0xffe00c00, ldst_unscaled, OP_LDURB, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W8, F_HAS_ALIAS},
   1978  1.1  christos   {"strb", 0x38000000, 0xffe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_W8, F_ALIAS},
   1979  1.1  christos   {"ldrb", 0x38400000, 0xffe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_W8, F_ALIAS},
   1980  1.1  christos   {"ldursb", 0x38800000, 0xffa00c00, ldst_unscaled, OP_LDURSB, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R8, F_HAS_ALIAS | F_LDS_SIZE},
   1981  1.1  christos   {"ldrsb", 0x38800000, 0xffa00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_R8, F_ALIAS | F_LDS_SIZE},
   1982  1.1  christos   {"stur", 0x3c000000, 0x3f600c00, ldst_unscaled, OP_STURV, CORE, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, F_HAS_ALIAS},
   1983  1.1  christos   {"ldur", 0x3c400000, 0x3f600c00, ldst_unscaled, OP_LDURV, CORE, OP2 (Ft, ADDR_SIMM9), QL_LDST_FP, F_HAS_ALIAS},
   1984  1.1  christos   {"str", 0x3c000000, 0x3f600c00, ldst_unscaled, 0, CORE, OP2 (Ft, ADDR_SIMM9_2), QL_LDST_FP, F_ALIAS},
   1985  1.1  christos   {"ldr", 0x3c400000, 0x3f600c00, ldst_unscaled, 0, CORE, OP2 (Ft, ADDR_SIMM9_2), QL_LDST_FP, F_ALIAS},
   1986  1.1  christos   {"sturh", 0x78000000, 0xffe00c00, ldst_unscaled, OP_STURH, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, F_HAS_ALIAS},
   1987  1.1  christos   {"ldurh", 0x78400000, 0xffe00c00, ldst_unscaled, OP_LDURH, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_W16, F_HAS_ALIAS},
   1988  1.1  christos   {"strh", 0x78000000, 0xffe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_W16, F_ALIAS},
   1989  1.1  christos   {"ldrh", 0x78400000, 0xffe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_W16, F_ALIAS},
   1990  1.1  christos   {"ldursh", 0x78800000, 0xffa00c00, ldst_unscaled, OP_LDURSH, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R16, F_HAS_ALIAS | F_LDS_SIZE},
   1991  1.1  christos   {"ldrsh", 0x78800000, 0xffa00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_R16, F_ALIAS | F_LDS_SIZE},
   1992  1.1  christos   {"stur", 0xb8000000, 0xbfe00c00, ldst_unscaled, OP_STUR, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_HAS_ALIAS | F_GPRSIZE_IN_Q},
   1993  1.1  christos   {"ldur", 0xb8400000, 0xbfe00c00, ldst_unscaled, OP_LDUR, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_R, F_HAS_ALIAS | F_GPRSIZE_IN_Q},
   1994  1.1  christos   {"str", 0xb8000000, 0xbfe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_R, F_ALIAS | F_GPRSIZE_IN_Q},
   1995  1.1  christos   {"ldr", 0xb8400000, 0xbfe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_R, F_ALIAS | F_GPRSIZE_IN_Q},
   1996  1.1  christos   {"ldursw", 0xb8800000, 0xffe00c00, ldst_unscaled, OP_LDURSW, CORE, OP2 (Rt, ADDR_SIMM9), QL_LDST_X32, F_HAS_ALIAS},
   1997  1.1  christos   {"ldrsw", 0xb8800000, 0xffe00c00, ldst_unscaled, 0, CORE, OP2 (Rt, ADDR_SIMM9_2), QL_LDST_X32, F_ALIAS},
   1998  1.1  christos   {"prfum", 0xf8800000, 0xffe00c00, ldst_unscaled, OP_PRFUM, CORE, OP2 (PRFOP, ADDR_SIMM9), QL_LDST_PRFM, F_HAS_ALIAS},
   1999  1.1  christos   {"prfm", 0xf8800000, 0xffe00c00, ldst_unscaled, 0, CORE, OP2 (PRFOP, ADDR_SIMM9_2), QL_LDST_PRFM, F_ALIAS},
   2000  1.1  christos   /* Load/store exclusive.  */
   2001  1.1  christos   {"stxrb", 0x8007c00, 0xffe08000, ldstexcl, 0, CORE, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0},
   2002  1.1  christos   {"stlxrb", 0x800fc00, 0xffe08000, ldstexcl, 0, CORE, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0},
   2003  1.1  christos   {"ldxrb", 0x85f7c00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2004  1.1  christos   {"ldaxrb", 0x85ffc00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2005  1.1  christos   {"stlrb", 0x89ffc00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2006  1.1  christos   {"ldarb", 0x8dffc00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2007  1.1  christos   {"stxrh", 0x48007c00, 0xffe08000, ldstexcl, 0, CORE, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0},
   2008  1.1  christos   {"stlxrh", 0x4800fc00, 0xffe08000, ldstexcl, 0, CORE, OP3 (Rs, Rt, ADDR_SIMPLE), QL_W2_LDST_EXC, 0},
   2009  1.1  christos   {"ldxrh", 0x485f7c00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2010  1.1  christos   {"ldaxrh", 0x485ffc00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2011  1.1  christos   {"stlrh", 0x489ffc00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2012  1.1  christos   {"ldarh", 0x48dffc00, 0xffe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_W1_LDST_EXC, 0},
   2013  1.1  christos   {"stxr", 0x88007c00, 0xbfe08000, ldstexcl, 0, CORE, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2_LDST_EXC, F_GPRSIZE_IN_Q},
   2014  1.1  christos   {"stlxr", 0x8800fc00, 0xbfe08000, ldstexcl, 0, CORE, OP3 (Rs, Rt, ADDR_SIMPLE), QL_R2_LDST_EXC, F_GPRSIZE_IN_Q},
   2015  1.1  christos   {"stxp", 0x88200000, 0xbfe08000, ldstexcl, 0, CORE, OP4 (Rs, Rt, Rt2, ADDR_SIMPLE), QL_R3_LDST_EXC, F_GPRSIZE_IN_Q},
   2016  1.1  christos   {"stlxp", 0x88208000, 0xbfe08000, ldstexcl, 0, CORE, OP4 (Rs, Rt, Rt2, ADDR_SIMPLE), QL_R3_LDST_EXC, F_GPRSIZE_IN_Q},
   2017  1.1  christos   {"ldxr", 0x885f7c00, 0xbfe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q},
   2018  1.1  christos   {"ldaxr", 0x885ffc00, 0xbfe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q},
   2019  1.1  christos   {"ldxp", 0x887f0000, 0xbfe08000, ldstexcl, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMPLE), QL_R2NIL, F_GPRSIZE_IN_Q},
   2020  1.1  christos   {"ldaxp", 0x887f8000, 0xbfe08000, ldstexcl, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMPLE), QL_R2NIL, F_GPRSIZE_IN_Q},
   2021  1.1  christos   {"stlr", 0x889ffc00, 0xbfe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q},
   2022  1.1  christos   {"ldar", 0x88dffc00, 0xbfe08000, ldstexcl, 0, CORE, OP2 (Rt, ADDR_SIMPLE), QL_R1NIL, F_GPRSIZE_IN_Q},
   2023  1.1  christos   /* Load/store no-allocate pair (offset).  */
   2024  1.1  christos   {"stnp", 0x28000000, 0x7fc00000, ldstnapair_offs, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF},
   2025  1.1  christos   {"ldnp", 0x28400000, 0x7fc00000, ldstnapair_offs, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF},
   2026  1.1  christos   {"stnp", 0x2c000000, 0x3fc00000, ldstnapair_offs, 0, CORE, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0},
   2027  1.1  christos   {"ldnp", 0x2c400000, 0x3fc00000, ldstnapair_offs, 0, CORE, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0},
   2028  1.1  christos   /* Load/store register pair (offset).  */
   2029  1.1  christos   {"stp", 0x29000000, 0x7ec00000, ldstpair_off, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF},
   2030  1.1  christos   {"ldp", 0x29400000, 0x7ec00000, ldstpair_off, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF},
   2031  1.1  christos   {"stp", 0x2d000000, 0x3fc00000, ldstpair_off, 0, CORE, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0},
   2032  1.1  christos   {"ldp", 0x2d400000, 0x3fc00000, ldstpair_off, 0, CORE, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0},
   2033  1.1  christos   {"ldpsw", 0x69400000, 0xffc00000, ldstpair_off, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0},
   2034  1.1  christos   /* Load/store register pair (indexed).  */
   2035  1.1  christos   {"stp", 0x28800000, 0x7ec00000, ldstpair_indexed, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF},
   2036  1.1  christos   {"ldp", 0x28c00000, 0x7ec00000, ldstpair_indexed, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_R, F_SF},
   2037  1.1  christos   {"stp", 0x2c800000, 0x3ec00000, ldstpair_indexed, 0, CORE, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0},
   2038  1.1  christos   {"ldp", 0x2cc00000, 0x3ec00000, ldstpair_indexed, 0, CORE, OP3 (Ft, Ft2, ADDR_SIMM7), QL_LDST_PAIR_FP, 0},
   2039  1.1  christos   {"ldpsw", 0x68c00000, 0xfec00000, ldstpair_indexed, 0, CORE, OP3 (Rt, Rt2, ADDR_SIMM7), QL_LDST_PAIR_X32, 0},
   2040  1.1  christos   /* Load register (literal).  */
   2041  1.1  christos   {"ldr", 0x18000000, 0xbf000000, loadlit, OP_LDR_LIT, CORE, OP2 (Rt, ADDR_PCREL19), QL_R_PCREL, F_GPRSIZE_IN_Q},
   2042  1.1  christos   {"ldr", 0x1c000000, 0x3f000000, loadlit, OP_LDRV_LIT, CORE, OP2 (Ft, ADDR_PCREL19), QL_FP_PCREL, 0},
   2043  1.1  christos   {"ldrsw", 0x98000000, 0xff000000, loadlit, OP_LDRSW_LIT, CORE, OP2 (Rt, ADDR_PCREL19), QL_X_PCREL, 0},
   2044  1.1  christos   {"prfm", 0xd8000000, 0xff000000, loadlit, OP_PRFM_LIT, CORE, OP2 (PRFOP, ADDR_PCREL19), QL_PRFM_PCREL, 0},
   2045  1.1  christos   /* Logical (immediate).  */
   2046  1.1  christos   {"and", 0x12000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF},
   2047  1.1  christos   {"bic", 0x12000000, 0x7f800000, log_imm, OP_BIC, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_ALIAS | F_PSEUDO | F_SF},
   2048  1.1  christos   {"orr", 0x32000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF},
   2049  1.1  christos   {"mov", 0x320003e0, 0x7f8003e0, log_imm, OP_MOV_IMM_LOG, CORE, OP2 (Rd_SP, IMM_MOV), QL_R1NIL, F_ALIAS | F_P1 | F_SF | F_CONV},
   2050  1.1  christos   {"eor", 0x52000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd_SP, Rn, LIMM), QL_R2NIL, F_SF},
   2051  1.1  christos   {"ands", 0x72000000, 0x7f800000, log_imm, 0, CORE, OP3 (Rd, Rn, LIMM), QL_R2NIL, F_HAS_ALIAS | F_SF},
   2052  1.1  christos   {"tst", 0x7200001f, 0x7f80001f, log_imm, 0, CORE, OP2 (Rn, LIMM), QL_R1NIL, F_ALIAS | F_SF},
   2053  1.1  christos   /* Logical (shifted register).  */
   2054  1.1  christos   {"and", 0xa000000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF},
   2055  1.1  christos   {"bic", 0xa200000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF},
   2056  1.1  christos   {"orr", 0x2a000000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   2057  1.1  christos   {"mov", 0x2a0003e0, 0x7f2003e0, log_shift, 0, CORE, OP2 (Rd, Rm), QL_I2SAMER, F_ALIAS | F_SF},
   2058  1.1  christos   {"uxtw", 0x2a0003e0, 0x7f2003e0, log_shift, OP_UXTW, CORE, OP2 (Rd, Rm), QL_I2SAMEW, F_ALIAS | F_PSEUDO},
   2059  1.1  christos   {"orn", 0x2a200000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   2060  1.1  christos   {"mvn", 0x2a2003e0, 0x7f2003e0, log_shift, 0, CORE, OP2 (Rd, Rm_SFT), QL_I2SAMER, F_ALIAS | F_SF},
   2061  1.1  christos   {"eor", 0x4a000000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF},
   2062  1.1  christos   {"eon", 0x4a200000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF},
   2063  1.1  christos   {"ands", 0x6a000000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_HAS_ALIAS | F_SF},
   2064  1.1  christos   {"tst", 0x6a00001f, 0x7f20001f, log_shift, 0, CORE, OP2 (Rn, Rm_SFT), QL_I2SAMER, F_ALIAS | F_SF},
   2065  1.1  christos   {"bics", 0x6a200000, 0x7f200000, log_shift, 0, CORE, OP3 (Rd, Rn, Rm_SFT), QL_I3SAMER, F_SF},
   2066  1.1  christos   /* Move wide (immediate).  */
   2067  1.1  christos   {"movn", 0x12800000, 0x7f800000, movewide, OP_MOVN, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF | F_HAS_ALIAS},
   2068  1.1  christos   {"mov", 0x12800000, 0x7f800000, movewide, OP_MOV_IMM_WIDEN, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_CONV},
   2069  1.1  christos   {"movz", 0x52800000, 0x7f800000, movewide, OP_MOVZ, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF | F_HAS_ALIAS},
   2070  1.1  christos   {"mov", 0x52800000, 0x7f800000, movewide, OP_MOV_IMM_WIDE, CORE, OP2 (Rd, IMM_MOV), QL_DST_R, F_SF | F_ALIAS | F_CONV},
   2071  1.1  christos   {"movk", 0x72800000, 0x7f800000, movewide, OP_MOVK, CORE, OP2 (Rd, HALF), QL_DST_R, F_SF},
   2072  1.1  christos   /* PC-rel. addressing.  */
   2073  1.1  christos   {"adr", 0x10000000, 0x9f000000, pcreladdr, 0, CORE, OP2 (Rd, ADDR_PCREL21), QL_ADRP, 0},
   2074  1.1  christos   {"adrp", 0x90000000, 0x9f000000, pcreladdr, 0, CORE, OP2 (Rd, ADDR_ADRP), QL_ADRP, 0},
   2075  1.1  christos   /* System.  */
   2076  1.1  christos   {"msr", 0xd500401f, 0xfff8f01f, ic_system, 0, CORE, OP2 (PSTATEFIELD, UIMM4), {}, 0},
   2077  1.1  christos   {"hint", 0xd503201f, 0xfffff01f, ic_system, 0, CORE, OP1 (UIMM7), {}, F_HAS_ALIAS},
   2078  1.1  christos   {"nop", 0xd503201f, 0xffffffff, ic_system, 0, CORE, OP0 (), {}, F_ALIAS},
   2079  1.1  christos   {"yield", 0xd503203f, 0xffffffff, ic_system, 0, CORE, OP0 (), {}, F_ALIAS},
   2080  1.1  christos   {"wfe", 0xd503205f, 0xffffffff, ic_system, 0, CORE, OP0 (), {}, F_ALIAS},
   2081  1.1  christos   {"wfi", 0xd503207f, 0xffffffff, ic_system, 0, CORE, OP0 (), {}, F_ALIAS},
   2082  1.1  christos   {"sev", 0xd503209f, 0xffffffff, ic_system, 0, CORE, OP0 (), {}, F_ALIAS},
   2083  1.1  christos   {"sevl", 0xd50320bf, 0xffffffff, ic_system, 0, CORE, OP0 (), {}, F_ALIAS},
   2084  1.1  christos   {"clrex", 0xd503305f, 0xfffff0ff, ic_system, 0, CORE, OP1 (UIMM4), {}, F_OPD0_OPT | F_DEFAULT (0xF)},
   2085  1.1  christos   {"dsb", 0xd503309f, 0xfffff0ff, ic_system, 0, CORE, OP1 (BARRIER), {}, 0},
   2086  1.1  christos   {"dmb", 0xd50330bf, 0xfffff0ff, ic_system, 0, CORE, OP1 (BARRIER), {}, 0},
   2087  1.1  christos   {"isb", 0xd50330df, 0xfffff0ff, ic_system, 0, CORE, OP1 (BARRIER_ISB), {}, F_OPD0_OPT | F_DEFAULT (0xF)},
   2088  1.1  christos   {"sys", 0xd5080000, 0xfff80000, ic_system, 0, CORE, OP5 (UIMM3_OP1, Cn, Cm, UIMM3_OP2, Rt), QL_SYS, F_HAS_ALIAS | F_OPD4_OPT | F_DEFAULT (0x1F)},
   2089  1.1  christos   {"at", 0xd5080000, 0xfff80000, ic_system, 0, CORE, OP2 (SYSREG_AT, Rt), QL_SRC_X, F_ALIAS},
   2090  1.1  christos   {"dc", 0xd5080000, 0xfff80000, ic_system, 0, CORE, OP2 (SYSREG_DC, Rt), QL_SRC_X, F_ALIAS},
   2091  1.1  christos   {"ic", 0xd5080000, 0xfff80000, ic_system, 0, CORE, OP2 (SYSREG_IC, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)},
   2092  1.1  christos   {"tlbi", 0xd5080000, 0xfff80000, ic_system, 0, CORE, OP2 (SYSREG_TLBI, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)},
   2093  1.1  christos   {"msr", 0xd5100000, 0xfff00000, ic_system, 0, CORE, OP2 (SYSREG, Rt), QL_SRC_X, 0},
   2094  1.1  christos   {"sysl", 0xd5280000, 0xfff80000, ic_system, 0, CORE, OP5 (Rt, UIMM3_OP1, Cn, Cm, UIMM3_OP2), QL_SYSL, 0},
   2095  1.1  christos   {"mrs", 0xd5300000, 0xfff00000, ic_system, 0, CORE, OP2 (Rt, SYSREG), QL_DST_X, 0},
   2096  1.1  christos   /* Test & branch (immediate).  */
   2097  1.1  christos   {"tbz", 0x36000000, 0x7f000000, testbranch, 0, CORE, OP3 (Rt, BIT_NUM, ADDR_PCREL14), QL_PCREL_14, 0},
   2098  1.1  christos   {"tbnz", 0x37000000, 0x7f000000, testbranch, 0, CORE, OP3 (Rt, BIT_NUM, ADDR_PCREL14), QL_PCREL_14, 0},
   2099  1.1  christos   /* The old UAL conditional branch mnemonics (to aid portability).  */
   2100  1.1  christos   {"beq", 0x54000000, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2101  1.1  christos   {"bne", 0x54000001, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2102  1.1  christos   {"bcs", 0x54000002, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2103  1.1  christos   {"bhs", 0x54000002, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2104  1.1  christos   {"bcc", 0x54000003, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2105  1.1  christos   {"blo", 0x54000003, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2106  1.1  christos   {"bmi", 0x54000004, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2107  1.1  christos   {"bpl", 0x54000005, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2108  1.1  christos   {"bvs", 0x54000006, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2109  1.1  christos   {"bvc", 0x54000007, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2110  1.1  christos   {"bhi", 0x54000008, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2111  1.1  christos   {"bls", 0x54000009, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2112  1.1  christos   {"bge", 0x5400000a, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2113  1.1  christos   {"blt", 0x5400000b, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2114  1.1  christos   {"bgt", 0x5400000c, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2115  1.1  christos   {"ble", 0x5400000d, 0xff00001f, condbranch, 0, CORE, OP1 (ADDR_PCREL19), QL_PCREL_NIL, F_ALIAS | F_PSEUDO},
   2116  1.1  christos 
   2117  1.1  christos   {0, 0, 0, 0, 0, 0, {}, {}, 0},
   2118  1.1  christos };
   2119  1.1  christos 
   2120  1.1  christos #ifdef AARCH64_OPERANDS
   2121  1.1  christos #undef AARCH64_OPERANDS
   2122  1.1  christos #endif
   2123  1.1  christos 
   2124  1.1  christos /* Macro-based operand decription; this will be fed into aarch64-gen for it
   2125  1.1  christos    to generate the structure aarch64_operands and the function
   2126  1.1  christos    aarch64_insert_operand and aarch64_extract_operand.
   2127  1.1  christos 
   2128  1.1  christos    These inserters and extracters in the description execute the conversion
   2129  1.1  christos    between the aarch64_opnd_info and value in the operand-related instruction
   2130  1.1  christos    field(s).  */
   2131  1.1  christos 
   2132  1.1  christos /* Y expects arguments (left to right) to be operand class, inserter/extractor
   2133  1.1  christos    name suffix, operand name, flags, related bitfield(s) and description.
   2134  1.1  christos    X only differs from Y by having the operand inserter and extractor names
   2135  1.1  christos    listed separately.  */
   2136  1.1  christos 
   2137  1.1  christos #define AARCH64_OPERANDS						\
   2138  1.1  christos     Y(INT_REG, regno, "Rd", 0, F(FLD_Rd), "an integer register")	\
   2139  1.1  christos     Y(INT_REG, regno, "Rn", 0, F(FLD_Rn), "an integer register")	\
   2140  1.1  christos     Y(INT_REG, regno, "Rm", 0, F(FLD_Rm), "an integer register")	\
   2141  1.1  christos     Y(INT_REG, regno, "Rt", 0, F(FLD_Rt), "an integer register")	\
   2142  1.1  christos     Y(INT_REG, regno, "Rt2", 0, F(FLD_Rt2), "an integer register")	\
   2143  1.1  christos     Y(INT_REG, regno, "Rs", 0, F(FLD_Rs), "an integer register")	\
   2144  1.1  christos     Y(INT_REG, regno, "Ra", 0, F(FLD_Ra), "an integer register")	\
   2145  1.1  christos     X(INT_REG, ins_regno, ext_regrt_sysins, "Rt_SYS", 0, F(FLD_Rt),	\
   2146  1.1  christos       "an integer register")						\
   2147  1.1  christos     Y(INT_REG, regno, "Rd_SP", OPD_F_MAYBE_SP, F(FLD_Rd),		\
   2148  1.1  christos       "an integer or stack pointer register")				\
   2149  1.1  christos     Y(INT_REG, regno, "Rn_SP", OPD_F_MAYBE_SP, F(FLD_Rn),		\
   2150  1.1  christos       "an integer or stack pointer register")				\
   2151  1.1  christos     Y(MODIFIED_REG, reg_extended, "Rm_EXT", 0, F(),			\
   2152  1.1  christos       "an integer register with optional extension")			\
   2153  1.1  christos     Y(MODIFIED_REG, reg_shifted, "Rm_SFT", 0, F(),			\
   2154  1.1  christos       "an integer register with optional shift")			\
   2155  1.1  christos     Y(FP_REG, regno, "Fd", 0, F(FLD_Rd), "a floating-point register")	\
   2156  1.1  christos     Y(FP_REG, regno, "Fn", 0, F(FLD_Rn), "a floating-point register")	\
   2157  1.1  christos     Y(FP_REG, regno, "Fm", 0, F(FLD_Rm), "a floating-point register")	\
   2158  1.1  christos     Y(FP_REG, regno, "Fa", 0, F(FLD_Ra), "a floating-point register")	\
   2159  1.1  christos     Y(FP_REG, ft, "Ft", 0, F(FLD_Rt), "a floating-point register")	\
   2160  1.1  christos     Y(FP_REG, regno, "Ft2", 0, F(FLD_Rt2), "a floating-point register")	\
   2161  1.1  christos     Y(SISD_REG, regno, "Sd", 0, F(FLD_Rd), "a SIMD scalar register")	\
   2162  1.1  christos     Y(SISD_REG, regno, "Sn", 0, F(FLD_Rn), "a SIMD scalar register")	\
   2163  1.1  christos     Y(SISD_REG, regno, "Sm", 0, F(FLD_Rm), "a SIMD scalar register")	\
   2164  1.1  christos     Y(SIMD_REG, regno, "Vd", 0, F(FLD_Rd), "a SIMD vector register")	\
   2165  1.1  christos     Y(SIMD_REG, regno, "Vn", 0, F(FLD_Rn), "a SIMD vector register")	\
   2166  1.1  christos     Y(SIMD_REG, regno, "Vm", 0, F(FLD_Rm), "a SIMD vector register")	\
   2167  1.1  christos     Y(FP_REG, regno, "VdD1", 0, F(FLD_Rd),				\
   2168  1.1  christos       "the top half of a 128-bit FP/SIMD register")			\
   2169  1.1  christos     Y(FP_REG, regno, "VnD1", 0, F(FLD_Rn),				\
   2170  1.1  christos       "the top half of a 128-bit FP/SIMD register")			\
   2171  1.1  christos     Y(SIMD_ELEMENT, reglane, "Ed", 0, F(FLD_Rd),			\
   2172  1.1  christos       "a SIMD vector element")						\
   2173  1.1  christos     Y(SIMD_ELEMENT, reglane, "En", 0, F(FLD_Rn),			\
   2174  1.1  christos       "a SIMD vector element")						\
   2175  1.1  christos     Y(SIMD_ELEMENT, reglane, "Em", 0, F(FLD_Rm),			\
   2176  1.1  christos       "a SIMD vector element")						\
   2177  1.1  christos     Y(SIMD_REGLIST, reglist, "LVn", 0, F(FLD_Rn),			\
   2178  1.1  christos       "a SIMD vector register list")					\
   2179  1.1  christos     Y(SIMD_REGLIST, ldst_reglist, "LVt", 0, F(),			\
   2180  1.1  christos       "a SIMD vector register list")					\
   2181  1.1  christos     Y(SIMD_REGLIST, ldst_reglist_r, "LVt_AL", 0, F(),			\
   2182  1.1  christos       "a SIMD vector register list")					\
   2183  1.1  christos     Y(SIMD_REGLIST, ldst_elemlist, "LEt", 0, F(),			\
   2184  1.1  christos       "a SIMD vector element list")					\
   2185  1.1  christos     Y(CP_REG, regno, "Cn", 0, F(FLD_CRn),				\
   2186  1.1  christos       "a 4-bit opcode field named for historical reasons C0 - C15")	\
   2187  1.1  christos     Y(CP_REG, regno, "Cm", 0, F(FLD_CRm),				\
   2188  1.1  christos       "a 4-bit opcode field named for historical reasons C0 - C15")	\
   2189  1.1  christos     Y(IMMEDIATE, imm, "IDX", 0, F(FLD_imm4),				\
   2190  1.1  christos       "an immediate as the index of the least significant byte")	\
   2191  1.1  christos     Y(IMMEDIATE, advsimd_imm_shift, "IMM_VLSL", 0, F(),			\
   2192  1.1  christos       "a left shift amount for an AdvSIMD register")			\
   2193  1.1  christos     Y(IMMEDIATE, advsimd_imm_shift, "IMM_VLSR", 0, F(),			\
   2194  1.1  christos       "a right shift amount for an AdvSIMD register")			\
   2195  1.1  christos     Y(IMMEDIATE, advsimd_imm_modified, "SIMD_IMM", 0, F(),		\
   2196  1.1  christos       "an immediate")							\
   2197  1.1  christos     Y(IMMEDIATE, advsimd_imm_modified, "SIMD_IMM_SFT", 0, F(),		\
   2198  1.1  christos       "an 8-bit unsigned immediate with optional shift")		\
   2199  1.1  christos     Y(IMMEDIATE, advsimd_imm_modified, "SIMD_FPIMM", 0, F(),		\
   2200  1.1  christos       "an 8-bit floating-point constant")				\
   2201  1.1  christos     X(IMMEDIATE, 0, ext_shll_imm, "SHLL_IMM", 0, F(),			\
   2202  1.1  christos       "an immediate shift amount of 8, 16 or 32")			\
   2203  1.1  christos     X(IMMEDIATE, 0, 0, "IMM0", 0, F(), "0")				\
   2204  1.1  christos     X(IMMEDIATE, 0, 0, "FPIMM0", 0, F(), "0.0")				\
   2205  1.1  christos     Y(IMMEDIATE, imm, "FPIMM", 0, F(FLD_imm8),				\
   2206  1.1  christos       "an 8-bit floating-point constant")				\
   2207  1.1  christos     Y(IMMEDIATE, imm, "IMMR", 0, F(FLD_immr),				\
   2208  1.1  christos       "the right rotate amount")					\
   2209  1.1  christos     Y(IMMEDIATE, imm, "IMMS", 0, F(FLD_imm6),				\
   2210  1.1  christos       "the leftmost bit number to be moved from the source")		\
   2211  1.1  christos     Y(IMMEDIATE, imm, "WIDTH", 0, F(FLD_imm6),				\
   2212  1.1  christos       "the width of the bit-field")					\
   2213  1.1  christos     Y(IMMEDIATE, imm, "IMM", 0, F(FLD_imm6), "an immediate")		\
   2214  1.1  christos     Y(IMMEDIATE, imm, "UIMM3_OP1", 0, F(FLD_op1),			\
   2215  1.1  christos       "a 3-bit unsigned immediate")					\
   2216  1.1  christos     Y(IMMEDIATE, imm, "UIMM3_OP2", 0, F(FLD_op2),			\
   2217  1.1  christos       "a 3-bit unsigned immediate")					\
   2218  1.1  christos     Y(IMMEDIATE, imm, "UIMM4", 0, F(FLD_CRm),				\
   2219  1.1  christos       "a 4-bit unsigned immediate")					\
   2220  1.1  christos     Y(IMMEDIATE, imm, "UIMM7", 0, F(FLD_CRm, FLD_op2),			\
   2221  1.1  christos       "a 7-bit unsigned immediate")					\
   2222  1.1  christos     Y(IMMEDIATE, imm, "BIT_NUM", 0, F(FLD_b5, FLD_b40),			\
   2223  1.1  christos       "the bit number to be tested")					\
   2224  1.1  christos     Y(IMMEDIATE, imm, "EXCEPTION", 0, F(FLD_imm16),			\
   2225  1.1  christos       "a 16-bit unsigned immediate")					\
   2226  1.1  christos     Y(IMMEDIATE, imm, "CCMP_IMM", 0, F(FLD_imm5),			\
   2227  1.1  christos       "a 5-bit unsigned immediate")					\
   2228  1.1  christos     Y(IMMEDIATE, imm, "NZCV", 0, F(FLD_nzcv),				\
   2229  1.1  christos       "a flag bit specifier giving an alternative value for each flag")	\
   2230  1.1  christos     Y(IMMEDIATE, limm, "LIMM", 0, F(FLD_N,FLD_immr,FLD_imms),		\
   2231  1.1  christos       "Logical immediate")						\
   2232  1.1  christos     Y(IMMEDIATE, aimm, "AIMM", 0, F(FLD_shift,FLD_imm12),		\
   2233  1.1  christos       "a 12-bit unsigned immediate with optional left shift of 12 bits")\
   2234  1.1  christos     Y(IMMEDIATE, imm_half, "HALF", 0, F(FLD_imm16),			\
   2235  1.1  christos       "a 16-bit immediate with optional left shift")			\
   2236  1.1  christos     Y(IMMEDIATE, fbits, "FBITS", 0, F(FLD_scale),			\
   2237  1.1  christos       "the number of bits after the binary point in the fixed-point value")\
   2238  1.1  christos     X(IMMEDIATE, 0, 0, "IMM_MOV", 0, F(), "an immediate")		\
   2239  1.1  christos     Y(COND, cond, "COND", 0, F(), "a condition")			\
   2240  1.1  christos     Y(COND, cond, "COND1", 0, F(),					\
   2241  1.1  christos       "one of the standard conditions, excluding AL and NV.")		\
   2242  1.1  christos     X(ADDRESS, 0, ext_imm, "ADDR_ADRP", OPD_F_SEXT, F(FLD_immhi, FLD_immlo),\
   2243  1.1  christos       "21-bit PC-relative address of a 4KB page")			\
   2244  1.1  christos     Y(ADDRESS, imm, "ADDR_PCREL14", OPD_F_SEXT | OPD_F_SHIFT_BY_2,	\
   2245  1.1  christos       F(FLD_imm14), "14-bit PC-relative address")			\
   2246  1.1  christos     Y(ADDRESS, imm, "ADDR_PCREL19", OPD_F_SEXT | OPD_F_SHIFT_BY_2,	\
   2247  1.1  christos       F(FLD_imm19), "19-bit PC-relative address")			\
   2248  1.1  christos     Y(ADDRESS, imm, "ADDR_PCREL21", OPD_F_SEXT, F(FLD_immhi,FLD_immlo),	\
   2249  1.1  christos       "21-bit PC-relative address")					\
   2250  1.1  christos     Y(ADDRESS, imm, "ADDR_PCREL26", OPD_F_SEXT | OPD_F_SHIFT_BY_2,	\
   2251  1.1  christos       F(FLD_imm26), "26-bit PC-relative address")			\
   2252  1.1  christos     Y(ADDRESS, addr_simple, "ADDR_SIMPLE", 0, F(),			\
   2253  1.1  christos       "an address with base register (no offset)")			\
   2254  1.1  christos     Y(ADDRESS, addr_regoff, "ADDR_REGOFF", 0, F(),			\
   2255  1.1  christos       "an address with register offset")				\
   2256  1.1  christos     Y(ADDRESS, addr_simm, "ADDR_SIMM7", 0, F(FLD_imm7,FLD_index2),	\
   2257  1.1  christos       "an address with 7-bit signed immediate offset")			\
   2258  1.1  christos     Y(ADDRESS, addr_simm, "ADDR_SIMM9", 0, F(FLD_imm9,FLD_index),	\
   2259  1.1  christos       "an address with 9-bit signed immediate offset")			\
   2260  1.1  christos     Y(ADDRESS, addr_simm, "ADDR_SIMM9_2", 0, F(FLD_imm9,FLD_index),	\
   2261  1.1  christos       "an address with 9-bit negative or unaligned immediate offset")	\
   2262  1.1  christos     Y(ADDRESS, addr_uimm12, "ADDR_UIMM12", 0, F(FLD_Rn,FLD_imm12),	\
   2263  1.1  christos       "an address with scaled, unsigned immediate offset")		\
   2264  1.1  christos     Y(ADDRESS, addr_simple, "SIMD_ADDR_SIMPLE", 0, F(),			\
   2265  1.1  christos       "an address with base register (no offset)")			\
   2266  1.1  christos     Y(ADDRESS, simd_addr_post, "SIMD_ADDR_POST", 0, F(),		\
   2267  1.1  christos       "a post-indexed address with immediate or register increment")	\
   2268  1.1  christos     Y(SYSTEM, sysreg, "SYSREG", 0, F(), "a system register")		\
   2269  1.1  christos     Y(SYSTEM, pstatefield, "PSTATEFIELD", 0, F(),			\
   2270  1.1  christos       "a PSTATE field name")						\
   2271  1.1  christos     Y(SYSTEM, sysins_op, "SYSREG_AT", 0, F(),				\
   2272  1.1  christos       "an address translation operation specifier")			\
   2273  1.1  christos     Y(SYSTEM, sysins_op, "SYSREG_DC", 0, F(),				\
   2274  1.1  christos       "a data cache maintenance operation specifier")			\
   2275  1.1  christos     Y(SYSTEM, sysins_op, "SYSREG_IC", 0, F(),				\
   2276  1.1  christos       "an instructin cache maintenance operation specifier")		\
   2277  1.1  christos     Y(SYSTEM, sysins_op, "SYSREG_TLBI", 0, F(),				\
   2278  1.1  christos       "a TBL invalidation operation specifier")				\
   2279  1.1  christos     Y(SYSTEM, barrier, "BARRIER", 0, F(),				\
   2280  1.1  christos       "a barrier option name")						\
   2281  1.1  christos     Y(SYSTEM, barrier, "BARRIER_ISB", 0, F(),				\
   2282  1.1  christos       "the ISB option name SY or an optional 4-bit unsigned immediate")	\
   2283  1.1  christos     Y(SYSTEM, prfop, "PRFOP", 0, F(),					\
   2284                      "an prefetch operation specifier")
   2285