(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
cond_op_imm_1.c
       1  /* { dg-do run } */
       2  /* { dg-options "-save-temps -O2 -fno-inline" } */
       3  
       4  extern void abort (void);
       5  
       6  #define N 30
       7  #define M 25089992
       8  
       9  int
      10  foonegsi (int a)
      11  {
      12    return a ? N : -N;
      13  }
      14  
      15  /* { dg-final { scan-assembler "csneg\tw\[0-9\]*.*" } } */
      16  
      17  
      18  int
      19  fooinvsi (int a)
      20  {
      21    return a ? N : ~N;
      22  }
      23  
      24  /* { dg-final { scan-assembler "csinv\tw\[0-9\]*.*" } } */
      25  
      26  
      27  long long
      28  foonegdi (long long a)
      29  {
      30    return a ? N : -N;
      31  }
      32  
      33  long long
      34  largefooneg (long long a)
      35  {
      36    return a ? M : -M;
      37  }
      38  
      39  /* { dg-final { scan-assembler "csneg\tx\[0-9\]*.*" } } */
      40  
      41  long long
      42  fooinvdi (long long a)
      43  {
      44    return a ? N : ~N;
      45  }
      46  
      47  long long
      48  largefooinv (long long a)
      49  {
      50    return a ? M : ~M;
      51  }
      52  
      53  /* { dg-final { scan-assembler "csinv\tx\[0-9\]*.*" } } */
      54  
      55  
      56  int
      57  main (void)
      58  {
      59    if (foonegsi (1) != N)
      60      abort ();
      61  
      62    if (foonegsi (0) != -N)
      63      abort ();
      64  
      65    if (fooinvsi (1) != N)
      66      abort ();
      67  
      68    if (fooinvsi (0) != ~N)
      69      abort ();
      70  
      71    if (foonegdi (1) != N)
      72      abort ();
      73  
      74    if (foonegdi (0) != -N)
      75      abort ();
      76  
      77    if (fooinvdi (1) != N)
      78      abort ();
      79  
      80    if (fooinvdi (0) != ~N)
      81      abort ();
      82  
      83    if (largefooinv (0) != ~M)
      84      abort ();
      85  
      86    if (largefooneg (0) != -M)
      87      abort ();
      88  
      89    if (largefooinv (1) != M)
      90      abort ();
      91  
      92    if (largefooneg (1) != M)
      93      abort ();
      94  
      95    return 0;
      96  }
      97  
      98  /* { dg-final { scan-assembler-not "csel\tx\[0-9\]*.*" } } */
      99  /* { dg-final { scan-assembler-not "csel\tw\[0-9\]*.*" } } */