/* { dg-do compile } */ | |
/* { dg-additional-options "-O3" } */ | |
#include <arm_neon.h> | |
int64x2_t | |
doit (int8x16_t a) | |
{ | |
int16x8_t b = vmull_high_s8 (a, a); | |
int32x4_t c = vmull_high_s16 (b, b); | |
return vmull_high_s32 (c, c); | |
} | |
uint64x2_t | |
douit (uint8x16_t a) | |
{ | |
uint16x8_t b = vmull_high_u8 (a, a); | |
uint32x4_t c = vmull_high_u16 (b, b); | |
return vmull_high_u32 (c, c); | |
} | |
/* { dg-final { scan-assembler-times "smull2\[ |\t\]*v" 3} } */ | |
/* { dg-final { scan-assembler-times "umull2\[ |\t\]*v" 3} } */ |