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
      10  foo8 (uint8x16_t value)
      11  {
      12    uint8x16_t b = {1, 2, 3, 4};
      13    return b;
      14  }
      15  
      16  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      17  /* { dg-final { scan-assembler "vstrb.*" }  } */
      18  /* { dg-final { scan-assembler "vldr.64.*" }  } */
      19  
      20  uint16x8_t
      21  foo16 (uint16x8_t value)
      22  {
      23    uint16x8_t b = {1, 2, 3};
      24    return b;
      25  }
      26  
      27  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      28  /* { dg-final { scan-assembler "vstrb.*" }  } */
      29  /* { dg-final { scan-assembler "vldr.64.*" }  } */
      30  
      31  uint32x4_t
      32  foo32 (uint32x4_t value)
      33  {
      34    uint32x4_t b = {1, 2};
      35    return b;
      36  }
      37  
      38  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      39  /* { dg-final { scan-assembler "vstrb.*" }  } */
      40  /* { dg-final { scan-assembler "vldr.64.*" }  } */
      41  
      42  uint64x2_t
      43  foo64 (uint64x2_t value)
      44  {
      45    uint64x2_t b = {1};
      46    return b;
      47  }
      48  
      49  /* { dg-final { scan-assembler "vmov\\tq\[0-7\], q\[0-7\]"  }  } */
      50  /* { dg-final { scan-assembler "vstrb.*" }  } */
      51  /* { dg-final { scan-assembler "vldr.64.*" }  } */