gather test does not generate bad combination of regs
diff --git a/test/make_nm.cpp b/test/make_nm.cpp
index 494d8ac..6fd875a 100644
--- a/test/make_nm.cpp
+++ b/test/make_nm.cpp
@@ -179,6 +179,19 @@
printf("\n");
}
}
+ void put(const char *nm, const char *para1, uint64_t op2, const char *para3) const
+ {
+ for (int j = 0; j < bitEnd; j++) {
+ if ((op2 & (1ULL << j)) == 0) continue;
+ printf("%s ", nm);
+ if (isXbyak_) printf("(");
+ printf("%s", para1);
+ if (!(op2 & NOPARA)) printf(", %s", get(1ULL << j));
+ printf(", %s", para3);
+ if (isXbyak_) printf("); dump();");
+ printf("\n");
+ }
+ }
const char *get(uint64_t type) const
{
int idx = (rand() / 31) & 7;
@@ -2361,16 +2374,16 @@
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
const Tbl& p = tbl[i];
const char *name = p.name;
- put(name, XMM, VM32X, XMM);
+ put(name, "xmm3", VM32X, "xmm5");
switch (p.mode) {
case y_vx_y:
- put(name, YMM, VM32X, YMM);
+ put(name, "ymm3", VM32X, "ymm5");
break;
case y_vy_y:
- put(name, YMM, VM32Y, YMM);
+ put(name, "ymm3", VM32Y, "ymm5");
break;
case x_vy_x:
- put(name, XMM, VM32Y, XMM);
+ put(name, "xmm3", VM32Y, "xmm5");
break;
default:
printf("ERR mode=%d\n", p.mode);