1*fbadb1c4SDavid du Colombier #include "l.h" 2*fbadb1c4SDavid du Colombier 3*fbadb1c4SDavid du Colombier Optab optab[] = 4*fbadb1c4SDavid du Colombier { 5*fbadb1c4SDavid du Colombier { ATEXT, C_LEXT, C_NONE, C_NONE, C_LCON, 0, 0, 0 }, 6*fbadb1c4SDavid du Colombier { ATEXT, C_LEXT, C_REG, C_NONE, C_LCON, 0, 0, 0 }, 7*fbadb1c4SDavid du Colombier { ATEXT, C_LEXT, C_NONE, C_LCON, C_LCON, 0, 0, 0 }, 8*fbadb1c4SDavid du Colombier { ATEXT, C_LEXT, C_REG, C_LCON, C_LCON, 0, 0, 0 }, 9*fbadb1c4SDavid du Colombier { ATEXT, C_ADDR, C_NONE, C_NONE, C_LCON, 0, 0, 0 }, 10*fbadb1c4SDavid du Colombier { ATEXT, C_ADDR, C_REG, C_NONE, C_LCON, 0, 0, 0 }, 11*fbadb1c4SDavid du Colombier { ATEXT, C_ADDR, C_NONE, C_LCON, C_LCON, 0, 0, 0 }, 12*fbadb1c4SDavid du Colombier { ATEXT, C_ADDR, C_REG, C_LCON, C_LCON, 0, 0, 0 }, 13*fbadb1c4SDavid du Colombier 14*fbadb1c4SDavid du Colombier /* move register */ 15*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_REG, 1, 4, 0 }, 16*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_REG, 12, 4, 0 }, 17*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_REG, 13, 4, 0 }, 18*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_REG, 12, 4, 0 }, 19*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_REG, 13, 4, 0 }, 20*fbadb1c4SDavid du Colombier 21*fbadb1c4SDavid du Colombier { AADD, C_REG, C_REG, C_NONE, C_REG, 2, 4, 0 }, 22*fbadb1c4SDavid du Colombier { AADD, C_REG, C_NONE, C_NONE, C_REG, 2, 4, 0 }, 23*fbadb1c4SDavid du Colombier { AADD, C_ADDCON,C_REG, C_NONE, C_REG, 4, 4, 0 }, 24*fbadb1c4SDavid du Colombier { AADD, C_ADDCON,C_NONE, C_NONE, C_REG, 4, 4, 0 }, 25*fbadb1c4SDavid du Colombier { AADD, C_UCON, C_REG, C_NONE, C_REG, 20, 4, 0 }, 26*fbadb1c4SDavid du Colombier { AADD, C_UCON, C_NONE, C_NONE, C_REG, 20, 4, 0 }, 27*fbadb1c4SDavid du Colombier { AADD, C_LCON, C_REG, C_NONE, C_REG, 22, 12, 0 }, 28*fbadb1c4SDavid du Colombier { AADD, C_LCON, C_NONE, C_NONE, C_REG, 22, 12, 0 }, 29*fbadb1c4SDavid du Colombier 30*fbadb1c4SDavid du Colombier { AADDC, C_REG, C_REG, C_NONE, C_REG, 2, 4, 0 }, 31*fbadb1c4SDavid du Colombier { AADDC, C_REG, C_NONE, C_NONE, C_REG, 2, 4, 0 }, 32*fbadb1c4SDavid du Colombier { AADDC, C_ADDCON,C_REG, C_NONE, C_REG, 4, 4, 0 }, 33*fbadb1c4SDavid du Colombier { AADDC, C_ADDCON,C_NONE, C_NONE, C_REG, 4, 4, 0 }, 34*fbadb1c4SDavid du Colombier { AADDC, C_LCON, C_REG, C_NONE, C_REG, 22, 12, 0 }, 35*fbadb1c4SDavid du Colombier { AADDC, C_LCON, C_NONE, C_NONE, C_REG, 22, 12, 0 }, 36*fbadb1c4SDavid du Colombier 37*fbadb1c4SDavid du Colombier { AAND, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, /* logical, no literal */ 38*fbadb1c4SDavid du Colombier { AAND, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 39*fbadb1c4SDavid du Colombier { AANDCC, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, 40*fbadb1c4SDavid du Colombier { AANDCC, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 41*fbadb1c4SDavid du Colombier 42*fbadb1c4SDavid du Colombier { AANDCC, C_ANDCON,C_NONE, C_NONE, C_REG, 58, 4, 0 }, 43*fbadb1c4SDavid du Colombier { AANDCC, C_ANDCON,C_REG, C_NONE, C_REG, 58, 4, 0 }, 44*fbadb1c4SDavid du Colombier { AANDCC, C_UCON, C_NONE, C_NONE, C_REG, 59, 4, 0 }, 45*fbadb1c4SDavid du Colombier { AANDCC, C_UCON, C_REG, C_NONE, C_REG, 59, 4, 0 }, 46*fbadb1c4SDavid du Colombier { AANDCC, C_LCON, C_NONE, C_NONE, C_REG, 23, 12, 0 }, 47*fbadb1c4SDavid du Colombier { AANDCC, C_LCON, C_REG, C_NONE, C_REG, 23, 12, 0 }, 48*fbadb1c4SDavid du Colombier 49*fbadb1c4SDavid du Colombier { AMULLW, C_REG, C_REG, C_NONE, C_REG, 2, 4, 0 }, 50*fbadb1c4SDavid du Colombier { AMULLW, C_REG, C_NONE, C_NONE, C_REG, 2, 4, 0 }, 51*fbadb1c4SDavid du Colombier { AMULLW, C_ADDCON,C_REG, C_NONE, C_REG, 4, 4, 0 }, 52*fbadb1c4SDavid du Colombier { AMULLW, C_ADDCON,C_NONE, C_NONE, C_REG, 4, 4, 0 }, 53*fbadb1c4SDavid du Colombier { AMULLW, C_ANDCON,C_REG, C_NONE, C_REG, 4, 4, 0 }, 54*fbadb1c4SDavid du Colombier { AMULLW, C_ANDCON, C_NONE, C_NONE, C_REG, 4, 4, 0 }, 55*fbadb1c4SDavid du Colombier { AMULLW, C_LCON, C_REG, C_NONE, C_REG, 22, 12, 0}, 56*fbadb1c4SDavid du Colombier { AMULLW, C_LCON, C_NONE, C_NONE, C_REG, 22, 12, 0}, 57*fbadb1c4SDavid du Colombier 58*fbadb1c4SDavid du Colombier { ASUBC, C_REG, C_REG, C_NONE, C_REG, 10, 4, 0 }, 59*fbadb1c4SDavid du Colombier { ASUBC, C_REG, C_NONE, C_NONE, C_REG, 10, 4, 0 }, 60*fbadb1c4SDavid du Colombier { ASUBC, C_REG, C_NONE, C_ADDCON, C_REG, 27, 4, 0 }, 61*fbadb1c4SDavid du Colombier { ASUBC, C_REG, C_NONE, C_LCON, C_REG, 28, 12, 0}, 62*fbadb1c4SDavid du Colombier 63*fbadb1c4SDavid du Colombier { AOR, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, /* logical, literal not cc (or/xor) */ 64*fbadb1c4SDavid du Colombier { AOR, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 65*fbadb1c4SDavid du Colombier { AOR, C_ANDCON, C_NONE, C_NONE, C_REG, 58, 4, 0 }, 66*fbadb1c4SDavid du Colombier { AOR, C_ANDCON, C_REG, C_NONE, C_REG, 58, 4, 0 }, 67*fbadb1c4SDavid du Colombier { AOR, C_UCON, C_NONE, C_NONE, C_REG, 59, 4, 0 }, 68*fbadb1c4SDavid du Colombier { AOR, C_UCON, C_REG, C_NONE, C_REG, 59, 4, 0 }, 69*fbadb1c4SDavid du Colombier { AOR, C_LCON, C_NONE, C_NONE, C_REG, 23, 12, 0 }, 70*fbadb1c4SDavid du Colombier { AOR, C_LCON, C_REG, C_NONE, C_REG, 23, 12, 0 }, 71*fbadb1c4SDavid du Colombier 72*fbadb1c4SDavid du Colombier { ADIVW, C_REG, C_REG, C_NONE, C_REG, 2, 4, 0 }, /* op r1[,r2],r3 */ 73*fbadb1c4SDavid du Colombier { ADIVW, C_REG, C_NONE, C_NONE, C_REG, 2, 4, 0 }, 74*fbadb1c4SDavid du Colombier { ASUB, C_REG, C_REG, C_NONE, C_REG, 10, 4, 0 }, /* op r2[,r1],r3 */ 75*fbadb1c4SDavid du Colombier { ASUB, C_REG, C_NONE, C_NONE, C_REG, 10, 4, 0 }, 76*fbadb1c4SDavid du Colombier 77*fbadb1c4SDavid du Colombier { ASLW, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 78*fbadb1c4SDavid du Colombier { ASLW, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, 79*fbadb1c4SDavid du Colombier { ASLD, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 80*fbadb1c4SDavid du Colombier { ASLD, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, 81*fbadb1c4SDavid du Colombier { ASLD, C_SCON, C_REG, C_NONE, C_REG, 25, 4, 0 }, 82*fbadb1c4SDavid du Colombier { ASLD, C_SCON, C_NONE, C_NONE, C_REG, 25, 4, 0 }, 83*fbadb1c4SDavid du Colombier { ASLW, C_SCON, C_REG, C_NONE, C_REG, 57, 4, 0 }, 84*fbadb1c4SDavid du Colombier { ASLW, C_SCON, C_NONE, C_NONE, C_REG, 57, 4, 0 }, 85*fbadb1c4SDavid du Colombier 86*fbadb1c4SDavid du Colombier { ASRAW, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 87*fbadb1c4SDavid du Colombier { ASRAW, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, 88*fbadb1c4SDavid du Colombier { ASRAW, C_SCON, C_REG, C_NONE, C_REG, 56, 4, 0 }, 89*fbadb1c4SDavid du Colombier { ASRAW, C_SCON, C_NONE, C_NONE, C_REG, 56, 4, 0 }, 90*fbadb1c4SDavid du Colombier { ASRAD, C_REG, C_NONE, C_NONE, C_REG, 6, 4, 0 }, 91*fbadb1c4SDavid du Colombier { ASRAD, C_REG, C_REG, C_NONE, C_REG, 6, 4, 0 }, 92*fbadb1c4SDavid du Colombier { ASRAD, C_SCON, C_REG, C_NONE, C_REG, 56, 4, 0 }, 93*fbadb1c4SDavid du Colombier { ASRAD, C_SCON, C_NONE, C_NONE, C_REG, 56, 4, 0 }, 94*fbadb1c4SDavid du Colombier 95*fbadb1c4SDavid du Colombier { ARLWMI, C_SCON, C_REG, C_LCON, C_REG, 62, 4, 0 }, 96*fbadb1c4SDavid du Colombier { ARLWMI, C_REG, C_REG, C_LCON, C_REG, 63, 4, 0 }, 97*fbadb1c4SDavid du Colombier { ARLDMI, C_SCON, C_REG, C_LCON, C_REG, 30, 4, 0 }, 98*fbadb1c4SDavid du Colombier 99*fbadb1c4SDavid du Colombier { ARLDC, C_SCON, C_REG, C_LCON, C_REG, 29, 4, 0 }, 100*fbadb1c4SDavid du Colombier { ARLDCL, C_SCON, C_REG, C_LCON, C_REG, 29, 4, 0 }, 101*fbadb1c4SDavid du Colombier { ARLDCL, C_REG, C_REG, C_LCON, C_REG, 14, 4, 0 }, 102*fbadb1c4SDavid du Colombier { ARLDCL, C_REG, C_NONE, C_LCON, C_REG, 14, 4, 0 }, 103*fbadb1c4SDavid du Colombier 104*fbadb1c4SDavid du Colombier { AFADD, C_FREG, C_NONE, C_NONE, C_FREG, 2, 4, 0 }, 105*fbadb1c4SDavid du Colombier { AFADD, C_FREG, C_REG, C_NONE, C_FREG, 2, 4, 0 }, 106*fbadb1c4SDavid du Colombier { AFABS, C_FREG, C_NONE, C_NONE, C_FREG, 33, 4, 0 }, 107*fbadb1c4SDavid du Colombier { AFABS, C_NONE, C_NONE, C_NONE, C_FREG, 33, 4, 0 }, 108*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_FREG, 33, 4, 0 }, 109*fbadb1c4SDavid du Colombier 110*fbadb1c4SDavid du Colombier { AFMADD, C_FREG, C_REG, C_FREG, C_FREG, 34, 4, 0 }, 111*fbadb1c4SDavid du Colombier { AFMUL, C_FREG, C_NONE, C_NONE, C_FREG, 32, 4, 0 }, 112*fbadb1c4SDavid du Colombier { AFMUL, C_FREG, C_REG, C_NONE, C_FREG, 32, 4, 0 }, 113*fbadb1c4SDavid du Colombier 114*fbadb1c4SDavid du Colombier /* store, short offset */ 115*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 116*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 117*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 118*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 119*fbadb1c4SDavid du Colombier { AMOVBZU, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 120*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 121*fbadb1c4SDavid du Colombier { AMOVBU, C_REG, C_REG, C_NONE, C_ZOREG, 7, 4, REGZERO }, 122*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_SEXT, 7, 4, REGSB }, 123*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_SEXT, 7, 4, REGSB }, 124*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_SEXT, 7, 4, REGSB }, 125*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_SEXT, 7, 4, REGSB }, 126*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_SEXT, 7, 4, REGSB }, 127*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_SAUTO, 7, 4, REGSP }, 128*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_SAUTO, 7, 4, REGSP }, 129*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_SAUTO, 7, 4, REGSP }, 130*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_SAUTO, 7, 4, REGSP }, 131*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_SAUTO, 7, 4, REGSP }, 132*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 133*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 134*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 135*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 136*fbadb1c4SDavid du Colombier { AMOVBZU, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 137*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 138*fbadb1c4SDavid du Colombier { AMOVBU, C_REG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 139*fbadb1c4SDavid du Colombier 140*fbadb1c4SDavid du Colombier /* load, short offset */ 141*fbadb1c4SDavid du Colombier { AMOVD, C_ZOREG,C_REG, C_NONE, C_REG, 8, 4, REGZERO }, 142*fbadb1c4SDavid du Colombier { AMOVW, C_ZOREG,C_REG, C_NONE, C_REG, 8, 4, REGZERO }, 143*fbadb1c4SDavid du Colombier { AMOVWZ, C_ZOREG,C_REG, C_NONE, C_REG, 8, 4, REGZERO }, 144*fbadb1c4SDavid du Colombier { AMOVBZ, C_ZOREG,C_REG, C_NONE, C_REG, 8, 4, REGZERO }, 145*fbadb1c4SDavid du Colombier { AMOVBZU, C_ZOREG,C_REG, C_NONE, C_REG, 8, 4, REGZERO }, 146*fbadb1c4SDavid du Colombier { AMOVB, C_ZOREG,C_REG, C_NONE, C_REG, 9, 8, REGZERO }, 147*fbadb1c4SDavid du Colombier { AMOVBU, C_ZOREG,C_REG, C_NONE, C_REG, 9, 8, REGZERO }, 148*fbadb1c4SDavid du Colombier { AMOVD, C_SEXT, C_NONE, C_NONE, C_REG, 8, 4, REGSB }, 149*fbadb1c4SDavid du Colombier { AMOVW, C_SEXT, C_NONE, C_NONE, C_REG, 8, 4, REGSB }, 150*fbadb1c4SDavid du Colombier { AMOVWZ, C_SEXT, C_NONE, C_NONE, C_REG, 8, 4, REGSB }, 151*fbadb1c4SDavid du Colombier { AMOVBZ, C_SEXT, C_NONE, C_NONE, C_REG, 8, 4, REGSB }, 152*fbadb1c4SDavid du Colombier { AMOVB, C_SEXT, C_NONE, C_NONE, C_REG, 9, 8, REGSB }, 153*fbadb1c4SDavid du Colombier { AMOVD, C_SAUTO,C_NONE, C_NONE, C_REG, 8, 4, REGSP }, 154*fbadb1c4SDavid du Colombier { AMOVW, C_SAUTO,C_NONE, C_NONE, C_REG, 8, 4, REGSP }, 155*fbadb1c4SDavid du Colombier { AMOVWZ, C_SAUTO,C_NONE, C_NONE, C_REG, 8, 4, REGSP }, 156*fbadb1c4SDavid du Colombier { AMOVBZ, C_SAUTO,C_NONE, C_NONE, C_REG, 8, 4, REGSP }, 157*fbadb1c4SDavid du Colombier { AMOVB, C_SAUTO,C_NONE, C_NONE, C_REG, 9, 8, REGSP }, 158*fbadb1c4SDavid du Colombier { AMOVD, C_SOREG,C_NONE, C_NONE, C_REG, 8, 4, REGZERO }, 159*fbadb1c4SDavid du Colombier { AMOVW, C_SOREG,C_NONE, C_NONE, C_REG, 8, 4, REGZERO }, 160*fbadb1c4SDavid du Colombier { AMOVWZ, C_SOREG,C_NONE, C_NONE, C_REG, 8, 4, REGZERO }, 161*fbadb1c4SDavid du Colombier { AMOVBZ, C_SOREG,C_NONE, C_NONE, C_REG, 8, 4, REGZERO }, 162*fbadb1c4SDavid du Colombier { AMOVBZU, C_SOREG,C_NONE, C_NONE, C_REG, 8, 4, REGZERO }, 163*fbadb1c4SDavid du Colombier { AMOVB, C_SOREG,C_NONE, C_NONE, C_REG, 9, 8, REGZERO }, 164*fbadb1c4SDavid du Colombier { AMOVBU, C_SOREG,C_NONE, C_NONE, C_REG, 9, 8, REGZERO }, 165*fbadb1c4SDavid du Colombier 166*fbadb1c4SDavid du Colombier /* store, long offset */ 167*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_LEXT, 35, 8, REGSB }, 168*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_LEXT, 35, 8, REGSB }, 169*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_LEXT, 35, 8, REGSB }, 170*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_LEXT, 35, 8, REGSB }, 171*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_LEXT, 35, 8, REGSB }, 172*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_LAUTO, 35, 8, REGSP }, 173*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_LAUTO, 35, 8, REGSP }, 174*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_LAUTO, 35, 8, REGSP }, 175*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_LAUTO, 35, 8, REGSP }, 176*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_LAUTO, 35, 8, REGSP }, 177*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_LOREG, 35, 8, REGZERO }, 178*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_LOREG, 35, 8, REGZERO }, 179*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_LOREG, 35, 8, REGZERO }, 180*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_LOREG, 35, 8, REGZERO }, 181*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_ADDR, 74, 8, 0 }, 182*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_ADDR, 74, 8, 0 }, 183*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_ADDR, 74, 8, 0 }, 184*fbadb1c4SDavid du Colombier { AMOVBZ, C_REG, C_NONE, C_NONE, C_ADDR, 74, 8, 0 }, 185*fbadb1c4SDavid du Colombier { AMOVB, C_REG, C_NONE, C_NONE, C_ADDR, 74, 8, 0 }, 186*fbadb1c4SDavid du Colombier 187*fbadb1c4SDavid du Colombier /* load, long offset */ 188*fbadb1c4SDavid du Colombier { AMOVD, C_LEXT, C_NONE, C_NONE, C_REG, 36, 8, REGSB }, 189*fbadb1c4SDavid du Colombier { AMOVW, C_LEXT, C_NONE, C_NONE, C_REG, 36, 8, REGSB }, 190*fbadb1c4SDavid du Colombier { AMOVWZ, C_LEXT, C_NONE, C_NONE, C_REG, 36, 8, REGSB }, 191*fbadb1c4SDavid du Colombier { AMOVBZ, C_LEXT, C_NONE, C_NONE, C_REG, 36, 8, REGSB }, 192*fbadb1c4SDavid du Colombier { AMOVB, C_LEXT, C_NONE, C_NONE, C_REG, 37, 12, REGSB }, 193*fbadb1c4SDavid du Colombier { AMOVD, C_LAUTO,C_NONE, C_NONE, C_REG, 36, 8, REGSP }, 194*fbadb1c4SDavid du Colombier { AMOVW, C_LAUTO,C_NONE, C_NONE, C_REG, 36, 8, REGSP }, 195*fbadb1c4SDavid du Colombier { AMOVWZ, C_LAUTO,C_NONE, C_NONE, C_REG, 36, 8, REGSP }, 196*fbadb1c4SDavid du Colombier { AMOVBZ, C_LAUTO,C_NONE, C_NONE, C_REG, 36, 8, REGSP }, 197*fbadb1c4SDavid du Colombier { AMOVB, C_LAUTO,C_NONE, C_NONE, C_REG, 37, 12, REGSP }, 198*fbadb1c4SDavid du Colombier { AMOVD, C_LOREG,C_NONE, C_NONE, C_REG, 36, 8, REGZERO }, 199*fbadb1c4SDavid du Colombier { AMOVW, C_LOREG,C_NONE, C_NONE, C_REG, 36, 8, REGZERO }, 200*fbadb1c4SDavid du Colombier { AMOVWZ, C_LOREG,C_NONE, C_NONE, C_REG, 36, 8, REGZERO }, 201*fbadb1c4SDavid du Colombier { AMOVBZ, C_LOREG,C_NONE, C_NONE, C_REG, 36, 8, REGZERO }, 202*fbadb1c4SDavid du Colombier { AMOVB, C_LOREG,C_NONE, C_NONE, C_REG, 37, 12, REGZERO }, 203*fbadb1c4SDavid du Colombier { AMOVD, C_ADDR, C_NONE, C_NONE, C_REG, 75, 8, 0 }, 204*fbadb1c4SDavid du Colombier { AMOVW, C_ADDR, C_NONE, C_NONE, C_REG, 75, 8, 0 }, 205*fbadb1c4SDavid du Colombier { AMOVWZ, C_ADDR, C_NONE, C_NONE, C_REG, 75, 8, 0 }, 206*fbadb1c4SDavid du Colombier { AMOVBZ, C_ADDR, C_NONE, C_NONE, C_REG, 75, 8, 0 }, 207*fbadb1c4SDavid du Colombier { AMOVB, C_ADDR, C_NONE, C_NONE, C_REG, 76, 12, 0 }, 208*fbadb1c4SDavid du Colombier 209*fbadb1c4SDavid du Colombier /* load constant */ 210*fbadb1c4SDavid du Colombier { AMOVD, C_SECON,C_NONE, C_NONE, C_REG, 3, 4, REGSB }, 211*fbadb1c4SDavid du Colombier { AMOVD, C_SACON,C_NONE, C_NONE, C_REG, 3, 4, REGSP }, 212*fbadb1c4SDavid du Colombier { AMOVD, C_LECON,C_NONE, C_NONE, C_REG, 26, 8, REGSB }, 213*fbadb1c4SDavid du Colombier { AMOVD, C_LACON,C_NONE, C_NONE, C_REG, 26, 8, REGSP }, 214*fbadb1c4SDavid du Colombier { AMOVD, C_ADDCON,C_NONE, C_NONE, C_REG, 3, 4, REGZERO }, 215*fbadb1c4SDavid du Colombier { AMOVW, C_SECON,C_NONE, C_NONE, C_REG, 3, 4, REGSB }, /* TO DO: check */ 216*fbadb1c4SDavid du Colombier { AMOVW, C_SACON,C_NONE, C_NONE, C_REG, 3, 4, REGSP }, 217*fbadb1c4SDavid du Colombier { AMOVW, C_LECON,C_NONE, C_NONE, C_REG, 26, 8, REGSB }, 218*fbadb1c4SDavid du Colombier { AMOVW, C_LACON,C_NONE, C_NONE, C_REG, 26, 8, REGSP }, 219*fbadb1c4SDavid du Colombier { AMOVW, C_ADDCON,C_NONE, C_NONE, C_REG, 3, 4, REGZERO }, 220*fbadb1c4SDavid du Colombier { AMOVWZ, C_SECON,C_NONE, C_NONE, C_REG, 3, 4, REGSB }, /* TO DO: check */ 221*fbadb1c4SDavid du Colombier { AMOVWZ, C_SACON,C_NONE, C_NONE, C_REG, 3, 4, REGSP }, 222*fbadb1c4SDavid du Colombier { AMOVWZ, C_LECON,C_NONE, C_NONE, C_REG, 26, 8, REGSB }, 223*fbadb1c4SDavid du Colombier { AMOVWZ, C_LACON,C_NONE, C_NONE, C_REG, 26, 8, REGSP }, 224*fbadb1c4SDavid du Colombier { AMOVWZ, C_ADDCON,C_NONE, C_NONE, C_REG, 3, 4, REGZERO }, 225*fbadb1c4SDavid du Colombier 226*fbadb1c4SDavid du Colombier /* load unsigned/long constants (TO DO: check) */ 227*fbadb1c4SDavid du Colombier { AMOVD, C_UCON, C_NONE, C_NONE, C_REG, 3, 4, REGZERO }, 228*fbadb1c4SDavid du Colombier { AMOVD, C_LCON, C_NONE, C_NONE, C_REG, 19, 8, 0 }, 229*fbadb1c4SDavid du Colombier { AMOVW, C_UCON, C_NONE, C_NONE, C_REG, 3, 4, REGZERO }, 230*fbadb1c4SDavid du Colombier { AMOVW, C_LCON, C_NONE, C_NONE, C_REG, 19, 8, 0 }, 231*fbadb1c4SDavid du Colombier { AMOVWZ, C_UCON, C_NONE, C_NONE, C_REG, 3, 4, REGZERO }, 232*fbadb1c4SDavid du Colombier { AMOVWZ, C_LCON, C_NONE, C_NONE, C_REG, 19, 8, 0 }, 233*fbadb1c4SDavid du Colombier 234*fbadb1c4SDavid du Colombier { AMOVHBR, C_ZOREG, C_REG, C_NONE, C_REG, 45, 4, 0 }, 235*fbadb1c4SDavid du Colombier { AMOVHBR, C_ZOREG, C_NONE, C_NONE, C_REG, 45, 4, 0 }, 236*fbadb1c4SDavid du Colombier { AMOVHBR, C_REG, C_REG, C_NONE, C_ZOREG, 44, 4, 0 }, 237*fbadb1c4SDavid du Colombier { AMOVHBR, C_REG, C_NONE, C_NONE, C_ZOREG, 44, 4, 0 }, 238*fbadb1c4SDavid du Colombier 239*fbadb1c4SDavid du Colombier { ASYSCALL, C_NONE, C_NONE, C_NONE, C_NONE, 5, 4, 0 }, 240*fbadb1c4SDavid du Colombier 241*fbadb1c4SDavid du Colombier { ABEQ, C_NONE, C_NONE, C_NONE, C_SBRA, 16, 4, 0 }, 242*fbadb1c4SDavid du Colombier { ABEQ, C_CREG, C_NONE, C_NONE, C_SBRA, 16, 4, 0 }, 243*fbadb1c4SDavid du Colombier 244*fbadb1c4SDavid du Colombier { ABR, C_NONE, C_NONE, C_NONE, C_LBRA, 11, 4, 0 }, 245*fbadb1c4SDavid du Colombier 246*fbadb1c4SDavid du Colombier { ABC, C_SCON, C_REG, C_NONE, C_SBRA, 16, 4, 0 }, 247*fbadb1c4SDavid du Colombier { ABC, C_SCON, C_REG, C_NONE, C_LBRA, 17, 4, 0 }, 248*fbadb1c4SDavid du Colombier 249*fbadb1c4SDavid du Colombier { ABR, C_NONE, C_NONE, C_NONE, C_LR, 18, 4, 0 }, 250*fbadb1c4SDavid du Colombier { ABR, C_NONE, C_NONE, C_NONE, C_CTR, 18, 4, 0 }, 251*fbadb1c4SDavid du Colombier { ABR, C_NONE, C_NONE, C_NONE, C_ZOREG, 15, 8, 0 }, 252*fbadb1c4SDavid du Colombier 253*fbadb1c4SDavid du Colombier { ABC, C_NONE, C_REG, C_NONE, C_LR, 18, 4, 0 }, 254*fbadb1c4SDavid du Colombier { ABC, C_NONE, C_REG, C_NONE, C_CTR, 18, 4, 0 }, 255*fbadb1c4SDavid du Colombier { ABC, C_SCON, C_REG, C_NONE, C_LR, 18, 4, 0 }, 256*fbadb1c4SDavid du Colombier { ABC, C_SCON, C_REG, C_NONE, C_CTR, 18, 4, 0 }, 257*fbadb1c4SDavid du Colombier { ABC, C_NONE, C_NONE, C_NONE, C_ZOREG, 15, 8, 0 }, 258*fbadb1c4SDavid du Colombier 259*fbadb1c4SDavid du Colombier { AFMOVD, C_SEXT, C_NONE, C_NONE, C_FREG, 8, 4, REGSB }, 260*fbadb1c4SDavid du Colombier { AFMOVD, C_SAUTO,C_NONE, C_NONE, C_FREG, 8, 4, REGSP }, 261*fbadb1c4SDavid du Colombier { AFMOVD, C_SOREG,C_NONE, C_NONE, C_FREG, 8, 4, REGZERO }, 262*fbadb1c4SDavid du Colombier 263*fbadb1c4SDavid du Colombier { AFMOVD, C_LEXT, C_NONE, C_NONE, C_FREG, 8, 4, REGSB }, 264*fbadb1c4SDavid du Colombier { AFMOVD, C_LAUTO,C_NONE, C_NONE, C_FREG, 8, 4, REGSP }, 265*fbadb1c4SDavid du Colombier { AFMOVD, C_LOREG,C_NONE, C_NONE, C_FREG, 8, 4, REGZERO }, 266*fbadb1c4SDavid du Colombier { AFMOVD, C_ADDR, C_NONE, C_NONE, C_FREG, 75, 8, 0 }, 267*fbadb1c4SDavid du Colombier 268*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_SEXT, 7, 4, REGSB }, 269*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_SAUTO, 7, 4, REGSP }, 270*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_SOREG, 7, 4, REGZERO }, 271*fbadb1c4SDavid du Colombier 272*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_LEXT, 7, 4, REGSB }, 273*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_LAUTO, 7, 4, REGSP }, 274*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_LOREG, 7, 4, REGZERO }, 275*fbadb1c4SDavid du Colombier { AFMOVD, C_FREG, C_NONE, C_NONE, C_ADDR, 74, 8, 0 }, 276*fbadb1c4SDavid du Colombier 277*fbadb1c4SDavid du Colombier { ASYNC, C_NONE, C_NONE, C_NONE, C_NONE, 46, 4, 0 }, 278*fbadb1c4SDavid du Colombier { AWORD, C_LCON, C_NONE, C_NONE, C_NONE, 40, 4, 0 }, 279*fbadb1c4SDavid du Colombier { ADWORD, C_LCON, C_NONE, C_NONE, C_NONE, 31, 8, 0 }, 280*fbadb1c4SDavid du Colombier 281*fbadb1c4SDavid du Colombier { AADDME, C_REG, C_NONE, C_NONE, C_REG, 47, 4, 0 }, 282*fbadb1c4SDavid du Colombier 283*fbadb1c4SDavid du Colombier { AEXTSB, C_REG, C_NONE, C_NONE, C_REG, 48, 4, 0 }, 284*fbadb1c4SDavid du Colombier { AEXTSB, C_NONE, C_NONE, C_NONE, C_REG, 48, 4, 0 }, 285*fbadb1c4SDavid du Colombier 286*fbadb1c4SDavid du Colombier { ANEG, C_REG, C_NONE, C_NONE, C_REG, 47, 4, 0 }, 287*fbadb1c4SDavid du Colombier { ANEG, C_NONE, C_NONE, C_NONE, C_REG, 47, 4, 0 }, 288*fbadb1c4SDavid du Colombier 289*fbadb1c4SDavid du Colombier { AREM, C_REG, C_NONE, C_NONE, C_REG, 50, 12, 0 }, 290*fbadb1c4SDavid du Colombier { AREM, C_REG, C_REG, C_NONE, C_REG, 50, 12, 0 }, 291*fbadb1c4SDavid du Colombier { AREMD, C_REG, C_NONE, C_NONE, C_REG, 51, 12, 0 }, 292*fbadb1c4SDavid du Colombier { AREMD, C_REG, C_REG, C_NONE, C_REG, 51, 12, 0 }, 293*fbadb1c4SDavid du Colombier 294*fbadb1c4SDavid du Colombier { AMTFSB0, C_SCON, C_NONE, C_NONE, C_NONE, 52, 4, 0 }, 295*fbadb1c4SDavid du Colombier { AMOVFL, C_FPSCR, C_NONE, C_NONE, C_FREG, 53, 4, 0 }, 296*fbadb1c4SDavid du Colombier { AMOVFL, C_FREG, C_NONE, C_NONE, C_FPSCR, 64, 4, 0 }, 297*fbadb1c4SDavid du Colombier { AMOVFL, C_FREG, C_NONE, C_LCON, C_FPSCR, 64, 4, 0 }, 298*fbadb1c4SDavid du Colombier { AMOVFL, C_LCON, C_NONE, C_NONE, C_FPSCR, 65, 4, 0 }, 299*fbadb1c4SDavid du Colombier 300*fbadb1c4SDavid du Colombier { AMOVD, C_MSR, C_NONE, C_NONE, C_REG, 54, 4, 0 }, /* mfmsr */ 301*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_MSR, 54, 4, 0 }, /* mtmsrd */ 302*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_MSR, 54, 4, 0 }, /* mtmsr */ 303*fbadb1c4SDavid du Colombier 304*fbadb1c4SDavid du Colombier /* 64-bit special registers */ 305*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_SPR, 66, 4, 0 }, 306*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_LR, 66, 4, 0 }, 307*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_CTR, 66, 4, 0 }, 308*fbadb1c4SDavid du Colombier { AMOVD, C_REG, C_NONE, C_NONE, C_XER, 66, 4, 0 }, 309*fbadb1c4SDavid du Colombier { AMOVD, C_SPR, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 310*fbadb1c4SDavid du Colombier { AMOVD, C_LR, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 311*fbadb1c4SDavid du Colombier { AMOVD, C_CTR, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 312*fbadb1c4SDavid du Colombier { AMOVD, C_XER, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 313*fbadb1c4SDavid du Colombier 314*fbadb1c4SDavid du Colombier /* 32-bit special registers (gloss over sign-extension or not?) */ 315*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_SPR, 66, 4, 0 }, 316*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_CTR, 66, 4, 0 }, 317*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_XER, 66, 4, 0 }, 318*fbadb1c4SDavid du Colombier { AMOVW, C_SPR, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 319*fbadb1c4SDavid du Colombier { AMOVW, C_XER, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 320*fbadb1c4SDavid du Colombier 321*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_SPR, 66, 4, 0 }, 322*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_CTR, 66, 4, 0 }, 323*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_XER, 66, 4, 0 }, 324*fbadb1c4SDavid du Colombier { AMOVWZ, C_SPR, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 325*fbadb1c4SDavid du Colombier { AMOVWZ, C_XER, C_NONE, C_NONE, C_REG, 66, 4, 0 }, 326*fbadb1c4SDavid du Colombier 327*fbadb1c4SDavid du Colombier { AMOVFL, C_FPSCR, C_NONE, C_NONE, C_CREG, 73, 4, 0 }, 328*fbadb1c4SDavid du Colombier { AMOVFL, C_CREG, C_NONE, C_NONE, C_CREG, 67, 4, 0 }, 329*fbadb1c4SDavid du Colombier { AMOVW, C_CREG, C_NONE, C_NONE, C_REG, 68, 4, 0 }, 330*fbadb1c4SDavid du Colombier { AMOVWZ, C_CREG, C_NONE, C_NONE, C_REG, 68, 4, 0 }, 331*fbadb1c4SDavid du Colombier { AMOVFL, C_REG, C_NONE, C_LCON, C_CREG, 69, 4, 0 }, 332*fbadb1c4SDavid du Colombier { AMOVFL, C_REG, C_NONE, C_NONE, C_CREG, 69, 4, 0 }, 333*fbadb1c4SDavid du Colombier { AMOVW, C_REG, C_NONE, C_NONE, C_CREG, 69, 4, 0 }, 334*fbadb1c4SDavid du Colombier { AMOVWZ, C_REG, C_NONE, C_NONE, C_CREG, 69, 4, 0 }, 335*fbadb1c4SDavid du Colombier 336*fbadb1c4SDavid du Colombier { ACMP, C_REG, C_NONE, C_NONE, C_REG, 70, 4, 0 }, 337*fbadb1c4SDavid du Colombier { ACMP, C_REG, C_REG, C_NONE, C_REG, 70, 4, 0 }, 338*fbadb1c4SDavid du Colombier { ACMP, C_REG, C_NONE, C_NONE, C_ADDCON, 71, 4, 0 }, 339*fbadb1c4SDavid du Colombier { ACMP, C_REG, C_REG, C_NONE, C_ADDCON, 71, 4, 0 }, 340*fbadb1c4SDavid du Colombier 341*fbadb1c4SDavid du Colombier { ACMPU, C_REG, C_NONE, C_NONE, C_REG, 70, 4, 0 }, 342*fbadb1c4SDavid du Colombier { ACMPU, C_REG, C_REG, C_NONE, C_REG, 70, 4, 0 }, 343*fbadb1c4SDavid du Colombier { ACMPU, C_REG, C_NONE, C_NONE, C_ANDCON, 71, 4, 0 }, 344*fbadb1c4SDavid du Colombier { ACMPU, C_REG, C_REG, C_NONE, C_ANDCON, 71, 4, 0 }, 345*fbadb1c4SDavid du Colombier 346*fbadb1c4SDavid du Colombier { AFCMPO, C_FREG, C_NONE, C_NONE, C_FREG, 70, 4, 0 }, 347*fbadb1c4SDavid du Colombier { AFCMPO, C_FREG, C_REG, C_NONE, C_FREG, 70, 4, 0 }, 348*fbadb1c4SDavid du Colombier 349*fbadb1c4SDavid du Colombier { ATW, C_LCON, C_REG, C_NONE, C_REG, 60, 4, 0 }, 350*fbadb1c4SDavid du Colombier { ATW, C_LCON, C_REG, C_NONE, C_ADDCON, 61, 4, 0 }, 351*fbadb1c4SDavid du Colombier 352*fbadb1c4SDavid du Colombier { ADCBF, C_ZOREG, C_NONE, C_NONE, C_NONE, 43, 4, 0 }, 353*fbadb1c4SDavid du Colombier { ADCBF, C_ZOREG, C_REG, C_NONE, C_NONE, 43, 4, 0 }, 354*fbadb1c4SDavid du Colombier 355*fbadb1c4SDavid du Colombier { AECOWX, C_REG, C_REG, C_NONE, C_ZOREG, 44, 4, 0 }, 356*fbadb1c4SDavid du Colombier { AECIWX, C_ZOREG, C_REG, C_NONE, C_REG, 45, 4, 0 }, 357*fbadb1c4SDavid du Colombier { AECOWX, C_REG, C_NONE, C_NONE, C_ZOREG, 44, 4, 0 }, 358*fbadb1c4SDavid du Colombier { AECIWX, C_ZOREG, C_NONE, C_NONE, C_REG, 45, 4, 0 }, 359*fbadb1c4SDavid du Colombier 360*fbadb1c4SDavid du Colombier { AEIEIO, C_NONE, C_NONE, C_NONE, C_NONE, 46, 4, 0 }, 361*fbadb1c4SDavid du Colombier { ATLBIE, C_REG, C_NONE, C_NONE, C_NONE, 49, 4, 0 }, 362*fbadb1c4SDavid du Colombier { ATLBIE, C_SCON, C_NONE, C_NONE, C_REG, 49, 4, 0 }, 363*fbadb1c4SDavid du Colombier { ASLBMFEE, C_REG, C_NONE, C_NONE, C_REG, 55, 4, 0 }, 364*fbadb1c4SDavid du Colombier { ASLBMTE, C_REG, C_NONE, C_NONE, C_REG, 55, 4, 0 }, 365*fbadb1c4SDavid du Colombier 366*fbadb1c4SDavid du Colombier { ASTSW, C_REG, C_NONE, C_NONE, C_ZOREG, 44, 4, 0 }, 367*fbadb1c4SDavid du Colombier { ASTSW, C_REG, C_NONE, C_LCON, C_ZOREG, 41, 4, 0 }, 368*fbadb1c4SDavid du Colombier { ALSW, C_ZOREG, C_NONE, C_NONE, C_REG, 45, 4, 0 }, 369*fbadb1c4SDavid du Colombier { ALSW, C_ZOREG, C_NONE, C_LCON, C_REG, 42, 4, 0 }, 370*fbadb1c4SDavid du Colombier 371*fbadb1c4SDavid du Colombier { AXXX, C_NONE, C_NONE, C_NONE, C_NONE, 0, 4, 0 }, 372*fbadb1c4SDavid du Colombier }; 373