/* { dg-do compile } */ /* { dg-options "-O3 -mlasx" } */ /* { dg-final { scan-assembler "xvaddwev.w.h" } } */ /* { dg-final { scan-assembler "xvaddwod.w.h" } } */ /* { dg-final { scan-assembler "xvaddwev.w.hu" } } */ /* { dg-final { scan-assembler "xvaddwod.w.hu" } } */ #include #define SIZE 1024 void wide_uadd (uint32_t *foo, uint16_t *a, uint16_t *b) { for ( int i = 0; i < SIZE; i++) foo[i] = a[i] + b[i]; } void wide_sadd (int32_t *foo, int16_t *a, int16_t *b) { for ( int i = 0; i < SIZE; i++) foo[i] = a[i] + b[i]; }