Lines Matching refs:ins
103 uint32_t ins = *pc++;
105 if ((ins & 0xFC000003) == 0x48000000) /* b instruction */
107 pc += ((((int32_t) ins & 0x3FFFFFC) ^ 0x2000000) - 0x2000004) / 4;
110 if ((ins & 0xFC600000) == 0x2C000000) /* cmpwi */
112 int32_t val1 = (int16_t) ins;
113 int32_t val2 = gprs[ins >> 16 & 0x1F];
116 uint32_t mask = 0xF << ((ins >> 21 & 0x1C) ^ 0x1C);
123 if ((ins & 0xFEC38003) == 0x40820000) /* forwards beq/bne */
125 if ((cr >> ((ins >> 16 & 0x1F) ^ 0x1F) & 1) == (ins >> 24 & 1))
126 pc += (ins & 0x7FFC) / 4 - 1;
129 if ((ins & 0xFC0007FF) == 0x7C000378) /* or, including mr */
131 gprs [ins >> 16 & 0x1F] = (gprs [ins >> 11 & 0x1F]
132 | gprs [ins >> 21 & 0x1F]);
135 if (ins >> 26 == 0x0E) /* addi, including li */
137 reg_unit src = (ins >> 16 & 0x1F) == 0 ? 0 : gprs [ins >> 16 & 0x1F];
138 gprs [ins >> 21 & 0x1F] = src + (int16_t) ins;
141 if (ins >> 26 == 0x0F) /* addis, including lis */
143 reg_unit src = (ins >> 16 & 0x1F) == 0 ? 0 : gprs [ins >> 16 & 0x1F];
144 gprs [ins >> 21 & 0x1F] = src + ((int16_t) ins << 16);
147 if (ins >> 26 == 0x20) /* lwz */
149 reg_unit src = (ins >> 16 & 0x1F) == 0 ? 0 : gprs [ins >> 16 & 0x1F];
150 uint32_t *p = (uint32_t *)(src + (int16_t) ins);
153 gprs [ins >> 21 & 0x1F] = *p;
156 if (ins >> 26 == 0x21) /* lwzu */
158 uint32_t *p = (uint32_t *)(gprs [ins >> 16 & 0x1F] += (int16_t) ins);
161 gprs [ins >> 21 & 0x1F] = *p;
164 if (ins >> 26 == 0x24) /* stw */
169 reg_unit src = (ins >> 16 & 0x1F) == 0 ? 0 : gprs [ins >> 16 & 0x1F];
170 uint32_t *p = (uint32_t *)(src + (int16_t) ins);
176 if (ins >> 26 == 0x2E) /* lmw */
178 reg_unit src = (ins >> 16 & 0x1F) == 0 ? 0 : gprs [ins >> 16 & 0x1F];
179 uint32_t *p = (uint32_t *)(src + (int16_t) ins);
182 for (i = (ins >> 21 & 0x1F); i < 32; i++)
190 if ((ins & 0xFC1FFFFF) == 0x7c0803a6) /* mtlr */
192 lr = gprs [ins >> 21 & 0x1F];
195 if ((ins & 0xFC1FFFFF) == 0x7c0802a6) /* mflr */
197 gprs [ins >> 21 & 0x1F] = lr;
200 if ((ins & 0xFC1FFFFF) == 0x7c0903a6) /* mtctr */
202 ctr = gprs [ins >> 21 & 0x1F];
208 if ((ins & 0xFC000FFF) == 0x7c000120) /* mtcrf */
213 mask |= ((-(ins >> (12 + i) & 1)) & 0xF) << 4 * i;
214 cr = (cr & ~mask) | (gprs [ins >> 21 & 0x1F] & mask);
217 if (ins == 0x429f0005) /* bcl- 20,4*cr7+so,.+4, loads pc into LR */
222 if (ins == 0x4e800420) /* bctr */
227 if (ins == 0x44000002) /* sc */