1  /* PR target/pr95488  */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx512bw -mavx512vl" }  */
       4  /* { dg-final { scan-assembler-times "vpmovzxbw" 8 { target { ! ia32 } } } } */
       5  /* { dg-final { scan-assembler-times "vpmullw\[^\n\]*ymm" 2 } } */
       6  /* { dg-final { scan-assembler-times "vpmullw\[^\n\]*xmm" 2 { target { ! ia32 } } } } */
       7  /* { dg-final { scan-assembler-times "vpmovwb" 4 { target { ! ia32 } } } } */
       8  
       9  typedef char v16qi __attribute__ ((vector_size (16)));
      10  typedef char v8qi __attribute__ ((vector_size (8)));
      11  typedef unsigned char v16uqi __attribute__ ((vector_size (16)));
      12  typedef unsigned char v8uqi __attribute__ ((vector_size (8)));
      13  
      14  __attribute__((noipa)) v8qi
      15  mul_128 (v8qi a, v8qi b)
      16  {
      17    return  a * b;
      18  }
      19  
      20  __attribute__((noipa)) v16qi
      21  mul_256 (v16qi a, v16qi b)
      22  {
      23    return  a * b;
      24  }
      25  
      26  __attribute__((noipa)) v8uqi
      27  umul_128 (v8uqi a, v8uqi b)
      28  {
      29    return  a * b;
      30  }
      31  
      32  __attribute__((noipa)) v16uqi
      33  umul_256 (v16uqi a, v16uqi b)
      34  {
      35    return  a * b;
      36  }