1  /* { dg-do compile } */
       2  /* { dg-options "-O3 -mzarch -march=arch13 -mzvector -fno-asynchronous-unwind-tables -dp" } */
       3  
       4  #include <vecintrin.h>
       5  
       6  vector unsigned char
       7  foo1 (vector unsigned char a, vector unsigned char b)
       8  {
       9    return vec_sldb (a, b, 0);
      10  }
      11  
      12  vector signed char
      13  foo2 (vector signed char a, vector signed char b)
      14  {
      15    return vec_sldb (a, b, 1);
      16  }
      17  
      18  
      19  vector unsigned short
      20  foo3 (vector unsigned short a, vector unsigned short b)
      21  {
      22    return vec_sldb (a, b, 2);
      23  }
      24  
      25  vector signed short
      26  foo4 (vector signed short a, vector signed short b)
      27  {
      28    return vec_sldb (a, b, 3);
      29  }
      30  
      31  vector unsigned int
      32  foo5 (vector unsigned int a, vector unsigned int *b)
      33  {
      34    return vec_sldb (a, *b, 4);
      35  }
      36  
      37  vector signed int
      38  foo6 (vector signed int a, vector signed int b)
      39  {
      40    return vec_sldb (a, b, 5);
      41  }
      42  
      43  
      44  vector unsigned long long
      45  foo7 (vector unsigned long long a, vector unsigned long long b)
      46  {
      47    return vec_sldb (a, (vector unsigned long long){ 1, 2 }, 6);
      48  }
      49  
      50  vector signed long long
      51  foo8 (vector signed long long a, vector signed long long b)
      52  {
      53    return vec_sldb (a, b, 7);
      54  }
      55  
      56  
      57  vector float
      58  foo9 (vector float a, vector float b)
      59  {
      60    return vec_sldb (a, b, 1);
      61  }
      62  
      63  vector double
      64  foo10 (vector double a, vector double b)
      65  {
      66    return vec_sldb (a, b, 3);
      67  }
      68  
      69  /* { dg-final { scan-assembler-times "vsld" 10 } } */