summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2013-12-27 23:27:51 -0500
committerSøren Sandmann Pedersen <ssp@redhat.com>2013-12-27 23:27:51 -0500
commit5c48c3d3db678725f31e446e08f8e2b61aceaf92 (patch)
tree00a73d5bf9cbb89d5569a3584bce9f7b2ba083a0
parent63f98f9d96d1bda1cc87a4cf6897c50d0f6fd824 (diff)
Add some testing of addressing modes
-rw-r--r--testsuite.c32
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");