1  /* { dg-require-effective-target arm_hard_ok } */
       2  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
       3  /* { dg-add-options arm_v8_1m_mve } */
       4  /* { dg-additional-options "-mfloat-abi=hard" } */
       5  /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
       6  
       7  #include "arm_mve.h"
       8  
       9  uint8x16_t value1;
      10  uint16x8_t value2;
      11  uint32x4_t value3;
      12  uint64x2_t value4;
      13  
      14  uint8x16_t
      15  foo8 ()
      16  {
      17    uint8x16_t b = value1;
      18    return b;
      19  }
      20  
      21  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      22  /* { dg-final { scan-assembler "vstrb.*" }  } */
      23  /* { dg-final { scan-assembler "vldrb.8*" }  } */
      24  
      25  uint16x8_t
      26  foo16 ()
      27  {
      28    uint16x8_t b = value2;
      29    return b;
      30  }
      31  
      32  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      33  /* { dg-final { scan-assembler "vstrb.*" }  } */
      34  /* { dg-final { scan-assembler "vldrb.8*" }  } */
      35  
      36  uint32x4_t
      37  foo32 ()
      38  {
      39    uint32x4_t b = value3;
      40    return b;
      41  }
      42  
      43  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      44  /* { dg-final { scan-assembler "vstrb.*" }  } */
      45  /* { dg-final { scan-assembler "vldrb.8*" }  } */
      46  
      47  uint64x2_t
      48  foo64 ()
      49  {
      50    uint64x2_t b = value4;
      51    return b;
      52  }
      53  
      54  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      55  /* { dg-final { scan-assembler "vstrb.*" }  } */
      56  /* { dg-final { scan-assembler "vldrb.8*" }  } */