aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/h8300/sub.c
blob: 66b63ab447dfa3ff873aa27c7579de1aa19334ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/* { 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)