+2019-01-17 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/88850
+ * gcc.target/arm/pr51968.c: Use neon intrinsics.
+
2019-01-17 Andrew Stubbs <ams@codesourcery.com>
Kwok Cheung Yeung <kcy@codesourcery.com>
Julian Brown <julian@codesourcery.com>
/* PR target/51968 */
/* { dg-do compile } */
-/* { dg-options "-O2 -Wno-implicit-function-declaration -march=armv7-a -mfloat-abi=softfp -mfpu=neon" } */
+/* { dg-options "-O2 -march=armv7-a -mfloat-abi=softfp -mfpu=neon" } */
/* { dg-require-effective-target arm_neon_ok } */
+#include <arm_neon.h>
-typedef __builtin_neon_qi int8x8_t __attribute__ ((__vector_size__ (8)));
-typedef __builtin_neon_uqi uint8x8_t __attribute__ ((__vector_size__ (8)));
-typedef __builtin_neon_qi int8x16_t __attribute__ ((__vector_size__ (16)));
-typedef __builtin_neon_hi int16x8_t __attribute__ ((__vector_size__ (16)));
-typedef __builtin_neon_si int32x4_t __attribute__ ((__vector_size__ (16)));
-struct T { int8x8_t val[2]; };
+struct T { int8x8x2_t val; };
int y;
void
if (y)
{
struct T m;
- __builtin_neon_vuzpv8qi (&m.val[0], z, x);
+ m.val = vuzp_s8 (z, x);
}
for (;;)
{
int8x16_t g;
int8x8_t h, j, k;
struct T m;
- j = __builtin_neon_vqmovunv8hi (b);
- g = __builtin_neon_vcombinev8qi (j, h);
- k = __builtin_neon_vget_lowv16qi (g);
- __builtin_neon_vuzpv8qi (&m.val[0], k, n);
+ j = vqmovn_s16 (b);
+ g = vcombine_s8 (j, h);
+ k = vget_low_s8 (g);
+ m.val = vuzp_s8 (k, n);
}
}