* [PATCH] emulator: simple ALU tests
@ 2013-01-04 14:17 Avi Kivity
2013-01-09 20:32 ` Marcelo Tosatti
0 siblings, 1 reply; 2+ messages in thread
From: Avi Kivity @ 2013-01-04 14:17 UTC (permalink / raw)
To: Marcelo Tosatti, Gleb Natapov; +Cc: kvm
Signed-off-by: Avi Kivity <avi.kivity@gmail.com>
---
x86/emulator.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/x86/emulator.c b/x86/emulator.c
index c39027a..a128e13 100644
--- a/x86/emulator.c
+++ b/x86/emulator.c
@@ -863,6 +863,31 @@ static void test_ltr(volatile uint16_t *mem)
report("ltr", str() == tr && (*trp & busy_mask));
}
+static void test_simplealu(u32 *mem)
+{
+ *mem = 0x1234;
+ asm("or %1, %0" : "+m"(*mem) : "r"(0x8001));
+ report("or", *mem == 0x9235);
+ asm("add %1, %0" : "+m"(*mem) : "r"(2));
+ report("add", *mem == 0x9237);
+ asm("xor %1, %0" : "+m"(*mem) : "r"(0x1111));
+ report("xor", *mem == 0x8326);
+ asm("sub %1, %0" : "+m"(*mem) : "r"(0x26));
+ report("sub", *mem == 0x8300);
+ asm("clc; adc %1, %0" : "+m"(*mem) : "r"(0x100));
+ report("adc(0)", *mem == 0x8400);
+ asm("stc; adc %1, %0" : "+m"(*mem) : "r"(0x100));
+ report("adc(0)", *mem == 0x8501);
+ asm("clc; sbb %1, %0" : "+m"(*mem) : "r"(0));
+ report("sbb(0)", *mem == 0x8501);
+ asm("stc; sbb %1, %0" : "+m"(*mem) : "r"(0));
+ report("sbb(1)", *mem == 0x8500);
+ asm("and %1, %0" : "+m"(*mem) : "r"(0xfe77));
+ report("and", *mem == 0x8400);
+ asm("test %1, %0" : "+m"(*mem) : "r"(0xf000));
+ report("test", *mem == 0x8400);
+}
+
int main()
{
void *mem;
@@ -889,6 +914,7 @@ int main()
: "memory");
report("mov reg, r/m (1)", t2 == 0x123456789abcdef);
+ test_simplealu(mem);
test_cmps(mem);
test_scas(mem);
--
1.8.0.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-01-10 13:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-04 14:17 [PATCH] emulator: simple ALU tests Avi Kivity
2013-01-09 20:32 ` Marcelo Tosatti
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox