1 /* PR target/82989.  */
2 /* { dg-do compile } */
3 /* { dg-require-effective-target arm_neon_ok } */
4 /* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mcpu=*" } { "-mcpu=cortex-a8" } } */
5 /* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfpu=*" } { "-mfpu=neon" } } */
6 /* { dg-skip-if "avoid conflicts with multilib options" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=hard" } } */
7 /* { dg-options "-O2 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=hard" } */
8 /* { dg-add-options arm_neon } */
9 
10 typedef unsigned long long uint64_t;
11 
f_shr_imm(uint64_t * a)12 void f_shr_imm (uint64_t *a)
13 {
14   *a += *a >> 32;
15 }
16 
f_shr_reg(uint64_t * a,uint64_t b)17 void f_shr_reg (uint64_t *a, uint64_t b)
18 {
19   *a += *a >> b;
20 }
21 
f_shl_imm(uint64_t * a)22 void f_shl_imm (uint64_t *a)
23 {
24   *a += *a << 32;
25 }
26 
f_shl_reg(uint64_t * a,uint64_t b)27 void f_shl_reg (uint64_t *a, uint64_t b)
28 {
29   *a += *a << b;
30 }
31 /* { dg-final { scan-assembler-not "vshl*" } } */
32 /* { dg-final { scan-assembler-not "vshr*" } } */
33 /* { dg-final { scan-assembler-not "vmov*" } } */
34