aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/apx.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/apx.cpp b/test/apx.cpp
index 7d62721..19c6694 100644
--- a/test/apx.cpp
+++ b/test/apx.cpp
@@ -762,6 +762,48 @@ CYBOZU_TEST_AUTO(div)
idiv(dword [r20+r30*1]);
idiv(qword [r20+r30*1]);
+ imul(r20b);
+ imul(r20d);
+ imul(r20w);
+ imul(r20);
+ imul(r20|T_nf);
+ imul(eax|T_nf);
+ imul(byte [r20+r30*1]);
+ imul(word [r20+r30*1]);
+ imul(dword [r20+r30*1]);
+ imul(qword [r20+r30*1]);
+
+ mul(r20b);
+ mul(r20d);
+ mul(r20w);
+ mul(r20);
+ mul(r20|T_nf);
+ mul(eax|T_nf);
+ mul(byte [r20+r30*1]);
+ mul(word [r20+r30*1]);
+ mul(dword [r20+r30*1]);
+ mul(qword [r20+r30*1]);
+
+ neg(r20b);
+ neg(r20d);
+ neg(r20w);
+ neg(r20);
+ neg(r20|T_nf);
+ neg(eax|T_nf);
+ neg(byte [r20+r30*1]);
+ neg(word [r20+r30*1]);
+ neg(dword [r20+r30*1]);
+ neg(qword [r20+r30*1]);
+
+ // not_ does not have NF=1
+ not_(r20b);
+ not_(r20d);
+ not_(r20w);
+ not_(r20);
+ not_(byte [r20+r30*1]);
+ not_(word [r20+r30*1]);
+ not_(dword [r20+r30*1]);
+ not_(qword [r20+r30*1]);
}
} c;
const uint8_t tbl[] = {
@@ -781,6 +823,22 @@ CYBOZU_TEST_AUTO(div)
0x7c, 0x0c, 0xf7, 0xf8, 0x62, 0xbc, 0x78, 0x08, 0xf6, 0x3c, 0x34, 0x62, 0xbc, 0x79, 0x08, 0xf7,
0x3c, 0x34, 0x62, 0xbc, 0x78, 0x08, 0xf7, 0x3c, 0x34, 0x62, 0xbc, 0xf8, 0x08, 0xf7, 0x3c, 0x34,
+ 0x62, 0xfc, 0x7c, 0x08, 0xf6, 0xec, 0x62, 0xfc, 0x7c, 0x08, 0xf7, 0xec, 0x62, 0xfc, 0x7d, 0x08,
+ 0xf7, 0xec, 0x62, 0xfc, 0xfc, 0x08, 0xf7, 0xec, 0x62, 0xfc, 0xfc, 0x0c, 0xf7, 0xec, 0x62, 0xf4,
+ 0x7c, 0x0c, 0xf7, 0xe8, 0x62, 0xbc, 0x78, 0x08, 0xf6, 0x2c, 0x34, 0x62, 0xbc, 0x79, 0x08, 0xf7,
+ 0x2c, 0x34, 0x62, 0xbc, 0x78, 0x08, 0xf7, 0x2c, 0x34, 0x62, 0xbc, 0xf8, 0x08, 0xf7, 0x2c, 0x34,
+ 0x62, 0xfc, 0x7c, 0x08, 0xf6, 0xe4, 0x62, 0xfc, 0x7c, 0x08, 0xf7, 0xe4, 0x62, 0xfc, 0x7d, 0x08,
+ 0xf7, 0xe4, 0x62, 0xfc, 0xfc, 0x08, 0xf7, 0xe4, 0x62, 0xfc, 0xfc, 0x0c, 0xf7, 0xe4, 0x62, 0xf4,
+ 0x7c, 0x0c, 0xf7, 0xe0, 0x62, 0xbc, 0x78, 0x08, 0xf6, 0x24, 0x34, 0x62, 0xbc, 0x79, 0x08, 0xf7,
+ 0x24, 0x34, 0x62, 0xbc, 0x78, 0x08, 0xf7, 0x24, 0x34, 0x62, 0xbc, 0xf8, 0x08, 0xf7, 0x24, 0x34,
+ 0x62, 0xfc, 0x7c, 0x08, 0xf6, 0xdc, 0x62, 0xfc, 0x7c, 0x08, 0xf7, 0xdc, 0x62, 0xfc, 0x7d, 0x08,
+ 0xf7, 0xdc, 0x62, 0xfc, 0xfc, 0x08, 0xf7, 0xdc, 0x62, 0xfc, 0xfc, 0x0c, 0xf7, 0xdc, 0x62, 0xf4,
+ 0x7c, 0x0c, 0xf7, 0xd8, 0x62, 0xbc, 0x78, 0x08, 0xf6, 0x1c, 0x34, 0x62, 0xbc, 0x79, 0x08, 0xf7,
+ 0x1c, 0x34, 0x62, 0xbc, 0x78, 0x08, 0xf7, 0x1c, 0x34, 0x62, 0xbc, 0xf8, 0x08, 0xf7, 0x1c, 0x34,
+ 0x62, 0xfc, 0x7c, 0x08, 0xf6, 0xd4, 0x62, 0xfc, 0x7c, 0x08, 0xf7, 0xd4, 0x62, 0xfc, 0x7d, 0x08,
+ 0xf7, 0xd4, 0x62, 0xfc, 0xfc, 0x08, 0xf7, 0xd4, 0x62, 0xbc, 0x78, 0x08, 0xf6, 0x14, 0x34, 0x62,
+ 0xbc, 0x79, 0x08, 0xf7, 0x14, 0x34, 0x62, 0xbc, 0x78, 0x08, 0xf7, 0x14, 0x34, 0x62, 0xbc, 0xf8,
+ 0x08, 0xf7, 0x14, 0x34,
};
const size_t n = sizeof(tbl);
CYBOZU_TEST_EQUAL(c.getSize(), n);