(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
pru/
zero_extend-qihi.c
       1  /* ALU operations with zero extended operands. */
       2  
       3  /* { dg-do compile } */
       4  /* { dg-options "-O1" } */
       5  
       6  /* -O1 in the options is significant.  Without it the zero extension might not
       7     be coalesced into the ALU instruction. */
       8  
       9  unsigned int
      10  test_zext_plus_hi (unsigned char val1, unsigned short val2)
      11  {
      12    /* { dg-final { scan-assembler "add\\tr14, r14.b0, r14.w1" } } */
      13    return val1 + val2;
      14  }
      15  
      16  unsigned int
      17  test_zext_minus_hi (unsigned char val1, unsigned short val2)
      18  {
      19    /* { dg-final { scan-assembler "sub\\tr14, r14.b0, r14.w1" } } */
      20    return val1 - val2;
      21  }
      22  
      23  unsigned int
      24  test_zext_xor_hi (unsigned char val1, unsigned short val2)
      25  {
      26    /* { dg-final { scan-assembler "xor\\tr14, r14.b0, r14.w1" } } */
      27    return val1 ^ val2;
      28  }
      29  
      30  unsigned int
      31  test_zext_or_hi (unsigned char val1, unsigned short val2)
      32  {
      33    /* { dg-final { scan-assembler "or\\tr14, r14.b0, r14.w1" } } */
      34    return val1 | val2;
      35  }
      36  
      37  unsigned int
      38  test_zext_ashl_hi (unsigned char val1, unsigned short val2)
      39  {
      40    /* { dg-final { scan-assembler "lsl\\tr14, r14.b0, r14.w1" } } */
      41    return val1 << val2;
      42  }
      43