| 1 | |
| 2 | /* operand format specifiers. */ |
| 3 | |
| 4 | #define TO 1 |
| 5 | #define RA 2 |
| 6 | #define SI 3 |
| 7 | #define RT 4 |
| 8 | #define UI 5 |
| 9 | #define BF 6 |
| 10 | #define BFA 7 |
| 11 | #define BT 8 |
| 12 | #define BA 9 |
| 13 | #define BB 10 |
| 14 | #define BO 11 |
| 15 | #define BI 12 |
| 16 | #define RB 13 |
| 17 | #define RS 14 |
| 18 | #define SH 15 |
| 19 | #define MB 16 |
| 20 | #define ME 17 |
| 21 | #define SPR 18 |
| 22 | #define DIS 19 |
| 23 | #define FXM 21 |
| 24 | #define FRT 22 |
| 25 | #define NB 23 |
| 26 | #define FRS 24 |
| 27 | #define FRA 25 |
| 28 | #define FRB 26 |
| 29 | #define FRC 27 |
| 30 | #define FLM 28 |
| 31 | #define I 29 |
| 32 | #define LI 30 |
| 33 | #define A2 31 |
| 34 | #define TA14 32 /* 14 bit representation of target address */ |
| 35 | #define TA24 33 /* 24 bit representation of target address */ |
| 36 | #define FL1 34 |
| 37 | #define FL2 35 |
| 38 | #define LEV 36 |
| 39 | |
| 40 | #if 0 |
| 41 | |
| 42 | RS6000 INSTRUCTION SET |
| 43 | (sorted on first primary and second extended opcode) |
| 44 | |
| 45 | oprtr primary ext. |
| 46 | operator ext format opcode opcode operand format |
| 47 | ------- ------- ------ ------- ------ --------------- |
| 48 | #endif /* 0 */ |
| 49 | |
| 50 | {"ti", 0, "d", 3, -1, {TO,RA,SI,0} }, |
| 51 | {"muli", 0, "d", 7, -1, {RT,RA,SI,0} }, |
| 52 | {"sfi", 0, "d", 8, -1, {RT,RA,SI,0} }, |
| 53 | {"dozi", 0, "d", 9, -1, {RT,RA,SI,0} }, |
| 54 | {"cmpli", 0, "d", 10, -1, {BF,RA,UI,0} }, |
| 55 | {"cmpi", 0, "d", 11, -1, {BF,RA,SI,0} }, |
| 56 | {"ai", 0, "d", 12, -1, {RT,RA,SI,0} }, |
| 57 | {"ai.", 0, "d", 13, -1, {RT,RA,SI,0} }, |
| 58 | {"lil", 0, "d", 14, -1, {RT,SI,0} }, /* same as `cal' */ |
| 59 | {"cal", 0, "d", 14, -1, {RT,DIS,RA,0} }, |
| 60 | {"liu", 0, "d", 15, -1, {RT, UI,0} }, /* same as `cau' */ |
| 61 | {"cau", 0, "d", 15, -1, {RT,RA,UI,0} }, |
| 62 | {"bb", "1tfl", "b", 16, -1, {LI,A2,0} }, |
| 63 | /* ^^^^^ |
| 64 | exception #1. Either fix this, or document what you are doing here. FIXMEmgo. |
| 65 | */ |
| 66 | {"bc", "la", "b", 16, -1, {BO,BI,TA14,0} }, |
| 67 | {"svc", "la", "sc", 17, -1, {LEV,FL1,FL2,0} }, |
| 68 | {"b", "la", "i", 18, -1, {TA24,0} }, |
| 69 | {"mcrf", 0, "xl", 19, 0, {BF,BFA,0} }, |
| 70 | {"bcr", "l", "xl", 19, 16, {BO,BI,0} }, |
| 71 | {"cror", 0, "xl", 19, 33, {BT,BA,BB,0} }, |
| 72 | {"crandc", 0, "xl", 19, 129, {BT,BA,BB,0} }, |
| 73 | {"bcc", "l", "xl", 19, 193, {BO,BI,0} }, |
| 74 | {"crnor", 0, "xl", 19, 225, {BT,BA,BB,0} }, |
| 75 | {"crand", 0, "xl", 19, 257, {BT,BA,BB,0} }, |
| 76 | {"creqv", 0, "xl", 19, 289, {BT,BA,BB,0} }, |
| 77 | {"crnand", 0, "xl", 19, 289, {BT,BA,BB,0} }, |
| 78 | {"crxor", 0, "xl", 19, 417, {BT,BA,BB,0} }, |
| 79 | {"crorc", 0, "xl", 19, 449, {BT,BA,BB,0} }, |
| 80 | {"bcr", "l", "xl", 19, 528, {BO,BI,0} }, |
| 81 | {"rlimi", ".", "m", 20, -1, {RA,RS,SH,MB,ME,0} /*??*/}, |
| 82 | {"rlinm", ".", "m", 21, -1, {RA,RS,SH,MB,ME,0} /*??*/}, |
| 83 | {"rlmi", ".", "m", 22, -1, {RA,RS,RB,MB,ME,0} /*??*/}, |
| 84 | {"rlnm", ".", "m", 23, -1, {RA,RS,RB,MB,ME,0} /*??*/}, |
| 85 | {"oril", 0, "d", 24, -1, {RA,RS,UI,0} }, |
| 86 | {"oriu", 0, "d", 25, -1, {RA,RS,UI,0} }, |
| 87 | {"xoril", 0, "d", 26, -1, {RA,RS,UI,0} }, |
| 88 | {"xoriu", 0, "d", 27, -1, {RA,RS,UI,0} }, |
| 89 | {"andil.", 0, "d", 28, -1, {RA,RS,UI,0} }, |
| 90 | {"andiu.", 0, "d", 29, -1, {RA,RS,UI,0} }, |
| 91 | {"cmp", 0, "x", 31, 0, {BF,RA,RB,0} }, |
| 92 | {"t", 0, "x", 31, 4, {TO,RA,RB,0} }, |
| 93 | {"sf", "o.", "xo", 31, 8, {RT,RA,RB,0} }, |
| 94 | {"a", "o.", "xo", 31, 10, {RT,RA,RB,0} }, |
| 95 | {"mfcr", 0, "x", 31, 19, {RT,0} }, |
| 96 | {"lx", 0, "x", 31, 23, {RT,RA,RB,0} }, |
| 97 | {"sl", ".", "x", 31, 24, {RA,RS,RB,0} }, |
| 98 | {"cntlz", ".", "xo", 31, 26, {RA,RS,0} }, |
| 99 | {"and", ".", "x", 31, 28, {RA,RS,RB,0} }, |
| 100 | {"maskg", ".", "x", 31, 29, {RA,RS,RB,0} }, |
| 101 | {"cmpl", 0, "x", 31, 32, {BF,RA,RB,0} }, |
| 102 | {"sfe", "o.", "xo", 31, 36, {RT,RA,RB,0} }, |
| 103 | {"lux", 0, "x", 31, 55, {RT,RA,RB,0} }, |
| 104 | {"andc", ".", "x", 31, 60, {RA,RS,RB,0} }, |
| 105 | {"mfmsr", 0, "x", 31, 83, {RT,0} }, |
| 106 | {"lbzx", 0, "x", 31, 87, {RT,RA,RB,0} }, |
| 107 | {"neg", "o.", "xo", 31, 104, {RT,RA,0} }, |
| 108 | {"mul", "o.", "xo", 31, 107, {RT,RA,RB,0} }, |
| 109 | {"lbzux", 0, "x", 31, 119, {RT,RA,RB,0} }, |
| 110 | {"nor", ".", "x", 31, 124, {RA,RS,RB,0} }, |
| 111 | {"ae", "o.", "xo", 31, 138, {RT,RA,RB,0} }, |
| 112 | {"mtcrf", 0, "xfx", 31, 144, {FXM,RS,0} }, |
| 113 | {"stx", 0, "x", 31, 151, {RS,RA,RB,0} }, |
| 114 | {"slq", ".", "x", 31, 152, {RA,RS,RB,0} }, |
| 115 | {"sle", ".", "x", 31, 153, {RA,RS,RB,0} }, |
| 116 | {"stux", 0, "x", 31, 183, {RS,RA,RB,0} }, |
| 117 | {"sliq", ".", "x", 31, 184, {RA,RS,SH,0} }, |
| 118 | {"sfze", "o.", "xo", 31, 200, {RT,RA,0} }, |
| 119 | {"aze", "o.", "xo", 31, 202, {RT,RA,0} }, |
| 120 | {"stbx", 0, "x", 31, 215, {RS,RA,RB,0} }, |
| 121 | {"sllq", ".", "x", 31, 216, {RA,RS,RB,0} }, |
| 122 | {"sleq", ".", "x", 31, 217, {RA,RS,RB,0} }, |
| 123 | {"sfme", "o.", "xo", 31, 232, {RT,RA,0} }, |
| 124 | {"ame", "o.", "xo", 31, 234, {RT,RA,0} }, |
| 125 | {"muls", "o.", "xo", 31, 235, {RT,RA,RB,0} }, |
| 126 | {"stbux", 0, "x", 31, 247, {RS,RA,RB,0} }, |
| 127 | {"slliq", ".", "x", 31, 248, {RA,RS,SH,0} }, |
| 128 | {"doz", "o.", "x", 31, 264, {RT,RA,RB,0} }, |
| 129 | {"cax", "o.", "xo", 31, 266, {RT,RA,RB,0} }, |
| 130 | {"lscbx", ".", "x", 31, 277, {RT,RA,RB,0} }, |
| 131 | {"lhzx", 0, "x", 31, 279, {RT,RA,RB,0} }, |
| 132 | {"eqv", ".", "x", 31, 284, {RA,RS,RB,0} }, |
| 133 | {"lhzux", 0, "x", 31, 311, {RT,RA,RB,0} }, |
| 134 | {"xor", ".", "x", 31, 316, {RA,RS,RB,0} }, |
| 135 | {"div", "o.", "xo", 31, 331, {RT,RA,RB,0} }, |
| 136 | {"mfspr", 0, "x", 31, 339, {RT,SPR,0} }, |
| 137 | {"lhax", 0, "x", 31, 343, {RT,RA,RB,0} }, |
| 138 | {"abs", "o.", "xo", 31, 360, {RT,RA,0} }, |
| 139 | {"divs", "o.", "xo", 31, 363, {RT,RA,RB,0} }, |
| 140 | {"lhaux", 0, "x", 31, 375, {RT,RA,RB,0} }, |
| 141 | {"sthx", 0, "x", 31, 407, {RS,RA,RB,0} }, |
| 142 | {"orc", ".", "x", 31, 412, {RA,RS,RB,0} }, |
| 143 | {"sthux", 0, "x", 31, 439, {RS,RA,RB,0} }, |
| 144 | {"or", ".", "x", 31, 444, {RA,RS,RB,0} }, |
| 145 | {"mtspr", 0, "x", 31, 467, {SPR,RS,0} }, |
| 146 | {"nand", ".", "x", 31, 476, {RA,RS,RB,0} }, |
| 147 | {"nabs", "o.", "xo", 31, 488, {RT,RA,0} }, |
| 148 | {"mcrxr", 0, "x", 31, 512, {BF,0} }, |
| 149 | {"lsx", 0, "x", 31, 533, {RT,RA,RB,0} }, |
| 150 | {"lbrx", 0, "x", 31, 534, {RT,RA,RB,0} }, |
| 151 | {"lfsx", 0, "x", 31, 535, {FRT,RA,RB,0} }, |
| 152 | {"sr", ".", "x", 31, 536, {RA,RS,RB,0} }, |
| 153 | {"rrib", ".", "x", 31, 537, {RA,RS,RB,0} }, |
| 154 | {"maskir", ".", "x", 31, 541, {RA,RS,RB,0} }, |
| 155 | {"lfsux", 0, "x", 31, 567, {FRT,RA,RB,0} }, |
| 156 | {"lsi", 0, "x", 31, 597, {RT,RA,NB,0} }, |
| 157 | {"lfdx", 0, "x", 31, 599, {FRT,RA,RB,0} }, |
| 158 | {"lfdux", 0, "x", 31, 631, {FRT,RA,RB,0} }, |
| 159 | {"stsx", 0, "x", 31, 661, {RS,RA,RB,0} }, |
| 160 | {"stbrx", 0, "x", 31, 662, {RA,RA,RB,0} }, |
| 161 | {"stfsx", 0, "x", 31, 663, {FRS,RA,RB,0} }, |
| 162 | {"srq", ".", "x", 31, 664, {RA,RS,RB,0} }, |
| 163 | {"sre", ".", "x", 31, 665, {RA,RS,RB,0} }, |
| 164 | {"stfsux", 0, "x", 31, 695, {FRS,RA,RB,0} }, |
| 165 | {"sriq", ".", "x", 31, 696, {RA,RS,SH,0} }, |
| 166 | {"stsi", 0, "x", 31, 725, {RS,RA,NB,0} }, |
| 167 | {"stfdx", 0, "x", 31, 727, {FRS,RA,RB,0} }, |
| 168 | {"srlq", ".", "x", 31, 728, {RA,RS,RB,0} }, |
| 169 | {"sreq", ".", "x", 31, 729, {RA,RS,RB,0} }, |
| 170 | {"stfdux", 0, "x", 31, 759, {FRS,RA,RB,0} }, |
| 171 | {"srliq", ".", "x", 31, 760, {RA,RS,SH,0} }, |
| 172 | {"lhbrx", 0, "x", 31, 790, {RT,RA,RB,0} }, |
| 173 | {"sra", ".", "x", 31, 792, {RA,RS,RB,0} }, |
| 174 | {"srai", ".", "x", 31, 824, {RA,RS,SH,0} }, |
| 175 | {"sthbrx", 0, "x", 31, 918, {RS,RA,RB,0} }, |
| 176 | {"sraq", ".", "x", 31, 920, {RA,RS,RB,0} }, |
| 177 | {"srea", ".", "x", 31, 921, {RA,RS,RB,0} }, |
| 178 | {"exts", ".", "x", 31, 922, {RA,RS,0} }, |
| 179 | {"sraiq", ".", "x", 31, 952, {RA,RS,SH,0} }, |
| 180 | {"l", 0, "d", 32, -1, {RT,DIS,RA,0} }, |
| 181 | {"lu", 0, "d", 33, -1, {RT,DIS,RA,0} }, |
| 182 | {"lbz", 0, "d", 34, -1, {RT,DIS,RA,0} }, |
| 183 | {"lbzu", 0, "d", 35, -1, {RT,DIS,RA,0} }, |
| 184 | {"st", 0, "d", 36, -1, {RS,DIS,RA,0} }, |
| 185 | {"stu", 0, "d", 37, -1, {RS,DIS,RA,0} }, |
| 186 | {"stb", 0, "d", 38, -1, {RS,DIS,RA,0} }, |
| 187 | {"stbu", 0, "d", 39, -1, {RS,DIS,RA,0} }, |
| 188 | {"lhz", 0, "d", 40, -1, {RT,DIS,RA,0} }, |
| 189 | {"lhzu", 0, "d", 41, -1, {RT,DIS,RA,0} }, |
| 190 | {"lha", 0, "d", 42, -1, {RT,DIS,RA,0} }, |
| 191 | {"lhau", 0, "d", 43, -1, {RT,DIS,RA,0} }, |
| 192 | {"sth", 0, "d", 44, -1, {RS,DIS,RA,0} }, |
| 193 | {"sthu", 0, "d", 45, -1, {RS,DIS,RA,0} }, |
| 194 | {"lm", 0, "d", 46, -1, {RT,DIS,RA,0} }, |
| 195 | {"stm", 0, "d", 47, -1, {RS,DIS,RA,0} }, |
| 196 | {"lfs", 0, "d", 48, -1, {FRT,DIS,RA,0} }, |
| 197 | {"lfsu", 0, "d", 49, -1, {FRT,DIS,RA,0} }, |
| 198 | {"lfd", 0, "d", 50, -1, {FRT,DIS,RA,0} }, |
| 199 | {"lfdu", 0, "d", 51, -1, {FRT,DIS,RA,0} }, |
| 200 | {"stfs", 0, "d", 52, -1, {FRS,DIS,RA,0} }, |
| 201 | {"stfsu", 0, "d", 53, -1, {FRS,DIS,RA,0} }, |
| 202 | {"stfd", 0, "d", 54, -1, {FRS,DIS,RA,0} }, |
| 203 | {"stfdu", 0, "d", 55, -1, {FRS,DIS,RA,0} }, |
| 204 | {"fcmpu", 0, "x", 63, 0, {BF,FRA,FRB,0} }, |
| 205 | {"fm", ".", "a", 63, 5, {FRT,FRA,FRC,0} }, |
| 206 | {"fd", ".", "a", 63, 8, {FRT,FRA,FRB,0} }, |
| 207 | {"frsp", ".", "x", 63, 12, {FRT,FRB,0} }, |
| 208 | {"fs", ".", "a", 63, 20, {FRT,FRA,FRB,0} }, |
| 209 | {"fa", ".", "a", 63, 21, {FRT,FRA,FRB,0} }, |
| 210 | {"fms", ".", "a", 63, 28, {FRT,FRA,FRC,FRB,0} }, |
| 211 | {"fma", ".", "a", 63, 29, {FRT,FRA,FRC,FRB,0} }, |
| 212 | {"fnms", ".", "a", 63, 30, {FRT,FRA,FRC,FRB,0} }, |
| 213 | {"fnma", ".", "a", 63, 31, {FRT,FRA,FRC,FRB,0} }, |
| 214 | {"fcmpo", 0, "x", 63, 32, {BF,FRA,FRB,0} }, |
| 215 | {"mtfsb1", ".", "x", 63, 38, {BT,0} }, |
| 216 | {"fneg", ".", "x", 63, 40, {FRT,FRB,0} }, |
| 217 | {"mcrfs", 0, "x", 63, 64, {BF,BFA,0} }, |
| 218 | {"mtfsb0", ".", "x", 63, 70, {BT,0} }, |
| 219 | {"fmr", ".", "x", 63, 72, {FRT,FRB,0} }, |
| 220 | {"mtfsfi", ".", "x", 63, 134, {BF,I,0} }, |
| 221 | {"fnabs", ".", "x", 63, 136, {FRT,FRB,0} }, |
| 222 | {"fabs", ".", "x", 63, 264, {FRT,FRB,0} }, |
| 223 | {"mffs", ".", "x", 63, 583, {FRT,0} }, |
| 224 | {"mtfsf", ".", "xfl", 63, 711, {FLM,FRB,0} }, |