diff options
author | MITSUNARI Shigeo <[email protected]> | 2016-07-21 06:58:05 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2016-07-21 06:58:05 +0900 |
commit | 3235fa952db7f9a56a5014fdba49d31ed01b3bd9 (patch) | |
tree | 29ebc3787cdd870368def0aee56140c0eb79761a /test/make_512.cpp | |
parent | c57b6026f970363740b80896e6a96f85bc135ace (diff) | |
download | xbyak-3235fa952db7f9a56a5014fdba49d31ed01b3bd9.tar.gz xbyak-3235fa952db7f9a56a5014fdba49d31ed01b3bd9.zip |
add vptest*
Diffstat (limited to 'test/make_512.cpp')
-rw-r--r-- | test/make_512.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/test/make_512.cpp b/test/make_512.cpp index 3eab5cf..fc70e12 100644 --- a/test/make_512.cpp +++ b/test/make_512.cpp @@ -1641,10 +1641,37 @@ public: put(p.name, K_K, _ZMM, _ZMM | _MEM | bTbl[2], IMM8); } } + void putVtest() + { + const uint64_t b0Tbl[] = { 0, 0, 0 }; + const uint64_t b4Tbl[] = { M_1to4, M_1to8, M_1to16 }; + const uint64_t b2Tbl[] = { M_1to2, M_1to4, M_1to8 }; + const struct Tbl { + const char *name; + uint64_t b; + } tbl[] = { + { "vptestmb", 0 }, + { "vptestmw", 0 }, + { "vptestmd", M_1to4 }, + { "vptestmq", M_1to2 }, + + { "vptestnmb", 0 }, + { "vptestnmw", 0 }, + { "vptestnmd", M_1to4 }, + { "vptestnmq", M_1to2 }, + }; + for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) { + const Tbl& p = tbl[i]; + const uint64_t *bTbl = p.b == 0 ? b0Tbl : p.b == M_1to4 ? b4Tbl : b2Tbl; + put(p.name, K_K, _XMM, _XMM | _MEM | bTbl[0]); + put(p.name, K_K, _YMM, _YMM | _MEM | bTbl[1]); + put(p.name, K_K, _ZMM, _ZMM | _MEM | bTbl[2]); + } + } void putMin() { #ifdef XBYAK64 - putVpcmp(); + putVtest(); #endif } void putAVX512() @@ -1687,6 +1714,8 @@ public: putBlend(); separateFunc(); putVpcmp(); + separateFunc(); + putVtest(); #endif } }; |