summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index a5144663281..c9670a41af9 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -3399,6 +3399,7 @@ class AArch64TargetInfo : public TargetInfo {
};
unsigned FPU;
+ unsigned CRC;
unsigned Crypto;
static const Builtin::Info BuiltinInfo[];
@@ -3475,6 +3476,9 @@ public:
Builder.defineMacro("__ARM_NEON_FP", "7");
}
+ if (CRC)
+ Builder.defineMacro("__ARM_FEATURE_CRC32");
+
if (Crypto) {
Builder.defineMacro("__ARM_FEATURE_CRYPTO");
}
@@ -3498,10 +3502,13 @@ public:
bool handleTargetFeatures(std::vector<std::string> &Features,
DiagnosticsEngine &Diags) override {
FPU = FPUMode;
+ CRC = 0;
Crypto = 0;
for (unsigned i = 0, e = Features.size(); i != e; ++i) {
if (Features[i] == "+neon")
FPU = NeonMode;
+ if (Features[i] == "+crc")
+ CRC = 1;
if (Features[i] == "+crypto")
Crypto = 1;
}
@@ -4492,6 +4499,7 @@ class ARM64TargetInfo : public TargetInfo {
};
unsigned FPU;
+ unsigned CRC;
unsigned Crypto;
static const Builtin::Info BuiltinInfo[];
@@ -4589,6 +4597,9 @@ public:
Builder.defineMacro("__ARM_NEON_FP", "7");
}
+ if (CRC)
+ Builder.defineMacro("__ARM_FEATURE_CRC32");
+
if (Crypto)
Builder.defineMacro("__ARM_FEATURE_CRYPTO");
}
@@ -4608,10 +4619,13 @@ public:
bool handleTargetFeatures(std::vector<std::string> &Features,
DiagnosticsEngine &Diags) override {
FPU = FPUMode;
+ CRC = 0;
Crypto = 0;
for (unsigned i = 0, e = Features.size(); i != e; ++i) {
if (Features[i] == "+neon")
FPU = NeonMode;
+ if (Features[i] == "+crc")
+ CRC = 1;
if (Features[i] == "+crypto")
Crypto = 1;
}
OpenPOWER on IntegriCloud