aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack O'Connor <[email protected]>2021-07-29 23:46:29 -0400
committerJack O'Connor <[email protected]>2021-08-24 15:00:15 -0400
commit080b3330159a19407dddb407dc917925ac40c4d3 (patch)
tree704c94cbacc72015f7b40462d7137778c6c35b38
parentb8e2dda186c69cece5412f8571bfabf14fd3d7ab (diff)
explicitly #error on big-endian ARM
-rw-r--r--c/blake3_neon.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/c/blake3_neon.c b/c/blake3_neon.c
index 46691f5..a6f6da9 100644
--- a/c/blake3_neon.c
+++ b/c/blake3_neon.c
@@ -2,7 +2,12 @@
#include <arm_neon.h>
-// TODO: This is probably incorrect for big-endian ARM. How should that work?
+#ifdef __ARM_BIG_ENDIAN
+#error "This implementation only supports little-endian ARM."
+// It might be that all we need for big-endian support here is to get the loads
+// and stores right, but step zero would be finding a way to test it in CI.
+#endif
+
INLINE uint32x4_t loadu_128(const uint8_t src[16]) {
// vld1q_u32 has alignment requirements. Don't use it.
uint32x4_t x;