summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-11-05 20:11:10 +0000
committerDouglas Gregor <dgregor@apple.com>2012-11-05 20:11:10 +0000
commit4c69859b562871fe95c5216a029c46b79acf44b0 (patch)
tree1b5cffac0b98087ff32e756da5d26184c2e1d40f /clang
parent7fd0849bc3a931f645c352add2bbff91e04ba8b9 (diff)
downloadbcm5719-llvm-4c69859b562871fe95c5216a029c46b79acf44b0.tar.gz
bcm5719-llvm-4c69859b562871fe95c5216a029c46b79acf44b0.zip
Make cpuid.h actually work with -std=c99 <rdar://problem/12552716>.
While we're here, extend the module map to cover most of the newly-added instrinsic headers. Only wmmintrin.h is missing, because it needs to be split into AES/PCLMUL subheaders (as a separate commit). llvm-svn: 167398
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Headers/cpuid.h2
-rw-r--r--clang/lib/Headers/module.map22
-rw-r--r--clang/test/Modules/compiler_builtins.m1
3 files changed, 24 insertions, 1 deletions
diff --git a/clang/lib/Headers/cpuid.h b/clang/lib/Headers/cpuid.h
index 05c293f6bd9..33df7c2d19f 100644
--- a/clang/lib/Headers/cpuid.h
+++ b/clang/lib/Headers/cpuid.h
@@ -28,6 +28,6 @@
static inline int __get_cpuid (unsigned int level, unsigned int *eax,
unsigned int *ebx, unsigned int *ecx,
unsigned int *edx) {
- asm("cpuid" : "=a"(*eax), "=b" (*ebx), "=c"(*ecx), "=d"(*edx) : "0"(level));
+ __asm("cpuid" : "=a"(*eax), "=b" (*ebx), "=c"(*ecx), "=d"(*edx) : "0"(level));
return 1;
}
diff --git a/clang/lib/Headers/module.map b/clang/lib/Headers/module.map
index 418ba500909..bcdd8e85e6f 100644
--- a/clang/lib/Headers/module.map
+++ b/clang/lib/Headers/module.map
@@ -25,6 +25,11 @@ module _Builtin_intrinsics [system] {
header "mmintrin.h"
}
+ explicit module f16c {
+ requires f16c
+ header "f16cintrin.h"
+ }
+
explicit module sse {
requires sse
export mmx
@@ -62,6 +67,12 @@ module _Builtin_intrinsics [system] {
header "nmmintrin.h"
}
+ explicit module sse4a {
+ requires sse4a
+ export sse3
+ header "nmmintrin.h"
+ }
+
explicit module avx {
requires avx
export sse4_2
@@ -84,6 +95,11 @@ module _Builtin_intrinsics [system] {
header "bmi2intrin.h"
}
+ explicit module fma {
+ requires fma
+ header "fmaintrin.h"
+ }
+
explicit module fma4 {
requires fma4
export sse3
@@ -104,5 +120,11 @@ module _Builtin_intrinsics [system] {
requires mm3dnow
header "mm3dnow.h"
}
+
+ explicit module xop {
+ requires xop
+ export fma4
+ header "xopintrin.h"
+ }
}
}
diff --git a/clang/test/Modules/compiler_builtins.m b/clang/test/Modules/compiler_builtins.m
index d974dae52e0..dfa46c8a34f 100644
--- a/clang/test/Modules/compiler_builtins.m
+++ b/clang/test/Modules/compiler_builtins.m
@@ -1,5 +1,6 @@
// RUN: rm -rf %t
// RUN: %clang -fsyntax-only -fmodules -fmodule-cache-path %t -D__need_wint_t %s -Xclang -verify
+// RUN: %clang -fsyntax-only -std=c99 -fmodules -fmodule-cache-path %t -D__need_wint_t %s -Xclang -verify
// expected-no-diagnostics
#ifdef __SSE__
OpenPOWER on IntegriCloud