1 /* { dg-do assemble } */
2 /* { dg-options "-O1 --save-temps" } */
3 
4 #include <arm_neon.h>
5 
foo1(int32x2_t a)6 int32x2_t foo1 (int32x2_t a)
7 {
8   return vshr_n_s32 (vneg_s32 (a), 31);
9 }
10 
foo2(int32x4_t a)11 int32x4_t foo2 (int32x4_t a)
12 {
13   return vshrq_n_s32 (vnegq_s32 (a), 31);
14 }
15 
foo3(int16x8_t a)16 int16x8_t foo3 (int16x8_t a)
17 {
18   return vshrq_n_s16 (vnegq_s16 (a), 15);
19 }
20 
foo4(int16x4_t a)21 int16x4_t foo4 (int16x4_t a)
22 {
23   return vshr_n_s16 (vneg_s16 (a), 15);
24 }
25 
foo5(int8x16_t a)26 int8x16_t foo5 (int8x16_t a)
27 {
28   return vshrq_n_s8 (vnegq_s8 (a), 7);
29 }
30 
foo6(int8x8_t a)31 int8x8_t foo6 (int8x8_t a)
32 {
33   return vshr_n_s8 (vneg_s8 (a), 7);
34 }
35 
36 /* { dg-final { scan-assembler-times {\tcmgt\t} 6 } } */
37