diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2013-12-27 23:27:51 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2013-12-27 23:27:51 -0500 |
commit | 5c48c3d3db678725f31e446e08f8e2b61aceaf92 (patch) | |
tree | 00a73d5bf9cbb89d5569a3584bce9f7b2ba083a0 /testsuite.c | |
parent | 63f98f9d96d1bda1cc87a4cf6897c50d0f6fd824 (diff) |
Add some testing of addressing modes
Diffstat (limited to 'testsuite.c')
-rw-r--r-- | testsuite.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/testsuite.c b/testsuite.c index dc69c6b..0e9d859 100644 --- a/testsuite.c +++ b/testsuite.c @@ -214,6 +214,37 @@ test_pshuflw (assembler_t *as) } static uint8_t * +test_reg_regm (assembler_t *as) +{ + fragment_t *frag = fragment_new (as); + + BEGIN_ASM (frag) + I_mov, rax, PTR (rsp), + I_mov, rax, PTR (r12), + I_mov, rax, PTR (rbp), + I_mov, rax, PTR (r13), + I_mov, rax, BASE (rsp, 10), + I_mov, rax, BASE (r12, 10), + I_mov, rax, BASE (rbp, 10), + I_mov, rax, BASE (r13, 10), + I_mov, rax, INDEX (rsp, 10, r12, 4), + I_mov, rax, INDEX (r12, 10, r12, 4), + I_mov, rax, INDEX (rbp, 10, r12, 4), + I_mov, rax, INDEX (r13, 10, r12, 4), + I_mov, rax, INDEX (rsp, 10, r12, 1), + I_mov, rax, INDEX (r12, 10, r12, 1), + I_mov, rax, INDEX (rbp, 10, r12, 1), + I_mov, rax, INDEX (r13, 10, r12, 1), + I_mov, rax, INDEX (rsp, 0, r12, 1), + I_mov, rax, INDEX (r12, 0, r12, 1), + I_mov, rax, INDEX (rbp, 0, rbp, 1), + I_mov, rax, INDEX (r13, 0, r12, 1), + END_ASM (); + + return assembler_link (as, frag, NULL); +} + +static uint8_t * test_movd (assembler_t *as) { fragment_t *frag = fragment_new (as); @@ -491,6 +522,7 @@ main () success &= run_test (as, "test_movdq", test_movdq, 0xedd4f79d); success &= run_test (as, "test_pshuflw", test_pshuflw, 0x7a8c7f59); success &= run_test (as, "test_movd", test_movd, 0xcb69ef60); + success &= run_test (as, "test_reg_regm", test_reg_regm, 0x61dd330d); if (success) printf ("Test suite PASSED\n"); |