mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-10-16 17:24:14 +00:00
Add more tests in mem,reg cases: scale factor 8, base-only (e.g. mov (%breg),%dreg). Don't test for %rip relative addressing yet, need to improve the parser first.
This commit is contained in:
parent
250366fd94
commit
382b44ffaf
@ -26,7 +26,7 @@
|
|||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* STATUS: 13M variations covering unary register based operations,
|
* STATUS: 18M variations covering unary register based operations,
|
||||||
* reg/reg operations, imm/reg operations.
|
* reg/reg operations, imm/reg operations.
|
||||||
*
|
*
|
||||||
* TODO:
|
* TODO:
|
||||||
@ -71,6 +71,7 @@ static int verbose = 2;
|
|||||||
#define X86_FLAT_REGISTERS 0
|
#define X86_FLAT_REGISTERS 0
|
||||||
#define X86_OPTIMIZE_ALU 1
|
#define X86_OPTIMIZE_ALU 1
|
||||||
#define X86_OPTIMIZE_ROTSHI 1
|
#define X86_OPTIMIZE_ROTSHI 1
|
||||||
|
#define X86_RIP_RELATIVE_ADDR 0
|
||||||
#include "compiler/codegen_x86.h"
|
#include "compiler/codegen_x86.h"
|
||||||
|
|
||||||
#define x86_emit_byte(B) emit_byte(B)
|
#define x86_emit_byte(B) emit_byte(B)
|
||||||
@ -1035,8 +1036,8 @@ int main(void)
|
|||||||
for (int I = -1; I < 16; I++) {
|
for (int I = -1; I < 16; I++) {
|
||||||
if (I == X86_RSP)
|
if (I == X86_RSP)
|
||||||
continue;
|
continue;
|
||||||
for (int S = 1; S < 8; S *= 2) {
|
for (int S = 1; S < 16; S *= 2) {
|
||||||
if (I == -1)
|
if (I == -1 && S > 1)
|
||||||
continue;
|
continue;
|
||||||
for (int r = 0; r < 16; r++) {
|
for (int r = 0; r < 16; r++) {
|
||||||
set_target(block);
|
set_target(block);
|
||||||
@ -1177,9 +1178,9 @@ int main(void)
|
|||||||
GEN("movdqa", MOVDQA);
|
GEN("movdqa", MOVDQA);
|
||||||
GEN("movdqu", MOVDQU);
|
GEN("movdqu", MOVDQU);
|
||||||
GEN("movd", MOVDXD);
|
GEN("movd", MOVDXD);
|
||||||
GEN("movd", MOVQXD); // FIXME: disass bug? movq
|
GEN("movd", MOVQXD); // FIXME: disass bug? "movq" expected
|
||||||
GEN("movd", MOVDXS);
|
GEN("movd", MOVDXS);
|
||||||
GEN("movd", MOVQXS); // FIXME: disass bug? movq
|
GEN("movd", MOVQXS); // FIXME: disass bug? "movq" expected
|
||||||
#undef GENIA
|
#undef GENIA
|
||||||
#undef GENI1
|
#undef GENI1
|
||||||
#undef GENI
|
#undef GENI
|
||||||
@ -1230,8 +1231,8 @@ int main(void)
|
|||||||
for (int I = -1; I < 16; I++) {
|
for (int I = -1; I < 16; I++) {
|
||||||
if (I == X86_RSP)
|
if (I == X86_RSP)
|
||||||
continue;
|
continue;
|
||||||
for (int S = 1; S < 8; S *= 2) {
|
for (int S = 1; S < 16; S *= 2) {
|
||||||
if (I == -1)
|
if (I == -1 && S > 1)
|
||||||
continue;
|
continue;
|
||||||
for (int r = 0; r < 16; r++) {
|
for (int r = 0; r < 16; r++) {
|
||||||
set_target(block);
|
set_target(block);
|
||||||
@ -1292,7 +1293,7 @@ int main(void)
|
|||||||
#if 0
|
#if 0
|
||||||
// FIXME: extraneous REX bits generated
|
// FIXME: extraneous REX bits generated
|
||||||
GEN("movd", MOVDXD);
|
GEN("movd", MOVDXD);
|
||||||
GEN("movd", MOVQXD); // FIXME: disass bug? movq
|
GEN("movd", MOVQXD); // FIXME: disass bug? "movq" expected
|
||||||
#endif
|
#endif
|
||||||
#undef GENIA
|
#undef GENIA
|
||||||
#undef GENI1
|
#undef GENI1
|
||||||
|
Loading…
Reference in New Issue
Block a user