1  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
       2  /* { dg-add-options arm_v8_1m_mve_fp } */
       3  /* { dg-additional-options "-O2 -fno-ipa-icf" } */
       4  
       5  #include "arm_mve.h"
       6  int8x16_t value1;
       7  int64x2_t value2;
       8  int32x4_t value3;
       9  uint8x16_t value4;
      10  uint16x8_t value5;
      11  uint64x2_t value6;
      12  uint32x4_t value7;
      13  float16x8_t value8;
      14  float32x4_t value9;
      15  
      16  int16x8_t
      17  foo ()
      18  {
      19    int16x8_t r1,r2,r3,r4,r5,r6,r7;
      20    r1 = vaddq_s16 (vreinterpretq_s16_s8 (value1), vreinterpretq_s16_s64 (value2));
      21    r2 = vaddq_s16 (r1, vreinterpretq_s16_s32 (value3));
      22    r3 = vaddq_s16 (r2, vreinterpretq_s16_u8 (value4));
      23    r4 = vaddq_s16 (r3, vreinterpretq_s16_u16 (value5));
      24    r5 = vaddq_s16 (r4, vreinterpretq_s16_u64 (value6));
      25    r6 = vaddq_s16 (r5, vreinterpretq_s16_u32 (value7));
      26    r7 = vaddq_s16 (r6, vreinterpretq_s16_f16 (value8));
      27    return vaddq_s16 (r7, vreinterpretq_s16_f32 (value9));
      28  }
      29  
      30  int16x8_t
      31  foo1 ()
      32  {
      33    int16x8_t r1,r2,r3,r4,r5,r6,r7;
      34    r1 = vaddq_s16 (vreinterpretq_s16 (value1), vreinterpretq_s16 (value2));
      35    r2 = vaddq_s16 (r1, vreinterpretq_s16 (value3));
      36    r3 = vaddq_s16 (r2, vreinterpretq_s16 (value4));
      37    r4 = vaddq_s16 (r3, vreinterpretq_s16 (value5));
      38    r5 = vaddq_s16 (r4, vreinterpretq_s16 (value6));
      39    r6 = vaddq_s16 (r5, vreinterpretq_s16 (value7));
      40    r7 = vaddq_s16 (r6, vreinterpretq_s16 (value8));
      41    return vaddq_s16 (r7, vreinterpretq_s16 (value9));
      42  }
      43  
      44  /* { dg-final { scan-assembler-times "vadd.i16" 16 } } */