about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/target-feature/aarch64-neon-works.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/test/ui/target-feature/aarch64-neon-works.rs b/src/test/ui/target-feature/aarch64-neon-works.rs
new file mode 100644
index 00000000000..7ddcfe7b290
--- /dev/null
+++ b/src/test/ui/target-feature/aarch64-neon-works.rs
@@ -0,0 +1,24 @@
+// only-aarch64
+// run-pass
+use std::arch::aarch64::*;
+
+// Smoke test to verify aarch64 code that enables NEON compiles.
+fn main() {
+    let zero = if is_aarch64_feature_detected!("neon") {
+        unsafe {
+            let zeros = zero_vector();
+            vget_lane_u8::<1>(1)
+        }
+    } else {
+        0
+    };
+    if cfg!(target feature = "neon") {
+        assert_eq!(zero, 0)
+    };
+}
+
+
+#[target_feature(enable = "neon")]
+unsafe fn zero_vector() -> uint8x16_t {
+    vmovq_n_u8(0)
+}