Open apolukhin opened 3 years ago
yndx-antoshkka, 23 июля 2018, 14:05 У GCC есть близкий механизм https://gcc.gnu.org/wiki/FunctionMultiVersioning
Он вам подходит, или требуется что-то ещё?
Саша Зайцев, 23 июля 2018, 17:17 yndx-antoshkka, ты сам ответил на свой вопрос - он только у GCC :-)
ilnurkh, 23 июля 2018, 20:19 yndx-antoshkka, gcc only не подходит
также его механизм выглядит не достаточно гибким, требуя наличие тега под каждый таргет
Андрей Руссков, 31 июля 2018, 18:02 чтобы не тащить в стандарт все архитектуры и наборы команд, подобный функционал можно сделать аттрибутами (как у gcc, то, что кидал Антон), либо через функции аля bool cpu_supports(string_view) / bool cpu_target_is(string_view) / ...
Перенос предложения: голоса +1, -1 Автор идеи: ilnurkh
func_ptr_t constexpr get_host_cpu_info(std::cpu_info_t cpu_info) { if (cpu_info.have_avx()) { return &avx_dot_product_impl; } if (cpu_info.have_sse4()) { return &sse4_dot_product_impl; } return &trivial_dot_product_impl; }