diff options
author | dim <dim@FreeBSD.org> | 2015-08-18 19:03:59 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-08-18 19:03:59 +0000 |
commit | e46ef01b21774ac0eb2e5b0b1d30b99d484b73a3 (patch) | |
tree | c960e1a0197e941e7aa2df8210ab3603b2cb8a05 /contrib/llvm/tools/clang/lib/Headers/module.modulemap | |
parent | 51e716cb71375836e40df804bbce03319e01649c (diff) | |
download | FreeBSD-src-e46ef01b21774ac0eb2e5b0b1d30b99d484b73a3.zip FreeBSD-src-e46ef01b21774ac0eb2e5b0b1d30b99d484b73a3.tar.gz |
Import r243925 from the upstream clang release_37 branch:
Reverting r239883 and r240720:
------------------------------------------------------------------------
r239883 | echristo | 2015-06-17 00:09:32 -0700 (Wed, 17 Jun 2015) | 16 lines
Update the intel intrinsic headers to use the target attribute support.
This involved removing the conditional inclusion and replacing them
with target attributes matching the original conditional inclusion
and checks. The testcase update removes the macro checks for each
file and replaces them with usage of the __target__ attribute, e.g.:
int __attribute__((__target__(("sse3")))) foo(int a) {
_mm_mwait(0, 0);
return 4;
}
This usage does require the enclosing function have the requisite
__target__ attribute for inlining and code generation - also for
any macro intrinsic uses in the enclosing function. There's no change
for existing uses of the intrinsic headers.
------------------------------------------------------------------------
------------------------------------------------------------------------
r240720 | silvas | 2015-06-25 16:22:11 -0700 (Thu, 25 Jun 2015) | 6 lines
Remove `requires` for x86 CPU features.
Ever since the target attributes change, we don't need to guard these
headers with `requires`. Actually it's a bit worse, because if we do
then they are included textually under the covers, causing declarations
to appear in submodules they aren't supposed to be in.
------------------------------------------------------------------------
This reverts the changes to the intrinsics headers in trunk, which could
result in some ports' configure scripts misdetecting SSE (and higher)
support.
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Headers/module.modulemap')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Headers/module.modulemap | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/contrib/llvm/tools/clang/lib/Headers/module.modulemap b/contrib/llvm/tools/clang/lib/Headers/module.modulemap index 0fc70a8..8fcb5bc 100644 --- a/contrib/llvm/tools/clang/lib/Headers/module.modulemap +++ b/contrib/llvm/tools/clang/lib/Headers/module.modulemap @@ -32,117 +32,142 @@ module _Builtin_intrinsics [system] [extern_c] { } explicit module cpuid { + requires x86 header "cpuid.h" } explicit module mmx { + requires mmx header "mmintrin.h" } explicit module f16c { + requires f16c header "f16cintrin.h" } explicit module sse { + requires sse export mmx export sse2 // note: for hackish <emmintrin.h> dependency header "xmmintrin.h" } explicit module sse2 { + requires sse2 export sse header "emmintrin.h" } explicit module sse3 { + requires sse3 export sse2 header "pmmintrin.h" } explicit module ssse3 { + requires ssse3 export sse3 header "tmmintrin.h" } explicit module sse4_1 { + requires sse41 export ssse3 header "smmintrin.h" } explicit module sse4_2 { + requires sse42 export sse4_1 header "nmmintrin.h" } explicit module sse4a { + requires sse4a export sse3 header "ammintrin.h" } explicit module avx { + requires avx export sse4_2 header "avxintrin.h" } explicit module avx2 { + requires avx2 export avx header "avx2intrin.h" } explicit module avx512f { + requires avx512f export avx2 header "avx512fintrin.h" } explicit module avx512er { + requires avx512er header "avx512erintrin.h" } explicit module bmi { + requires bmi header "bmiintrin.h" } explicit module bmi2 { + requires bmi2 header "bmi2intrin.h" } explicit module fma { + requires fma header "fmaintrin.h" } explicit module fma4 { + requires fma4 export sse3 header "fma4intrin.h" } explicit module lzcnt { + requires lzcnt header "lzcntintrin.h" } explicit module popcnt { + requires popcnt header "popcntintrin.h" } explicit module mm3dnow { + requires mm3dnow header "mm3dnow.h" } explicit module xop { + requires xop export fma4 header "xopintrin.h" } explicit module aes_pclmul { + requires aes, pclmul header "wmmintrin.h" export aes export pclmul } explicit module aes { + requires aes header "__wmmintrin_aes.h" } explicit module pclmul { + requires pclmul header "__wmmintrin_pclmul.h" } } |