aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/make_512.cpp
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <[email protected]>2016-07-21 06:58:05 +0900
committerMITSUNARI Shigeo <[email protected]>2016-07-21 06:58:05 +0900
commit3235fa952db7f9a56a5014fdba49d31ed01b3bd9 (patch)
tree29ebc3787cdd870368def0aee56140c0eb79761a /test/make_512.cpp
parentc57b6026f970363740b80896e6a96f85bc135ace (diff)
downloadxbyak-3235fa952db7f9a56a5014fdba49d31ed01b3bd9.tar.gz
xbyak-3235fa952db7f9a56a5014fdba49d31ed01b3bd9.zip
add vptest*
Diffstat (limited to 'test/make_512.cpp')
-rw-r--r--test/make_512.cpp31
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
}
};