/* { dg-do assemble } */ /* { dg-options "-O1 --save-temps" } */ #include int32x2_t foo1 (int32x2_t a) { return vshr_n_s32 (vneg_s32 (a), 31); } int32x4_t foo2 (int32x4_t a) { return vshrq_n_s32 (vnegq_s32 (a), 31); } int16x8_t foo3 (int16x8_t a) { return vshrq_n_s16 (vnegq_s16 (a), 15); } int16x4_t foo4 (int16x4_t a) { return vshr_n_s16 (vneg_s16 (a), 15); } int8x16_t foo5 (int8x16_t a) { return vshrq_n_s8 (vnegq_s8 (a), 7); } int8x8_t foo6 (int8x8_t a) { return vshr_n_s8 (vneg_s8 (a), 7); } /* { dg-final { scan-assembler-times {\tcmgt\t} 6 } } */