524 void put_vaddpd(
const char *r1,
const char *r2,
const char *r3,
int kIdx = 0,
bool z =
false,
int sae = 0)
526 std::string modifier;
529 const char *saeTblXbyak[] = {
"",
"|T_rn_sae",
"|T_rd_sae",
"|T_ru_sae",
"|T_rz_sae" };
530 const char *saeTblNASM[] = {
"",
",{rn-sae}",
",{rd-sae}",
",{ru-sae}",
",{rz-sae}" };
534 printf(
"vaddpd(%s%s%s, %s, %s%s); dump();\n", r1, pk, pz, r2, r3, saeTblXbyak[sae]);
538 printf(
"vaddpd %s%s%s, %s, %s%s\n", r1, pk, pz, r2, r3, saeTblNASM[sae]);
543 const char *xTbl[] = {
551 const char *yTbl[] = {
559 const char *zTbl[] = {
568 for (
size_t i = 0; i <
N; i++) {
569 for (
size_t j = 0;
j <
N;
j++) {
571 for (
size_t k = 0; k <
N; k++) {
573 for (
int kIdx = 0; kIdx < 8; kIdx++) {
574 for (
int z = 0; z < 2; z++) {
575 put_vaddpd(xTbl[i], xTbl[
j], xTbl[k], kIdx, z == 1);
576 put_vaddpd(yTbl[i], yTbl[
j], yTbl[k], kIdx, z == 1);
577 for (
int sae = 0; sae < 5; sae++) {
578 put_vaddpd(zTbl[i], zTbl[
j], zTbl[k], kIdx, z == 1, sae);
585 for (
int sae = 0; sae < 5; sae++) {
2096 -129, -128, -127, 0, 1, 64, 65, 127, 128
2099 char xs[128], ns[128];
2103 put(
"vpbroadcastb", xs, ns);
2108 -1024, -512 -256, -128, -64, -32, -16, -8, -4, -2, -1,
2109 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
2112 char xs[128], ns[128];
2116 put(
"vaddps", xs, ns);
2120 put(
"vfmadd231ps",
"zmm8, zmm31, ptr_b[r14+rbp-0x1e4]",
"zmm8, zmm31, [r14+rbp-0x1e4]{1to16}");