Generalize `iree_uk_cpu_features_list_t` for x86 (#12749)
This is one last prerequisite for x86 ukernels: with x86 we will need to
have sets of features that combine together > 5 features, e.g. just base
AVX512 is actually a combination of 5 individual features
(AVX512{F,BW,CD,VL,DQ}) and is meant to be added on top of AVX2 features
(itself the combination AVX+AVX2+FMA).
So this generalizes `iree_uk_cpu_features_list_t` to:
- Grow more gracefully to several/many features. Technically it's a
heap-backed vector now, but you'll see that the growth logic is very
YAGNI : we grow once from capacity 0 to 64 hardcoded, and never again
:-) So the code is very simple. And it's an implementation detail of
that grow function if we ever need something better.
- Support definding cpu feature sets that extend others (e.g. define
AVX512 extending AVX2)
- Support optionally giving cpu feature sets short names instead of
enumerating all individual features (otherwise, avx512 test log lines
and benchmark names were very verbose and wrapped around multiple
lines).
Moreover, this adds reporting of the first unsupported feature when a
test gets skipped because of that.IREE (Intermediate Representation Execution Environment, pronounced as “eerie”) is an MLIR-based end-to-end compiler and runtime that lowers Machine Learning (ML) models to a unified IR that scales up to meet the needs of the datacenter and down to satisfy the constraints and special considerations of mobile and edge deployments.
See our website for project details, user guides, and instructions on building from source.
IREE is still in its early phase. We have settled down on the overarching infrastructure and are actively improving various software components as well as project logistics. It is still quite far from ready for everyday use and is made available without any support at the moment. With that said, we welcome any kind of feedback on any communication channels!
See our website for more information.
IREE is licensed under the terms of the Apache 2.0 License with LLVM Exceptions. See LICENSE for more information.