(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
simd/
vrndnzx_1.c
       1  /* Test the vrnd[32,64][z,x] intrinsics.  */
       2  
       3  /* { dg-do compile } */
       4  /* { dg-options "-O2 -march=armv8.5-a" } */
       5  
       6  #include "arm_neon.h"
       7  
       8  #ifdef __ARM_FEATURE_FRINT
       9  
      10  float32x2_t
      11  foo_32z (float32x2_t a)
      12  {
      13    return vrnd32z_f32 (a);
      14  }
      15  
      16  /* { dg-final { scan-assembler-times "frint32z\tv\[0-9\]+\.2s, v\[0-9\]+\.2s\n" 1 } } */
      17  
      18  float32x4_t
      19  foo_32z_q (float32x4_t a)
      20  {
      21    return vrnd32zq_f32 (a);
      22  }
      23  
      24  /* { dg-final { scan-assembler-times "frint32z\tv\[0-9\]+\.4s, v\[0-9\]+\.4s\n" 1 } } */
      25  
      26  float64x1_t
      27  foo_32z_f64 (float64x1_t a)
      28  {
      29    return vrnd32z_f64 (a);
      30  }
      31  
      32  /* { dg-final { scan-assembler-times "frint32z\td\[0-9\]+, d\[0-9\]+\n" 1 } } */
      33  
      34  float64x2_t
      35  foo_32z_q_f64 (float64x2_t a)
      36  {
      37    return vrnd32zq_f64 (a);
      38  }
      39  
      40  /* { dg-final { scan-assembler-times "frint32z\tv\[0-9\]+\.2d, v\[0-9\]+\.2d\n" 1 } } */
      41  
      42  float32x2_t
      43  foo_32x (float32x2_t a)
      44  {
      45    return vrnd32x_f32 (a);
      46  }
      47  
      48  /* { dg-final { scan-assembler-times "frint32x\tv\[0-9\]+\.2s, v\[0-9\]+\.2s\n" 1 } } */
      49  
      50  float32x4_t
      51  foo_32x_q (float32x4_t a)
      52  {
      53    return vrnd32xq_f32 (a);
      54  }
      55  
      56  /* { dg-final { scan-assembler-times "frint32x\tv\[0-9\]+\.4s, v\[0-9\]+\.4s\n" 1 } } */
      57  
      58  float64x1_t
      59  foo_32x_f64 (float64x1_t a)
      60  {
      61    return vrnd32x_f64 (a);
      62  }
      63  
      64  /* { dg-final { scan-assembler-times "frint32x\td\[0-9\]+, d\[0-9\]+\n" 1 } } */
      65  
      66  float64x2_t
      67  foo_32x_q_f64 (float64x2_t a)
      68  {
      69    return vrnd32xq_f64 (a);
      70  }
      71  
      72  /* { dg-final { scan-assembler-times "frint32x\tv\[0-9\]+\.2d, v\[0-9\]+\.2d\n" 1 } } */
      73  
      74  float32x2_t
      75  foo_64z (float32x2_t a)
      76  {
      77    return vrnd64z_f32 (a);
      78  }
      79  
      80  /* { dg-final { scan-assembler-times "frint64z\tv\[0-9\]+\.2s, v\[0-9\]+\.2s\n" 1 } } */
      81  
      82  float32x4_t
      83  foo_64z_q (float32x4_t a)
      84  {
      85    return vrnd64zq_f32 (a);
      86  }
      87  
      88  /* { dg-final { scan-assembler-times "frint64z\tv\[0-9\]+\.4s, v\[0-9\]+\.4s\n" 1 } } */
      89  
      90  float64x1_t
      91  foo_64z_f64 (float64x1_t a)
      92  {
      93    return vrnd64z_f64 (a);
      94  }
      95  
      96  /* { dg-final { scan-assembler-times "frint64z\td\[0-9\]+, d\[0-9\]+\n" 1 } } */
      97  
      98  float64x2_t
      99  foo_64z_q_f64 (float64x2_t a)
     100  {
     101    return vrnd64zq_f64 (a);
     102  }
     103  
     104  /* { dg-final { scan-assembler-times "frint64z\tv\[0-9\]+\.2d, v\[0-9\]+\.2d\n" 1 } } */
     105  
     106  float32x2_t
     107  foo_64x (float32x2_t a)
     108  {
     109    return vrnd64x_f32 (a);
     110  }
     111  
     112  /* { dg-final { scan-assembler-times "frint64x\tv\[0-9\]+\.2s, v\[0-9\]+\.2s\n" 1 } } */
     113  
     114  float32x4_t
     115  foo_64x_q (float32x4_t a)
     116  {
     117    return vrnd64xq_f32 (a);
     118  }
     119  
     120  /* { dg-final { scan-assembler-times "frint64x\tv\[0-9\]+\.4s, v\[0-9\]+\.4s\n" 1 } } */
     121  
     122  float64x1_t
     123  foo_64x_f64 (float64x1_t a)
     124  {
     125    return vrnd64x_f64 (a);
     126  }
     127  
     128  /* { dg-final { scan-assembler-times "frint64x\td\[0-9\]+, d\[0-9\]+\n" 1 } } */
     129  
     130  float64x2_t
     131  foo_64x_q_f64 (float64x2_t a)
     132  {
     133    return vrnd64xq_f64 (a);
     134  }
     135  
     136  /* { dg-final { scan-assembler-times "frint64x\tv\[0-9\]+\.2d, v\[0-9\]+\.2d\n" 1 } } */
     137  #endif