1 /* { dg-do compile } */
2 /* { dg-additional-options "-O3" } */
3
4 #include <arm_neon.h>
5
6 int64x2_t
7 doit (int8x16_t a)
8 {
9 int16x8_t b = vmull_high_s8 (a, a);
10 int32x4_t c = vmull_high_s16 (b, b);
11 return vmull_high_s32 (c, c);
12 }
13
14 uint64x2_t
15 douit (uint8x16_t a)
16 {
17 uint16x8_t b = vmull_high_u8 (a, a);
18 uint32x4_t c = vmull_high_u16 (b, b);
19 return vmull_high_u32 (c, c);
20 }
21
22 /* { dg-final { scan-assembler-times "smull2\[ |\t\]*v" 3} } */
23 /* { dg-final { scan-assembler-times "umull2\[ |\t\]*v" 3} } */