+2018-01-09 Sudakshina Das <sudi.das@arm.com>
+
+ * config/aarch64/aarch64-option-extensions.def: Define
+ AARCH64_OPT_EXTENSION for memtag, rng, sb, ssbs and predres.
+ * gcc/config/aarch64/aarch64.h (AARCH64_FL_RNG): New.
+ (AARCH64_FL_MEMTAG, ARCH64_FL_SB, AARCH64_FL_SSBS): New.
+ (AARCH64_FL_PREDRES): New.
+ (AARCH64_FL_FOR_ARCH8_5): Add AARCH64_FL_SB, AARCH64_FL_SSBS and
+ AARCH64_FL_PREDRES by default.
+ * gcc/doc/invoke.texi: Document rng, memtag, sb, ssbs and predres.
+
2018-01-09 Sudakshina Das <sudi.das@arm.com>
* config/aarch64/aarch64-arches.def: Define AARCH64_ARCH for
/* Enabling/Disabling "profile" does not enable/disable any other feature. */
AARCH64_OPT_EXTENSION("profile", AARCH64_FL_PROFILE, 0, 0, "")
+/* Enabling/Disabling "rng" only changes "rng". */
+AARCH64_OPT_EXTENSION("rng", AARCH64_FL_RNG, 0, 0, "")
+
+/* Enabling/Disabling "memtag" only changes "memtag". */
+AARCH64_OPT_EXTENSION("memtag", AARCH64_FL_MEMTAG, 0, 0, "")
+
+/* Enabling/Disabling "sb" only changes "sb". */
+AARCH64_OPT_EXTENSION("sb", AARCH64_FL_SB, 0, 0, "")
+
+/* Enabling/Disabling "ssbs" only changes "ssbs". */
+AARCH64_OPT_EXTENSION("ssbs", AARCH64_FL_SSBS, 0, 0, "")
+
+/* Enabling/Disabling "predres" only changes "predres". */
+AARCH64_OPT_EXTENSION("predres", AARCH64_FL_PREDRES, 0, 0, "")
+
#undef AARCH64_OPT_EXTENSION
/* ARMv8.5-A architecture extensions. */
#define AARCH64_FL_V8_5 (1 << 22) /* Has ARMv8.5-A features. */
+#define AARCH64_FL_RNG (1 << 23) /* ARMv8.5-A Random Number Insns. */
+#define AARCH64_FL_MEMTAG (1 << 24) /* ARMv8.5-A Memory Tagging
+ Extensions. */
+
+/* Speculation Barrier instruction supported. */
+#define AARCH64_FL_SB (1 << 25)
+
+/* Speculative Store Bypass Safe instruction supported. */
+#define AARCH64_FL_SSBS (1 << 26)
+
+/* Execution and Data Prediction Restriction instructions supported. */
+#define AARCH64_FL_PREDRES (1 << 27)
/* Has FP and SIMD. */
#define AARCH64_FL_FPSIMD (AARCH64_FL_FP | AARCH64_FL_SIMD)
(AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_V8_4 | AARCH64_FL_F16FML \
| AARCH64_FL_DOTPROD | AARCH64_FL_RCPC8_4)
#define AARCH64_FL_FOR_ARCH8_5 \
- (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_5)
+ (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_5 \
+ | AARCH64_FL_SB | AARCH64_FL_SSBS | AARCH64_FL_PREDRES)
/* Macros to test ISA flags. */
@item profile
Enable the Statistical Profiling extension. This option is only to enable the
extension at the assembler level and does not affect code generation.
+@item rng
+Enable the Armv8.5-a Random Number instructions. This option is only to
+enable the extension at the assembler level and does not affect code
+generation.
+@item memtag
+Enable the Armv8.5-a Memory Tagging Extensions. This option is only to
+enable the extension at the assembler level and does not affect code
+generation.
+@item sb
+Enable the Armv8-a Speculation Barrier instruction. This option is only to
+enable the extension at the assembler level and does not affect code
+generation. This option is enabled by default for @option{-march=armv8.5-a}.
+@item ssbs
+Enable the Armv8-a Speculative Store Bypass Safe instruction. This option
+is only to enable the extension at the assembler level and does not affect code
+generation. This option is enabled by default for @option{-march=armv8.5-a}.
+@item predres
+Enable the Armv8-a Execution and Data Prediction Restriction instructions.
+This option is only to enable the extension at the assembler level and does
+not affect code generation. This option is enabled by default for
+@option{-march=armv8.5-a}.
@end table