(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
csinv-neg.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2" } */
       3  
       4  /*
       5  ** inv1:
       6  **	cmp	w0, 0
       7  **	csinv	w0, w1, w2, ne
       8  **	ret
       9  */
      10  unsigned long long
      11  inv1(unsigned a, unsigned b, unsigned c)
      12  {
      13    return a ? b : ~c;
      14  }
      15  
      16  /*
      17  ** inv1_local:
      18  **	cmp	w0, 0
      19  **	csinv	w0, w1, w2, ne
      20  **	ret
      21  */
      22  unsigned long long
      23  inv1_local(unsigned a, unsigned b, unsigned c)
      24  {
      25    unsigned d = ~c;
      26    return a ? b : d;
      27  }
      28  
      29  /*
      30  ** inv_zero1:
      31  **	cmp	w0, 0
      32  **	csinv	w0, wzr, w1, ne
      33  **	ret
      34  */
      35  unsigned long long
      36  inv_zero1(unsigned a, unsigned b)
      37  {
      38    return a ? 0 : ~b;
      39  }
      40  
      41  /*
      42  ** inv_zero2:
      43  **	cmp	w0, 0
      44  **	csinv	w0, wzr, w1, eq
      45  **	ret
      46  */
      47  unsigned long long
      48  inv_zero2(unsigned a, unsigned b)
      49  {
      50    return a ? ~b : 0;
      51  }
      52  
      53  
      54  /*
      55  ** inv2:
      56  **	cmp	w0, 0
      57  **	csinv	w0, w2, w1, eq
      58  **	ret
      59  */
      60  unsigned long long
      61  inv2(unsigned a, unsigned b, unsigned c)
      62  {
      63    return a ? ~b : c;
      64  }
      65  
      66  /*
      67  ** inv2_local:
      68  **	cmp	w0, 0
      69  **	csinv	w0, w2, w1, eq
      70  **	ret
      71  */
      72  unsigned long long
      73  inv2_local(unsigned a, unsigned b, unsigned c)
      74  {
      75    unsigned d = ~b;
      76    return a ? d : c;
      77  }
      78  
      79  /*
      80  ** neg1:
      81  **	cmp	w0, 0
      82  **	csneg	w0, w1, w2, ne
      83  **	ret
      84  */
      85  unsigned long long
      86  neg1(unsigned a, unsigned b, unsigned c)
      87  {
      88    return a ? b : -c;
      89  }
      90  
      91  
      92  /*
      93  ** neg2:
      94  **	cmp	w0, 0
      95  **	csneg	w0, w2, w1, eq
      96  **	ret
      97  */
      98  unsigned long long
      99  neg2(unsigned a, unsigned b, unsigned c)
     100  {
     101    return a ? -b : c;
     102  }
     103  
     104  /* { dg-final { check-function-bodies "**" "" "" } } */