1 /* { dg-options "-Os" } */
2 /* { dg-final { scan-assembler-times "bst" 4 } } */
3 /* { dg-final { scan-assembler-times "bld" 4 } } */
5 typedef __UINT8_TYPE__
uint8_t;
6 typedef __UINT16_TYPE__
uint16_t;
8 #define BitMask (1u << 14)
9 #define Bit8Mask ((uint8_t) (1u << 4))
11 void merge1_8 (uint8_t *dst
, const uint8_t *src
)
13 *dst
= (*src
& Bit8Mask
) | (*dst
& ~ Bit8Mask
);
16 void merge2_8 (uint8_t *dst
, const uint8_t *src
)
18 *dst
^= (*dst
^ *src
) & Bit8Mask
;
21 void merge1_16 (uint16_t *dst
, const uint16_t *src
)
23 *dst
= (*src
& BitMask
) | (*dst
& ~ BitMask
);
26 void merge2_16 (uint16_t *dst
, const uint16_t *src
)
28 *dst
^= (*dst
^ *src
) & BitMask
;