1  /* { dg-do run } */
       2  /* { dg-require-effective-target arm_mve_hw } */
       3  /* { dg-options "-O2" } */
       4  /* { dg-add-options arm_v8_1m_mve } */
       5  
       6  #include "arm_mve.h"
       7  #include "stdio.h"
       8  #include <stdlib.h>
       9  
      10  #define IMM 3
      11  
      12  void
      13  foo (int64_t acc, uint64_t acc1)
      14  {
      15    acc = sqshll (acc, IMM);
      16    if (acc != 128)
      17      abort();
      18    acc = srshrl (acc, IMM);
      19    if (acc != 16)
      20      abort();
      21    acc1 = uqshll (acc1, IMM);
      22    if (acc1 != 128)
      23      abort();
      24    acc1 = urshrl (acc1, IMM);
      25    if (acc1 != 16)
      26      abort();
      27  }
      28  
      29  int main()
      30  {
      31    int64_t acc = 16;
      32    uint64_t acc1 = 16;
      33    foo (acc, acc1);
      34    return 0;
      35  }