Commit f676330e by Tamar Christina Committed by Tamar Christina

re PR target/82641 (Unable to enable crc32 for a certain function with target…

re PR target/82641 (Unable to enable crc32 for a certain function with target attribute on ARM (aarch32))

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.

From-SVN: r256375
parent 1f1229d5
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 ()
......@@ -20,5 +22,5 @@ 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
......@@ -23,5 +25,5 @@ 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 } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment