aboutsummaryrefslogtreecommitdiffhomepage
path: root/gen
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <[email protected]>2024-10-13 14:55:20 +0900
committerMITSUNARI Shigeo <[email protected]>2024-10-13 14:55:20 +0900
commit14ae9bf4859739ca9b23f421d23693a15e75769d (patch)
treeb24ebb716d4e158ca6c2d016e602096f6a82d3d3 /gen
parent2818beeffd198dae543019347360252d0ea7b78f (diff)
downloadxbyak-14ae9bf4859739ca9b23f421d23693a15e75769d.tar.gz
xbyak-14ae9bf4859739ca9b23f421d23693a15e75769d.zip
add vpdpbssd for avx10.2
Diffstat (limited to 'gen')
-rw-r--r--gen/gen_avx512.cpp33
-rw-r--r--gen/gen_code.cpp2
2 files changed, 33 insertions, 2 deletions
diff --git a/gen/gen_avx512.cpp b/gen/gen_avx512.cpp
index 9840844..9159a64 100644
--- a/gen/gen_avx512.cpp
+++ b/gen/gen_avx512.cpp
@@ -454,7 +454,37 @@ void putX_X_XM_IMM()
printf("void %s(const Xmm& x1, const Xmm& x2, const Operand& op%s) { opAVX_X_X_XM(x1, x2, op, %s, 0x%02X%s); }\n"
, p->name, p->hasIMM ? ", uint8_t imm" : "", s.c_str(), p->code, p->hasIMM ? ", imm" : "");
}
- puts("void vmpsadbw(const Xmm& x1, const Xmm& x2, const Operand& op, uint8_t imm, PreferredEncoding encoding = DefaultEncoding) { opEncoding(x1, x2, op, T_0F3A | T_YMM, 0x42, encoding, imm, T_66 | T_W0 | T_YMM, T_F3 | T_0F3A | T_EW0 | T_B32, 1); }");
+}
+
+void putX_X_XM_IMM_AVX10()
+{
+ const struct Tbl {
+ uint8_t code;
+ const char *name;
+ uint64_t type;
+ uint64_t typeVex;
+ uint64_t typeEvex;
+ int sel;
+ bool hasIMM;
+ } tbl[] = {
+ { 0x50, "vpdpbssd", T_F2|T_0F38|T_YMM, T_W0, T_EW0|T_B32, 1, false },
+#if 0
+ { 0x51, "vpdpbssds", T_MUST_EVEX | T_YMM | T_F2 | T_0F38 | T_EW0 | T_B32, false },
+ { 0x50, "vpdpbsud", T_MUST_EVEX | T_YMM | T_F3 | T_0F38 | T_EW0 | T_B32, false },
+ { 0x51, "vpdpbsuds", T_MUST_EVEX | T_YMM | T_F3 | T_0F38 | T_EW0 | T_B32, false },
+ { 0x50, "vpdpbuud", T_MUST_EVEX | T_YMM | T_0F38 | T_EW0 | T_B32, false },
+ { 0x51, "vpdpbuuds", T_MUST_EVEX | T_YMM | T_0F38 | T_EW0 | T_B32, false },
+#endif
+ { 0x42, "vmpsadbw", T_0F3A|T_YMM, T_66|T_W0|T_YMM, T_F3|T_0F3A|T_EW0|T_B32, 1, true },
+ };
+ for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+ const Tbl *p = &tbl[i];
+ std::string s = type2String(p->type);
+ std::string sVex = type2String(p->typeVex);
+ std::string sEvex = type2String(p->typeEvex);
+ printf("void %s(const Xmm& x1, const Xmm& x2, const Operand& op%s, PreferredEncoding encoding = DefaultEncoding) { opEncoding(x1, x2, op, %s, 0x%02X, encoding, %s, %s, %s, %d); }\n"
+ , p->name, p->hasIMM ? ", uint8_t imm" : "", s.c_str(), p->code, p->hasIMM ? "imm" : "NONE", sVex.c_str(), sEvex.c_str(), p->sel);
+ }
}
void putShift()
@@ -1059,6 +1089,7 @@ int main(int argc, char *[])
putM_X();
putXM_X();
putX_X_XM_IMM();
+ putX_X_XM_IMM_AVX10();
putShift();
putExtractInsert();
putCvt();
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 58c176a..caa9e79 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -1907,7 +1907,7 @@ void put()
const char *name;
uint64_t type;
} tbl[] = {
- { 0x50, "vpdpbssd", T_F2 | T_0F38 | T_W0 | T_YMM },
+// { 0x50, "vpdpbssd", T_F2 | T_0F38 | T_W0 | T_YMM },
{ 0x51, "vpdpbssds", T_F2 | T_0F38 | T_W0 | T_YMM },
{ 0x50, "vpdpbsud", T_F3 | T_0F38 | T_W0 | T_YMM },
{ 0x51, "vpdpbsuds", T_F3 | T_0F38 | T_W0 | T_YMM },