]> granicus.if.org Git - clang/commitdiff
Headers: add hint intrinsics to arm_acle.h
authorSaleem Abdulrasool <compnerd@compnerd.org>
Sat, 12 Jul 2014 23:27:26 +0000 (23:27 +0000)
committerSaleem Abdulrasool <compnerd@compnerd.org>
Sat, 12 Jul 2014 23:27:26 +0000 (23:27 +0000)
This adds the ARM ACLE hint intrinsic wrappers to arm_acle.h.  These need to be
protected with a !defined(_MSC_VER) since MSVC (and thus clang in compatibility
mode) provide these wrappers as proper builtin intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212891 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/arm_acle.h
test/Headers/arm-acle-header.c

index a7406fbf0a888076359fd5c3b97a82c20856ac6f..460f2975d46105e17b397535e53da2f60f4f50ff 100644 (file)
 extern "C" {
 #endif
 
+/* 8.4 - Hints */
+
+#if !defined(_MSC_VER)
+static __inline__ void __attribute__((always_inline, nodebug)) __wfi(void) {
+  __builtin_arm_wfi();
+}
+
+static __inline__ void __attribute__((always_inline, nodebug)) __wfe(void) {
+  __builtin_arm_wfe();
+}
+
+static __inline__ void __attribute__((always_inline, nodebug)) __sev(void) {
+  __builtin_arm_sev();
+}
+
+static __inline__ void __attribute__((always_inline, nodebug)) __sevl(void) {
+  __builtin_arm_sevl();
+}
+
+static __inline__ void __attribute__((always_inline, nodebug)) __yield(void) {
+  __builtin_arm_yield();
+}
+#endif
+
 /* 9 DATA-PROCESSING INTRINSICS */
 /* 9.2 Miscellaneous data-processing intrinsics */
 static __inline__ uint32_t __attribute__((always_inline, nodebug))
index 523e77e4866f2185ed7eabf52198afd99d753878..d9d2e04c945cdfe0e4c7cf2676f8e99a6d6c55ca 100644 (file)
@@ -1,7 +1,9 @@
-// RUN: %clang_cc1 -triple armv7 -target-cpu cortex-a15 -fsyntax-only -ffreestanding %s
-// RUN: %clang_cc1 -triple aarch64 -target-cpu cortex-a53 -fsyntax-only -ffreestanding %s
-// RUN: %clang_cc1 -x c++ -triple armv7 -target-cpu cortex-a15 -fsyntax-only -ffreestanding %s
-// RUN: %clang_cc1 -x c++ -triple aarch64 -target-cpu cortex-a57 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -triple armv7-eabi -target-cpu cortex-a15 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -triple aarch64-eabi -target-cpu cortex-a53 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -triple thumbv7-windows -target-cpu cortex-a53 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -x c++ -triple armv7-eabi -target-cpu cortex-a15 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -x c++ -triple aarch64-eabi -target-cpu cortex-a57 -fsyntax-only -ffreestanding %s
+// RUN: %clang_cc1 -x c++ -triple thumbv7-windows -target-cpu cortex-a15 -fsyntax-only -ffreestanding %s
 // expected-no-diagnostics
 
 #include <arm_acle.h>