1  /* { dg-do assemble } */
       2  /* { dg-require-effective-target arm_hard_ok } */
       3  /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
       4  /* { dg-add-options arm_v8_2a_bf16_neon } */
       5  /* { dg-additional-options "-save-temps -O2 -mfloat-abi=hard" }  */
       6  /* { dg-final { check-function-bodies "**" "" } } */
       7  
       8  #include "arm_neon.h"
       9  
      10  
      11  /*
      12  **test_vld2_bf16:
      13  **	...
      14  **	vld[0-9]+.16	{d[0-9]+-d[0-9]+}, \[r[0-9]+\]
      15  **	...
      16  */
      17  bfloat16x4x2_t
      18  test_vld2_bf16 (bfloat16_t * ptr)
      19  {
      20    return vld2_bf16 (ptr);
      21  }
      22  
      23  /*
      24  **test_vld2q_bf16:
      25  **	...
      26  **	vld[0-9]+.16	{d[0-9]+-d[0-9]+}, \[r[0-9]+\]
      27  **	...
      28  */
      29  bfloat16x8x2_t
      30  test_vld2q_bf16 (bfloat16_t * ptr)
      31  {
      32    return vld2q_bf16 (ptr);
      33  }
      34  
      35  /*
      36  **test_vld2_dup_bf16:
      37  **	...
      38  **	vld[0-9]+.16	{d[0-9]+\[\], d[0-9]+\[\]}, \[r[0-9]+\]
      39  **	...
      40  */
      41  bfloat16x4x2_t
      42  test_vld2_dup_bf16 (bfloat16_t * ptr)
      43  {
      44    return vld2_dup_bf16 (ptr);
      45  }
      46  
      47  /*
      48  **test_vld2q_dup_bf16:
      49  **	...
      50  **	vld[0-9]+.16	{d[0-9]+, d[0-9]+, d[0-9]+, d[0-9]+}, \[r[0-9]+\]
      51  **	...
      52  */
      53  bfloat16x8x2_t
      54  test_vld2q_dup_bf16 (bfloat16_t * ptr)
      55  {
      56    return vld2q_dup_bf16 (ptr);
      57  }
      58  
      59  /*
      60  **test_vld3_bf16:
      61  **	...
      62  **	vld[0-9]+.16	{d[0-9]+-d[0-9]+}, \[r[0-9]+\]
      63  **	...
      64  */
      65  bfloat16x4x3_t
      66  test_vld3_bf16 (bfloat16_t * ptr)
      67  {
      68    return vld3_bf16 (ptr);
      69  }
      70  
      71  /*
      72  **test_vld3q_bf16:
      73  **	...
      74  **	vld[0-9]+.16	{d[0-9]+, d[0-9]+, d[0-9]+}, \[r[0-9]+\]
      75  **	...
      76  */
      77  bfloat16x8x3_t
      78  test_vld3q_bf16 (bfloat16_t * ptr)
      79  {
      80    return vld3q_bf16 (ptr);
      81  }
      82  
      83  /*
      84  **test_vld3_dup_bf16:
      85  **	...
      86  **	vld[0-9]+.16	{d[0-9]+\[\], d[0-9]+\[\], d[0-9]+\[\]}, \[r[0-9]+\]
      87  **	...
      88  */
      89  bfloat16x4x3_t
      90  test_vld3_dup_bf16 (bfloat16_t * ptr)
      91  {
      92    return vld3_dup_bf16 (ptr);
      93  }
      94  
      95  /*
      96  **test_vld3q_dup_bf16:
      97  **	...
      98  **	vld[0-9]+.16	{d[0-9]+\[\], d[0-9]+\[\], d[0-9]+\[\]}, \[r[0-9]+\]
      99  **	...
     100  */
     101  bfloat16x8x3_t
     102  test_vld3q_dup_bf16 (bfloat16_t * ptr)
     103  {
     104    return vld3q_dup_bf16 (ptr);
     105  }
     106  
     107  /*
     108  **test_vld4_bf16:
     109  **	...
     110  **	vld4.16	{d[0-9]+-d[0-9]+}, \[r[0-9]+\]
     111  **	...
     112  */
     113  bfloat16x4x4_t
     114  test_vld4_bf16 (bfloat16_t * ptr)
     115  {
     116    return vld4_bf16 (ptr);
     117  }
     118  
     119  /*
     120  **test_vld4q_bf16:
     121  **	...
     122  **	vld4.16	{d[0-9]+, d[0-9]+, d[0-9]+, d[0-9]+}, \[r[0-9]+\]
     123  **	...
     124  */
     125  bfloat16x8x4_t
     126  test_vld4q_bf16 (bfloat16_t * ptr)
     127  {
     128    return vld4q_bf16 (ptr);
     129  }
     130  
     131  /*
     132  **test_vld4_dup_bf16:
     133  **	...
     134  **	vld4.16	{d[0-9]+\[\], d[0-9]+\[\], d[0-9]+\[\], d[0-9]+\[\]}, \[r[0-9]+\]
     135  **	...
     136  */
     137  bfloat16x4x4_t
     138  test_vld4_dup_bf16 (bfloat16_t * ptr)
     139  {
     140    return vld4_dup_bf16 (ptr);
     141  }
     142  
     143  /*
     144  **test_vld4q_dup_bf16:
     145  **	...
     146  **	vld4.16	{d[0-9]+\[\], d[0-9]+\[\], d[0-9]+\[\], d[0-9]+\[\]}, \[r[0-9]+\]
     147  **	...
     148  */
     149  bfloat16x8x4_t
     150  test_vld4q_dup_bf16 (bfloat16_t * ptr)
     151  {
     152    return vld4q_dup_bf16 (ptr);
     153  }