(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
s390/
vector/
int128-1.c
       1  /* Check that vaq/vsq are used for int128 operations.  */
       2  
       3  /* { dg-do compile { target { lp64 } } } */
       4  /* { dg-options "-O3 -mzarch -march=z13" } */
       5  
       6  
       7  const __int128 c = (__int128)0x0123456789abcd55 + ((__int128)7 << 64);
       8  
       9  
      10  __int128
      11  addreg(__int128 a, __int128 b)
      12  {
      13    return a + b;
      14  }
      15  
      16  __int128
      17  addconst(__int128 a)
      18  {
      19    return a + c;
      20  }
      21  
      22  __int128
      23  addmem(__int128 *a, __int128_t *b)
      24  {
      25    return *a + *b;
      26  }
      27  
      28  __int128
      29  subreg(__int128 a, __int128 b)
      30  {
      31    return a - b;
      32  }
      33  
      34  __int128
      35  subconst(__int128 a)
      36  {
      37    return a - c; /* This becomes vaq as well.  */
      38  }
      39  
      40  __int128
      41  submem(__int128 *a, __int128_t *b)
      42  {
      43    return *a - *b;
      44  }
      45  
      46  /* { dg-final { scan-assembler-times "vaq" 4 } } */
      47  /* { dg-final { scan-assembler-times "vsq" 2 } } */