MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / gen2f7

Function gen2f7

source/emulation/cpu/srcgen.cpp:6304–6461  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6302void OPCALL imul32_mem16_noflags(struct CPU* cpu, struct Op* op);
6303void OPCALL imul32_mem32_noflags(struct CPU* cpu, struct Op* op);
6304void 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);");

Callers

nothing calls this directly

Calls 6

inlineTestJumpFunction · 0.85
r32Function · 0.85
getEaa16Function · 0.85
getEaa32Function · 0.85
kpanicFunction · 0.85
outFunction · 0.70

Tested by

no test coverage detected