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