diff options
author | MITSUNARI Shigeo <[email protected]> | 2022-11-30 13:20:57 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2022-11-30 13:20:57 +0900 |
commit | 445c0dcec13abae5af795b526319ea1dc1fc74a7 (patch) | |
tree | 3b71e1858d8508292fa62706ea0dac71f4f65241 /test | |
parent | c9347907d413f3d4bccbd012ce25f6f27b398f58 (diff) | |
download | xbyak-445c0dcec13abae5af795b526319ea1dc1fc74a7.tar.gz xbyak-445c0dcec13abae5af795b526319ea1dc1fc74a7.zip |
add test of CMPccXADD
Diffstat (limited to 'test')
-rw-r--r-- | test/misc.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test/misc.cpp b/test/misc.cpp index 7653673..f0e577f 100644 --- a/test/misc.cpp +++ b/test/misc.cpp @@ -2056,3 +2056,87 @@ CYBOZU_TEST_AUTO(rao_int) CYBOZU_TEST_EQUAL(c.getSize(), n); CYBOZU_TEST_EQUAL_ARRAY(c.getCode(), tbl, n); } + +#ifdef XBYAK64 +CYBOZU_TEST_AUTO(CMPccXADD) +{ + struct Code : Xbyak::CodeGenerator { + Code() + { + // 32bit reg + cmpbexadd(ptr[rax+r10*4], ecx, edx); + cmpbxadd(ptr[rax+r10*4], ecx, edx); + cmplexadd(ptr[rax+r10*4], ecx, edx); + cmplxadd(ptr[rax+r10*4], ecx, edx); + cmpnbexadd(ptr[rax+r10*4], ecx, edx); + cmpnbxadd(ptr[rax+r10*4], ecx, edx); + cmpnlexadd(ptr[rax+r10*4], ecx, edx); + cmpnlxadd(ptr[rax+r10*4], ecx, edx); + cmpnoxadd(ptr[rax+r10*4], ecx, edx); + cmpnpxadd(ptr[rax+r10*4], ecx, edx); + cmpnsxadd(ptr[rax+r10*4], ecx, edx); + cmpnzxadd(ptr[rax+r10*4], ecx, edx); + cmpoxadd(ptr[rax+r10*4], ecx, edx); + cmppxadd(ptr[rax+r10*4], ecx, edx); + cmpsxadd(ptr[rax+r10*4], ecx, edx); + cmpzxadd(ptr[rax+r10*4], ecx, edx); + // 64bit reg + cmpbexadd(ptr[rax+r10*4], rcx, rdx); + cmpbxadd(ptr[rax+r10*4], rcx, rdx); + cmplexadd(ptr[rax+r10*4], rcx, rdx); + cmplxadd(ptr[rax+r10*4], rcx, rdx); + cmpnbexadd(ptr[rax+r10*4], rcx, rdx); + cmpnbxadd(ptr[rax+r10*4], rcx, rdx); + cmpnlexadd(ptr[rax+r10*4], rcx, rdx); + cmpnlxadd(ptr[rax+r10*4], rcx, rdx); + cmpnoxadd(ptr[rax+r10*4], rcx, rdx); + cmpnpxadd(ptr[rax+r10*4], rcx, rdx); + cmpnsxadd(ptr[rax+r10*4], rcx, rdx); + cmpnzxadd(ptr[rax+r10*4], rcx, rdx); + cmpoxadd(ptr[rax+r10*4], rcx, rdx); + cmppxadd(ptr[rax+r10*4], rcx, rdx); + cmpsxadd(ptr[rax+r10*4], rcx, rdx); + cmpzxadd(ptr[rax+r10*4], rcx, rdx); + } + } c; + const uint8_t tbl[] = { + // 32bit reg + 0xc4, 0xa2, 0x69, 0xe6, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe2, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xee, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xec, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe7, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe3, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xef, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xed, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe1, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xeb, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe9, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe5, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe0, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xea, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe8, 0x0c, 0x90, + 0xc4, 0xa2, 0x69, 0xe4, 0x0c, 0x90, + // 64bit reg + 0xc4, 0xa2, 0xe9, 0xe6, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe2, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xee, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xec, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe7, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe3, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xef, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xed, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe1, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xeb, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe9, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe5, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe0, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xea, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe8, 0x0c, 0x90, + 0xc4, 0xa2, 0xe9, 0xe4, 0x0c, 0x90, + }; + const size_t n = sizeof(tbl) / sizeof(tbl[0]); + CYBOZU_TEST_EQUAL(c.getSize(), n); + CYBOZU_TEST_EQUAL_ARRAY(c.getCode(), tbl, n); +} +#endif |