176 const char* dotproduct_method =
"generic";
177 if (!strcmp(dotproduct.string(),
"auto")) {
179 }
else if (!strcmp(dotproduct.string(),
"generic")) {
181 SetDotProduct(DotProductGeneric);
182 dotproduct_method =
"generic";
183 }
else if (!strcmp(dotproduct.string(),
"native")) {
186 dotproduct_method =
"native";
188 }
else if (!strcmp(dotproduct.string(),
"avx2")) {
191 dotproduct_method =
"avx2";
194 }
else if (!strcmp(dotproduct.string(),
"avx")) {
197 dotproduct_method =
"avx";
200 }
else if (!strcmp(dotproduct.string(),
"fma")) {
203 dotproduct_method =
"fma";
206 }
else if (!strcmp(dotproduct.string(),
"sse")) {
209 dotproduct_method =
"sse";
211 }
else if (!strcmp(dotproduct.string(),
"std::inner_product")) {
213 SetDotProduct(DotProductStdInnerProduct);
214 dotproduct_method =
"std::inner_product";
217 tprintf(
"Warning, ignoring unsupported config variable value: dotproduct=%s\n",
218 dotproduct.string());
219 tprintf(
"Support values for dotproduct: auto generic native" 226 " std::inner_product.\n");
229 dotproduct.set_value(dotproduct_method);
DLLSYM void tprintf(const char *format,...)
double DotProductAVX(const double *u, const double *v, int n)
static const IntSimdMatrix * intSimdMatrix
double DotProductFMA(const double *u, const double *v, int n)
static const IntSimdMatrix intSimdMatrixAVX2
double DotProductNative(const double *u, const double *v, int n)
double DotProductSSE(const double *u, const double *v, int n)
static const IntSimdMatrix intSimdMatrixSSE