]> granicus.if.org Git - llvm/commitdiff
[AArch64] Add command-line option predres
authorDiogo N. Sampaio <diogo.sampaio@arm.com>
Fri, 4 Jan 2019 11:04:18 +0000 (11:04 +0000)
committerDiogo N. Sampaio <diogo.sampaio@arm.com>
Fri, 4 Jan 2019 11:04:18 +0000 (11:04 +0000)
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

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

include/llvm/Support/AArch64TargetParser.def
include/llvm/Support/AArch64TargetParser.h
unittests/Support/TargetParserTest.cpp

index 1493b7a79c60c774390126d73d1f60f7a72fedfd..f1fcb83d3797c12cccdf8248f3ccb56f1e57b8dd 100644 (file)
@@ -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
index 648aa941379e4cd669521cc96f90fabda24624e6..76b77d47442891ef7880423056f11a5c6ba8794f 100644 (file)
@@ -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 {
index 3676deec6319f8eb344d0d43b1c5f78fc423bf9c..28e995eae6bf767956fa99fba466f0a361ca8864 100644 (file)
@@ -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]),