blob: 66b63ab447dfa3ff873aa27c7579de1aa19334ba [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-mh -mint32 -O2" } */
/* { dg-final { scan-assembler-not "cmp" } } */
typedef unsigned char uchar;
typedef signed char schar;
typedef unsigned short ushort;
typedef unsigned long ulong;
volatile void abort (void);
#define SUB(T)\
T subE##T (T x, T y) { T t = x - y ; if (t == 0) abort (); return t; } \
T subNE##T (T x, T y) { T t = x - y ; if (t != 0) return t; abort (); } \
T subGE##T (T x, T y) { T t = x - y ; if (t >= 0) abort (); return t; } \
T subLT##T (T x, T y) { T t = x - y ; if (t < 0) abort (); return t; }
#define SUBC(T,N)\
T subEQ##N##T (T a) { T t = a - N; if (t == 0) abort (); return t; } \
T subNE##N##T (T a) { T t = a - N; if (t != 0) return t; abort (); } \
T subGE##N##T (T a) { T t = a - N; if (t >= 0) abort (); return t; } \
T subLT##N##T (T a) { T t = a - N; if (t < 0) abort (); return t; }
#define SUBNC(T,N)\
T subEQN##N##T (T a) { T t = a - -N; if (t == 0) abort (); return t; } \
T subNEN##N##T (T a) { T t = a - -N; if (t != 0) return t; abort (); } \
T subGEN##N##T (T a) { T t = a - -N; if (t >= 0) abort (); return t; } \
T subLTN##N##T (T a) { T t = a - -N; if (t < 0) abort (); return t; }
SUB (schar)
SUB (short)
SUB (long)
SUB (uchar)
SUB (ushort)
SUB (ulong)
SUBC (schar,1)
SUBC (schar,2)
SUBC (schar,3)
SUBC (schar,4)
SUBC (schar,6)
SUBC (schar,8)
SUBNC (schar,1)
SUBNC (schar,2)
SUBNC (schar,3)
SUBNC (schar,4)
SUBNC (schar,6)
SUBNC (schar,8)
SUBC (uchar,1)
SUBC (uchar,2)
SUBC (uchar,3)
SUBC (uchar,4)
SUBC (uchar,6)
SUBC (uchar,8)
SUBNC (uchar,1)
SUBNC (uchar,2)
SUBNC (uchar,3)
SUBNC (uchar,4)
SUBNC (uchar,6)
SUBNC (uchar,8)
SUBC (short,1)
SUBC (short,2)
SUBC (short,3)
SUBC (short,4)
SUBC (short,6)
SUBC (short,8)
SUBNC (short,1)
SUBNC (short,2)
SUBNC (short,3)
SUBNC (short,4)
SUBNC (short,6)
SUBNC (short,8)
SUBC (ushort,1)
SUBC (ushort,2)
SUBC (ushort,3)
SUBC (ushort,4)
SUBC (ushort,6)
SUBC (ushort,8)
SUBNC (ushort,1)
SUBNC (ushort,2)
SUBNC (ushort,3)
SUBNC (ushort,4)
SUBNC (ushort,6)
SUBNC (ushort,8)
SUBC (long,1)
SUBC (long,2)
SUBC (long,3)
SUBC (long,4)
SUBC (long,6)
SUBC (long,8)
SUBNC (long,1)
SUBNC (long,2)
SUBNC (long,3)
SUBNC (long,4)
SUBNC (long,6)
SUBNC (long,8)
SUBC (ulong,1)
SUBC (ulong,2)
SUBC (ulong,3)
SUBC (ulong,4)
SUBC (ulong,6)
SUBC (ulong,8)
SUBNC (ulong,1)
SUBNC (ulong,2)
SUBNC (ulong,3)
SUBNC (ulong,4)
SUBNC (ulong,6)
SUBNC (ulong,8)