diff options
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 6 | ||||
-rw-r--r-- | clang/test/Preprocessor/hexagon-predefines.c | 26 |
2 files changed, 32 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index f9bc72dc798..dc5f3662e3e 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -5946,6 +5946,12 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__QDSP6_V60__"); Builder.defineMacro("__QDSP6_ARCH__", "60"); } + + if (hasFeature("hvx")) { + Builder.defineMacro("__HVX__"); + if (hasFeature("hvx-double")) + Builder.defineMacro("__HVXDBL__"); + } } bool HexagonTargetInfo::handleTargetFeatures(std::vector<std::string> &Features, diff --git a/clang/test/Preprocessor/hexagon-predefines.c b/clang/test/Preprocessor/hexagon-predefines.c new file mode 100644 index 00000000000..ba14de9250f --- /dev/null +++ b/clang/test/Preprocessor/hexagon-predefines.c @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv5 %s | FileCheck %s -check-prefix CHECK-V5 + +// CHECK-V5: #define __HEXAGON_ARCH__ 5 +// CHECK-V5: #define __HEXAGON_V5__ 1 +// CHECK-V5: #define __hexagon__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 %s | FileCheck %s -check-prefix CHECK-V60 + +// CHECK-V60: #define __HEXAGON_ARCH__ 60 +// CHECK-V60: #define __HEXAGON_V60__ 1 +// CHECK-V60: #define __hexagon__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 -target-feature +hvx %s | FileCheck %s -check-prefix CHECK-V60HVX + +// CHECK-V60HVX: #define __HEXAGON_ARCH__ 60 +// CHECK-V60HVX: #define __HEXAGON_V60__ 1 +// CHECK-V60HVX: #define __HVX__ 1 + +// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 -target-feature +hvx-double %s | FileCheck %s -check-prefix CHECK-V60HVXD + +// CHECK-V60HVXD: #define __HEXAGON_ARCH__ 60 +// CHECK-V60HVXD: #define __HEXAGON_V60__ 1 +// CHECK-V60HVXD: #define __HVXDBL__ 1 +// CHECK-V60HVXD: #define __HVX__ 1 +// CHECK-V60HVXD: #define __hexagon__ 1 + |