1  /* Verify that overloaded built-ins for vec_mul with __int128
       2     inputs produce the right results.  */
       3  
       4  /* { dg-do compile } */
       5  /* { dg-require-effective-target powerpc_p8vector_ok } */
       6  /* { dg-require-effective-target int128 } */
       7  /* { dg-require-effective-target lp64 } */
       8  /* { dg-options "-mpower8-vector -mdejagnu-cpu=power8 -O2" } */
       9  /* { dg-additional-options "-maix64" { target powerpc-ibm-aix* } } */
      10  
      11  #include "altivec.h"
      12  
      13  vector signed __int128
      14  test1 (vector signed __int128 x, vector signed __int128 y)
      15  {
      16    return vec_mul (x, y);
      17  }
      18  
      19  vector unsigned __int128
      20  test2 (vector unsigned __int128 x, vector unsigned __int128 y)
      21  {
      22    return vec_mul (x, y);
      23  }
      24  
      25  /* { dg-final { scan-assembler-times {\mmulld\M} 6 } } */
      26  /* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */