(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
arm/
simd/
bf16_cvt_1.c
       1  /* { dg-do assemble } */
       2  /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
       3  /* { dg-options "-save-temps -O2" } */
       4  /* { dg-add-options arm_v8_2a_bf16_neon } */
       5  
       6  #include "arm_neon.h"
       7  
       8  float32_t test_vcvtah_f32_bf16 (bfloat16_t a)
       9  {
      10    return vcvtah_f32_bf16 (a);
      11  }
      12  
      13  bfloat16_t test_vcvth_bf16_f32 (float32_t a)
      14  {
      15    return vcvth_bf16_f32 (a);
      16  }
      17  
      18  float32x4_t test_vcvt_f32_bf16 (bfloat16x4_t a)
      19  {
      20    return vcvt_f32_bf16 (a);
      21  }
      22  
      23  float32x4_t test_vcvtq_low_f32_bf16 (bfloat16x8_t a)
      24  {
      25    return vcvtq_low_f32_bf16 (a);
      26  }
      27  
      28  float32x4_t test_vcvtq_high_f32_bf16 (bfloat16x8_t a)
      29  {
      30    return vcvtq_high_f32_bf16 (a);
      31  }
      32  
      33  bfloat16x4_t test_vcvt_bf16_f32 (float32x4_t a)
      34  {
      35    return vcvt_bf16_f32 (a);
      36  }
      37  
      38  bfloat16x8_t test_vcvtq_low_bf16_f32 (float32x4_t a)
      39  {
      40    return vcvtq_low_bf16_f32 (a);
      41  }
      42  
      43  bfloat16x8_t test_vcvtq_high_bf16_f32 (bfloat16x8_t inactive, float32x4_t a)
      44  {
      45    return vcvtq_high_bf16_f32 (inactive, a);
      46  }
      47  
      48  /* { dg-final { scan-assembler-times {vcvtb.bf16.f32\ts[0-9]+, s[0-9]+\n} 1 } } */
      49  /* { dg-final { scan-assembler-times {vcvt.bf16.f32\td[0-9]+, q[0-9]+\n} 3 } } */
      50  /* { dg-final { scan-assembler-times {vshl.i32\td[0-9]+, d[0-9]+, #16} 1 } } */
      51  /* { dg-final { scan-assembler-times {vshll.u32\tq[0-9]+, d[0-9]+, #16} 3 } } */