diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x2.c
index 6e56ff171f8..bc2aad09a9c 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x2.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x2.c
@@ -1,7 +1,8 @@
 /* We haven't implemented these intrinsics for arm yet.  */
 /* { dg-do run } */
-/* { dg-skip-if "unimplemented" { arm*-*-* } } */
 /* { dg-options "-O3" } */
+/* { dg-require-effective-target arm_neon_ok { target arm*-*-* } } */
+/* { dg-add-options arm_neon } */
 
 #include <arm_neon.h>
 #include "arm-neon-ref.h"
@@ -40,7 +41,6 @@ VARIANT (int32, 2, _s32)	\
 VARIANT (int64, 1, _s64)	\
 VARIANT (poly8, 8, _p8)		\
 VARIANT (poly16, 4, _p16)	\
-VARIANT (float16, 4, _f16)	\
 VARIANT (float32, 2, _f32)	\
 VARIANT (uint8, 16, q_u8)	\
 VARIANT (uint16, 8, q_u16)	\
@@ -52,11 +52,16 @@ VARIANT (int32, 4, q_s32)	\
 VARIANT (int64, 2, q_s64)	\
 VARIANT (poly8, 16, q_p8)	\
 VARIANT (poly16, 8, q_p16)	\
-VARIANT (float16, 8, q_f16)	\
 VARIANT (float32, 4, q_f32)
 
+/* On arm, poly64 and float16 have dedicated tests
+   (gcc.target/arm/simd/vld1*) */
 #ifdef __aarch64__
 #define VARIANTS(VARIANT) VARIANTS_1(VARIANT)	\
+VARIANT (poly64, 1, _p64)			\
+VARIANT (poly64, 2, q_p64)			\
+VARIANT (float16, 4, _f16)			\
+VARIANT (float16, 8, q_f16)			\
 VARIANT (mfloat8, 8, _mf8)			\
 VARIANT (mfloat8, 16, q_mf8)			\
 VARIANT (float64, 1, _f64)			\
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c
index 42aeadf1c7d..5b86ed32930 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c
@@ -1,7 +1,8 @@
 /* We haven't implemented these intrinsics for arm yet.  */
 /* { dg-do run } */
-/* { dg-skip-if "unimplemented" { arm*-*-* } } */
 /* { dg-options "-O3" } */
+/* { dg-require-effective-target arm_neon_ok { target arm*-*-* } } */
+/* { dg-add-options arm_neon } */
 
 #include <arm_neon.h>
 #include "arm-neon-ref.h"
@@ -41,7 +42,6 @@ VARIANT (int32, 2, _s32)	\
 VARIANT (int64, 1, _s64)	\
 VARIANT (poly8, 8, _p8)		\
 VARIANT (poly16, 4, _p16)	\
-VARIANT (float16, 4, _f16)	\
 VARIANT (float32, 2, _f32)	\
 VARIANT (uint8, 16, q_u8)	\
 VARIANT (uint16, 8, q_u16)	\
@@ -53,11 +53,16 @@ VARIANT (int32, 4, q_s32)	\
 VARIANT (int64, 2, q_s64)	\
 VARIANT (poly8, 16, q_p8)	\
 VARIANT (poly16, 8, q_p16)	\
-VARIANT (float16, 8, q_f16)	\
 VARIANT (float32, 4, q_f32)
 
+/* On arm, poly64 and float16 have dedicated tests
+   (gcc.target/arm/simd/vld1*) */
 #ifdef __aarch64__
 #define VARIANTS(VARIANT) VARIANTS_1(VARIANT)	\
+VARIANT (poly64, 1, _p64)			\
+VARIANT (poly64, 2, q_p64)			\
+VARIANT (float16, 4, _f16)			\
+VARIANT (float16, 8, q_f16)			\
 VARIANT (mfloat8, 8, _mf8)			\
 VARIANT (mfloat8, 16, q_mf8)			\
 VARIANT (float64, 1, _f64)			\
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c
index 694fda86e72..39363a27e5f 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c
@@ -1,7 +1,8 @@
 /* We haven't implemented these intrinsics for arm yet.  */
 /* { dg-do run } */
-/* { dg-skip-if "unimplemented" { arm*-*-* } } */
 /* { dg-options "-O3" } */
+/* { dg-require-effective-target arm_neon_ok { target arm*-*-* } } */
+/* { dg-add-options arm_neon } */
 
 #include <stdbool.h>
 #include <arm_neon.h>
@@ -43,8 +44,6 @@ VARIANT (int32, 2, _s32)	\
 VARIANT (int64, 1, _s64)	\
 VARIANT (poly8, 8, _p8)		\
 VARIANT (poly16, 4, _p16)	\
-VARIANT (poly64, 1, _p64)	\
-VARIANT (float16, 4, _f16)	\
 VARIANT (float32, 2, _f32)	\
 VARIANT (uint8, 16, q_u8)	\
 VARIANT (uint16, 8, q_u16)	\
@@ -56,12 +55,16 @@ VARIANT (int32, 4, q_s32)	\
 VARIANT (int64, 2, q_s64)	\
 VARIANT (poly8, 16, q_p8)	\
 VARIANT (poly16, 8, q_p16)	\
-VARIANT (poly64, 2, q_p64)	\
-VARIANT (float16, 8, q_f16)	\
 VARIANT (float32, 4, q_f32)
 
+/* On arm, poly64 and float16 have dedicated tests
+   (gcc.target/arm/simd/vld1*) */
 #ifdef __aarch64__
 #define VARIANTS(VARIANT) VARIANTS_1(VARIANT)	\
+VARIANT (poly64, 1, _p64)			\
+VARIANT (poly64, 2, q_p64)			\
+VARIANT (float16, 4, _f16)			\
+VARIANT (float16, 8, q_f16)			\
 VARIANT (mfloat8, 8, _mf8)			\
 VARIANT (mfloat8, 16, q_mf8)			\
 VARIANT (float64, 1, _f64)			\
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c
index 69be40a444a..357f381ed96 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c
@@ -1,7 +1,8 @@
 /* We haven't implemented these intrinsics for arm yet.  */
 /* { dg-do run } */
-/* { dg-skip-if "unimplemented" { arm*-*-* } } */
 /* { dg-options "-O3" } */
+/* { dg-require-effective-target arm_neon_ok { target arm*-*-* } } */
+/* { dg-add-options arm_neon } */
 
 #include <arm_neon.h>
 #include "arm-neon-ref.h"
@@ -40,7 +41,6 @@ VARIANT (int32, 2, _s32)	\
 VARIANT (int64, 1, _s64)	\
 VARIANT (poly8, 8, _p8)		\
 VARIANT (poly16, 4, _p16)	\
-VARIANT (float16, 4, _f16)	\
 VARIANT (float32, 2, _f32)	\
 VARIANT (uint8, 16, q_u8)	\
 VARIANT (uint16, 8, q_u16)	\
@@ -52,11 +52,16 @@ VARIANT (int32, 4, q_s32)	\
 VARIANT (int64, 2, q_s64)	\
 VARIANT (poly8, 16, q_p8)	\
 VARIANT (poly16, 8, q_p16)	\
-VARIANT (float16, 8, q_f16)	\
 VARIANT (float32, 4, q_f32)
 
+/* On arm, poly64 and float16 have dedicated tests
+   (gcc.target/arm/simd/vst1*) */
 #ifdef __aarch64__
 #define VARIANTS(VARIANT) VARIANTS_1(VARIANT)	\
+VARIANT (poly64, 1, _p64)			\
+VARIANT (poly64, 2, q_p64)			\
+VARIANT (float16, 4, _f16)			\
+VARIANT (float16, 8, q_f16)			\
 VARIANT (mfloat8, 8, _mf8)			\
 VARIANT (mfloat8, 16, q_mf8)			\
 VARIANT (float64, 1, _f64)			\
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c
index 4d42bccec3c..83e95e90f69 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c
@@ -1,7 +1,8 @@
 /* We haven't implemented these intrinsics for arm yet.  */
 /* { dg-do run } */
-/* { dg-skip-if "unimplemented" { arm*-*-* } } */
 /* { dg-options "-O3" } */
+/* { dg-require-effective-target arm_neon_ok { target arm*-*-* } } */
+/* { dg-add-options arm_neon } */
 
 #include <arm_neon.h>
 #include "arm-neon-ref.h"
@@ -41,7 +42,6 @@ VARIANT (int32, 2, _s32)	\
 VARIANT (int64, 1, _s64)	\
 VARIANT (poly8, 8, _p8)		\
 VARIANT (poly16, 4, _p16)	\
-VARIANT (float16, 4, _f16)	\
 VARIANT (float32, 2, _f32)	\
 VARIANT (uint8, 16, q_u8)	\
 VARIANT (uint16, 8, q_u16)	\
@@ -53,11 +53,16 @@ VARIANT (int32, 4, q_s32)	\
 VARIANT (int64, 2, q_s64)	\
 VARIANT (poly8, 16, q_p8)	\
 VARIANT (poly16, 8, q_p16)	\
-VARIANT (float16, 8, q_f16)	\
 VARIANT (float32, 4, q_f32)
 
+/* On arm, poly64 and float16 have dedicated tests
+   (gcc.target/arm/simd/vst1*) */
 #ifdef __aarch64__
 #define VARIANTS(VARIANT) VARIANTS_1(VARIANT)	\
+VARIANT (poly64, 1, _p64)			\
+VARIANT (poly64, 2, q_p64)			\
+VARIANT (float16, 4, _f16)			\
+VARIANT (float16, 8, q_f16)			\
 VARIANT (mfloat8, 8, _mf8)			\
 VARIANT (mfloat8, 16, q_mf8)			\
 VARIANT (float64, 1, _f64)			\
diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c
index ddc7fa59465..ce8bf93a58b 100644
--- a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c
+++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c
@@ -1,7 +1,8 @@
 /* We haven't implemented these intrinsics for arm yet.  */
 /* { dg-do run } */
-/* { dg-skip-if "unimplemented" { arm*-*-* } } */
 /* { dg-options "-O3" } */
+/* { dg-require-effective-target arm_neon_ok { target arm*-*-* } } */
+/* { dg-add-options arm_neon } */
 
 #include <arm_neon.h>
 #include "arm-neon-ref.h"
@@ -42,8 +43,6 @@ VARIANT (int32, 2, _s32)	\
 VARIANT (int64, 1, _s64)	\
 VARIANT (poly8, 8, _p8)		\
 VARIANT (poly16, 4, _p16)	\
-VARIANT (poly64, 1, _p64)	\
-VARIANT (float16, 4, _f16)	\
 VARIANT (float32, 2, _f32)	\
 VARIANT (uint8, 16, q_u8)	\
 VARIANT (uint16, 8, q_u16)	\
@@ -55,12 +54,16 @@ VARIANT (int32, 4, q_s32)	\
 VARIANT (int64, 2, q_s64)	\
 VARIANT (poly8, 16, q_p8)	\
 VARIANT (poly16, 8, q_p16)	\
-VARIANT (poly64, 2, q_p64)	\
-VARIANT (float16, 8, q_f16)	\
 VARIANT (float32, 4, q_f32)
 
+/* On arm, poly64 and float16 have dedicated tests
+   (gcc.target/arm/simd/vst1*) */
 #ifdef __aarch64__
 #define VARIANTS(VARIANT) VARIANTS_1(VARIANT)	\
+VARIANT (poly64, 1, _p64)			\
+VARIANT (poly64, 2, q_p64)			\
+VARIANT (float16, 4, _f16)			\
+VARIANT (float16, 8, q_f16)			\
 VARIANT (mfloat8, 8, _mf8)			\
 VARIANT (mfloat8, 16, q_mf8)			\
 VARIANT (float64, 1, _f64)			\
