1 /* { dg-do run { target aarch64*-*-* } } */
2 /* { dg-options "-O2 --save-temps -fno-inline" } */
3 /* { dg-require-effective-target aarch64_little_endian } */
4 
5 extern void abort (void);
6 
7 typedef struct bitfield
8 {
9   unsigned short eight1: 8;
10   unsigned short four: 4;
11   unsigned short eight2: 8;
12   unsigned short seven: 7;
13   unsigned int sixteen: 16;
14 } bitfield;
15 
16 bitfield
bfxil(bitfield a)17 bfxil (bitfield a)
18 {
19   /* { dg-final { scan-assembler "bfxil\tx\[0-9\]+, x\[0-9\]+, 16, 8" } } */
20   a.eight1 = a.eight2;
21   return a;
22 }
23 
24 int
main(void)25 main (void)
26 {
27   static bitfield a;
28   bitfield b;
29 
30   a.eight1 = 9;
31   a.eight2 = 57;
32   b = bfxil (a);
33 
34   if (b.eight1 != a.eight2)
35     abort ();
36 
37   return 0;
38 }
39 
40