(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
pragma_arch_attribute_3.c
       1  /* Test for #pragma assembly extension generations.  */
       2  /* { dg-do compile } */
       3  /* { dg-require-effective-target arm_arch_v8a_ok } */
       4  /* { dg-add-options arm_arch_v8a } */
       5  /* { dg-additional-options "-std=gnu99" } */
       6  
       7  #include <stdint.h>
       8  
       9  extern uint32_t bar();
      10  
      11  #pragma GCC push_options
      12  #pragma GCC target("arch=armv8-a+crc")
      13  uint32_t crc32cw(uint32_t crc, uint32_t val)
      14  {
      15      uint32_t res;
      16      asm("crc32cw %0, %1, %2" : "=r"(res) : "r"(crc), "r"(val));
      17      return res;
      18  }
      19  #pragma GCC pop_options
      20  
      21  uint32_t restored ()
      22  {
      23    return bar();
      24  }
      25  
      26  /* { dg-final { scan-assembler-times {\.arch\s+armv8-a} 3 } } */
      27  /* { dg-final { scan-assembler-times {\.arch_extension\s+crc} 1 } } */
      28