mirror of https://github.com/microsoft/clang.git
[Hexagon] Add front-end support for Hexagon V65
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@320579 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
979ce58814
commit
e5e2a88ed0
|
@ -2407,6 +2407,8 @@ def mv60 : Flag<["-"], "mv60">, Group<m_hexagon_Features_Group>,
|
|||
Alias<mcpu_EQ>, AliasArgs<["hexagonv60"]>;
|
||||
def mv62 : Flag<["-"], "mv62">, Group<m_hexagon_Features_Group>,
|
||||
Alias<mcpu_EQ>, AliasArgs<["hexagonv62"]>;
|
||||
def mv65 : Flag<["-"], "mv65">, Group<m_hexagon_Features_Group>,
|
||||
Alias<mcpu_EQ>, AliasArgs<["hexagonv65"]>;
|
||||
def mhexagon_hvx : Flag<[ "-" ], "mhvx">,
|
||||
Group<m_hexagon_Features_HVX_Group>,
|
||||
HelpText<"Enable Hexagon Vector eXtensions">;
|
||||
|
|
|
@ -52,6 +52,9 @@ void HexagonTargetInfo::getTargetDefines(const LangOptions &Opts,
|
|||
} else if (CPU == "hexagonv62") {
|
||||
Builder.defineMacro("__HEXAGON_V62__");
|
||||
Builder.defineMacro("__HEXAGON_ARCH__", "62");
|
||||
} else if (CPU == "hexagonv65") {
|
||||
Builder.defineMacro("__HEXAGON_V65__");
|
||||
Builder.defineMacro("__HEXAGON_ARCH__", "65");
|
||||
}
|
||||
|
||||
if (hasFeature("hvx-length64b")) {
|
||||
|
@ -145,6 +148,7 @@ const char *HexagonTargetInfo::getHexagonCPUSuffix(StringRef Name) {
|
|||
.Case("hexagonv55", "55")
|
||||
.Case("hexagonv60", "60")
|
||||
.Case("hexagonv62", "62")
|
||||
.Case("hexagonv65", "65")
|
||||
.Default(nullptr);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@ static StringRef getDefaultHvxLength(StringRef Cpu) {
|
|||
return llvm::StringSwitch<StringRef>(Cpu)
|
||||
.Case("v60", "64b")
|
||||
.Case("v62", "64b")
|
||||
.Case("v65", "64b")
|
||||
.Default("128b");
|
||||
}
|
||||
|
||||
|
|
|
@ -2,18 +2,31 @@
|
|||
// Tests for the hvx features and warnings.
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \
|
||||
// RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX165 %s
|
||||
// CHECKHVX165: "-target-feature" "+hvxv65"
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \
|
||||
// RUN: 2>&1 | FileCheck -check-prefix=CHECKHVX162 %s
|
||||
// CHECKHVX162: "-target-feature" "+hvxv62"
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \
|
||||
// RUN: -mhvx-double 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \
|
||||
// RUN: -mhvx-double 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 -mhvx \
|
||||
// RUN: -mhvx-length=128B 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 -mhvx \
|
||||
// RUN: -mhvx-length=128B 2>&1 | FileCheck -check-prefix=CHECKHVX2 %s
|
||||
// CHECKHVX2-NOT: "-target-feature" "+hvx-length64b"
|
||||
// CHECKHVX2: "-target-feature" "+hvx-length128b"
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv65 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECKHVX3 %s
|
||||
|
||||
// RUN: %clang -c %s -### -target hexagon-unknown-elf -mv62 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECKHVX3 %s
|
||||
// CHECKHVX3-NOT: "-target-feature" "+hvx
|
||||
|
|
|
@ -99,19 +99,27 @@
|
|||
|
||||
// RUN: %clang -### -target hexagon-unknown-elf \
|
||||
// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
|
||||
// RUN: -O3 \
|
||||
// RUN: -mcpu=hexagonv65 \
|
||||
// RUN: %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK025 %s
|
||||
// CHECK025: "-ffp-contract=fast"
|
||||
// CHECK025: hexagon-link
|
||||
// CHECK025: "-cc1" {{.*}} "-target-cpu" "hexagonv65"
|
||||
// CHECK025: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v65/crt0
|
||||
|
||||
// RUN: %clang -### -target hexagon-unknown-elf \
|
||||
// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
|
||||
// RUN: -O3 \
|
||||
// RUN: %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK026 %s
|
||||
// CHECK026: "-ffp-contract=fast"
|
||||
// CHECK026: hexagon-link
|
||||
|
||||
// RUN: %clang -### -target hexagon-unknown-elf \
|
||||
// RUN: -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
|
||||
// RUN: -O3 -ffp-contract=off \
|
||||
// RUN: %s 2>&1 \
|
||||
// RUN: | FileCheck -check-prefix=CHECK026 %s
|
||||
// CHECK026-NOT: "-ffp-contract=fast"
|
||||
// CHECK026: hexagon-link
|
||||
// RUN: | FileCheck -check-prefix=CHECK027 %s
|
||||
// CHECK027-NOT: "-ffp-contract=fast"
|
||||
// CHECK027: hexagon-link
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Test Linker related args
|
||||
|
|
|
@ -19,6 +19,20 @@
|
|||
// CHECK-V60-NOT: #define __HVX__ 1
|
||||
// CHECK-V60: #define __hexagon__ 1
|
||||
|
||||
// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv62 %s | FileCheck %s -check-prefix CHECK-V62
|
||||
// CHECK-V62: #define __HEXAGON_ARCH__ 62
|
||||
// CHECK-V62: #define __HEXAGON_V62__ 1
|
||||
// CHECK-V62-NOT: #define __HVX_LENGTH__
|
||||
// CHECK-V62-NOT: #define __HVX__ 1
|
||||
// CHECK-V62: #define __hexagon__ 1
|
||||
|
||||
// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv65 %s | FileCheck %s -check-prefix CHECK-V65
|
||||
// CHECK-V65: #define __HEXAGON_ARCH__ 65
|
||||
// CHECK-V65: #define __HEXAGON_V65__ 1
|
||||
// CHECK-V65-NOT: #define __HVX_LENGTH__
|
||||
// CHECK-V65-NOT: #define __HVX__ 1
|
||||
// CHECK-V65: #define __hexagon__ 1
|
||||
|
||||
// The HVX flags are explicitly defined by the driver.
|
||||
// RUN: %clang_cc1 -E -dM -triple hexagon-unknown-elf -target-cpu hexagonv60 \
|
||||
// RUN: -target-feature +hvxv60 -target-feature +hvx-length64b %s | FileCheck \
|
||||
|
|
Loading…
Reference in New Issue