summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiogo N. Sampaio <diogo.sampaio@arm.com>2019-01-04 11:04:18 +0000
committerDiogo N. Sampaio <diogo.sampaio@arm.com>2019-01-04 11:04:18 +0000
commitc6ed91e100fad24ccfd6602997879c0f543f4935 (patch)
tree50baa45d564c4b90a5870233a8a2cde44ce40260
parent232ab01e6b3ce2f855af886f04ee79d0db7e392d (diff)
downloadbcm5719-llvm-c6ed91e100fad24ccfd6602997879c0f543f4935.tar.gz
bcm5719-llvm-c6ed91e100fad24ccfd6602997879c0f543f4935.zip
[AArch64] Add command-line option predres
Prediction control instructions are only mandatory from v8.5a onwards but is optional from Armv8.0-A. This patch adds a command line option to enable it by it's own. Differential Revision: https://reviews.llvm.org/D56007 llvm-svn: 350385
-rw-r--r--llvm/include/llvm/Support/AArch64TargetParser.def1
-rw-r--r--llvm/include/llvm/Support/AArch64TargetParser.h1
-rw-r--r--llvm/unittests/Support/TargetParserTest.cpp4
3 files changed, 5 insertions, 1 deletions
diff --git a/llvm/include/llvm/Support/AArch64TargetParser.def b/llvm/include/llvm/Support/AArch64TargetParser.def
index 1493b7a79c6..f1fcb83d379 100644
--- a/llvm/include/llvm/Support/AArch64TargetParser.def
+++ b/llvm/include/llvm/Support/AArch64TargetParser.def
@@ -74,6 +74,7 @@ AARCH64_ARCH_EXT_NAME("rng", AArch64::AEK_RAND, "+rand", "-rand")
AARCH64_ARCH_EXT_NAME("memtag", AArch64::AEK_MTE, "+mte", "-mte")
AARCH64_ARCH_EXT_NAME("ssbs", AArch64::AEK_SSBS, "+ssbs", "-ssbs")
AARCH64_ARCH_EXT_NAME("sb", AArch64::AEK_SB, "+sb", "-sb")
+AARCH64_ARCH_EXT_NAME("predres", AArch64::AEK_PREDRES, "+predres", "-predres")
#undef AARCH64_ARCH_EXT_NAME
#ifndef AARCH64_CPU_NAME
diff --git a/llvm/include/llvm/Support/AArch64TargetParser.h b/llvm/include/llvm/Support/AArch64TargetParser.h
index 648aa941379..76b77d47442 100644
--- a/llvm/include/llvm/Support/AArch64TargetParser.h
+++ b/llvm/include/llvm/Support/AArch64TargetParser.h
@@ -49,6 +49,7 @@ enum ArchExtKind : unsigned {
AEK_MTE = 1 << 19,
AEK_SSBS = 1 << 20,
AEK_SB = 1 << 21,
+ AEK_PREDRES = 1 << 22,
};
enum class ArchKind {
diff --git a/llvm/unittests/Support/TargetParserTest.cpp b/llvm/unittests/Support/TargetParserTest.cpp
index 3676deec631..28e995eae6b 100644
--- a/llvm/unittests/Support/TargetParserTest.cpp
+++ b/llvm/unittests/Support/TargetParserTest.cpp
@@ -990,7 +990,9 @@ TEST(TargetParserTest, AArch64ArchExtFeature) {
{"rng", "norng", "+rand", "-rand"},
{"memtag", "nomemtag", "+mte", "-mte"},
{"ssbs", "nossbs", "+ssbs", "-ssbs"},
- {"sb", "nosb", "+sb", "-sb"}};
+ {"sb", "nosb", "+sb", "-sb"},
+ {"predres", "nopredres", "+predres", "-predres"}
+};
for (unsigned i = 0; i < array_lengthof(ArchExt); i++) {
EXPECT_EQ(StringRef(ArchExt[i][2]),
OpenPOWER on IntegriCloud