aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/opcode/ChangeLog9
-rw-r--r--include/opcode/arm.h16
2 files changed, 25 insertions, 0 deletions
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index 969ac70..8a57fac 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3 +1,12 @@
+2015-06-03 Matthew Wahab <matthew.wahab@arm.com>
+
+ * arm.h (FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1): New.
+ (ARM_ARCH_V8_1A): New.
+ (ARM_ARCH_V8_1A_FP): New.
+ (ARM_ARCH_V8_1A_SIMD): New.
+ (ARM_ARCH_V8_1A_CRYPTOV1): New.
+ (ARM_FEATURE_CORE): New.
+
2015-06-02 Matthew Wahab <matthew.wahab@arm.com>
* arm.h (ARM_EXT2_PAN): New.
diff --git a/include/opcode/arm.h b/include/opcode/arm.h
index d88ff27..a5aa3a1 100644
--- a/include/opcode/arm.h
+++ b/include/opcode/arm.h
@@ -208,6 +208,9 @@
ARM_FEATURE_COPROC (FPU_NEON_ARMV8 \
| FPU_VFP_ARMV8 \
| FPU_NEON_EXT_RDMA)
+#define FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1 \
+ ARM_FEATURE_COPROC (FPU_CRYPTO_ARMV8 | FPU_NEON_ARMV8 | FPU_VFP_ARMV8 \
+ | FPU_NEON_EXT_RDMA)
#define FPU_ARCH_ENDIAN_PURE ARM_FEATURE_COPROC (FPU_ENDIAN_PURE)
@@ -247,6 +250,7 @@
#define ARM_ARCH_V7M ARM_FEATURE_CORE_LOW (ARM_AEXT_V7M)
#define ARM_ARCH_V7EM ARM_FEATURE_CORE_LOW (ARM_AEXT_V7EM)
#define ARM_ARCH_V8A ARM_FEATURE_CORE_LOW (ARM_AEXT_V8A)
+#define ARM_ARCH_V8_1A ARM_FEATURE_CORE (ARM_AEXT_V8A, ARM_EXT2_PAN)
/* Some useful combinations: */
#define ARM_ARCH_NONE ARM_FEATURE_LOW (0, 0)
@@ -275,6 +279,17 @@
#define ARM_ARCH_V8A_CRYPTOV1 ARM_FEATURE_LOW (ARM_AEXT_V8A, \
FPU_ARCH_CRYPTO_NEON_VFP_ARMV8)
+/* v8.1-a+fp. */
+#define ARM_ARCH_V8_1A_FP ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
+ FPU_ARCH_VFP_ARMV8)
+/* v8.1-a+simd (implies fp). */
+#define ARM_ARCH_V8_1A_SIMD ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
+ FPU_ARCH_NEON_VFP_ARMV8_1)
+/* v8.1-a+crypto (implies simd+fp). */
+#define ARM_ARCH_V8_1A_CRYPTOV1 ARM_FEATURE (ARM_AEXT_V8A, ARM_EXT2_PAN, \
+ FPU_ARCH_CRYPTO_NEON_VFP_ARMV8_1)
+
+
/* There are too many feature bits to fit in a single word, so use a
structure. For simplicity we put all core features in array CORE
and everything else in the other. All the bits in element core[0]
@@ -328,6 +343,7 @@ typedef struct
((T1).core[0] == (T2).core[0] && (T1).core[1] == (T2).core[1])
#define ARM_FEATURE_LOW(core, coproc) {{(core), 0}, (coproc)}
+#define ARM_FEATURE_CORE(core1, core2) {{(core1), (core2)}, 0}
#define ARM_FEATURE_CORE_LOW(core) {{(core), 0}, 0}
#define ARM_FEATURE_CORE_HIGH(core) {{0, (core)}, 0}
#define ARM_FEATURE_COPROC(coproc) {{0, 0}, (coproc)}