119 lines
2.3 KiB
C
119 lines
2.3 KiB
C
/* { 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)
|
|
|