| 6302 | void OPCALL imul32_mem16_noflags(struct CPU* cpu, struct Op* op); |
| 6303 | void OPCALL imul32_mem32_noflags(struct CPU* cpu, struct Op* op); |
| 6304 | void gen2f7(struct GenData* data, struct Op* op) { |
| 6305 | char d[16]; |
| 6306 | |
| 6307 | itoa(op->data1, d, 16); |
| 6308 | |
| 6309 | if (op->func == test32_reg) { |
| 6310 | if (inlineTestJump(data, op, sFLAGS_TEST32, "1")) |
| 6311 | return; |
| 6312 | out(data, "cpu->dst.u32 = "); |
| 6313 | out(data, r32(op->r1)); |
| 6314 | out(data, "; cpu->src.u32 = 0x"); |
| 6315 | out(data, d); |
| 6316 | out(data, "; cpu->result.u32 = cpu->dst.u32 & cpu->src.u32; cpu->lazyFlags = FLAGS_TEST32; CYCLES(1);"); |
| 6317 | data->lazyFlags = sFLAGS_TEST32; |
| 6318 | } else if (op->func == test32_mem16) { |
| 6319 | if (inlineTestJump(data, op, sFLAGS_TEST32, "2")) |
| 6320 | return; |
| 6321 | out(data, "cpu->dst.u32 = readd(cpu->thread, "); |
| 6322 | out(data, getEaa16(op)); |
| 6323 | out(data, "); cpu->src.u32 = 0x"); |
| 6324 | out(data, d); |
| 6325 | out(data, "; cpu->result.u32 = cpu->dst.u32 & cpu->src.u32; cpu->lazyFlags = FLAGS_TEST32; CYCLES(2);"); |
| 6326 | data->lazyFlags = sFLAGS_TEST32; |
| 6327 | } else if (op->func == test32_mem32) { |
| 6328 | if (inlineTestJump(data, op, sFLAGS_TEST32, "2")) |
| 6329 | return; |
| 6330 | out(data, "cpu->dst.u32 = readd(cpu->thread, "); |
| 6331 | out(data, getEaa32(op)); |
| 6332 | out(data, "); cpu->src.u32 = 0x"); |
| 6333 | out(data, d); |
| 6334 | out(data, "; cpu->result.u32 = cpu->dst.u32 & cpu->src.u32; cpu->lazyFlags = FLAGS_TEST32; CYCLES(2);"); |
| 6335 | data->lazyFlags = sFLAGS_TEST32; |
| 6336 | } else if (op->func == not32_reg) { |
| 6337 | out(data, r32(op->r1)); |
| 6338 | out(data, " = ~ "); |
| 6339 | out(data, r32(op->r1)); |
| 6340 | out(data, "; CYCLES(1);"); |
| 6341 | } else if (op->func == not32_mem16) { |
| 6342 | out(data, "eaa = "); |
| 6343 | out(data, getEaa16(op)); |
| 6344 | out(data, "; writed(cpu->thread, eaa, ~readd(cpu->thread, eaa)); CYCLES(3);"); |
| 6345 | } else if (op->func == not32_mem32) { |
| 6346 | out(data, "eaa = "); |
| 6347 | out(data, getEaa32(op)); |
| 6348 | out(data, "; writed(cpu->thread, eaa, ~readd(cpu->thread, eaa)); CYCLES(3);"); |
| 6349 | } else if (op->func == neg32_reg) { |
| 6350 | out(data, "cpu->dst.u32 = "); |
| 6351 | out(data, r32(op->r1)); |
| 6352 | out(data, "; cpu->result.u32 = 0-cpu->dst.u32; "); |
| 6353 | out(data, r32(op->r1)); |
| 6354 | out(data, " = cpu->result.u32; cpu->lazyFlags = FLAGS_NEG32; CYCLES(1);"); |
| 6355 | data->lazyFlags = sFLAGS_NEG32; |
| 6356 | } else if (op->func == neg32_reg_noflags) { |
| 6357 | out(data, "cpu->dst.u32 = "); |
| 6358 | out(data, r32(op->r1)); |
| 6359 | out(data, " = 0 - "); |
| 6360 | out(data, r32(op->r1)); |
| 6361 | out(data, "; CYCLES(1);"); |