qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

insn-data.h.inc (75026B)


      1 /*
      2  *  Arguments to the opcode prototypes
      3  *
      4  *  C(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC)
      5  *  D(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, DATA)
      6  *  E(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, DATA, FLAGS)
      7  *  F(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, FLAGS)
      8  *
      9  *  OPC  = (op << 8) | op2 where op is the major, op2 the minor opcode
     10  *  NAME = name of the opcode, used internally
     11  *  FMT  = format of the opcode (defined in insn-format.h.inc)
     12  *  FAC  = facility the opcode is available in (defined in DisasFacility)
     13  *  I1   = func in1_xx fills o->in1
     14  *  I2   = func in2_xx fills o->in2
     15  *  P    = func prep_xx initializes o->*out*
     16  *  W    = func wout_xx writes o->*out* somewhere
     17  *  OP   = func op_xx does the bulk of the operation
     18  *  CC   = func cout_xx defines how cc should get set
     19  *  DATA = immediate argument to op_xx function
     20  *  FLAGS = categorize the type of instruction (e.g. for advanced checks)
     21  *
     22  *  The helpers get called in order: I1, I2, P, OP, W, CC
     23  */
     24 
     25 /* ADD */
     26     C(0x1a00, AR,      RR_a,  Z,   r1, r2, new, r1_32, add, adds32)
     27     C(0xb9f8, ARK,     RRF_a, DO,  r2, r3, new, r1_32, add, adds32)
     28     C(0x5a00, A,       RX_a,  Z,   r1, m2_32s, new, r1_32, add, adds32)
     29     C(0xe35a, AY,      RXY_a, LD,  r1, m2_32s, new, r1_32, add, adds32)
     30     C(0xb908, AGR,     RRE,   Z,   r1, r2, r1, 0, add, adds64)
     31     C(0xb918, AGFR,    RRE,   Z,   r1, r2_32s, r1, 0, add, adds64)
     32     C(0xb9e8, AGRK,    RRF_a, DO,  r2, r3, r1, 0, add, adds64)
     33     C(0xe308, AG,      RXY_a, Z,   r1, m2_64, r1, 0, add, adds64)
     34     C(0xe318, AGF,     RXY_a, Z,   r1, m2_32s, r1, 0, add, adds64)
     35     F(0xb30a, AEBR,    RRE,   Z,   e1, e2, new, e1, aeb, f32, IF_BFP)
     36     F(0xb31a, ADBR,    RRE,   Z,   f1, f2, new, f1, adb, f64, IF_BFP)
     37     F(0xb34a, AXBR,    RRE,   Z,   x2h, x2l, x1, x1, axb, f128, IF_BFP)
     38     F(0xed0a, AEB,     RXE,   Z,   e1, m2_32u, new, e1, aeb, f32, IF_BFP)
     39     F(0xed1a, ADB,     RXE,   Z,   f1, m2_64, new, f1, adb, f64, IF_BFP)
     40 /* ADD HIGH */
     41     C(0xb9c8, AHHHR,   RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, add, adds32)
     42     C(0xb9d8, AHHLR,   RRF_a, HW,  r2_sr32, r3, new, r1_32h, add, adds32)
     43 /* ADD IMMEDIATE */
     44     C(0xc209, AFI,     RIL_a, EI,  r1, i2, new, r1_32, add, adds32)
     45     D(0xeb6a, ASI,     SIY,   GIE, la1, i2, new, 0, asi, adds32, MO_TESL)
     46     C(0xecd8, AHIK,    RIE_d, DO,  r3, i2, new, r1_32, add, adds32)
     47     C(0xc208, AGFI,    RIL_a, EI,  r1, i2, r1, 0, add, adds64)
     48     D(0xeb7a, AGSI,    SIY,   GIE, la1, i2, new, 0, asi, adds64, MO_TEUQ)
     49     C(0xecd9, AGHIK,   RIE_d, DO,  r3, i2, r1, 0, add, adds64)
     50 /* ADD IMMEDIATE HIGH */
     51     C(0xcc08, AIH,     RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, adds32)
     52 /* ADD HALFWORD */
     53     C(0x4a00, AH,      RX_a,  Z,   r1, m2_16s, new, r1_32, add, adds32)
     54     C(0xe37a, AHY,     RXY_a, LD,  r1, m2_16s, new, r1_32, add, adds32)
     55     C(0xe338, AGH,     RXY_a, MIE2,r1, m2_16s, r1, 0, add, adds64)
     56 /* ADD HALFWORD IMMEDIATE */
     57     C(0xa70a, AHI,     RI_a,  Z,   r1, i2, new, r1_32, add, adds32)
     58     C(0xa70b, AGHI,    RI_a,  Z,   r1, i2, r1, 0, add, adds64)
     59 
     60 /* ADD LOGICAL */
     61     C(0x1e00, ALR,     RR_a,  Z,   r1_32u, r2_32u, new, r1_32, add, addu32)
     62     C(0xb9fa, ALRK,    RRF_a, DO,  r2_32u, r3_32u, new, r1_32, add, addu32)
     63     C(0x5e00, AL,      RX_a,  Z,   r1_32u, m2_32u, new, r1_32, add, addu32)
     64     C(0xe35e, ALY,     RXY_a, LD,  r1_32u, m2_32u, new, r1_32, add, addu32)
     65     C(0xb90a, ALGR,    RRE,   Z,   r1, r2, r1, 0, addu64, addu64)
     66     C(0xb91a, ALGFR,   RRE,   Z,   r1, r2_32u, r1, 0, addu64, addu64)
     67     C(0xb9ea, ALGRK,   RRF_a, DO,  r2, r3, r1, 0, addu64, addu64)
     68     C(0xe30a, ALG,     RXY_a, Z,   r1, m2_64, r1, 0, addu64, addu64)
     69     C(0xe31a, ALGF,    RXY_a, Z,   r1, m2_32u, r1, 0, addu64, addu64)
     70 /* ADD LOGICAL HIGH */
     71     C(0xb9ca, ALHHHR,  RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, add, addu32)
     72     C(0xb9da, ALHHLR,  RRF_a, HW,  r2_sr32, r3_32u, new, r1_32h, add, addu32)
     73 /* ADD LOGICAL IMMEDIATE */
     74     C(0xc20b, ALFI,    RIL_a, EI,  r1_32u, i2_32u, new, r1_32, add, addu32)
     75     C(0xc20a, ALGFI,   RIL_a, EI,  r1, i2_32u, r1, 0, addu64, addu64)
     76 /* ADD LOGICAL WITH SIGNED IMMEDIATE */
     77     D(0xeb6e, ALSI,    SIY,   GIE, la1, i2_32u, new, 0, asi, addu32, MO_TEUL)
     78     C(0xecda, ALHSIK,  RIE_d, DO,  r3_32u, i2_32u, new, r1_32, add, addu32)
     79     D(0xeb7e, ALGSI,   SIY,   GIE, la1, i2, new, 0, asiu64, addu64, MO_TEUQ)
     80     C(0xecdb, ALGHSIK, RIE_d, DO,  r3, i2, r1, 0, addu64, addu64)
     81 /* ADD LOGICAL WITH SIGNED IMMEDIATE HIGH */
     82     C(0xcc0a, ALSIH,   RIL_a, HW,  r1_sr32, i2_32u, new, r1_32h, add, addu32)
     83     C(0xcc0b, ALSIHN,  RIL_a, HW,  r1_sr32, i2_32u, new, r1_32h, add, 0)
     84 /* ADD LOGICAL WITH CARRY */
     85     C(0xb998, ALCR,    RRE,   Z,   r1_32u, r2_32u, new, r1_32, addc32, addu32)
     86     C(0xb988, ALCGR,   RRE,   Z,   r1, r2, r1, 0, addc64, addu64)
     87     C(0xe398, ALC,     RXY_a, Z,   r1_32u, m2_32u, new, r1_32, addc32, addu32)
     88     C(0xe388, ALCG,    RXY_a, Z,   r1, m2_64, r1, 0, addc64, addu64)
     89 
     90 /* AND */
     91     C(0x1400, NR,      RR_a,  Z,   r1, r2, new, r1_32, and, nz32)
     92     C(0xb9f4, NRK,     RRF_a, DO,  r2, r3, new, r1_32, and, nz32)
     93     C(0x5400, N,       RX_a,  Z,   r1, m2_32s, new, r1_32, and, nz32)
     94     C(0xe354, NY,      RXY_a, LD,  r1, m2_32s, new, r1_32, and, nz32)
     95     C(0xb980, NGR,     RRE,   Z,   r1, r2, r1, 0, and, nz64)
     96     C(0xb9e4, NGRK,    RRF_a, DO,  r2, r3, r1, 0, and, nz64)
     97     C(0xe380, NG,      RXY_a, Z,   r1, m2_64, r1, 0, and, nz64)
     98     C(0xd400, NC,      SS_a,  Z,   la1, a2, 0, 0, nc, 0)
     99 /* AND IMMEDIATE */
    100     D(0xc00a, NIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, andi, 0, 0x2020)
    101     D(0xc00b, NILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, andi, 0, 0x2000)
    102     D(0xa504, NIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1030)
    103     D(0xa505, NIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1020)
    104     D(0xa506, NILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1010)
    105     D(0xa507, NILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1000)
    106     D(0x9400, NI,      SI,    Z,   la1, i2_8u, new, 0, ni, nz64, MO_UB)
    107     D(0xeb54, NIY,     SIY,   LD,  la1, i2_8u, new, 0, ni, nz64, MO_UB)
    108 /* AND WITH COMPLEMENT */
    109     C(0xb9f5, NCRK,    RRF_a, MIE3, r2, r3, new, r1_32, andc, nz32)
    110     C(0xb9e5, NCGRK,   RRF_a, MIE3, r2, r3, r1, 0, andc, nz64)
    111 
    112 /* BRANCH AND LINK */
    113     C(0x0500, BALR,    RR_a,  Z,   0, r2_nz, r1, 0, bal, 0)
    114     C(0x4500, BAL,     RX_a,  Z,   0, a2, r1, 0, bal, 0)
    115 /* BRANCH AND SAVE */
    116     C(0x0d00, BASR,    RR_a,  Z,   0, r2_nz, r1, 0, bas, 0)
    117     C(0x4d00, BAS,     RX_a,  Z,   0, a2, r1, 0, bas, 0)
    118 /* BRANCH RELATIVE AND SAVE */
    119     C(0xa705, BRAS,    RI_b,  Z,   0, 0, r1, 0, basi, 0)
    120     C(0xc005, BRASL,   RIL_b, Z,   0, 0, r1, 0, basi, 0)
    121 /* BRANCH INDIRECT ON CONDITION */
    122     C(0xe347, BIC,     RXY_b, MIE2,0, m2_64w, 0, 0, bc, 0)
    123 /* BRANCH ON CONDITION */
    124     C(0x0700, BCR,     RR_b,  Z,   0, r2_nz, 0, 0, bc, 0)
    125     C(0x4700, BC,      RX_b,  Z,   0, a2, 0, 0, bc, 0)
    126 /* BRANCH RELATIVE ON CONDITION */
    127     C(0xa704, BRC,     RI_c,  Z,   0, 0, 0, 0, bc, 0)
    128     C(0xc004, BRCL,    RIL_c, Z,   0, 0, 0, 0, bc, 0)
    129 /* BRANCH ON COUNT */
    130     C(0x0600, BCTR,    RR_a,  Z,   0, r2_nz, 0, 0, bct32, 0)
    131     C(0xb946, BCTGR,   RRE,   Z,   0, r2_nz, 0, 0, bct64, 0)
    132     C(0x4600, BCT,     RX_a,  Z,   0, a2, 0, 0, bct32, 0)
    133     C(0xe346, BCTG,    RXY_a, Z,   0, a2, 0, 0, bct64, 0)
    134 /* BRANCH RELATIVE ON COUNT */
    135     C(0xa706, BRCT,    RI_b,  Z,   0, 0, 0, 0, bct32, 0)
    136     C(0xa707, BRCTG,   RI_b,  Z,   0, 0, 0, 0, bct64, 0)
    137 /* BRANCH RELATIVE ON COUNT HIGH */
    138     C(0xcc06, BRCTH,   RIL_b, HW,  0, 0, 0, 0, bcth, 0)
    139 /* BRANCH ON INDEX */
    140     D(0x8600, BXH,     RS_a,  Z,   0, a2, 0, 0, bx32, 0, 0)
    141     D(0x8700, BXLE,    RS_a,  Z,   0, a2, 0, 0, bx32, 0, 1)
    142     D(0xeb44, BXHG,    RSY_a, Z,   0, a2, 0, 0, bx64, 0, 0)
    143     D(0xeb45, BXLEG,   RSY_a, Z,   0, a2, 0, 0, bx64, 0, 1)
    144 /* BRANCH RELATIVE ON INDEX */
    145     D(0x8400, BRXH,    RSI,   Z,   0, 0, 0, 0, bx32, 0, 0)
    146     D(0x8500, BRXLE,   RSI,   Z,   0, 0, 0, 0, bx32, 0, 1)
    147     D(0xec44, BRXHG,   RIE_e, Z,   0, 0, 0, 0, bx64, 0, 0)
    148     D(0xec45, BRXHLE,  RIE_e, Z,   0, 0, 0, 0, bx64, 0, 1)
    149 /* BRANCH PREDICTION PRELOAD */
    150     /* ??? Format is SMI, but implemented as NOP, so we need no fields.  */
    151     C(0xc700, BPP,     E,     EH,  0, 0, 0, 0, 0, 0)
    152 /* BRANCH PREDICTION RELATIVE PRELOAD */
    153     /* ??? Format is MII, but implemented as NOP, so we need no fields.  */
    154     C(0xc500, BPRP,    E,     EH,  0, 0, 0, 0, 0, 0)
    155 /* NEXT INSTRUCTION ACCESS INTENT */
    156     /* ??? Format is IE, but implemented as NOP, so we need no fields.  */
    157     C(0xb2fa, NIAI,    E,     EH,  0, 0, 0, 0, 0, 0)
    158 
    159 /* CHECKSUM */
    160     C(0xb241, CKSM,    RRE,   Z,   r1_o, ra2, new, r1_32, cksm, 0)
    161 
    162 /* COPY SIGN */
    163     F(0xb372, CPSDR,   RRF_b, FPSSH, f3, f2, new, f1, cps, 0, IF_AFP1 | IF_AFP2 | IF_AFP3)
    164 
    165 /* COMPARE */
    166     C(0x1900, CR,      RR_a,  Z,   r1_o, r2_o, 0, 0, 0, cmps32)
    167     C(0x5900, C,       RX_a,  Z,   r1_o, m2_32s, 0, 0, 0, cmps32)
    168     C(0xe359, CY,      RXY_a, LD,  r1_o, m2_32s, 0, 0, 0, cmps32)
    169     C(0xb920, CGR,     RRE,   Z,   r1_o, r2_o, 0, 0, 0, cmps64)
    170     C(0xb930, CGFR,    RRE,   Z,   r1_o, r2_32s, 0, 0, 0, cmps64)
    171     C(0xe320, CG,      RXY_a, Z,   r1_o, m2_64, 0, 0, 0, cmps64)
    172     C(0xe330, CGF,     RXY_a, Z,   r1_o, m2_32s, 0, 0, 0, cmps64)
    173     F(0xb309, CEBR,    RRE,   Z,   e1, e2, 0, 0, ceb, 0, IF_BFP)
    174     F(0xb319, CDBR,    RRE,   Z,   f1, f2, 0, 0, cdb, 0, IF_BFP)
    175     F(0xb349, CXBR,    RRE,   Z,   x2h, x2l, x1, 0, cxb, 0, IF_BFP)
    176     F(0xed09, CEB,     RXE,   Z,   e1, m2_32u, 0, 0, ceb, 0, IF_BFP)
    177     F(0xed19, CDB,     RXE,   Z,   f1, m2_64, 0, 0, cdb, 0, IF_BFP)
    178 /* COMPARE AND SIGNAL */
    179     F(0xb308, KEBR,    RRE,   Z,   e1, e2, 0, 0, keb, 0, IF_BFP)
    180     F(0xb318, KDBR,    RRE,   Z,   f1, f2, 0, 0, kdb, 0, IF_BFP)
    181     F(0xb348, KXBR,    RRE,   Z,   x2h, x2l, x1, 0, kxb, 0, IF_BFP)
    182     F(0xed08, KEB,     RXE,   Z,   e1, m2_32u, 0, 0, keb, 0, IF_BFP)
    183     F(0xed18, KDB,     RXE,   Z,   f1, m2_64, 0, 0, kdb, 0, IF_BFP)
    184 /* COMPARE IMMEDIATE */
    185     C(0xc20d, CFI,     RIL_a, EI,  r1, i2, 0, 0, 0, cmps32)
    186     C(0xc20c, CGFI,    RIL_a, EI,  r1, i2, 0, 0, 0, cmps64)
    187 /* COMPARE RELATIVE LONG */
    188     C(0xc60d, CRL,     RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps32)
    189     C(0xc608, CGRL,    RIL_b, GIE, r1, mri2_64, 0, 0, 0, cmps64)
    190     C(0xc60c, CGFRL,   RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps64)
    191 /* COMPARE HALFWORD */
    192     C(0x4900, CH,      RX_a,  Z,   r1_o, m2_16s, 0, 0, 0, cmps32)
    193     C(0xe379, CHY,     RXY_a, LD,  r1_o, m2_16s, 0, 0, 0, cmps32)
    194     C(0xe334, CGH,     RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
    195 /* COMPARE HALFWORD IMMEDIATE */
    196     C(0xa70e, CHI,     RI_a,  Z,   r1_o, i2, 0, 0, 0, cmps32)
    197     C(0xa70f, CGHI,    RI_a,  Z,   r1_o, i2, 0, 0, 0, cmps64)
    198     C(0xe554, CHHSI,   SIL,   GIE, m1_16s, i2, 0, 0, 0, cmps64)
    199     C(0xe55c, CHSI,    SIL,   GIE, m1_32s, i2, 0, 0, 0, cmps64)
    200     C(0xe558, CGHSI,   SIL,   GIE, m1_64, i2, 0, 0, 0, cmps64)
    201 /* COMPARE HALFWORD RELATIVE LONG */
    202     C(0xc605, CHRL,    RIL_b, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
    203     C(0xc604, CGHRL,   RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
    204 /* COMPARE HIGH */
    205     C(0xb9cd, CHHR,    RRE,   HW,  r1_sr32, r2_sr32, 0, 0, 0, cmps32)
    206     C(0xb9dd, CHLR,    RRE,   HW,  r1_sr32, r2_o, 0, 0, 0, cmps32)
    207     C(0xe3cd, CHF,     RXY_a, HW,  r1_sr32, m2_32s, 0, 0, 0, cmps32)
    208 /* COMPARE IMMEDIATE HIGH */
    209     C(0xcc0d, CIH,     RIL_a, HW,  r1_sr32, i2, 0, 0, 0, cmps32)
    210 
    211 /* COMPARE LOGICAL */
    212     C(0x1500, CLR,     RR_a,  Z,   r1, r2, 0, 0, 0, cmpu32)
    213     C(0x5500, CL,      RX_a,  Z,   r1, m2_32s, 0, 0, 0, cmpu32)
    214     C(0xe355, CLY,     RXY_a, LD,  r1, m2_32s, 0, 0, 0, cmpu32)
    215     C(0xb921, CLGR,    RRE,   Z,   r1, r2, 0, 0, 0, cmpu64)
    216     C(0xb931, CLGFR,   RRE,   Z,   r1, r2_32u, 0, 0, 0, cmpu64)
    217     C(0xe321, CLG,     RXY_a, Z,   r1, m2_64, 0, 0, 0, cmpu64)
    218     C(0xe331, CLGF,    RXY_a, Z,   r1, m2_32u, 0, 0, 0, cmpu64)
    219     C(0xd500, CLC,     SS_a,  Z,   la1, a2, 0, 0, clc, 0)
    220 /* COMPARE LOGICAL HIGH */
    221     C(0xb9cf, CLHHR,   RRE,   HW,  r1_sr32, r2_sr32, 0, 0, 0, cmpu32)
    222     C(0xb9df, CLHLR,   RRE,   HW,  r1_sr32, r2_o, 0, 0, 0, cmpu32)
    223     C(0xe3cf, CLHF,    RXY_a, HW,  r1_sr32, m2_32s, 0, 0, 0, cmpu32)
    224 /* COMPARE LOGICAL IMMEDIATE */
    225     C(0xc20f, CLFI,    RIL_a, EI,  r1, i2, 0, 0, 0, cmpu32)
    226     C(0xc20e, CLGFI,   RIL_a, EI,  r1, i2_32u, 0, 0, 0, cmpu64)
    227     C(0x9500, CLI,     SI,    Z,   m1_8u, i2_8u, 0, 0, 0, cmpu64)
    228     C(0xeb55, CLIY,    SIY,   LD,  m1_8u, i2_8u, 0, 0, 0, cmpu64)
    229     C(0xe555, CLHHSI,  SIL,   GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
    230     C(0xe55d, CLFHSI,  SIL,   GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
    231     C(0xe559, CLGHSI,  SIL,   GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
    232 /* COMPARE LOGICAL IMMEDIATE HIGH */
    233     C(0xcc0f, CLIH,    RIL_a, HW,  r1_sr32, i2, 0, 0, 0, cmpu32)
    234 /* COMPARE LOGICAL RELATIVE LONG */
    235     C(0xc60f, CLRL,    RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
    236     C(0xc60a, CLGRL,   RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
    237     C(0xc60e, CLGFRL,  RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
    238     C(0xc607, CLHRL,   RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
    239     C(0xc606, CLGHRL,  RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
    240 /* COMPARE LOGICAL LONG */
    241     C(0x0f00, CLCL,    RR_a,  Z,   0, 0, 0, 0, clcl, 0)
    242 /* COMPARE LOGICAL LONG EXTENDED */
    243     C(0xa900, CLCLE,   RS_a,  Z,   0, a2, 0, 0, clcle, 0)
    244 /* COMPARE LOGICAL LONG UNICODE */
    245     C(0xeb8f, CLCLU,   RSY_a, E2,  0, a2, 0, 0, clclu, 0)
    246 /* COMPARE LOGICAL CHARACTERS UNDER MASK */
    247     C(0xbd00, CLM,     RS_b,  Z,   r1_o, a2, 0, 0, clm, 0)
    248     C(0xeb21, CLMY,    RSY_b, LD,  r1_o, a2, 0, 0, clm, 0)
    249     C(0xeb20, CLMH,    RSY_b, Z,   r1_sr32, a2, 0, 0, clm, 0)
    250 /* COMPARE LOGICAL STRING */
    251     C(0xb25d, CLST,    RRE,   Z,   r1_o, r2_o, 0, 0, clst, 0)
    252 
    253 /* COMPARE AND BRANCH */
    254     D(0xecf6, CRB,     RRS,   GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
    255     D(0xece4, CGRB,    RRS,   GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
    256     D(0xec76, CRJ,     RIE_b, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
    257     D(0xec64, CGRJ,    RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
    258     D(0xecfe, CIB,     RIS,   GIE, r1_32s, i2, 0, 0, cj, 0, 0)
    259     D(0xecfc, CGIB,    RIS,   GIE, r1_o, i2, 0, 0, cj, 0, 0)
    260     D(0xec7e, CIJ,     RIE_c, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
    261     D(0xec7c, CGIJ,    RIE_c, GIE, r1_o, i2, 0, 0, cj, 0, 0)
    262 /* COMPARE LOGICAL AND BRANCH */
    263     D(0xecf7, CLRB,    RRS,   GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
    264     D(0xece5, CLGRB,   RRS,   GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
    265     D(0xec77, CLRJ,    RIE_b, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
    266     D(0xec65, CLGRJ,   RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
    267     D(0xecff, CLIB,    RIS,   GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
    268     D(0xecfd, CLGIB,   RIS,   GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
    269     D(0xec7f, CLIJ,    RIE_c, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
    270     D(0xec7d, CLGIJ,   RIE_c, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
    271 
    272 /* COMPARE AND SWAP */
    273     D(0xba00, CS,      RS_a,  Z,   r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
    274     D(0xeb14, CSY,     RSY_a, LD,  r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
    275     D(0xeb30, CSG,     RSY_a, Z,   r3_o, r1_o, new, r1, cs, 0, MO_TEUQ)
    276 /* COMPARE DOUBLE AND SWAP */
    277     D(0xbb00, CDS,     RS_a,  Z,   r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEUQ)
    278     D(0xeb31, CDSY,    RSY_a, LD,  r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEUQ)
    279     C(0xeb3e, CDSG,    RSY_a, Z,   0, 0, 0, 0, cdsg, 0)
    280 /* COMPARE AND SWAP AND STORE */
    281     C(0xc802, CSST,    SSF,   CASS, la1, a2, 0, 0, csst, 0)
    282 
    283 /* COMPARE AND TRAP */
    284     D(0xb972, CRT,     RRF_c, GIE, r1_32s, r2_32s, 0, 0, ct, 0, 0)
    285     D(0xb960, CGRT,    RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 0)
    286     D(0xec72, CIT,     RIE_a, GIE, r1_32s, i2, 0, 0, ct, 0, 0)
    287     D(0xec70, CGIT,    RIE_a, GIE, r1_o, i2, 0, 0, ct, 0, 0)
    288 /* COMPARE LOGICAL AND TRAP */
    289     D(0xb973, CLRT,    RRF_c, GIE, r1_32u, r2_32u, 0, 0, ct, 0, 1)
    290     D(0xb961, CLGRT,   RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
    291     D(0xeb23, CLT,     RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
    292     D(0xeb2b, CLGT,    RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
    293     D(0xec73, CLFIT,   RIE_a, GIE, r1_32u, i2_16u, 0, 0, ct, 0, 1)
    294     D(0xec71, CLGIT,   RIE_a, GIE, r1_o, i2_16u, 0, 0, ct, 0, 1)
    295 
    296 /* CONVERT TO DECIMAL */
    297     C(0x4e00, CVD,     RX_a,  Z,   r1_o, a2, 0, 0, cvd, 0)
    298     C(0xe326, CVDY,    RXY_a, LD,  r1_o, a2, 0, 0, cvd, 0)
    299 /* CONVERT TO FIXED */
    300     F(0xb398, CFEBR,   RRF_e, Z,   0, e2, new, r1_32, cfeb, 0, IF_BFP)
    301     F(0xb399, CFDBR,   RRF_e, Z,   0, f2, new, r1_32, cfdb, 0, IF_BFP)
    302     F(0xb39a, CFXBR,   RRF_e, Z,   x2h, x2l, new, r1_32, cfxb, 0, IF_BFP)
    303     F(0xb3a8, CGEBR,   RRF_e, Z,   0, e2, r1, 0, cgeb, 0, IF_BFP)
    304     F(0xb3a9, CGDBR,   RRF_e, Z,   0, f2, r1, 0, cgdb, 0, IF_BFP)
    305     F(0xb3aa, CGXBR,   RRF_e, Z,   x2h, x2l, r1, 0, cgxb, 0, IF_BFP)
    306 /* CONVERT FROM FIXED */
    307     F(0xb394, CEFBR,   RRF_e, Z,   0, r2_32s, new, e1, cegb, 0, IF_BFP)
    308     F(0xb395, CDFBR,   RRF_e, Z,   0, r2_32s, new, f1, cdgb, 0, IF_BFP)
    309     F(0xb396, CXFBR,   RRF_e, Z,   0, r2_32s, new_P, x1, cxgb, 0, IF_BFP)
    310     F(0xb3a4, CEGBR,   RRF_e, Z,   0, r2_o, new, e1, cegb, 0, IF_BFP)
    311     F(0xb3a5, CDGBR,   RRF_e, Z,   0, r2_o, new, f1, cdgb, 0, IF_BFP)
    312     F(0xb3a6, CXGBR,   RRF_e, Z,   0, r2_o, new_P, x1, cxgb, 0, IF_BFP)
    313 /* CONVERT TO LOGICAL */
    314     F(0xb39c, CLFEBR,  RRF_e, FPE, 0, e2, new, r1_32, clfeb, 0, IF_BFP)
    315     F(0xb39d, CLFDBR,  RRF_e, FPE, 0, f2, new, r1_32, clfdb, 0, IF_BFP)
    316     F(0xb39e, CLFXBR,  RRF_e, FPE, x2h, x2l, new, r1_32, clfxb, 0, IF_BFP)
    317     F(0xb3ac, CLGEBR,  RRF_e, FPE, 0, e2, r1, 0, clgeb, 0, IF_BFP)
    318     F(0xb3ad, CLGDBR,  RRF_e, FPE, 0, f2, r1, 0, clgdb, 0, IF_BFP)
    319     F(0xb3ae, CLGXBR,  RRF_e, FPE, x2h, x2l, r1, 0, clgxb, 0, IF_BFP)
    320 /* CONVERT FROM LOGICAL */
    321     F(0xb390, CELFBR,  RRF_e, FPE, 0, r2_32u, new, e1, celgb, 0, IF_BFP)
    322     F(0xb391, CDLFBR,  RRF_e, FPE, 0, r2_32u, new, f1, cdlgb, 0, IF_BFP)
    323     F(0xb392, CXLFBR,  RRF_e, FPE, 0, r2_32u, new_P, x1, cxlgb, 0, IF_BFP)
    324     F(0xb3a0, CELGBR,  RRF_e, FPE, 0, r2_o, new, e1, celgb, 0, IF_BFP)
    325     F(0xb3a1, CDLGBR,  RRF_e, FPE, 0, r2_o, new, f1, cdlgb, 0, IF_BFP)
    326     F(0xb3a2, CXLGBR,  RRF_e, FPE, 0, r2_o, new_P, x1, cxlgb, 0, IF_BFP)
    327 
    328 /* CONVERT UTF-8 TO UTF-16 */
    329     D(0xb2a7, CU12,    RRF_c, Z,   0, 0, 0, 0, cuXX, 0, 12)
    330 /* CONVERT UTF-8 TO UTF-32 */
    331     D(0xb9b0, CU14,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 14)
    332 /* CONVERT UTF-16 to UTF-8 */
    333     D(0xb2a6, CU21,    RRF_c, Z,   0, 0, 0, 0, cuXX, 0, 21)
    334 /* CONVERT UTF-16 to UTF-32 */
    335     D(0xb9b1, CU24,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 24)
    336 /* CONVERT UTF-32 to UTF-8 */
    337     D(0xb9b2, CU41,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 41)
    338 /* CONVERT UTF-32 to UTF-16 */
    339     D(0xb9b3, CU42,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 42)
    340 
    341 /* DIVIDE */
    342     C(0x1d00, DR,      RR_a,  Z,   r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
    343     C(0x5d00, D,       RX_a,  Z,   r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
    344     F(0xb30d, DEBR,    RRE,   Z,   e1, e2, new, e1, deb, 0, IF_BFP)
    345     F(0xb31d, DDBR,    RRE,   Z,   f1, f2, new, f1, ddb, 0, IF_BFP)
    346     F(0xb34d, DXBR,    RRE,   Z,   x2h, x2l, x1, x1, dxb, 0, IF_BFP)
    347     F(0xed0d, DEB,     RXE,   Z,   e1, m2_32u, new, e1, deb, 0, IF_BFP)
    348     F(0xed1d, DDB,     RXE,   Z,   f1, m2_64, new, f1, ddb, 0, IF_BFP)
    349 /* DIVIDE LOGICAL */
    350     C(0xb997, DLR,     RRE,   Z,   r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
    351     C(0xe397, DL,      RXY_a, Z,   r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
    352     C(0xb987, DLGR,    RRE,   Z,   0, r2_o, r1_P, 0, divu64, 0)
    353     C(0xe387, DLG,     RXY_a, Z,   0, m2_64, r1_P, 0, divu64, 0)
    354 /* DIVIDE SINGLE */
    355     C(0xb90d, DSGR,    RRE,   Z,   r1p1, r2, r1_P, 0, divs64, 0)
    356     C(0xb91d, DSGFR,   RRE,   Z,   r1p1, r2_32s, r1_P, 0, divs64, 0)
    357     C(0xe30d, DSG,     RXY_a, Z,   r1p1, m2_64, r1_P, 0, divs64, 0)
    358     C(0xe31d, DSGF,    RXY_a, Z,   r1p1, m2_32s, r1_P, 0, divs64, 0)
    359 
    360 /* EXCLUSIVE OR */
    361     C(0x1700, XR,      RR_a,  Z,   r1, r2, new, r1_32, xor, nz32)
    362     C(0xb9f7, XRK,     RRF_a, DO,  r2, r3, new, r1_32, xor, nz32)
    363     C(0x5700, X,       RX_a,  Z,   r1, m2_32s, new, r1_32, xor, nz32)
    364     C(0xe357, XY,      RXY_a, LD,  r1, m2_32s, new, r1_32, xor, nz32)
    365     C(0xb982, XGR,     RRE,   Z,   r1, r2, r1, 0, xor, nz64)
    366     C(0xb9e7, XGRK,    RRF_a, DO,  r2, r3, r1, 0, xor, nz64)
    367     C(0xe382, XG,      RXY_a, Z,   r1, m2_64, r1, 0, xor, nz64)
    368     C(0xd700, XC,      SS_a,  Z,   0, 0, 0, 0, xc, 0)
    369 /* EXCLUSIVE OR IMMEDIATE */
    370     D(0xc006, XIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
    371     D(0xc007, XILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
    372     D(0x9700, XI,      SI,    Z,   la1, i2_8u, new, 0, xi, nz64, MO_UB)
    373     D(0xeb57, XIY,     SIY,   LD,  la1, i2_8u, new, 0, xi, nz64, MO_UB)
    374 
    375 /* EXECUTE */
    376     C(0x4400, EX,      RX_a,  Z,   0, a2, 0, 0, ex, 0)
    377 /* EXECUTE RELATIVE LONG */
    378     C(0xc600, EXRL,    RIL_b, EE,  0, ri2, 0, 0, ex, 0)
    379 
    380 /* EXTRACT ACCESS */
    381     C(0xb24f, EAR,     RRE,   Z,   0, 0, new, r1_32, ear, 0)
    382 /* EXTRACT CPU ATTRIBUTE */
    383     C(0xeb4c, ECAG,    RSY_a, GIE, 0, a2, r1, 0, ecag, 0)
    384 /* EXTRACT CPU TIME */
    385     F(0xc801, ECTG,    SSF,   ECT, 0, 0, 0, 0, ectg, 0, IF_IO)
    386 /* EXTRACT FPC */
    387     F(0xb38c, EFPC,    RRE,   Z,   0, 0, new, r1_32, efpc, 0, IF_BFP)
    388 /* EXTRACT PSW */
    389     C(0xb98d, EPSW,    RRE,   Z,   0, 0, 0, 0, epsw, 0)
    390 
    391 /* FIND LEFTMOST ONE */
    392     C(0xb983, FLOGR,   RRE,   EI,  0, r2_o, r1_P, 0, flogr, 0)
    393 
    394 /* INSERT CHARACTER */
    395     C(0x4300, IC,      RX_a,  Z,   0, m2_8u, 0, r1_8, mov2, 0)
    396     C(0xe373, ICY,     RXY_a, LD,  0, m2_8u, 0, r1_8, mov2, 0)
    397 /* INSERT CHARACTERS UNDER MASK */
    398     D(0xbf00, ICM,     RS_b,  Z,   0, a2, r1, 0, icm, 0, 0)
    399     D(0xeb81, ICMY,    RSY_b, LD,  0, a2, r1, 0, icm, 0, 0)
    400     D(0xeb80, ICMH,    RSY_b, Z,   0, a2, r1, 0, icm, 0, 32)
    401 /* INSERT IMMEDIATE */
    402     D(0xc008, IIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
    403     D(0xc009, IILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
    404     D(0xa500, IIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
    405     D(0xa501, IIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
    406     D(0xa502, IILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
    407     D(0xa503, IILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
    408 /* INSERT PROGRAM MASK */
    409     C(0xb222, IPM,     RRE,   Z,   0, 0, r1, 0, ipm, 0)
    410 
    411 /* LOAD */
    412     C(0x1800, LR,      RR_a,  Z,   0, r2_o, 0, cond_r1r2_32, mov2, 0)
    413     C(0x5800, L,       RX_a,  Z,   0, a2, new, r1_32, ld32s, 0)
    414     C(0xe358, LY,      RXY_a, LD,  0, a2, new, r1_32, ld32s, 0)
    415     C(0xb904, LGR,     RRE,   Z,   0, r2_o, 0, r1, mov2, 0)
    416     C(0xb914, LGFR,    RRE,   Z,   0, r2_32s, 0, r1, mov2, 0)
    417     C(0xe304, LG,      RXY_a, Z,   0, a2, r1, 0, ld64, 0)
    418     C(0xe314, LGF,     RXY_a, Z,   0, a2, r1, 0, ld32s, 0)
    419     F(0x2800, LDR,     RR_a,  Z,   0, f2, 0, f1, mov2, 0, IF_AFP1 | IF_AFP2)
    420     F(0x6800, LD,      RX_a,  Z,   0, m2_64, 0, f1, mov2, 0, IF_AFP1)
    421     F(0xed65, LDY,     RXY_a, LD,  0, m2_64, 0, f1, mov2, 0, IF_AFP1)
    422     F(0x3800, LER,     RR_a,  Z,   0, e2, 0, cond_e1e2, mov2, 0, IF_AFP1 | IF_AFP2)
    423     F(0x7800, LE,      RX_a,  Z,   0, m2_32u, 0, e1, mov2, 0, IF_AFP1)
    424     F(0xed64, LEY,     RXY_a, LD,  0, m2_32u, 0, e1, mov2, 0, IF_AFP1)
    425     F(0xb365, LXR,     RRE,   Z,   x2h, x2l, 0, x1, movx, 0, IF_AFP1)
    426 /* LOAD IMMEDIATE */
    427     C(0xc001, LGFI,    RIL_a, EI,  0, i2, 0, r1, mov2, 0)
    428 /* LOAD RELATIVE LONG */
    429     C(0xc40d, LRL,     RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
    430     C(0xc408, LGRL,    RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
    431     C(0xc40c, LGFRL,   RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
    432 /* LOAD ADDRESS */
    433     C(0x4100, LA,      RX_a,  Z,   0, a2, 0, r1, mov2, 0)
    434     C(0xe371, LAY,     RXY_a, LD,  0, a2, 0, r1, mov2, 0)
    435 /* LOAD ADDRESS EXTENDED */
    436     C(0x5100, LAE,     RX_a,  Z,   0, a2, 0, r1, mov2e, 0)
    437     C(0xe375, LAEY,    RXY_a, GIE, 0, a2, 0, r1, mov2e, 0)
    438 /* LOAD ADDRESS RELATIVE LONG */
    439     C(0xc000, LARL,    RIL_b, Z,   0, ri2, 0, r1, mov2, 0)
    440 /* LOAD AND ADD */
    441     D(0xebf8, LAA,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, laa, adds32, MO_TESL)
    442     D(0xebe8, LAAG,    RSY_a, ILA, r3, a2, new, in2_r1, laa, adds64, MO_TEUQ)
    443 /* LOAD AND ADD LOGICAL */
    444     D(0xebfa, LAAL,    RSY_a, ILA, r3_32u, a2, new, in2_r1_32, laa, addu32, MO_TEUL)
    445     D(0xebea, LAALG,   RSY_a, ILA, r3, a2, new, in2_r1, laa, addu64, MO_TEUQ)
    446 /* LOAD AND AND */
    447     D(0xebf4, LAN,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lan, nz32, MO_TESL)
    448     D(0xebe4, LANG,    RSY_a, ILA, r3, a2, new, in2_r1, lan, nz64, MO_TEUQ)
    449 /* LOAD AND EXCLUSIVE OR */
    450     D(0xebf7, LAX,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lax, nz32, MO_TESL)
    451     D(0xebe7, LAXG,    RSY_a, ILA, r3, a2, new, in2_r1, lax, nz64, MO_TEUQ)
    452 /* LOAD AND OR */
    453     D(0xebf6, LAO,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lao, nz32, MO_TESL)
    454     D(0xebe6, LAOG,    RSY_a, ILA, r3, a2, new, in2_r1, lao, nz64, MO_TEUQ)
    455 /* LOAD AND TEST */
    456     C(0x1200, LTR,     RR_a,  Z,   0, r2_o, 0, cond_r1r2_32, mov2, s32)
    457     C(0xb902, LTGR,    RRE,   Z,   0, r2_o, 0, r1, mov2, s64)
    458     C(0xb912, LTGFR,   RRE,   Z,   0, r2_32s, 0, r1, mov2, s64)
    459     C(0xe312, LT,      RXY_a, EI,  0, a2, new, r1_32, ld32s, s64)
    460     C(0xe302, LTG,     RXY_a, EI,  0, a2, r1, 0, ld64, s64)
    461     C(0xe332, LTGF,    RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
    462     F(0xb302, LTEBR,   RRE,   Z,   0, e2, 0, cond_e1e2, mov2, f32, IF_BFP)
    463     F(0xb312, LTDBR,   RRE,   Z,   0, f2, 0, f1, mov2, f64, IF_BFP)
    464     F(0xb342, LTXBR,   RRE,   Z,   x2h, x2l, 0, x1, movx, f128, IF_BFP)
    465 /* LOAD AND TRAP */
    466     C(0xe39f, LAT,     RXY_a, LAT, 0, m2_32u, r1, 0, lat, 0)
    467     C(0xe385, LGAT,    RXY_a, LAT, 0, a2, r1, 0, lgat, 0)
    468 /* LOAD AND ZERO RIGHTMOST BYTE */
    469     C(0xe33b, LZRF,    RXY_a, LZRB, 0, m2_32u, new, r1_32, lzrb, 0)
    470     C(0xe32a, LZRG,    RXY_a, LZRB, 0, m2_64, r1, 0, lzrb, 0)
    471 /* LOAD LOGICAL AND ZERO RIGHTMOST BYTE */
    472     C(0xe33a, LLZRGF,  RXY_a, LZRB, 0, m2_32u, r1, 0, lzrb, 0)
    473 /* LOAD BYTE */
    474     C(0xb926, LBR,     RRE,   EI,  0, r2_8s, 0, r1_32, mov2, 0)
    475     C(0xb906, LGBR,    RRE,   EI,  0, r2_8s, 0, r1, mov2, 0)
    476     C(0xe376, LB,      RXY_a, LD,  0, a2, new, r1_32, ld8s, 0)
    477     C(0xe377, LGB,     RXY_a, LD,  0, a2, r1, 0, ld8s, 0)
    478 /* LOAD BYTE HIGH */
    479     C(0xe3c0, LBH,     RXY_a, HW,  0, a2, new, r1_32h, ld8s, 0)
    480 /* LOAD COMPLEMENT */
    481     C(0x1300, LCR,     RR_a,  Z,   0, r2, new, r1_32, neg, neg32)
    482     C(0xb903, LCGR,    RRE,   Z,   0, r2, r1, 0, neg, neg64)
    483     C(0xb913, LCGFR,   RRE,   Z,   0, r2_32s, r1, 0, neg, neg64)
    484     F(0xb303, LCEBR,   RRE,   Z,   0, e2, new, e1, negf32, f32, IF_BFP)
    485     F(0xb313, LCDBR,   RRE,   Z,   0, f2, new, f1, negf64, f64, IF_BFP)
    486     F(0xb343, LCXBR,   RRE,   Z,   x2h, x2l, new_P, x1, negf128, f128, IF_BFP)
    487     F(0xb373, LCDFR,   RRE,   FPSSH, 0, f2, new, f1, negf64, 0, IF_AFP1 | IF_AFP2)
    488 /* LOAD COUNT TO BLOCK BOUNDARY */
    489     C(0xe727, LCBB,    RXE,   V,   la2, 0, r1, 0, lcbb, 0)
    490 /* LOAD HALFWORD */
    491     C(0xb927, LHR,     RRE,   EI,  0, r2_16s, 0, r1_32, mov2, 0)
    492     C(0xb907, LGHR,    RRE,   EI,  0, r2_16s, 0, r1, mov2, 0)
    493     C(0x4800, LH,      RX_a,  Z,   0, a2, new, r1_32, ld16s, 0)
    494     C(0xe378, LHY,     RXY_a, LD,  0, a2, new, r1_32, ld16s, 0)
    495     C(0xe315, LGH,     RXY_a, Z,   0, a2, r1, 0, ld16s, 0)
    496 /* LOAD HALFWORD HIGH */
    497     C(0xe3c4, LHH,     RXY_a, HW,  0, a2, new, r1_32h, ld16s, 0)
    498 /* LOAD HALFWORD IMMEDIATE */
    499     C(0xa708, LHI,     RI_a,  Z,   0, i2, 0, r1_32, mov2, 0)
    500     C(0xa709, LGHI,    RI_a,  Z,   0, i2, 0, r1, mov2, 0)
    501 /* LOAD HALFWORD RELATIVE LONG */
    502     C(0xc405, LHRL,    RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
    503     C(0xc404, LGHRL,   RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
    504 /* LOAD HIGH */
    505     C(0xe3ca, LFH,     RXY_a, HW,  0, a2, new, r1_32h, ld32u, 0)
    506 /* LOAG HIGH AND TRAP */
    507     C(0xe3c8, LFHAT,   RXY_a, LAT, 0, m2_32u, r1, 0, lfhat, 0)
    508 /* LOAD LOGICAL */
    509     C(0xb916, LLGFR,   RRE,   Z,   0, r2_32u, 0, r1, mov2, 0)
    510     C(0xe316, LLGF,    RXY_a, Z,   0, a2, r1, 0, ld32u, 0)
    511 /* LOAD LOGICAL AND TRAP */
    512     C(0xe39d, LLGFAT,  RXY_a, LAT, 0, a2, r1, 0, llgfat, 0)
    513 /* LOAD LOGICAL RELATIVE LONG */
    514     C(0xc40e, LLGFRL,  RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
    515 /* LOAD LOGICAL CHARACTER */
    516     C(0xb994, LLCR,    RRE,   EI,  0, r2_8u, 0, r1_32, mov2, 0)
    517     C(0xb984, LLGCR,   RRE,   EI,  0, r2_8u, 0, r1, mov2, 0)
    518     C(0xe394, LLC,     RXY_a, EI,  0, a2, new, r1_32, ld8u, 0)
    519     C(0xe390, LLGC,    RXY_a, Z,   0, a2, r1, 0, ld8u, 0)
    520 /* LOAD LOGICAL CHARACTER HIGH */
    521     C(0xe3c2, LLCH,    RXY_a, HW,  0, a2, new, r1_32h, ld8u, 0)
    522 /* LOAD LOGICAL HALFWORD */
    523     C(0xb995, LLHR,    RRE,   EI,  0, r2_16u, 0, r1_32, mov2, 0)
    524     C(0xb985, LLGHR,   RRE,   EI,  0, r2_16u, 0, r1, mov2, 0)
    525     C(0xe395, LLH,     RXY_a, EI,  0, a2, new, r1_32, ld16u, 0)
    526     C(0xe391, LLGH,    RXY_a, Z,   0, a2, r1, 0, ld16u, 0)
    527 /* LOAD LOGICAL HALFWORD HIGH */
    528     C(0xe3c6, LLHH,    RXY_a, HW,  0, a2, new, r1_32h, ld16u, 0)
    529 /* LOAD LOGICAL HALFWORD RELATIVE LONG */
    530     C(0xc402, LLHRL,   RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
    531     C(0xc406, LLGHRL,  RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
    532 /* LOAD LOGICAL IMMEDATE */
    533     D(0xc00e, LLIHF,   RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
    534     D(0xc00f, LLILF,   RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
    535     D(0xa50c, LLIHH,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 48)
    536     D(0xa50d, LLIHL,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 32)
    537     D(0xa50e, LLILH,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 16)
    538     D(0xa50f, LLILL,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 0)
    539 /* LOAD LOGICAL THIRTY ONE BITS */
    540     C(0xb917, LLGTR,   RRE,   Z,  0, r2_o, r1, 0, llgt, 0)
    541     C(0xe317, LLGT,    RXY_a, Z,  0, m2_32u, r1, 0, llgt, 0)
    542 /* LOAD LOGICAL THIRTY ONE BITS AND TRAP */
    543     C(0xe39c, LLGTAT,  RXY_a, LAT, 0, m2_32u, r1, 0, llgtat, 0)
    544 
    545 /* LOAD FPR FROM GR */
    546     F(0xb3c1, LDGR,    RRE,   FPRGR, 0, r2_o, 0, f1, mov2, 0, IF_AFP1)
    547 /* LOAD GR FROM FPR */
    548     F(0xb3cd, LGDR,    RRE,   FPRGR, 0, f2, 0, r1, mov2, 0, IF_AFP2)
    549 /* LOAD NEGATIVE */
    550     C(0x1100, LNR,     RR_a,  Z,   0, r2_32s, new, r1_32, nabs, nabs32)
    551     C(0xb901, LNGR,    RRE,   Z,   0, r2, r1, 0, nabs, nabs64)
    552     C(0xb911, LNGFR,   RRE,   Z,   0, r2_32s, r1, 0, nabs, nabs64)
    553     F(0xb301, LNEBR,   RRE,   Z,   0, e2, new, e1, nabsf32, f32, IF_BFP)
    554     F(0xb311, LNDBR,   RRE,   Z,   0, f2, new, f1, nabsf64, f64, IF_BFP)
    555     F(0xb341, LNXBR,   RRE,   Z,   x2h, x2l, new_P, x1, nabsf128, f128, IF_BFP)
    556     F(0xb371, LNDFR,   RRE,   FPSSH, 0, f2, new, f1, nabsf64, 0, IF_AFP1 | IF_AFP2)
    557 /* LOAD ON CONDITION */
    558     C(0xb9f2, LOCR,    RRF_c, LOC, r1, r2, new, r1_32, loc, 0)
    559     C(0xb9e2, LOCGR,   RRF_c, LOC, r1, r2, r1, 0, loc, 0)
    560     C(0xebf2, LOC,     RSY_b, LOC, r1, m2_32u, new, r1_32, loc, 0)
    561     C(0xebe2, LOCG,    RSY_b, LOC, r1, m2_64, r1, 0, loc, 0)
    562 /* LOAD HALFWORD IMMEDIATE ON CONDITION */
    563     C(0xec42, LOCHI,   RIE_g, LOC2, r1, i2, new, r1_32, loc, 0)
    564     C(0xec46, LOCGHI,  RIE_g, LOC2, r1, i2, r1, 0, loc, 0)
    565     C(0xec4e, LOCHHI,  RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0)
    566 /* LOAD HIGH ON CONDITION */
    567     C(0xb9e0, LOCFHR,  RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0)
    568     C(0xebe0, LOCFH,   RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0)
    569 /* LOAD PAIR DISJOINT */
    570     D(0xc804, LPD,     SSF,   ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)
    571     D(0xc805, LPDG,    SSF,   ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEUQ)
    572 /* LOAD PAIR FROM QUADWORD */
    573     C(0xe38f, LPQ,     RXY_a, Z,   0, a2, r1_P, 0, lpq, 0)
    574 /* LOAD POSITIVE */
    575     C(0x1000, LPR,     RR_a,  Z,   0, r2_32s, new, r1_32, abs, abs32)
    576     C(0xb900, LPGR,    RRE,   Z,   0, r2, r1, 0, abs, abs64)
    577     C(0xb910, LPGFR,   RRE,   Z,   0, r2_32s, r1, 0, abs, abs64)
    578     F(0xb300, LPEBR,   RRE,   Z,   0, e2, new, e1, absf32, f32, IF_BFP)
    579     F(0xb310, LPDBR,   RRE,   Z,   0, f2, new, f1, absf64, f64, IF_BFP)
    580     F(0xb340, LPXBR,   RRE,   Z,   x2h, x2l, new_P, x1, absf128, f128, IF_BFP)
    581     F(0xb370, LPDFR,   RRE,   FPSSH, 0, f2, new, f1, absf64, 0, IF_AFP1 | IF_AFP2)
    582 /* LOAD REVERSED */
    583     C(0xb91f, LRVR,    RRE,   Z,   0, r2_32u, new, r1_32, rev32, 0)
    584     C(0xb90f, LRVGR,   RRE,   Z,   0, r2_o, r1, 0, rev64, 0)
    585     C(0xe31f, LRVH,    RXY_a, Z,   0, m2_16u, new, r1_16, rev16, 0)
    586     C(0xe31e, LRV,     RXY_a, Z,   0, m2_32u, new, r1_32, rev32, 0)
    587     C(0xe30f, LRVG,    RXY_a, Z,   0, m2_64, r1, 0, rev64, 0)
    588 /* LOAD ZERO */
    589     F(0xb374, LZER,    RRE,   Z,   0, 0, 0, e1, zero, 0, IF_AFP1)
    590     F(0xb375, LZDR,    RRE,   Z,   0, 0, 0, f1, zero, 0, IF_AFP1)
    591     F(0xb376, LZXR,    RRE,   Z,   0, 0, 0, x1, zero2, 0, IF_AFP1)
    592 
    593 /* LOAD FPC */
    594     F(0xb29d, LFPC,    S,     Z,   0, m2_32u, 0, 0, sfpc, 0, IF_BFP)
    595 /* LOAD FPC AND SIGNAL */
    596     F(0xb2bd, LFAS,    S,     IEEEE_SIM, 0, m2_32u, 0, 0, sfas, 0, IF_DFP)
    597 /* LOAD FP INTEGER */
    598     F(0xb357, FIEBR,   RRF_e, Z,   0, e2, new, e1, fieb, 0, IF_BFP)
    599     F(0xb35f, FIDBR,   RRF_e, Z,   0, f2, new, f1, fidb, 0, IF_BFP)
    600     F(0xb347, FIXBR,   RRF_e, Z,   x2h, x2l, new_P, x1, fixb, 0, IF_BFP)
    601 
    602 /* LOAD LENGTHENED */
    603     F(0xb304, LDEBR,   RRE,   Z,   0, e2, new, f1, ldeb, 0, IF_BFP)
    604     F(0xb305, LXDBR,   RRE,   Z,   0, f2, new_P, x1, lxdb, 0, IF_BFP)
    605     F(0xb306, LXEBR,   RRE,   Z,   0, e2, new_P, x1, lxeb, 0, IF_BFP)
    606     F(0xed04, LDEB,    RXE,   Z,   0, m2_32u, new, f1, ldeb, 0, IF_BFP)
    607     F(0xed05, LXDB,    RXE,   Z,   0, m2_64, new_P, x1, lxdb, 0, IF_BFP)
    608     F(0xed06, LXEB,    RXE,   Z,   0, m2_32u, new_P, x1, lxeb, 0, IF_BFP)
    609     F(0xb324, LDER,    RXE,   Z,   0, e2, new, f1, lde, 0, IF_AFP1)
    610     F(0xed24, LDE,     RXE,   Z,   0, m2_32u, new, f1, lde, 0, IF_AFP1)
    611 /* LOAD ROUNDED */
    612     F(0xb344, LEDBR,   RRF_e, Z,   0, f2, new, e1, ledb, 0, IF_BFP)
    613     F(0xb345, LDXBR,   RRF_e, Z,   x2h, x2l, new, f1, ldxb, 0, IF_BFP)
    614     F(0xb346, LEXBR,   RRF_e, Z,   x2h, x2l, new, e1, lexb, 0, IF_BFP)
    615 
    616 /* LOAD MULTIPLE */
    617     C(0x9800, LM,      RS_a,  Z,   0, a2, 0, 0, lm32, 0)
    618     C(0xeb98, LMY,     RSY_a, LD,  0, a2, 0, 0, lm32, 0)
    619     C(0xeb04, LMG,     RSY_a, Z,   0, a2, 0, 0, lm64, 0)
    620 /* LOAD MULTIPLE HIGH */
    621     C(0xeb96, LMH,     RSY_a, Z,   0, a2, 0, 0, lmh, 0)
    622 /* LOAD ACCESS MULTIPLE */
    623     C(0x9a00, LAM,     RS_a,  Z,   0, a2, 0, 0, lam, 0)
    624     C(0xeb9a, LAMY,    RSY_a, LD,  0, a2, 0, 0, lam, 0)
    625 
    626 /* MONITOR CALL */
    627     C(0xaf00, MC,      SI,    Z,   la1, 0, 0, 0, mc, 0)
    628 
    629 /* MOVE */
    630     C(0xd200, MVC,     SS_a,  Z,   la1, a2, 0, 0, mvc, 0)
    631     C(0xe544, MVHHI,   SIL,   GIE, la1, i2, 0, m1_16, mov2, 0)
    632     C(0xe54c, MVHI,    SIL,   GIE, la1, i2, 0, m1_32, mov2, 0)
    633     C(0xe548, MVGHI,   SIL,   GIE, la1, i2, 0, m1_64, mov2, 0)
    634     C(0x9200, MVI,     SI,    Z,   la1, i2, 0, m1_8, mov2, 0)
    635     C(0xeb52, MVIY,    SIY,   LD,  la1, i2, 0, m1_8, mov2, 0)
    636 /* MOVE INVERSE */
    637     C(0xe800, MVCIN,   SS_a,  Z,   la1, a2, 0, 0, mvcin, 0)
    638 /* MOVE LONG */
    639     C(0x0e00, MVCL,    RR_a,  Z,   0, 0, 0, 0, mvcl, 0)
    640 /* MOVE LONG EXTENDED */
    641     C(0xa800, MVCLE,   RS_a,  Z,   0, a2, 0, 0, mvcle, 0)
    642 /* MOVE LONG UNICODE */
    643     C(0xeb8e, MVCLU,   RSY_a, E2,  0, a2, 0, 0, mvclu, 0)
    644 /* MOVE NUMERICS */
    645     C(0xd100, MVN,     SS_a,  Z,   la1, a2, 0, 0, mvn, 0)
    646 /* MOVE RIGHT TO LEFT */
    647     C(0xe50a, MVCRL,   SSE,  MIE3, la1, a2, 0, 0, mvcrl, 0)
    648 /* MOVE PAGE */
    649     C(0xb254, MVPG,    RRE,   Z,   0, 0, 0, 0, mvpg, 0)
    650 /* MOVE STRING */
    651     C(0xb255, MVST,    RRE,   Z,   0, 0, 0, 0, mvst, 0)
    652 /* MOVE WITH OPTIONAL SPECIFICATION */
    653     C(0xc800, MVCOS,   SSF,   MVCOS, la1, a2, 0, 0, mvcos, 0)
    654 /* MOVE WITH OFFSET */
    655     /* Really format SS_b, but we pack both lengths into one argument
    656        for the helper call, so we might as well leave one 8-bit field.  */
    657     C(0xf100, MVO,     SS_a,  Z,   la1, a2, 0, 0, mvo, 0)
    658 /* MOVE ZONES */
    659     C(0xd300, MVZ,     SS_a,  Z,   la1, a2, 0, 0, mvz, 0)
    660 
    661 /* MULTIPLY */
    662     C(0x1c00, MR,      RR_a,  Z,   r1p1_32s, r2_32s, new, r1_D32, mul, 0)
    663     C(0xb9ec, MGRK,    RRF_a, MIE2,r3_o, r2_o, r1_P, 0, muls128, 0)
    664     C(0x5c00, M,       RX_a,  Z,   r1p1_32s, m2_32s, new, r1_D32, mul, 0)
    665     C(0xe35c, MFY,     RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
    666     C(0xe384, MG,      RXY_a, MIE2,r1p1_o, m2_64, r1_P, 0, muls128, 0)
    667     F(0xb317, MEEBR,   RRE,   Z,   e1, e2, new, e1, meeb, 0, IF_BFP)
    668     F(0xb31c, MDBR,    RRE,   Z,   f1, f2, new, f1, mdb, 0, IF_BFP)
    669     F(0xb34c, MXBR,    RRE,   Z,   x2h, x2l, x1, x1, mxb, 0, IF_BFP)
    670     F(0xb30c, MDEBR,   RRE,   Z,   f1, e2, new, f1, mdeb, 0, IF_BFP)
    671     F(0xb307, MXDBR,   RRE,   Z,   0, f2, x1, x1, mxdb, 0, IF_BFP)
    672     F(0xed17, MEEB,    RXE,   Z,   e1, m2_32u, new, e1, meeb, 0, IF_BFP)
    673     F(0xed1c, MDB,     RXE,   Z,   f1, m2_64, new, f1, mdb, 0, IF_BFP)
    674     F(0xed0c, MDEB,    RXE,   Z,   f1, m2_32u, new, f1, mdeb, 0, IF_BFP)
    675     F(0xed07, MXDB,    RXE,   Z,   0, m2_64, x1, x1, mxdb, 0, IF_BFP)
    676 /* MULTIPLY HALFWORD */
    677     C(0x4c00, MH,      RX_a,  Z,   r1_o, m2_16s, new, r1_32, mul, 0)
    678     C(0xe37c, MHY,     RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
    679     C(0xe33c, MGH,     RXY_a, MIE2,r1_o, m2_16s, r1, 0, mul, 0)
    680 /* MULTIPLY HALFWORD IMMEDIATE */
    681     C(0xa70c, MHI,     RI_a,  Z,   r1_o, i2, new, r1_32, mul, 0)
    682     C(0xa70d, MGHI,    RI_a,  Z,   r1_o, i2, r1, 0, mul, 0)
    683 /* MULTIPLY LOGICAL */
    684     C(0xb996, MLR,     RRE,   Z,   r1p1_32u, r2_32u, new, r1_D32, mul, 0)
    685     C(0xe396, ML,      RXY_a, Z,   r1p1_32u, m2_32u, new, r1_D32, mul, 0)
    686     C(0xb986, MLGR,    RRE,   Z,   r1p1, r2_o, r1_P, 0, mul128, 0)
    687     C(0xe386, MLG,     RXY_a, Z,   r1p1, m2_64, r1_P, 0, mul128, 0)
    688 /* MULTIPLY SINGLE */
    689     C(0xb252, MSR,     RRE,   Z,   r1_o, r2_o, new, r1_32, mul, 0)
    690     C(0xb9fd, MSRKC,   RRF_a, MIE2,r3_32s, r2_32s, new, r1_32, mul, muls32)
    691     C(0x7100, MS,      RX_a,  Z,   r1_o, m2_32s, new, r1_32, mul, 0)
    692     C(0xe351, MSY,     RXY_a, LD,  r1_o, m2_32s, new, r1_32, mul, 0)
    693     C(0xe353, MSC,     RXY_a, MIE2,r1_32s, m2_32s, new, r1_32, mul, muls32)
    694     C(0xb90c, MSGR,    RRE,   Z,   r1_o, r2_o, r1, 0, mul, 0)
    695     C(0xb9ed, MSGRKC,  RRF_a, MIE2,r3_o, r2_o, new_P, out2_r1, muls128, muls64)
    696     C(0xb91c, MSGFR,   RRE,   Z,   r1_o, r2_32s, r1, 0, mul, 0)
    697     C(0xe30c, MSG,     RXY_a, Z,   r1_o, m2_64, r1, 0, mul, 0)
    698     C(0xe383, MSGC,    RXY_a, MIE2,r1_o, m2_64, new_P, out2_r1, muls128, muls64)
    699     C(0xe31c, MSGF,    RXY_a, Z,   r1_o, m2_32s, r1, 0, mul, 0)
    700 /* MULTIPLY SINGLE IMMEDIATE */
    701     C(0xc201, MSFI,    RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
    702     C(0xc200, MSGFI,   RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
    703 
    704 /* MULTIPLY AND ADD */
    705     F(0xb30e, MAEBR,   RRD,   Z,   e1, e2, new, e1, maeb, 0, IF_BFP)
    706     F(0xb31e, MADBR,   RRD,   Z,   f1, f2, new, f1, madb, 0, IF_BFP)
    707     F(0xed0e, MAEB,    RXF,   Z,   e1, m2_32u, new, e1, maeb, 0, IF_BFP)
    708     F(0xed1e, MADB,    RXF,   Z,   f1, m2_64, new, f1, madb, 0, IF_BFP)
    709 /* MULTIPLY AND SUBTRACT */
    710     F(0xb30f, MSEBR,   RRD,   Z,   e1, e2, new, e1, mseb, 0, IF_BFP)
    711     F(0xb31f, MSDBR,   RRD,   Z,   f1, f2, new, f1, msdb, 0, IF_BFP)
    712     F(0xed0f, MSEB,    RXF,   Z,   e1, m2_32u, new, e1, mseb, 0, IF_BFP)
    713     F(0xed1f, MSDB,    RXF,   Z,   f1, m2_64, new, f1, msdb, 0, IF_BFP)
    714 
    715 /* NAND */
    716     C(0xb974, NNRK,    RRF_a, MIE3, r2, r3, new, r1_32, nand, nz32)
    717     C(0xb964, NNGRK,   RRF_a, MIE3, r2, r3, r1, 0, nand, nz64)
    718 /* NOR */
    719     C(0xb976, NORK,    RRF_a, MIE3, r2, r3, new, r1_32, nor, nz32)
    720     C(0xb966, NOGRK,   RRF_a, MIE3, r2, r3, r1, 0, nor, nz64)
    721 /* NOT EXCLUSIVE OR */
    722     C(0xb977, NXRK,    RRF_a, MIE3, r2, r3, new, r1_32, nxor, nz32)
    723     C(0xb967, NXGRK,   RRF_a, MIE3, r2, r3, r1, 0, nxor, nz64)
    724 
    725 /* OR */
    726     C(0x1600, OR,      RR_a,  Z,   r1, r2, new, r1_32, or, nz32)
    727     C(0xb9f6, ORK,     RRF_a, DO,  r2, r3, new, r1_32, or, nz32)
    728     C(0x5600, O,       RX_a,  Z,   r1, m2_32s, new, r1_32, or, nz32)
    729     C(0xe356, OY,      RXY_a, LD,  r1, m2_32s, new, r1_32, or, nz32)
    730     C(0xb981, OGR,     RRE,   Z,   r1, r2, r1, 0, or, nz64)
    731     C(0xb9e6, OGRK,    RRF_a, DO,  r2, r3, r1, 0, or, nz64)
    732     C(0xe381, OG,      RXY_a, Z,   r1, m2_64, r1, 0, or, nz64)
    733     C(0xd600, OC,      SS_a,  Z,   la1, a2, 0, 0, oc, 0)
    734 /* OR IMMEDIATE */
    735     D(0xc00c, OIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
    736     D(0xc00d, OILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
    737     D(0xa508, OIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
    738     D(0xa509, OIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
    739     D(0xa50a, OILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
    740     D(0xa50b, OILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
    741     D(0x9600, OI,      SI,    Z,   la1, i2_8u, new, 0, oi, nz64, MO_UB)
    742     D(0xeb56, OIY,     SIY,   LD,  la1, i2_8u, new, 0, oi, nz64, MO_UB)
    743 /* OR WITH COMPLEMENT */
    744     C(0xb975, OCRK,    RRF_a, MIE3, r2, r3, new, r1_32, orc, nz32)
    745     C(0xb965, OCGRK,   RRF_a, MIE3, r2, r3, r1, 0, orc, nz64)
    746 
    747 /* PACK */
    748     /* Really format SS_b, but we pack both lengths into one argument
    749        for the helper call, so we might as well leave one 8-bit field.  */
    750     C(0xf200, PACK,    SS_a,  Z,   la1, a2, 0, 0, pack, 0)
    751 /* PACK ASCII */
    752     C(0xe900, PKA,     SS_f,  E2,  la1, a2, 0, 0, pka, 0)
    753 /* PACK UNICODE */
    754     C(0xe100, PKU,     SS_f,  E2,  la1, a2, 0, 0, pku, 0)
    755 
    756 /* POPULATION COUNT */
    757     C(0xb9e1, POPCNT,  RRF_c, PC,  0, r2_o, r1, 0, popcnt, nz64)
    758 
    759 /* PREFETCH */
    760     /* Implemented as nops of course.  */
    761     C(0xe336, PFD,     RXY_b, GIE, 0, 0, 0, 0, 0, 0)
    762     C(0xc602, PFDRL,   RIL_c, GIE, 0, 0, 0, 0, 0, 0)
    763 /* PERFORM PROCESSOR ASSIST */
    764     /* Implemented as nop of course.  */
    765     C(0xb2e8, PPA,     RRF_c, PPA, 0, 0, 0, 0, 0, 0)
    766 
    767 /* ROTATE LEFT SINGLE LOGICAL */
    768     C(0xeb1d, RLL,     RSY_a, Z,   r3_o, sh, new, r1_32, rll32, 0)
    769     C(0xeb1c, RLLG,    RSY_a, Z,   r3_o, sh, r1, 0, rll64, 0)
    770 
    771 /* ROTATE THEN INSERT SELECTED BITS */
    772     C(0xec55, RISBG,   RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
    773     C(0xec59, RISBGN,  RIE_f, MIE, 0, r2, r1, 0, risbg, 0)
    774     C(0xec5d, RISBHG,  RIE_f, HW,  0, r2, r1, 0, risbg, 0)
    775     C(0xec51, RISBLG,  RIE_f, HW,  0, r2, r1, 0, risbg, 0)
    776 /* ROTATE_THEN <OP> SELECTED BITS */
    777     C(0xec54, RNSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
    778     C(0xec56, ROSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
    779     C(0xec57, RXSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
    780 
    781 /* SEARCH STRING */
    782     C(0xb25e, SRST,    RRE,   Z,   0, 0, 0, 0, srst, 0)
    783 /* SEARCH STRING UNICODE */
    784     C(0xb9be, SRSTU,   RRE,   ETF3, 0, 0, 0, 0, srstu, 0)
    785 
    786 /* SELECT */
    787     C(0xb9f0, SELR,    RRF_a, MIE3, r3, r2, new, r1_32, loc, 0)
    788     C(0xb9e3, SELGR,   RRF_a, MIE3, r3, r2, r1, 0, loc, 0)
    789 /* SELECT HIGH */
    790     C(0xb9c0, SELFHR,  RRF_a, MIE3, r3_sr32, r2_sr32, new, r1_32h, loc, 0)
    791 
    792 /* SET ACCESS */
    793     C(0xb24e, SAR,     RRE,   Z,   0, r2_o, 0, 0, sar, 0)
    794 /* SET ADDRESSING MODE */
    795     D(0x010c, SAM24,   E,     Z,   0, 0, 0, 0, sam, 0, 0)
    796     D(0x010d, SAM31,   E,     Z,   0, 0, 0, 0, sam, 0, 1)
    797     D(0x010e, SAM64,   E,     Z,   0, 0, 0, 0, sam, 0, 3)
    798 /* SET FPC */
    799     F(0xb384, SFPC,    RRE,   Z,   0, r1_o, 0, 0, sfpc, 0, IF_BFP)
    800 /* SET FPC AND SIGNAL */
    801     F(0xb385, SFASR,   RRE,   IEEEE_SIM, 0, r1_o, 0, 0, sfas, 0, IF_DFP)
    802 /* SET BFP ROUNDING MODE */
    803     F(0xb299, SRNM,    S,     Z,   la2, 0, 0, 0, srnm, 0, IF_BFP)
    804     F(0xb2b8, SRNMB,   S,     FPE, la2, 0, 0, 0, srnmb, 0, IF_BFP)
    805 /* SET DFP ROUNDING MODE */
    806     F(0xb2b9, SRNMT,   S,     DFPR, la2, 0, 0, 0, srnmt, 0, IF_DFP)
    807 /* SET PROGRAM MASK */
    808     C(0x0400, SPM,     RR_a,  Z,   r1, 0, 0, 0, spm, 0)
    809 
    810 /* SHIFT LEFT SINGLE */
    811     D(0x8b00, SLA,     RS_a,  Z,   r1, sh, new, r1_32, sla, 0, 31)
    812     D(0xebdd, SLAK,    RSY_a, DO,  r3, sh, new, r1_32, sla, 0, 31)
    813     D(0xeb0b, SLAG,    RSY_a, Z,   r3, sh, r1, 0, sla, 0, 63)
    814 /* SHIFT LEFT SINGLE LOGICAL */
    815     C(0x8900, SLL,     RS_a,  Z,   r1_o, sh, new, r1_32, sll, 0)
    816     C(0xebdf, SLLK,    RSY_a, DO,  r3_o, sh, new, r1_32, sll, 0)
    817     C(0xeb0d, SLLG,    RSY_a, Z,   r3_o, sh, r1, 0, sll, 0)
    818 /* SHIFT RIGHT SINGLE */
    819     C(0x8a00, SRA,     RS_a,  Z,   r1_32s, sh, new, r1_32, sra, s32)
    820     C(0xebdc, SRAK,    RSY_a, DO,  r3_32s, sh, new, r1_32, sra, s32)
    821     C(0xeb0a, SRAG,    RSY_a, Z,   r3_o, sh, r1, 0, sra, s64)
    822 /* SHIFT RIGHT SINGLE LOGICAL */
    823     C(0x8800, SRL,     RS_a,  Z,   r1_32u, sh, new, r1_32, srl, 0)
    824     C(0xebde, SRLK,    RSY_a, DO,  r3_32u, sh, new, r1_32, srl, 0)
    825     C(0xeb0c, SRLG,    RSY_a, Z,   r3_o, sh, r1, 0, srl, 0)
    826 /* SHIFT LEFT DOUBLE */
    827     D(0x8f00, SLDA,    RS_a,  Z,   r1_D32, sh, new, r1_D32, sla, 0, 63)
    828 /* SHIFT LEFT DOUBLE LOGICAL */
    829     C(0x8d00, SLDL,    RS_a,  Z,   r1_D32, sh, new, r1_D32, sll, 0)
    830 /* SHIFT RIGHT DOUBLE */
    831     C(0x8e00, SRDA,    RS_a,  Z,   r1_D32, sh, new, r1_D32, sra, s64)
    832 /* SHIFT RIGHT DOUBLE LOGICAL */
    833     C(0x8c00, SRDL,    RS_a,  Z,   r1_D32, sh, new, r1_D32, srl, 0)
    834 
    835 /* SQUARE ROOT */
    836     F(0xb314, SQEBR,   RRE,   Z,   0, e2, new, e1, sqeb, 0, IF_BFP)
    837     F(0xb315, SQDBR,   RRE,   Z,   0, f2, new, f1, sqdb, 0, IF_BFP)
    838     F(0xb316, SQXBR,   RRE,   Z,   x2h, x2l, new_P, x1, sqxb, 0, IF_BFP)
    839     F(0xed14, SQEB,    RXE,   Z,   0, m2_32u, new, e1, sqeb, 0, IF_BFP)
    840     F(0xed15, SQDB,    RXE,   Z,   0, m2_64, new, f1, sqdb, 0, IF_BFP)
    841 
    842 /* STORE */
    843     C(0x5000, ST,      RX_a,  Z,   r1_o, a2, 0, 0, st32, 0)
    844     C(0xe350, STY,     RXY_a, LD,  r1_o, a2, 0, 0, st32, 0)
    845     C(0xe324, STG,     RXY_a, Z,   r1_o, a2, 0, 0, st64, 0)
    846     F(0x6000, STD,     RX_a,  Z,   f1, a2, 0, 0, st64, 0, IF_AFP1)
    847     F(0xed67, STDY,    RXY_a, LD,  f1, a2, 0, 0, st64, 0, IF_AFP1)
    848     F(0x7000, STE,     RX_a,  Z,   e1, a2, 0, 0, st32, 0, IF_AFP1)
    849     F(0xed66, STEY,    RXY_a, LD,  e1, a2, 0, 0, st32, 0, IF_AFP1)
    850 /* STORE RELATIVE LONG */
    851     C(0xc40f, STRL,    RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
    852     C(0xc40b, STGRL,   RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
    853 /* STORE CHARACTER */
    854     C(0x4200, STC,     RX_a,  Z,   r1_o, a2, 0, 0, st8, 0)
    855     C(0xe372, STCY,    RXY_a, LD,  r1_o, a2, 0, 0, st8, 0)
    856 /* STORE CHARACTER HIGH */
    857     C(0xe3c3, STCH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st8, 0)
    858 /* STORE CHARACTERS UNDER MASK */
    859     D(0xbe00, STCM,    RS_b,  Z,   r1_o, a2, 0, 0, stcm, 0, 0)
    860     D(0xeb2d, STCMY,   RSY_b, LD,  r1_o, a2, 0, 0, stcm, 0, 0)
    861     D(0xeb2c, STCMH,   RSY_b, Z,   r1_o, a2, 0, 0, stcm, 0, 32)
    862 /* STORE HALFWORD */
    863     C(0x4000, STH,     RX_a,  Z,   r1_o, a2, 0, 0, st16, 0)
    864     C(0xe370, STHY,    RXY_a, LD,  r1_o, a2, 0, 0, st16, 0)
    865 /* STORE HALFWORD HIGH */
    866     C(0xe3c7, STHH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st16, 0)
    867 /* STORE HALFWORD RELATIVE LONG */
    868     C(0xc407, STHRL,   RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
    869 /* STORE HIGH */
    870     C(0xe3cb, STFH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st32, 0)
    871 /* STORE ON CONDITION */
    872     D(0xebf3, STOC,    RSY_b, LOC, 0, 0, 0, 0, soc, 0, 0)
    873     D(0xebe3, STOCG,   RSY_b, LOC, 0, 0, 0, 0, soc, 0, 1)
    874 /* STORE HIGH ON CONDITION */
    875     D(0xebe1, STOCFH,  RSY_b, LOC2, 0, 0, 0, 0, soc, 0, 2)
    876 /* STORE REVERSED */
    877     C(0xe33f, STRVH,   RXY_a, Z,   la2, r1_16u, new, m1_16, rev16, 0)
    878     C(0xe33e, STRV,    RXY_a, Z,   la2, r1_32u, new, m1_32, rev32, 0)
    879     C(0xe32f, STRVG,   RXY_a, Z,   la2, r1_o, new, m1_64, rev64, 0)
    880 
    881 /* STORE CLOCK */
    882     F(0xb205, STCK,    S,     Z,   la2, 0, new, m1_64, stck, 0, IF_IO)
    883     F(0xb27c, STCKF,   S,     SCF, la2, 0, new, m1_64, stck, 0, IF_IO)
    884 /* STORE CLOCK EXTENDED */
    885     F(0xb278, STCKE,   S,     Z,   0, a2, 0, 0, stcke, 0, IF_IO)
    886 
    887 /* STORE FACILITY LIST EXTENDED */
    888     C(0xb2b0, STFLE,   S,  SFLE,   0, a2, 0, 0, stfle, 0)
    889 /* STORE FPC */
    890     F(0xb29c, STFPC,   S,     Z,   0, a2, new, m2_32, efpc, 0, IF_BFP)
    891 
    892 /* STORE MULTIPLE */
    893     D(0x9000, STM,     RS_a,  Z,   0, a2, 0, 0, stm, 0, 4)
    894     D(0xeb90, STMY,    RSY_a, LD,  0, a2, 0, 0, stm, 0, 4)
    895     D(0xeb24, STMG,    RSY_a, Z,   0, a2, 0, 0, stm, 0, 8)
    896 /* STORE MULTIPLE HIGH */
    897     C(0xeb26, STMH,    RSY_a, Z,   0, a2, 0, 0, stmh, 0)
    898 /* STORE ACCESS MULTIPLE */
    899     C(0x9b00, STAM,    RS_a,  Z,   0, a2, 0, 0, stam, 0)
    900     C(0xeb9b, STAMY,   RSY_a, LD,  0, a2, 0, 0, stam, 0)
    901 /* STORE PAIR TO QUADWORD */
    902     C(0xe38e, STPQ,    RXY_a, Z,   0, a2, r1_P, 0, stpq, 0)
    903 
    904 /* SUBTRACT */
    905     C(0x1b00, SR,      RR_a,  Z,   r1, r2, new, r1_32, sub, subs32)
    906     C(0xb9f9, SRK,     RRF_a, DO,  r2, r3, new, r1_32, sub, subs32)
    907     C(0x5b00, S,       RX_a,  Z,   r1, m2_32s, new, r1_32, sub, subs32)
    908     C(0xe35b, SY,      RXY_a, LD,  r1, m2_32s, new, r1_32, sub, subs32)
    909     C(0xb909, SGR,     RRE,   Z,   r1, r2, r1, 0, sub, subs64)
    910     C(0xb919, SGFR,    RRE,   Z,   r1, r2_32s, r1, 0, sub, subs64)
    911     C(0xb9e9, SGRK,    RRF_a, DO,  r2, r3, r1, 0, sub, subs64)
    912     C(0xe309, SG,      RXY_a, Z,   r1, m2_64, r1, 0, sub, subs64)
    913     C(0xe319, SGF,     RXY_a, Z,   r1, m2_32s, r1, 0, sub, subs64)
    914     F(0xb30b, SEBR,    RRE,   Z,   e1, e2, new, e1, seb, f32, IF_BFP)
    915     F(0xb31b, SDBR,    RRE,   Z,   f1, f2, new, f1, sdb, f64, IF_BFP)
    916     F(0xb34b, SXBR,    RRE,   Z,   x2h, x2l, x1, x1, sxb, f128, IF_BFP)
    917     F(0xed0b, SEB,     RXE,   Z,   e1, m2_32u, new, e1, seb, f32, IF_BFP)
    918     F(0xed1b, SDB,     RXE,   Z,   f1, m2_64, new, f1, sdb, f64, IF_BFP)
    919 /* SUBTRACT HALFWORD */
    920     C(0x4b00, SH,      RX_a,  Z,   r1, m2_16s, new, r1_32, sub, subs32)
    921     C(0xe37b, SHY,     RXY_a, LD,  r1, m2_16s, new, r1_32, sub, subs32)
    922     C(0xe339, SGH,     RXY_a, MIE2,r1, m2_16s, r1, 0, sub, subs64)
    923 /* SUBTRACT HIGH */
    924     C(0xb9c9, SHHHR,   RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, sub, subs32)
    925     C(0xb9d9, SHHLR,   RRF_a, HW,  r2_sr32, r3, new, r1_32h, sub, subs32)
    926 /* SUBTRACT LOGICAL */
    927     C(0x1f00, SLR,     RR_a,  Z,   r1_32u, r2_32u, new, r1_32, sub, subu32)
    928     C(0xb9fb, SLRK,    RRF_a, DO,  r2_32u, r3_32u, new, r1_32, sub, subu32)
    929     C(0x5f00, SL,      RX_a,  Z,   r1_32u, m2_32u, new, r1_32, sub, subu32)
    930     C(0xe35f, SLY,     RXY_a, LD,  r1_32u, m2_32u, new, r1_32, sub, subu32)
    931     C(0xb90b, SLGR,    RRE,   Z,   r1, r2, r1, 0, subu64, subu64)
    932     C(0xb91b, SLGFR,   RRE,   Z,   r1, r2_32u, r1, 0, subu64, subu64)
    933     C(0xb9eb, SLGRK,   RRF_a, DO,  r2, r3, r1, 0, subu64, subu64)
    934     C(0xe30b, SLG,     RXY_a, Z,   r1, m2_64, r1, 0, subu64, subu64)
    935     C(0xe31b, SLGF,    RXY_a, Z,   r1, m2_32u, r1, 0, subu64, subu64)
    936 /* SUBTRACT LOCICAL HIGH */
    937     C(0xb9cb, SLHHHR,  RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, sub, subu32)
    938     C(0xb9db, SLHHLR,  RRF_a, HW,  r2_sr32, r3_32u, new, r1_32h, sub, subu32)
    939 /* SUBTRACT LOGICAL IMMEDIATE */
    940     C(0xc205, SLFI,    RIL_a, EI,  r1_32u, i2_32u, new, r1_32, sub, subu32)
    941     C(0xc204, SLGFI,   RIL_a, EI,  r1, i2_32u, r1, 0, subu64, subu64)
    942 /* SUBTRACT LOGICAL WITH BORROW */
    943     C(0xb999, SLBR,    RRE,   Z,   r1_32u, r2_32u, new, r1_32, subb32, subu32)
    944     C(0xb989, SLBGR,   RRE,   Z,   r1, r2, r1, 0, subb64, subu64)
    945     C(0xe399, SLB,     RXY_a, Z,   r1_32u, m2_32u, new, r1_32, subb32, subu32)
    946     C(0xe389, SLBG,    RXY_a, Z,   r1, m2_64, r1, 0, subb64, subu64)
    947 
    948 /* SUPERVISOR CALL */
    949     C(0x0a00, SVC,     I,     Z,   0, 0, 0, 0, svc, 0)
    950 
    951 /* TEST ADDRESSING MODE */
    952     C(0x010b, TAM,     E,     Z,   0, 0, 0, 0, tam, 0)
    953 
    954 /* TEST AND SET */
    955     C(0x9300, TS,      S,     Z,   0, a2, 0, 0, ts, 0)
    956 
    957 /* TEST DATA CLASS */
    958     F(0xed10, TCEB,    RXE,   Z,   e1, a2, 0, 0, tceb, 0, IF_BFP)
    959     F(0xed11, TCDB,    RXE,   Z,   f1, a2, 0, 0, tcdb, 0, IF_BFP)
    960     F(0xed12, TCXB,    RXE,   Z,   0, a2, x1, 0, tcxb, 0, IF_BFP)
    961 
    962 /* TEST DECIMAL */
    963     C(0xebc0, TP,      RSL,   E2,  la1, 0, 0, 0, tp, 0)
    964 
    965 /* TEST UNDER MASK */
    966     C(0x9100, TM,      SI,    Z,   m1_8u, i2_8u, 0, 0, 0, tm32)
    967     C(0xeb51, TMY,     SIY,   LD,  m1_8u, i2_8u, 0, 0, 0, tm32)
    968     D(0xa702, TMHH,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
    969     D(0xa703, TMHL,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
    970     D(0xa700, TMLH,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
    971     D(0xa701, TMLL,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
    972 
    973 /* TRANSLATE */
    974     C(0xdc00, TR,      SS_a,  Z,   la1, a2, 0, 0, tr, 0)
    975 /* TRANSLATE AND TEST */
    976     C(0xdd00, TRT,     SS_a,  Z,   la1, a2, 0, 0, trt, 0)
    977 /* TRANSLATE AND TEST REVERSE */
    978     C(0xd000, TRTR,    SS_a,  ETF3, la1, a2, 0, 0, trtr, 0)
    979 /* TRANSLATE EXTENDED */
    980     C(0xb2a5, TRE,     RRE,   Z,   0, r2, r1_P, 0, tre, 0)
    981 
    982 /* TRANSLATE ONE TO ONE */
    983     C(0xb993, TROO,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
    984 /* TRANSLATE ONE TO TWO */
    985     C(0xb992, TROT,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
    986 /* TRANSLATE TWO TO ONE */
    987     C(0xb991, TRTO,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
    988 /* TRANSLATE TWO TO TWO */
    989     C(0xb990, TRTT,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
    990 
    991 /* UNPACK */
    992     /* Really format SS_b, but we pack both lengths into one argument
    993        for the helper call, so we might as well leave one 8-bit field.  */
    994     C(0xf300, UNPK,    SS_a,  Z,   la1, a2, 0, 0, unpk, 0)
    995 /* UNPACK ASCII */
    996     C(0xea00, UNPKA,   SS_a,  E2,  la1, a2, 0, 0, unpka, 0)
    997 /* UNPACK UNICODE */
    998     C(0xe200, UNPKU,   SS_a,  E2,  la1, a2, 0, 0, unpku, 0)
    999 
   1000 /* MSA Instructions */
   1001     D(0xb91e, KMAC,    RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMAC)
   1002     D(0xb928, PCKMO,   RRE,   MSA3, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PCKMO)
   1003     D(0xb92a, KMF,     RRE,   MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMF)
   1004     D(0xb92b, KMO,     RRE,   MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMO)
   1005     D(0xb92c, PCC,     RRE,   MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PCC)
   1006     D(0xb92d, KMCTR,   RRF_b, MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMCTR)
   1007     D(0xb92e, KM,      RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KM)
   1008     D(0xb92f, KMC,     RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMC)
   1009     D(0xb929, KMA,     RRF_b, MSA8, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMA)
   1010     D(0xb93c, PPNO,    RRE,   MSA5, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PPNO)
   1011     D(0xb93e, KIMD,    RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KIMD)
   1012     D(0xb93f, KLMD,    RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KLMD)
   1013 
   1014 /* === Vector Support Instructions === */
   1015 
   1016 /* VECTOR BIT PERMUTE */
   1017     E(0xe785, VBPERM,  VRR_c, VE,  0, 0, 0, 0, vbperm, 0, 0, IF_VEC)
   1018 /* VECTOR GATHER ELEMENT */
   1019     E(0xe713, VGEF,    VRV,   V,   la2, 0, 0, 0, vge, 0, ES_32, IF_VEC)
   1020     E(0xe712, VGEG,    VRV,   V,   la2, 0, 0, 0, vge, 0, ES_64, IF_VEC)
   1021 /* VECTOR GENERATE BYTE MASK */
   1022     F(0xe744, VGBM,    VRI_a, V,   0, 0, 0, 0, vgbm, 0, IF_VEC)
   1023 /* VECTOR GENERATE MASK */
   1024     F(0xe746, VGM,     VRI_b, V,   0, 0, 0, 0, vgm, 0, IF_VEC)
   1025 /* VECTOR LOAD */
   1026     F(0xe706, VL,      VRX,   V,   la2, 0, 0, 0, vl, 0, IF_VEC)
   1027     F(0xe756, VLR,     VRR_a, V,   0, 0, 0, 0, vlr, 0, IF_VEC)
   1028 /* VECTOR LOAD AND REPLICATE */
   1029     F(0xe705, VLREP,   VRX,   V,   la2, 0, 0, 0, vlrep, 0, IF_VEC)
   1030 /* VECTOR LOAD BYTE REVERSED ELEMENT */
   1031     E(0xe601, VLEBRH,  VRX,   VE2, la2, 0, 0, 0, vlebr, 0, ES_16, IF_VEC)
   1032     E(0xe603, VLEBRF,  VRX,   VE2, la2, 0, 0, 0, vlebr, 0, ES_32, IF_VEC)
   1033     E(0xe602, VLEBRG,  VRX,   VE2, la2, 0, 0, 0, vlebr, 0, ES_64, IF_VEC)
   1034 /* VECTOR LOAD BYTE REVERSED ELEMENT AND REPLICATE */
   1035     F(0xe605, VLBRREP, VRX,   VE2, la2, 0, 0, 0, vlbrrep, 0, IF_VEC)
   1036 /* VECTOR LOAD BYTE REVERSED ELEMENT AND ZERO */
   1037     F(0xe604, VLLEBRZ, VRX,   VE2, la2, 0, 0, 0, vllebrz, 0, IF_VEC)
   1038 /* VECTOR LOAD BYTE REVERSED ELEMENTS */
   1039     F(0xe606, VLBR,    VRX,   VE2, la2, 0, 0, 0, vlbr, 0, IF_VEC)
   1040 /* VECTOR LOAD ELEMENT */
   1041     E(0xe700, VLEB,    VRX,   V,   la2, 0, 0, 0, vle, 0, ES_8, IF_VEC)
   1042     E(0xe701, VLEH,    VRX,   V,   la2, 0, 0, 0, vle, 0, ES_16, IF_VEC)
   1043     E(0xe703, VLEF,    VRX,   V,   la2, 0, 0, 0, vle, 0, ES_32, IF_VEC)
   1044     E(0xe702, VLEG,    VRX,   V,   la2, 0, 0, 0, vle, 0, ES_64, IF_VEC)
   1045 /* VECTOR LOAD ELEMENT IMMEDIATE */
   1046     E(0xe740, VLEIB,   VRI_a, V,   0, 0, 0, 0, vlei, 0, ES_8, IF_VEC)
   1047     E(0xe741, VLEIH,   VRI_a, V,   0, 0, 0, 0, vlei, 0, ES_16, IF_VEC)
   1048     E(0xe743, VLEIF,   VRI_a, V,   0, 0, 0, 0, vlei, 0, ES_32, IF_VEC)
   1049     E(0xe742, VLEIG,   VRI_a, V,   0, 0, 0, 0, vlei, 0, ES_64, IF_VEC)
   1050 /* VECTOR LOAD ELEMENTS REVERSED */
   1051     F(0xe607, VLER,    VRX,   VE2, la2, 0, 0, 0, vler, 0, IF_VEC)
   1052 /* VECTOR LOAD GR FROM VR ELEMENT */
   1053     F(0xe721, VLGV,    VRS_c, V,   la2, 0, r1, 0, vlgv, 0, IF_VEC)
   1054 /* VECTOR LOAD LOGICAL ELEMENT AND ZERO */
   1055     F(0xe704, VLLEZ,   VRX,   V,   la2, 0, 0, 0, vllez, 0, IF_VEC)
   1056 /* VECTOR LOAD MULTIPLE */
   1057     F(0xe736, VLM,     VRS_a, V,   la2, 0, 0, 0, vlm, 0, IF_VEC)
   1058 /* VECTOR LOAD TO BLOCK BOUNDARY */
   1059     F(0xe707, VLBB,    VRX,   V,   la2, 0, 0, 0, vlbb, 0, IF_VEC)
   1060 /* VECTOR LOAD VR ELEMENT FROM GR */
   1061     F(0xe722, VLVG,    VRS_b, V,   la2, r3, 0, 0, vlvg, 0, IF_VEC)
   1062 /* VECTOR LOAD VR FROM GRS DISJOINT */
   1063     F(0xe762, VLVGP,   VRR_f, V,   r2, r3, 0, 0, vlvgp, 0, IF_VEC)
   1064 /* VECTOR LOAD WITH LENGTH */
   1065     F(0xe737, VLL,     VRS_b, V,   la2, r3_32u, 0, 0, vll, 0, IF_VEC)
   1066 /* VECTOR MERGE HIGH */
   1067     F(0xe761, VMRH,    VRR_c, V,   0, 0, 0, 0, vmr, 0, IF_VEC)
   1068 /* VECTOR MERGE LOW */
   1069     F(0xe760, VMRL,    VRR_c, V,   0, 0, 0, 0, vmr, 0, IF_VEC)
   1070 /* VECTOR PACK */
   1071     F(0xe794, VPK,     VRR_c, V,   0, 0, 0, 0, vpk, 0, IF_VEC)
   1072 /* VECTOR PACK SATURATE */
   1073     F(0xe797, VPKS,    VRR_b, V,   0, 0, 0, 0, vpk, 0, IF_VEC)
   1074 /* VECTOR PACK LOGICAL SATURATE */
   1075     F(0xe795, VPKLS,   VRR_b, V,   0, 0, 0, 0, vpk, 0, IF_VEC)
   1076     F(0xe78c, VPERM,   VRR_e, V,   0, 0, 0, 0, vperm, 0, IF_VEC)
   1077 /* VECTOR PERMUTE DOUBLEWORD IMMEDIATE */
   1078     F(0xe784, VPDI,    VRR_c, V,   0, 0, 0, 0, vpdi, 0, IF_VEC)
   1079 /* VECTOR REPLICATE */
   1080     F(0xe74d, VREP,    VRI_c, V,   0, 0, 0, 0, vrep, 0, IF_VEC)
   1081 /* VECTOR REPLICATE IMMEDIATE */
   1082     F(0xe745, VREPI,   VRI_a, V,   0, 0, 0, 0, vrepi, 0, IF_VEC)
   1083 /* VECTOR SCATTER ELEMENT */
   1084     E(0xe71b, VSCEF,   VRV,   V,   la2, 0, 0, 0, vsce, 0, ES_32, IF_VEC)
   1085     E(0xe71a, VSCEG,   VRV,   V,   la2, 0, 0, 0, vsce, 0, ES_64, IF_VEC)
   1086 /* VECTOR SELECT */
   1087     F(0xe78d, VSEL,    VRR_e, V,   0, 0, 0, 0, vsel, 0, IF_VEC)
   1088 /* VECTOR SIGN EXTEND TO DOUBLEWORD */
   1089     F(0xe75f, VSEG,    VRR_a, V,   0, 0, 0, 0, vseg, 0, IF_VEC)
   1090 /* VECTOR STORE */
   1091     F(0xe70e, VST,     VRX,   V,   la2, 0, 0, 0, vst, 0, IF_VEC)
   1092 /* VECTOR STORE BYTE REVERSED ELEMENT */
   1093     E(0xe609, VSTEBRH,  VRX,   VE2, la2, 0, 0, 0, vstebr, 0, ES_16, IF_VEC)
   1094     E(0xe60b, VSTEBRF,  VRX,   VE2, la2, 0, 0, 0, vstebr, 0, ES_32, IF_VEC)
   1095     E(0xe60a, VSTEBRG,  VRX,   VE2, la2, 0, 0, 0, vstebr, 0, ES_64, IF_VEC)
   1096 /* VECTOR STORE BYTE REVERSED ELEMENTS */
   1097     F(0xe60e, VSTBR,    VRX,   VE2, la2, 0, 0, 0, vstbr, 0, IF_VEC)
   1098 /* VECTOR STORE ELEMENT */
   1099     E(0xe708, VSTEB,   VRX,   V,   la2, 0, 0, 0, vste, 0, ES_8, IF_VEC)
   1100     E(0xe709, VSTEH,   VRX,   V,   la2, 0, 0, 0, vste, 0, ES_16, IF_VEC)
   1101     E(0xe70b, VSTEF,   VRX,   V,   la2, 0, 0, 0, vste, 0, ES_32, IF_VEC)
   1102     E(0xe70a, VSTEG,   VRX,   V,   la2, 0, 0, 0, vste, 0, ES_64, IF_VEC)
   1103 /* VECTOR STORE ELEMENTS REVERSED */
   1104     F(0xe60f, VSTER,   VRX,   VE2, la2, 0, 0, 0, vster, 0, IF_VEC)
   1105 /* VECTOR STORE MULTIPLE */
   1106     F(0xe73e, VSTM,    VRS_a, V,   la2, 0, 0, 0, vstm, 0, IF_VEC)
   1107 /* VECTOR STORE WITH LENGTH */
   1108     F(0xe73f, VSTL,    VRS_b, V,   la2, r3_32u, 0, 0, vstl, 0, IF_VEC)
   1109 /* VECTOR UNPACK HIGH */
   1110     F(0xe7d7, VUPH,    VRR_a, V,   0, 0, 0, 0, vup, 0, IF_VEC)
   1111 /* VECTOR UNPACK LOGICAL HIGH */
   1112     F(0xe7d5, VUPLH,   VRR_a, V,   0, 0, 0, 0, vup, 0, IF_VEC)
   1113 /* VECTOR UNPACK LOW */
   1114     F(0xe7d6, VUPL,    VRR_a, V,   0, 0, 0, 0, vup, 0, IF_VEC)
   1115 /* VECTOR UNPACK LOGICAL LOW */
   1116     F(0xe7d4, VUPLL,   VRR_a, V,   0, 0, 0, 0, vup, 0, IF_VEC)
   1117 
   1118 /* === Vector Integer Instructions === */
   1119 
   1120 /* VECTOR ADD */
   1121     F(0xe7f3, VA,      VRR_c, V,   0, 0, 0, 0, va, 0, IF_VEC)
   1122 /* VECTOR ADD COMPUTE CARRY */
   1123     F(0xe7f1, VACC,    VRR_c, V,   0, 0, 0, 0, vacc, 0, IF_VEC)
   1124 /* VECTOR ADD WITH CARRY */
   1125     F(0xe7bb, VAC,     VRR_d, V,   0, 0, 0, 0, vac, 0, IF_VEC)
   1126 /* VECTOR ADD WITH CARRY COMPUTE CARRY */
   1127     F(0xe7b9, VACCC,   VRR_d, V,   0, 0, 0, 0, vaccc, 0, IF_VEC)
   1128 /* VECTOR AND */
   1129     F(0xe768, VN,      VRR_c, V,   0, 0, 0, 0, vn, 0, IF_VEC)
   1130 /* VECTOR AND WITH COMPLEMENT */
   1131     F(0xe769, VNC,     VRR_c, V,   0, 0, 0, 0, vnc, 0, IF_VEC)
   1132 /* VECTOR AVERAGE */
   1133     F(0xe7f2, VAVG,    VRR_c, V,   0, 0, 0, 0, vavg, 0, IF_VEC)
   1134 /* VECTOR AVERAGE LOGICAL */
   1135     F(0xe7f0, VAVGL,   VRR_c, V,   0, 0, 0, 0, vavgl, 0, IF_VEC)
   1136 /* VECTOR CHECKSUM */
   1137     F(0xe766, VCKSM,   VRR_c, V,   0, 0, 0, 0, vcksm, 0, IF_VEC)
   1138 /* VECTOR ELEMENT COMPARE */
   1139     F(0xe7db, VEC,     VRR_a, V,   0, 0, 0, 0, vec, cmps64, IF_VEC)
   1140 /* VECTOR ELEMENT COMPARE LOGICAL */
   1141     F(0xe7d9, VECL,    VRR_a, V,   0, 0, 0, 0, vec, cmpu64, IF_VEC)
   1142 /* VECTOR COMPARE EQUAL */
   1143     E(0xe7f8, VCEQ,    VRR_b, V,   0, 0, 0, 0, vc, 0, TCG_COND_EQ, IF_VEC)
   1144 /* VECTOR COMPARE HIGH */
   1145     E(0xe7fb, VCH,     VRR_b, V,   0, 0, 0, 0, vc, 0, TCG_COND_GT, IF_VEC)
   1146 /* VECTOR COMPARE HIGH LOGICAL */
   1147     E(0xe7f9, VCHL,    VRR_b, V,   0, 0, 0, 0, vc, 0, TCG_COND_GTU, IF_VEC)
   1148 /* VECTOR COUNT LEADING ZEROS */
   1149     F(0xe753, VCLZ,    VRR_a, V,   0, 0, 0, 0, vclz, 0, IF_VEC)
   1150 /* VECTOR COUNT TRAILING ZEROS */
   1151     F(0xe752, VCTZ,    VRR_a, V,   0, 0, 0, 0, vctz, 0, IF_VEC)
   1152 /* VECTOR EXCLUSIVE OR */
   1153     F(0xe76d, VX,      VRR_c, V,   0, 0, 0, 0, vx, 0, IF_VEC)
   1154 /* VECTOR GALOIS FIELD MULTIPLY SUM */
   1155     F(0xe7b4, VGFM,    VRR_c, V,   0, 0, 0, 0, vgfm, 0, IF_VEC)
   1156 /* VECTOR GALOIS FIELD MULTIPLY SUM AND ACCUMULATE */
   1157     F(0xe7bc, VGFMA,   VRR_d, V,   0, 0, 0, 0, vgfma, 0, IF_VEC)
   1158 /* VECTOR LOAD COMPLEMENT */
   1159     F(0xe7de, VLC,     VRR_a, V,   0, 0, 0, 0, vlc, 0, IF_VEC)
   1160 /* VECTOR LOAD POSITIVE */
   1161     F(0xe7df, VLP,     VRR_a, V,   0, 0, 0, 0, vlp, 0, IF_VEC)
   1162 /* VECTOR MAXIMUM */
   1163     F(0xe7ff, VMX,     VRR_c, V,   0, 0, 0, 0, vmx, 0, IF_VEC)
   1164 /* VECTOR MAXIMUM LOGICAL */
   1165     F(0xe7fd, VMXL,    VRR_c, V,   0, 0, 0, 0, vmx, 0, IF_VEC)
   1166 /* VECTOR MINIMUM */
   1167     F(0xe7fe, VMN,     VRR_c, V,   0, 0, 0, 0, vmx, 0, IF_VEC)
   1168 /* VECTOR MINIMUM LOGICAL */
   1169     F(0xe7fc, VMNL,    VRR_c, V,   0, 0, 0, 0, vmx, 0, IF_VEC)
   1170 /* VECTOR MULTIPLY AND ADD LOW */
   1171     F(0xe7aa, VMAL,    VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1172 /* VECTOR MULTIPLY AND ADD HIGH */
   1173     F(0xe7ab, VMAH,    VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1174 /* VECTOR MULTIPLY AND ADD LOGICAL HIGH */
   1175     F(0xe7a9, VMALH,   VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1176 /* VECTOR MULTIPLY AND ADD EVEN */
   1177     F(0xe7ae, VMAE,    VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1178 /* VECTOR MULTIPLY AND ADD LOGICAL EVEN */
   1179     F(0xe7ac, VMALE,   VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1180 /* VECTOR MULTIPLY AND ADD ODD */
   1181     F(0xe7af, VMAO,    VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1182 /* VECTOR MULTIPLY AND ADD LOGICAL ODD */
   1183     F(0xe7ad, VMALO,   VRR_d, V,   0, 0, 0, 0, vma, 0, IF_VEC)
   1184 /* VECTOR MULTIPLY HIGH */
   1185     F(0xe7a3, VMH,     VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1186 /* VECTOR MULTIPLY LOGICAL HIGH */
   1187     F(0xe7a1, VMLH,    VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1188 /* VECTOR MULTIPLY LOW */
   1189     F(0xe7a2, VML,     VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1190 /* VECTOR MULTIPLY EVEN */
   1191     F(0xe7a6, VME,     VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1192 /* VECTOR MULTIPLY LOGICAL EVEN */
   1193     F(0xe7a4, VMLE,    VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1194 /* VECTOR MULTIPLY ODD */
   1195     F(0xe7a7, VMO,     VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1196 /* VECTOR MULTIPLY LOGICAL ODD */
   1197     F(0xe7a5, VMLO,    VRR_c, V,   0, 0, 0, 0, vm, 0, IF_VEC)
   1198 /* VECTOR MULTIPLY SUM LOGICAL */
   1199     F(0xe7b8, VMSL,    VRR_d, VE,  0, 0, 0, 0, vmsl, 0, IF_VEC)
   1200 /* VECTOR NAND */
   1201     F(0xe76e, VNN,     VRR_c, VE,  0, 0, 0, 0, vnn, 0, IF_VEC)
   1202 /* VECTOR NOR */
   1203     F(0xe76b, VNO,     VRR_c, V,   0, 0, 0, 0, vno, 0, IF_VEC)
   1204 /* VECTOR NOT EXCLUSIVE OR */
   1205     F(0xe76c, VNX,     VRR_c, VE,  0, 0, 0, 0, vnx, 0, IF_VEC)
   1206 /* VECTOR OR */
   1207     F(0xe76a, VO,      VRR_c, V,   0, 0, 0, 0, vo, 0, IF_VEC)
   1208 /* VECTOR OR WITH COMPLEMENT */
   1209     F(0xe76f, VOC,     VRR_c, VE,  0, 0, 0, 0, voc, 0, IF_VEC)
   1210 /* VECTOR POPULATION COUNT */
   1211     F(0xe750, VPOPCT,  VRR_a, V,   0, 0, 0, 0, vpopct, 0, IF_VEC)
   1212 /* VECTOR ELEMENT ROTATE LEFT LOGICAL */
   1213     F(0xe773, VERLLV,  VRR_c, V,   0, 0, 0, 0, vesv, 0, IF_VEC)
   1214     F(0xe733, VERLL,   VRS_a, V,   la2, 0, 0, 0, ves, 0, IF_VEC)
   1215 /* VECTOR ELEMENT ROTATE AND INSERT UNDER MASK */
   1216     F(0xe772, VERIM,   VRI_d, V,   0, 0, 0, 0, verim, 0, IF_VEC)
   1217 /* VECTOR ELEMENT SHIFT LEFT */
   1218     F(0xe770, VESLV,   VRR_c, V,   0, 0, 0, 0, vesv, 0, IF_VEC)
   1219     F(0xe730, VESL,    VRS_a, V,   la2, 0, 0, 0, ves, 0, IF_VEC)
   1220 /* VECTOR ELEMENT SHIFT RIGHT ARITHMETIC */
   1221     F(0xe77a, VESRAV,  VRR_c, V,   0, 0, 0, 0, vesv, 0, IF_VEC)
   1222     F(0xe73a, VESRA,   VRS_a, V,   la2, 0, 0, 0, ves, 0, IF_VEC)
   1223 /* VECTOR ELEMENT SHIFT RIGHT LOGICAL */
   1224     F(0xe778, VESRLV,  VRR_c, V,   0, 0, 0, 0, vesv, 0, IF_VEC)
   1225     F(0xe738, VESRL,   VRS_a, V,   la2, 0, 0, 0, ves, 0, IF_VEC)
   1226 /* VECTOR SHIFT LEFT */
   1227     E(0xe774, VSL,     VRR_c, V,   0, 0, 0, 0, vsl, 0, 0, IF_VEC)
   1228 /* VECTOR SHIFT LEFT BY BYTE */
   1229     E(0xe775, VSLB,    VRR_c, V,   0, 0, 0, 0, vsl, 0, 1, IF_VEC)
   1230 /* VECTOR SHIFT LEFT DOUBLE BY BIT */
   1231     E(0xe786, VSLD,    VRI_d, VE2, 0, 0, 0, 0, vsld, 0, 0, IF_VEC)
   1232 /* VECTOR SHIFT LEFT DOUBLE BY BYTE */
   1233     E(0xe777, VSLDB,   VRI_d, V,   0, 0, 0, 0, vsld, 0, 1, IF_VEC)
   1234 /* VECTOR SHIFT RIGHT ARITHMETIC */
   1235     E(0xe77e, VSRA,    VRR_c, V,   0, 0, 0, 0, vsra, 0, 0, IF_VEC)
   1236 /* VECTOR SHIFT RIGHT ARITHMETIC BY BYTE */
   1237     E(0xe77f, VSRAB,   VRR_c, V,   0, 0, 0, 0, vsra, 0, 1, IF_VEC)
   1238 /* VECTOR SHIFT RIGHT DOUBLE BY BIT */
   1239     F(0xe787, VSRD,    VRI_d, VE2, 0, 0, 0, 0, vsrd, 0, IF_VEC)
   1240 /* VECTOR SHIFT RIGHT LOGICAL */
   1241     E(0xe77c, VSRL,    VRR_c, V,   0, 0, 0, 0, vsrl, 0, 0, IF_VEC)
   1242 /* VECTOR SHIFT RIGHT LOGICAL BY BYTE */
   1243     E(0xe77d, VSRLB,   VRR_c, V,   0, 0, 0, 0, vsrl, 0, 1, IF_VEC)
   1244 /* VECTOR SUBTRACT */
   1245     F(0xe7f7, VS,      VRR_c, V,   0, 0, 0, 0, vs, 0, IF_VEC)
   1246 /* VECTOR SUBTRACT COMPUTE BORROW INDICATION */
   1247     F(0xe7f5, VSCBI,   VRR_c, V,   0, 0, 0, 0, vscbi, 0, IF_VEC)
   1248 /* VECTOR SUBTRACT WITH BORROW INDICATION */
   1249     F(0xe7bf, VSBI,    VRR_d, V,   0, 0, 0, 0, vsbi, 0, IF_VEC)
   1250 /* VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION */
   1251     F(0xe7bd, VSBCBI,  VRR_d, V,   0, 0, 0, 0, vsbcbi, 0, IF_VEC)
   1252 /* VECTOR SUM ACROSS DOUBLEWORD */
   1253     F(0xe765, VSUMG,   VRR_c, V,   0, 0, 0, 0, vsumg, 0, IF_VEC)
   1254 /* VECTOR SUM ACROSS QUADWORD */
   1255     F(0xe767, VSUMQ,   VRR_c, V,   0, 0, 0, 0, vsumq, 0, IF_VEC)
   1256 /* VECTOR SUM ACROSS WORD */
   1257     F(0xe764, VSUM,    VRR_c, V,   0, 0, 0, 0, vsum, 0, IF_VEC)
   1258 /* VECTOR TEST UNDER MASK */
   1259     F(0xe7d8, VTM,     VRR_a, V,   0, 0, 0, 0, vtm, 0, IF_VEC)
   1260 
   1261 /* === Vector String Instructions === */
   1262 
   1263 /* VECTOR FIND ANY ELEMENT EQUAL */
   1264     F(0xe782, VFAE,    VRR_b, V,   0, 0, 0, 0, vfae, 0, IF_VEC)
   1265 /* VECTOR FIND ELEMENT EQUAL */
   1266     F(0xe780, VFEE,    VRR_b, V,   0, 0, 0, 0, vfee, 0, IF_VEC)
   1267 /* VECTOR FIND ELEMENT NOT EQUAL */
   1268     F(0xe781, VFENE,   VRR_b, V,   0, 0, 0, 0, vfene, 0, IF_VEC)
   1269 /* VECTOR ISOLATE STRING */
   1270     F(0xe75c, VISTR,   VRR_a, V,   0, 0, 0, 0, vistr, 0, IF_VEC)
   1271 /* VECTOR STRING RANGE COMPARE */
   1272     F(0xe78a, VSTRC,   VRR_d, V,   0, 0, 0, 0, vstrc, 0, IF_VEC)
   1273 /* VECTOR STRING SEARCH */
   1274     F(0xe78b, VSTRS,   VRR_d, VE2, 0, 0, 0, 0, vstrs, 0, IF_VEC)
   1275 
   1276 /* === Vector Floating-Point Instructions */
   1277 
   1278 /* VECTOR FP ADD */
   1279     F(0xe7e3, VFA,     VRR_c, V,   0, 0, 0, 0, vfa, 0, IF_VEC)
   1280 /* VECTOR FP COMPARE SCALAR */
   1281     F(0xe7cb, WFC,     VRR_a, V,   0, 0, 0, 0, wfc, 0, IF_VEC)
   1282 /* VECTOR FP COMPARE AND SIGNAL SCALAR */
   1283     F(0xe7ca, WFK,     VRR_a, V,   0, 0, 0, 0, wfc, 0, IF_VEC)
   1284 /* VECTOR FP COMPARE EQUAL */
   1285     F(0xe7e8, VFCE,    VRR_c, V,   0, 0, 0, 0, vfc, 0, IF_VEC)
   1286 /* VECTOR FP COMPARE HIGH */
   1287     F(0xe7eb, VFCH,    VRR_c, V,   0, 0, 0, 0, vfc, 0, IF_VEC)
   1288 /* VECTOR FP COMPARE HIGH OR EQUAL */
   1289     F(0xe7ea, VFCHE,   VRR_c, V,   0, 0, 0, 0, vfc, 0, IF_VEC)
   1290 /* VECTOR FP CONVERT FROM FIXED 64-BIT */
   1291     F(0xe7c3, VCDG,    VRR_a, V,   0, 0, 0, 0, vcdg, 0, IF_VEC)
   1292 /* VECTOR FP CONVERT FROM LOGICAL 64-BIT */
   1293     F(0xe7c1, VCDLG,   VRR_a, V,   0, 0, 0, 0, vcdg, 0, IF_VEC)
   1294 /* VECTOR FP CONVERT TO FIXED 64-BIT */
   1295     F(0xe7c2, VCGD,    VRR_a, V,   0, 0, 0, 0, vcdg, 0, IF_VEC)
   1296 /* VECTOR FP CONVERT TO LOGICAL 64-BIT */
   1297     F(0xe7c0, VCLGD,   VRR_a, V,   0, 0, 0, 0, vcdg, 0, IF_VEC)
   1298 /* VECTOR FP DIVIDE */
   1299     F(0xe7e5, VFD,     VRR_c, V,   0, 0, 0, 0, vfa, 0, IF_VEC)
   1300 /* VECTOR LOAD FP INTEGER */
   1301     F(0xe7c7, VFI,     VRR_a, V,   0, 0, 0, 0, vcdg, 0, IF_VEC)
   1302 /* VECTOR FP LOAD LENGTHENED */
   1303     F(0xe7c4, VFLL,    VRR_a, V,   0, 0, 0, 0, vfll, 0, IF_VEC)
   1304 /* VECTOR FP LOAD ROUNDED */
   1305     F(0xe7c5, VFLR,    VRR_a, V,   0, 0, 0, 0, vcdg, 0, IF_VEC)
   1306 /* VECTOR FP MAXIMUM */
   1307     F(0xe7ef, VFMAX,   VRR_c, VE,  0, 0, 0, 0, vfmax, 0, IF_VEC)
   1308 /* VECTOR FP MINIMUM */
   1309     F(0xe7ee, VFMIN,   VRR_c, VE,  0, 0, 0, 0, vfmax, 0, IF_VEC)
   1310 /* VECTOR FP MULTIPLY */
   1311     F(0xe7e7, VFM,     VRR_c, V,   0, 0, 0, 0, vfa, 0, IF_VEC)
   1312 /* VECTOR FP MULTIPLY AND ADD */
   1313     F(0xe78f, VFMA,    VRR_e, V,   0, 0, 0, 0, vfma, 0, IF_VEC)
   1314 /* VECTOR FP MULTIPLY AND SUBTRACT */
   1315     F(0xe78e, VFMS,    VRR_e, V,   0, 0, 0, 0, vfma, 0, IF_VEC)
   1316 /* VECTOR FP NEGATIVE MULTIPLY AND ADD */
   1317     F(0xe79f, VFNMA,   VRR_e, VE,  0, 0, 0, 0, vfma, 0, IF_VEC)
   1318 /* VECTOR FP NEGATIVE MULTIPLY AND SUBTRACT */
   1319     F(0xe79e, VFNMS,   VRR_e, VE,   0, 0, 0, 0, vfma, 0, IF_VEC)
   1320 /* VECTOR FP PERFORM SIGN OPERATION */
   1321     F(0xe7cc, VFPSO,   VRR_a, V,   0, 0, 0, 0, vfpso, 0, IF_VEC)
   1322 /* VECTOR FP SQUARE ROOT */
   1323     F(0xe7ce, VFSQ,    VRR_a, V,   0, 0, 0, 0, vfsq, 0, IF_VEC)
   1324 /* VECTOR FP SUBTRACT */
   1325     F(0xe7e2, VFS,     VRR_c, V,   0, 0, 0, 0, vfa, 0, IF_VEC)
   1326 /* VECTOR FP TEST DATA CLASS IMMEDIATE */
   1327     F(0xe74a, VFTCI,   VRI_e, V,   0, 0, 0, 0, vftci, 0, IF_VEC)
   1328 
   1329 #ifndef CONFIG_USER_ONLY
   1330 /* COMPARE AND SWAP AND PURGE */
   1331     E(0xb250, CSP,     RRE,   Z,   r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL, IF_PRIV)
   1332     E(0xb98a, CSPG,    RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEUQ, IF_PRIV)
   1333 /* DIAGNOSE (KVM hypercall) */
   1334     F(0x8300, DIAG,    RSI,   Z,   0, 0, 0, 0, diag, 0, IF_PRIV | IF_IO)
   1335 /* INSERT STORAGE KEY EXTENDED */
   1336     F(0xb229, ISKE,    RRE,   Z,   0, r2_o, new, r1_8, iske, 0, IF_PRIV)
   1337 /* INVALIDATE DAT TABLE ENTRY */
   1338     F(0xb98e, IPDE,    RRF_b, Z,   r1_o, r2_o, 0, 0, idte, 0, IF_PRIV)
   1339 /* INVALIDATE PAGE TABLE ENTRY */
   1340     F(0xb221, IPTE,    RRF_a, Z,   r1_o, r2_o, 0, 0, ipte, 0, IF_PRIV)
   1341 /* LOAD CONTROL */
   1342     F(0xb700, LCTL,    RS_a,  Z,   0, a2, 0, 0, lctl, 0, IF_PRIV)
   1343     F(0xeb2f, LCTLG,   RSY_a, Z,   0, a2, 0, 0, lctlg, 0, IF_PRIV)
   1344 /* LOAD PROGRAM PARAMETER */
   1345     F(0xb280, LPP,     S,   LPP,   0, m2_64, 0, 0, lpp, 0, IF_PRIV)
   1346 /* LOAD PSW */
   1347     F(0x8200, LPSW,    S,     Z,   0, a2, 0, 0, lpsw, 0, IF_PRIV)
   1348 /* LOAD PSW EXTENDED */
   1349     F(0xb2b2, LPSWE,   S,     Z,   0, a2, 0, 0, lpswe, 0, IF_PRIV)
   1350 /* LOAD REAL ADDRESS */
   1351     F(0xb100, LRA,     RX_a,  Z,   0, a2, r1, 0, lra, 0, IF_PRIV)
   1352     F(0xe313, LRAY,    RXY_a, LD,  0, a2, r1, 0, lra, 0, IF_PRIV)
   1353     F(0xe303, LRAG,    RXY_a, Z,   0, a2, r1, 0, lra, 0, IF_PRIV)
   1354 /* LOAD USING REAL ADDRESS */
   1355     E(0xb24b, LURA,    RRE,   Z,   0, ra2, new, r1_32, lura, 0, MO_TEUL, IF_PRIV)
   1356     E(0xb905, LURAG,   RRE,   Z,   0, ra2, r1, 0, lura, 0, MO_TEUQ, IF_PRIV)
   1357 /* MOVE TO PRIMARY */
   1358     F(0xda00, MVCP,    SS_d,  Z,   la1, a2, 0, 0, mvcp, 0, IF_PRIV)
   1359 /* MOVE TO SECONDARY */
   1360     F(0xdb00, MVCS,    SS_d,  Z,   la1, a2, 0, 0, mvcs, 0, IF_PRIV)
   1361 /* PURGE TLB */
   1362     F(0xb20d, PTLB,    S,     Z,   0, 0, 0, 0, ptlb, 0, IF_PRIV)
   1363 /* RESET REFERENCE BIT EXTENDED */
   1364     F(0xb22a, RRBE,    RRE,   Z,   0, r2_o, 0, 0, rrbe, 0, IF_PRIV)
   1365 /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
   1366     F(0xb220, SERVC,   RRE,   Z,   r1_o, r2_o, 0, 0, servc, 0, IF_PRIV | IF_IO)
   1367 /* SET ADDRESS SPACE CONTROL FAST */
   1368     C(0xb279, SACF,    S,     Z,   0, a2, 0, 0, sacf, 0)
   1369 /* SET CLOCK */
   1370     F(0xb204, SCK,     S,     Z,   0, m2_64a, 0, 0, sck, 0, IF_PRIV | IF_IO)
   1371 /* SET CLOCK COMPARATOR */
   1372     F(0xb206, SCKC,    S,     Z,   0, m2_64a, 0, 0, sckc, 0, IF_PRIV | IF_IO)
   1373 /* SET CLOCK PROGRAMMABLE FIELD */
   1374     F(0x0107, SCKPF,   E,     Z,   0, 0, 0, 0, sckpf, 0, IF_PRIV)
   1375 /* SET CPU TIMER */
   1376     F(0xb208, SPT,     S,     Z,   0, m2_64a, 0, 0, spt, 0, IF_PRIV | IF_IO)
   1377 /* SET PREFIX */
   1378     F(0xb210, SPX,     S,     Z,   0, m2_32ua, 0, 0, spx, 0, IF_PRIV)
   1379 /* SET PSW KEY FROM ADDRESS */
   1380     F(0xb20a, SPKA,    S,     Z,   0, a2, 0, 0, spka, 0, IF_PRIV)
   1381 /* SET STORAGE KEY EXTENDED */
   1382     F(0xb22b, SSKE,    RRF_c, Z,   r1_o, r2_o, 0, 0, sske, 0, IF_PRIV)
   1383 /* SET SYSTEM MASK */
   1384     F(0x8000, SSM,     S,     Z,   0, m2_8u, 0, 0, ssm, 0, IF_PRIV)
   1385 /* SIGNAL PROCESSOR */
   1386     F(0xae00, SIGP,    RS_a,  Z,   0, a2, 0, 0, sigp, 0, IF_PRIV | IF_IO)
   1387 /* STORE CLOCK COMPARATOR */
   1388     F(0xb207, STCKC,   S,     Z,   la2, 0, new, m1_64a, stckc, 0, IF_PRIV)
   1389 /* STORE CONTROL */
   1390     F(0xb600, STCTL,   RS_a,  Z,   0, a2, 0, 0, stctl, 0, IF_PRIV)
   1391     F(0xeb25, STCTG,   RSY_a, Z,   0, a2, 0, 0, stctg, 0, IF_PRIV)
   1392 /* STORE CPU ADDRESS */
   1393     F(0xb212, STAP,    S,     Z,   la2, 0, new, m1_16a, stap, 0, IF_PRIV)
   1394 /* STORE CPU ID */
   1395     F(0xb202, STIDP,   S,     Z,   la2, 0, new, m1_64a, stidp, 0, IF_PRIV)
   1396 /* STORE CPU TIMER */
   1397     F(0xb209, STPT,    S,     Z,   la2, 0, new, m1_64a, stpt, 0, IF_PRIV | IF_IO)
   1398 /* STORE FACILITY LIST */
   1399     F(0xb2b1, STFL,    S,     Z,   0, 0, 0, 0, stfl, 0, IF_PRIV)
   1400 /* STORE PREFIX */
   1401     F(0xb211, STPX,    S,     Z,   la2, 0, new, m1_32a, stpx, 0, IF_PRIV)
   1402 /* STORE SYSTEM INFORMATION */
   1403     F(0xb27d, STSI,    S,     Z,   0, a2, 0, 0, stsi, 0, IF_PRIV)
   1404 /* STORE THEN AND SYSTEM MASK */
   1405     F(0xac00, STNSM,   SI,    Z,   la1, 0, 0, 0, stnosm, 0, IF_PRIV)
   1406 /* STORE THEN OR SYSTEM MASK */
   1407     F(0xad00, STOSM,   SI,    Z,   la1, 0, 0, 0, stnosm, 0, IF_PRIV)
   1408 /* STORE USING REAL ADDRESS */
   1409     E(0xb246, STURA,   RRE,   Z,   r1_o, ra2, 0, 0, stura, 0, MO_TEUL, IF_PRIV)
   1410     E(0xb925, STURG,   RRE,   Z,   r1_o, ra2, 0, 0, stura, 0, MO_TEUQ, IF_PRIV)
   1411 /* TEST BLOCK */
   1412     F(0xb22c, TB,      RRE,   Z,   0, r2_o, 0, 0, testblock, 0, IF_PRIV)
   1413 /* TEST PROTECTION */
   1414     C(0xe501, TPROT,   SSE,   Z,   la1, a2, 0, 0, tprot, 0)
   1415 
   1416 /* CCW I/O Instructions */
   1417     F(0xb276, XSCH,    S,     Z,   0, 0, 0, 0, xsch, 0, IF_PRIV | IF_IO)
   1418     F(0xb230, CSCH,    S,     Z,   0, 0, 0, 0, csch, 0, IF_PRIV | IF_IO)
   1419     F(0xb231, HSCH,    S,     Z,   0, 0, 0, 0, hsch, 0, IF_PRIV | IF_IO)
   1420     F(0xb232, MSCH,    S,     Z,   0, insn, 0, 0, msch, 0, IF_PRIV | IF_IO)
   1421     F(0xb23b, RCHP,    S,     Z,   0, 0, 0, 0, rchp, 0, IF_PRIV | IF_IO)
   1422     F(0xb238, RSCH,    S,     Z,   0, 0, 0, 0, rsch, 0, IF_PRIV | IF_IO)
   1423     F(0xb237, SAL,     S,     Z,   0, 0, 0, 0, sal, 0, IF_PRIV | IF_IO)
   1424     F(0xb23c, SCHM,    S,     Z,   0, insn, 0, 0, schm, 0, IF_PRIV | IF_IO)
   1425     F(0xb274, SIGA,    S,     Z,   0, 0, 0, 0, siga, 0, IF_PRIV | IF_IO)
   1426     F(0xb23a, STCPS,   S,     Z,   0, 0, 0, 0, stcps, 0, IF_PRIV | IF_IO)
   1427     F(0xb233, SSCH,    S,     Z,   0, insn, 0, 0, ssch, 0, IF_PRIV | IF_IO)
   1428     F(0xb239, STCRW,   S,     Z,   0, insn, 0, 0, stcrw, 0, IF_PRIV | IF_IO)
   1429     F(0xb234, STSCH,   S,     Z,   0, insn, 0, 0, stsch, 0, IF_PRIV | IF_IO)
   1430     F(0xb236, TPI ,    S,     Z,   la2, 0, 0, 0, tpi, 0, IF_PRIV | IF_IO)
   1431     F(0xb235, TSCH,    S,     Z,   0, insn, 0, 0, tsch, 0, IF_PRIV | IF_IO)
   1432     /* ??? Not listed in PoO ninth edition, but there's a linux driver that
   1433        uses it: "A CHSC subchannel is usually present on LPAR only."  */
   1434     F(0xb25f, CHSC,  RRE,     Z,   0, insn, 0, 0, chsc, 0, IF_PRIV | IF_IO)
   1435 
   1436 /* zPCI Instructions */
   1437     /* None of these instructions are documented in the PoP, so this is all
   1438        based upon target/s390x/kvm.c and Linux code and likely incomplete */
   1439     F(0xebd0, PCISTB, RSY_a, PCI, la2, 0, 0, 0, pcistb, 0, IF_PRIV | IF_IO)
   1440     F(0xebd1, SIC, RSY_a, AIS, r1, r3, 0, 0, sic, 0, IF_PRIV | IF_IO)
   1441     F(0xb9a0, CLP, RRF_c, PCI, 0, 0, 0, 0, clp, 0, IF_PRIV | IF_IO)
   1442     F(0xb9d0, PCISTG, RRE, PCI, 0, 0, 0, 0, pcistg, 0, IF_PRIV | IF_IO)
   1443     F(0xb9d2, PCILG, RRE, PCI, 0, 0, 0, 0, pcilg, 0, IF_PRIV | IF_IO)
   1444     F(0xb9d3, RPCIT, RRE, PCI, 0, 0, 0, 0, rpcit, 0, IF_PRIV | IF_IO)
   1445     F(0xe3d0, MPCIFC, RXY_a, PCI, la2, 0, 0, 0, mpcifc, 0, IF_PRIV | IF_IO)
   1446     F(0xe3d4, STPCIFC, RXY_a, PCI, la2, 0, 0, 0, stpcifc, 0, IF_PRIV | IF_IO)
   1447 
   1448 #endif /* CONFIG_USER_ONLY */