1  /* { dg-do compile } */
       2  /* { dg-options "-msse2 -mno-sse4.1 -O3 -fdump-tree-vect-details" } */
       3  /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 5 "vect" } } */
       4  #include<stdint.h>
       5  void
       6  vec_widen_smul8 (int16_t* __restrict v3, int8_t *v1, int8_t *v2, int order)
       7  {
       8    while (order--)
       9      *v3++ = (int16_t) *v1++ * *v2++;
      10  }
      11  
      12  void
      13  vec_widen_umul8(uint16_t* __restrict v3, uint8_t *v1, uint8_t *v2, int order)
      14  {
      15    while (order--)
      16      *v3++ = (uint16_t) *v1++ * *v2++;
      17  }
      18  
      19  void
      20  vec_widen_smul16(int32_t* __restrict v3, int16_t *v1, int16_t *v2, int order)
      21  {
      22    while (order--)
      23      *v3++ = (int32_t) *v1++ * *v2++;
      24  }
      25  
      26  void
      27  vec_widen_umul16(uint32_t* __restrict v3, uint16_t *v1, uint16_t *v2, int order)
      28  {
      29    while (order--)
      30      *v3++ = (uint32_t) *v1++ * *v2++;
      31  }
      32  
      33  void
      34  vec_widen_smul32(int64_t* __restrict v3, int32_t *v1, int32_t *v2, int order)
      35  {
      36    while (order--)
      37      *v3++ = (int64_t) *v1++ * *v2++;
      38  }
      39  
      40  void
      41  vec_widen_umul32(uint64_t* __restrict v3, uint32_t *v1, uint32_t *v2, int order)
      42  {
      43    while (order--)
      44      *v3++ = (uint64_t) *v1++ * *v2++;
      45  }