+2018-01-09 Tamar Christina <tamar.christina@arm.com>
+
+ PR target/82641
+ * gcc.target/arm/pragma_fpu_attribute.c: Rewrite to use
+ no NEON and require softfp or hard float-abi.
+ * gcc.target/arm/pragma_fpu_attribute_2.c: Likewise.
+
2018-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/83572
/* Test for target attribute assembly extension generations. */
/* { dg-do compile } */
-/* { dg-require-effective-target arm_arch_v8a_ok } */
-/* { dg-additional-options "-std=gnu99 -mfpu=vfpv3-d16" } */
+/* { dg-require-effective-target arm_fp_ok } */
+/* { dg-add-options arm_fp } */
#include <stdint.h>
-#include <arm_neon.h>
-extern uint32_t bar();
+extern uint32_t bar ();
-__attribute__((target("fpu=crypto-neon-fp-armv8"))) poly64x1_t vsricw(poly64x1_t crc, uint32_t val)
+#pragma GCC target("fpu=vfpv3-d16")
+
+extern float fmaf (float, float, float);
+
+float
+__attribute__((target("fpu=vfpv4"))) vfma32 (float x, float y, float z)
{
- poly64x1_t res;
- asm("vsri %0, %1, %2" : "=r"(res) : "r"(crc), "r"(val));
- return res;
+ return fmaf (x, y, z);
}
uint32_t restored ()
return bar();
}
-/* { dg-final { scan-assembler-times {\.fpu\s+crypto-neon-fp-armv8} 1 } } */
+/* { dg-final { scan-assembler-times {\.fpu\s+vfpv4} 1 } } */
/* { dg-final { scan-assembler-times {\.fpu\s+vfpv3-d16} 1 } } */
/* Test for #pragma assembly extension generations. */
/* { dg-do compile } */
-/* { dg-require-effective-target arm_arch_v8a_ok } */
-/* { dg-additional-options "-std=gnu99 -mfpu=vfpv3-d16" } */
+/* { dg-require-effective-target arm_fp_ok } */
+/* { dg-add-options arm_fp } */
#include <stdint.h>
-#include <arm_neon.h>
+
+#pragma GCC target("fpu=vfpv3-d16")
extern uint32_t bar();
#pragma GCC push_options
-#pragma GCC target("fpu=crypto-neon-fp-armv8")
-poly64x1_t vsricw(poly64x1_t crc, uint32_t val)
+#pragma GCC target("fpu=vfpv4")
+extern float fmaf (float, float, float);
+
+float
+vfma32 (float x, float y, float z)
{
- poly64x1_t res;
- asm("vsri %0, %1, %2" : "=r"(res) : "r"(crc), "r"(val));
- return res;
+ return fmaf (x, y, z);
}
#pragma GCC pop_options
return bar();
}
-/* { dg-final { scan-assembler-times {\.fpu\s+crypto-neon-fp-armv8} 1 } } */
+/* { dg-final { scan-assembler-times {\.fpu\s+vfpv4} 1 } } */
/* { dg-final { scan-assembler-times {\.fpu\s+vfpv3-d16} 1 } } */