blob: 477284fa12799927ddaa3b28b03c9670811604b8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/* { dg-options "-Os" } */
/* { dg-final { scan-assembler-times "bst" 4 } } */
/* { dg-final { scan-assembler-times "bld" 4 } } */
typedef __UINT8_TYPE__ uint8_t;
typedef __UINT16_TYPE__ uint16_t;
#define BitMask (1u << 14)
#define Bit8Mask ((uint8_t) (1u << 4))
void merge1_8 (uint8_t *dst, const uint8_t *src)
{
*dst = (*src & Bit8Mask) | (*dst & ~ Bit8Mask);
}
void merge2_8 (uint8_t *dst, const uint8_t *src)
{
*dst ^= (*dst ^ *src) & Bit8Mask;
}
void merge1_16 (uint16_t *dst, const uint16_t *src)
{
*dst = (*src & BitMask) | (*dst & ~ BitMask);
}
void merge2_16 (uint16_t *dst, const uint16_t *src)
{
*dst ^= (*dst ^ *src) & BitMask;
}
|