diff options
| author | Luo, Yuanke <yuanke.luo@intel.com> | 2019-05-06 08:25:11 +0000 |
|---|---|---|
| committer | Luo, Yuanke <yuanke.luo@intel.com> | 2019-05-06 08:25:11 +0000 |
| commit | 844f66293235397b4df109b7e54640a82d6882ed (patch) | |
| tree | 8de3bcb58e0db7232169c8dd05911c4efdd982b2 /clang/lib/Headers | |
| parent | beec41c656e7d716fd5755cce12e4934fdced267 (diff) | |
| download | bcm5719-llvm-844f66293235397b4df109b7e54640a82d6882ed.tar.gz bcm5719-llvm-844f66293235397b4df109b7e54640a82d6882ed.zip | |
Enable intrinsics of AVX512_BF16, which are supported for BFLOAT16 in Cooper Lake
Summary:
1. Enable infrastructure of AVX512_BF16, which is supported for BFLOAT16 in Cooper Lake;
2. Enable intrinsics for VCVTNE2PS2BF16, VCVTNEPS2BF16 and DPBF16PS instructions, which are Vector Neural Network Instructions supporting BFLOAT16 inputs and conversion instructions from IEEE single precision.
For more details about BF16 intrinsic, please refer to the latest ISE document: https://software.intel.com/en-us/download/intel-architecture-instruction-set-extensions-programming-reference
Patch by LiuTianle
Reviewers: craig.topper, smaslov, LuoYuanke, wxiao3, annita.zhang, spatel, RKSimon
Reviewed By: craig.topper
Subscribers: mgorny, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D60552
llvm-svn: 360018
Diffstat (limited to 'clang/lib/Headers')
| -rw-r--r-- | clang/lib/Headers/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | clang/lib/Headers/cpuid.h | 3 | ||||
| -rw-r--r-- | clang/lib/Headers/immintrin.h | 9 |
3 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt index a921d99399f..bfcade4584e 100644 --- a/clang/lib/Headers/CMakeLists.txt +++ b/clang/lib/Headers/CMakeLists.txt @@ -6,6 +6,7 @@ set(files armintr.h arm64intr.h avx2intrin.h + avx512bf16intrin.h avx512bwintrin.h avx512bitalgintrin.h avx512vlbitalgintrin.h @@ -21,6 +22,7 @@ set(files avx512vbmivlintrin.h avx512vbmi2intrin.h avx512vlvbmi2intrin.h + avx512vlbf16intrin.h avx512vlbwintrin.h avx512vlcdintrin.h avx512vldqintrin.h diff --git a/clang/lib/Headers/cpuid.h b/clang/lib/Headers/cpuid.h index 137b9bc7fb3..ffe638adf3d 100644 --- a/clang/lib/Headers/cpuid.h +++ b/clang/lib/Headers/cpuid.h @@ -184,6 +184,9 @@ #define bit_PCONFIG 0x00040000 #define bit_IBT 0x00100000 +/* Features in %eax for leaf 7 sub-leaf 1 */ +#define bit_AVX512BF16 0x00000020 + /* Features in %eax for leaf 13 sub-leaf 1 */ #define bit_XSAVEOPT 0x00000001 #define bit_XSAVEC 0x00000002 diff --git a/clang/lib/Headers/immintrin.h b/clang/lib/Headers/immintrin.h index 1fda86ed26d..2bd79bd88f3 100644 --- a/clang/lib/Headers/immintrin.h +++ b/clang/lib/Headers/immintrin.h @@ -181,6 +181,15 @@ #include <avx512pfintrin.h> #endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512BF16__) +#include <avx512bf16intrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AVX512VL__) && defined(__AVX512BF16__)) +#include <avx512vlbf16intrin.h> +#endif + #if !defined(_MSC_VER) || __has_feature(modules) || defined(__PKU__) #include <pkuintrin.h> #endif |

