(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
h8300/
add.c
       1  /* { dg-do compile }  */
       2  /* { dg-options "-mh -mint32 -O2" }  */
       3  /* { dg-final { scan-assembler-not "cmp" } }  */
       4  
       5  typedef unsigned char uchar;
       6  typedef signed char schar;
       7  typedef unsigned short ushort;
       8  typedef unsigned long ulong;
       9  
      10  volatile void abort (void);
      11  
      12  
      13  #define ADD(T)\
      14  T addE##T (T x, T y) { T t = x + y ; if (t == 0) abort (); return t; } \
      15  T addNE##T (T x, T y) { T t = x + y ; if (t != 0) return t; abort (); } \
      16  T addGE##T (T x, T y) { T t = x + y ; if (t >= 0) abort (); return t; } \
      17  T addLT##T (T x, T y) { T t = x + y ; if (t < 0) abort (); return t; }
      18  
      19  #define ADDC(T,N)\
      20  T addEQ##N##T (T a) { T t = a + N; if (t == 0) abort (); return t; } \
      21  T addNE##N##T (T a) { T t = a + N; if (t != 0) return t; abort (); } \
      22  T addGE##N##T (T a) { T t = a + N; if (t >= 0) abort (); return t; } \
      23  T addLT##N##T (T a) { T t = a + N; if (t < 0) abort (); return t; }
      24  
      25  #define ADDNC(T,N)\
      26  T addEQN##N##T (T a) { T t = a + -N; if (t == 0) abort (); return t; } \
      27  T addNEN##N##T (T a) { T t = a + -N; if (t != 0) return t; abort (); } \
      28  T addGEN##N##T (T a) { T t = a + -N; if (t >= 0) abort (); return t; } \
      29  T addLTN##N##T (T a) { T t = a + -N; if (t < 0) abort (); return t; }
      30  
      31  
      32  ADD (schar)
      33  ADD (short)
      34  ADD (long)
      35  ADD (uchar)
      36  ADD (ushort)
      37  ADD (ulong)
      38  
      39  
      40  
      41  ADDC (schar,1)
      42  ADDC (schar,2)
      43  ADDC (schar,3)
      44  ADDC (schar,4)
      45  ADDC (schar,6)
      46  ADDC (schar,8)
      47  ADDNC (schar,1)
      48  ADDNC (schar,2)
      49  ADDNC (schar,3)
      50  ADDNC (schar,4)
      51  ADDNC (schar,6)
      52  ADDNC (schar,8)
      53  
      54  ADDC (uchar,1)
      55  ADDC (uchar,2)
      56  ADDC (uchar,3)
      57  ADDC (uchar,4)
      58  ADDC (uchar,6)
      59  ADDC (uchar,8)
      60  ADDNC (uchar,1)
      61  ADDNC (uchar,2)
      62  ADDNC (uchar,3)
      63  ADDNC (uchar,4)
      64  ADDNC (uchar,6)
      65  ADDNC (uchar,8)
      66  
      67  ADDC (short,1)
      68  ADDC (short,2)
      69  ADDC (short,3)
      70  ADDC (short,4)
      71  ADDC (short,6)
      72  ADDC (short,8)
      73  ADDNC (short,1)
      74  ADDNC (short,2)
      75  ADDNC (short,3)
      76  ADDNC (short,4)
      77  ADDNC (short,6)
      78  ADDNC (short,8)
      79  
      80  ADDC (ushort,1)
      81  ADDC (ushort,2)
      82  ADDC (ushort,3)
      83  ADDC (ushort,4)
      84  ADDC (ushort,6)
      85  ADDC (ushort,8)
      86  ADDNC (ushort,1)
      87  ADDNC (ushort,2)
      88  ADDNC (ushort,3)
      89  ADDNC (ushort,4)
      90  ADDNC (ushort,6)
      91  ADDNC (ushort,8)
      92  
      93  ADDC (long,1)
      94  ADDC (long,2)
      95  ADDC (long,3)
      96  ADDC (long,4)
      97  ADDC (long,6)
      98  ADDC (long,8)
      99  ADDNC (long,1)
     100  ADDNC (long,2)
     101  ADDNC (long,3)
     102  ADDNC (long,4)
     103  ADDNC (long,6)
     104  ADDNC (long,8)
     105  
     106  ADDC (ulong,1)
     107  ADDC (ulong,2)
     108  ADDC (ulong,3)
     109  ADDC (ulong,4)
     110  ADDC (ulong,6)
     111  ADDC (ulong,8)
     112  ADDNC (ulong,1)
     113  ADDNC (ulong,2)
     114  ADDNC (ulong,3)
     115  ADDNC (ulong,4)
     116  ADDNC (ulong,6)
     117  ADDNC (ulong,8)
     118