| 579 | } |
| 580 | |
| 581 | void F32ComBase(int op, int group, float x, float y, int r, int popCount) { |
| 582 | newInstruction(0); |
| 583 | fpu_init(); |
| 584 | |
| 585 | fldf32(x, 1); |
| 586 | writeF(y, 2); |
| 587 | |
| 588 | if (op > 0xFF) |
| 589 | pushCode8(0x0F); |
| 590 | pushCode8(op & 0xFF); |
| 591 | |
| 592 | pushCode8(rm(true, group, cpu->big ? 5 : 6)); |
| 593 | if (cpu->big) |
| 594 | pushCode32(4 * 2); |
| 595 | else |
| 596 | pushCode16(4 * 2); |
| 597 | writeFPUStatusToAX(); |
| 598 | runTestCPU(); |
| 599 | assertTest(r); |
| 600 | assertTrue(getFPUStackPosFromAX() == ((7 + popCount) & 7)); |
| 601 | |
| 602 | newInstruction(0); |
| 603 | fpu_init(); |
| 604 | |
| 605 | fldf32(y, 1); |
| 606 | fldf32(x, 2); |
| 607 | if (op > 0xFF) |
| 608 | pushCode8(0x0F); |
| 609 | pushCode8(op & 0xFF); |
| 610 | pushCode8(rm(false, group, 1)); |
| 611 | writeFPUStatusToAX(); |
| 612 | runTestCPU(); |
| 613 | assertTest(r); |
| 614 | assertTrue(getFPUStackPosFromAX() == ((6 + popCount) & 7)); |
| 615 | } |
| 616 | void F32Com(float x, float y, int r) { |
| 617 | F32ComBase(0xd8, 2, x, y, r, 0); |
| 618 | } |
no test coverage detected