| 6151 | void OPCALL idiv16_mem16(struct CPU* cpu, struct Op* op); |
| 6152 | void OPCALL idiv16_mem32(struct CPU* cpu, struct Op* op); |
| 6153 | void gen0f7(struct GenData* data, struct Op* op) { |
| 6154 | char d[16]; |
| 6155 | |
| 6156 | itoa(op->data1, d, 16); |
| 6157 | |
| 6158 | if (op->func == test16_reg) { |
| 6159 | if (inlineTestJump(data, op, sFLAGS_TEST16, "1")) |
| 6160 | return; |
| 6161 | out(data, "cpu->dst.u16 = "); |
| 6162 | out(data, r16(op->r1)); |
| 6163 | out(data, "; cpu->src.u16 = 0x"); |
| 6164 | out(data, d); |
| 6165 | out(data, "; cpu->result.u16 = cpu->dst.u16 & cpu->src.u16; cpu->lazyFlags = FLAGS_TEST16; CYCLES(1);"); |
| 6166 | data->lazyFlags = sFLAGS_TEST16; |
| 6167 | } else if (op->func == test16_mem16) { |
| 6168 | if (inlineTestJump(data, op, sFLAGS_TEST16, "2")) |
| 6169 | return; |
| 6170 | out(data, "cpu->dst.u16 = readw(cpu->thread, "); |
| 6171 | out(data, getEaa16(op)); |
| 6172 | out(data, "); cpu->src.u16 = 0x"); |
| 6173 | out(data, d); |
| 6174 | out(data, "; cpu->result.u16 = cpu->dst.u16 & cpu->src.u16; cpu->lazyFlags = FLAGS_TEST16; CYCLES(2);"); |
| 6175 | data->lazyFlags = sFLAGS_TEST16; |
| 6176 | } else if (op->func == test16_mem32) { |
| 6177 | if (inlineTestJump(data, op, sFLAGS_TEST16, "2")) |
| 6178 | return; |
| 6179 | out(data, "cpu->dst.u16 = readw(cpu->thread, "); |
| 6180 | out(data, getEaa32(op)); |
| 6181 | out(data, "); cpu->src.u16 = 0x"); |
| 6182 | out(data, d); |
| 6183 | out(data, "; cpu->result.u16 = cpu->dst.u16 & cpu->src.u16; cpu->lazyFlags = FLAGS_TEST16; CYCLES(2);"); |
| 6184 | data->lazyFlags = sFLAGS_TEST16; |
| 6185 | } else if (op->func == not16_reg) { |
| 6186 | out(data, r16(op->r1)); |
| 6187 | out(data, " = ~ "); |
| 6188 | out(data, r16(op->r1)); |
| 6189 | out(data, "; CYCLES(1);"); |
| 6190 | } else if (op->func == not16_mem16) { |
| 6191 | out(data, "eaa = "); |
| 6192 | out(data, getEaa16(op)); |
| 6193 | out(data, "; writew(cpu->thread, eaa, ~readw(cpu->thread, eaa)); CYCLES(3);"); |
| 6194 | } else if (op->func == not16_mem32) { |
| 6195 | out(data, "eaa = "); |
| 6196 | out(data, getEaa32(op)); |
| 6197 | out(data, "; writew(cpu->thread, eaa, ~readw(cpu->thread, eaa)); CYCLES(3);"); |
| 6198 | } else if (op->func == neg16_reg) { |
| 6199 | out(data, "cpu->dst.u16 = "); |
| 6200 | out(data, r16(op->r1)); |
| 6201 | out(data, "; cpu->result.u16 = 0-cpu->dst.u16; "); |
| 6202 | out(data, r16(op->r1)); |
| 6203 | out(data, " = cpu->result.u16; cpu->lazyFlags = FLAGS_NEG16; CYCLES(1);"); |
| 6204 | data->lazyFlags = sFLAGS_NEG16; |
| 6205 | } else if (op->func == neg16_mem16) { |
| 6206 | out(data, "eaa = "); |
| 6207 | out(data, getEaa16(op)); |
| 6208 | out(data, "; cpu->dst.u16 = readw(cpu->thread, eaa); cpu->result.u16 = 0-cpu->dst.u16; writew(cpu->thread, eaa, cpu->result.u16); cpu->lazyFlags = FLAGS_NEG16; CYCLES(3);"); |
| 6209 | data->lazyFlags = sFLAGS_NEG16; |
| 6210 | } else if (op->func == neg16_mem32) { |