1 /* { dg-do compile { target { arm*-*-* } } } */
2 /* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
3 /* { dg-add-options arm_v8_2a_bf16_neon } */
4 
5 #include "arm_neon.h"
6 
7 /* Test lane index limits for vfmabq_lane_f32  */
8 float32x4_t
test_vfmabq_lane_f32_low(float32x4_t r,bfloat16x8_t a,bfloat16x4_t b)9 test_vfmabq_lane_f32_low (float32x4_t r, bfloat16x8_t a, bfloat16x4_t b)
10 {
11   /* { dg-error "lane -1 out of range 0 - 3" "" { target *-*-* } 0 } */
12   return vbfmlalbq_lane_f32 (r, a, b, -1);
13 }
14 
15 float32x4_t
test_vfmabq_lane_f32_high(float32x4_t r,bfloat16x8_t a,bfloat16x4_t b)16 test_vfmabq_lane_f32_high (float32x4_t r, bfloat16x8_t a, bfloat16x4_t b)
17 {
18   /* { dg-error "lane 4 out of range 0 - 3" "" { target *-*-* } 0 } */
19   return vbfmlalbq_lane_f32 (r, a, b, 4);
20 }
21 
22 /* Test lane index limits for vfmatq_lane_f32  */
23 float32x4_t
test_vfmatq_lane_f32_low(float32x4_t r,bfloat16x8_t a,bfloat16x4_t b)24 test_vfmatq_lane_f32_low (float32x4_t r, bfloat16x8_t a, bfloat16x4_t b)
25 {
26   /* { dg-error "lane -2 out of range 0 - 3" "" { target *-*-* } 0 } */
27   return vbfmlaltq_lane_f32 (r, a, b, -2);
28 }
29 
30 float32x4_t
test_vfmatq_lane_f32_high(float32x4_t r,bfloat16x8_t a,bfloat16x4_t b)31 test_vfmatq_lane_f32_high (float32x4_t r, bfloat16x8_t a, bfloat16x4_t b)
32 {
33   /* { dg-error "lane 5 out of range 0 - 3" "" { target *-*-* } 0 } */
34   return vbfmlaltq_lane_f32 (r, a, b, 5);
35 }
36