1 /* Check that NEON vector shifts support immediate values == size. /* 2 3 /* { dg-do compile } */ 4 /* { dg-require-effective-target arm_neon_ok } */ 5 /* { dg-options "-save-temps" } */ 6 /* { dg-add-options arm_neon } */ 7 8 #include <arm_neon.h> 9 test_vshll_n_u8(uint8x8_t a)10uint16x8_t test_vshll_n_u8 (uint8x8_t a) 11 { 12 return vshll_n_u8(a, 8); 13 } 14 test_vshll_n_u16(uint16x4_t a)15uint32x4_t test_vshll_n_u16 (uint16x4_t a) 16 { 17 return vshll_n_u16(a, 16); 18 } 19 test_vshll_n_u32(uint32x2_t a)20uint64x2_t test_vshll_n_u32 (uint32x2_t a) 21 { 22 return vshll_n_u32(a, 32); 23 } 24 25 /* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ 26 /* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ 27 /* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */ 28