1/* { dg-require-effective-target int32plus } */
2#define F 140
3#define T 13
4
5feq (int x, int y)
6{
7  if (x == y)
8    return T;
9  else
10    return F;
11}
12
13fne (int x, int y)
14{
15  if (x != y)
16    return T;
17  else
18    return F;
19}
20
21flt (int x, int y)
22{
23  if (x < y)
24    return T;
25  else
26    return F;
27}
28
29fge (int x, int y)
30{
31  if (x >= y)
32    return T;
33  else
34    return F;
35}
36
37fgt (int x, int y)
38{
39  if (x > y)
40    return T;
41  else
42    return F;
43}
44
45fle (int x, int y)
46{
47  if (x <= y)
48    return T;
49  else
50    return F;
51}
52
53fltu (unsigned int x, unsigned int y)
54{
55  if (x < y)
56    return T;
57  else
58    return F;
59}
60
61fgeu (unsigned int x, unsigned int y)
62{
63  if (x >= y)
64    return T;
65  else
66    return F;
67}
68
69fgtu (unsigned int x, unsigned int y)
70{
71  if (x > y)
72    return T;
73  else
74    return F;
75}
76
77fleu (unsigned int x, unsigned int y)
78{
79  if (x <= y)
80    return T;
81  else
82    return F;
83}
84
85unsigned int args[] =
86{
87  0L,
88  1L,
89  -1L,
90  0x7fffffffL,
91  0x80000000L,
92  0x80000001L,
93  0x1A3F2373L,
94  0x93850E92L
95};
96
97int correct_results[] =
98{
99  T, F, F, T, F, T, F, T, F, T,
100  F, T, T, F, F, T, T, F, F, T,
101  F, T, F, T, T, F, T, F, F, T,
102  F, T, T, F, F, T, T, F, F, T,
103  F, T, F, T, T, F, T, F, F, T,
104  F, T, F, T, T, F, T, F, F, T,
105  F, T, T, F, F, T, T, F, F, T,
106  F, T, F, T, T, F, T, F, F, T,
107  F, T, F, T, T, F, F, T, T, F,
108  T, F, F, T, F, T, F, T, F, T,
109  F, T, F, T, T, F, T, F, F, T,
110  F, T, T, F, F, T, T, F, F, T,
111  F, T, F, T, T, F, T, F, F, T,
112  F, T, F, T, T, F, T, F, F, T,
113  F, T, T, F, F, T, T, F, F, T,
114  F, T, F, T, T, F, T, F, F, T,
115  F, T, T, F, F, T, F, T, T, F,
116  F, T, T, F, F, T, F, T, T, F,
117  T, F, F, T, F, T, F, T, F, T,
118  F, T, T, F, F, T, F, T, T, F,
119  F, T, F, T, T, F, F, T, T, F,
120  F, T, F, T, T, F, F, T, T, F,
121  F, T, T, F, F, T, F, T, T, F,
122  F, T, F, T, T, F, F, T, T, F,
123  F, T, F, T, T, F, F, T, T, F,
124  F, T, F, T, T, F, F, T, T, F,
125  F, T, F, T, T, F, T, F, F, T,
126  T, F, F, T, F, T, F, T, F, T,
127  F, T, F, T, T, F, T, F, F, T,
128  F, T, F, T, T, F, T, F, F, T,
129  F, T, F, T, T, F, F, T, T, F,
130  F, T, F, T, T, F, T, F, F, T,
131  F, T, T, F, F, T, F, T, T, F,
132  F, T, T, F, F, T, F, T, T, F,
133  F, T, T, F, F, T, T, F, F, T,
134  F, T, T, F, F, T, F, T, T, F,
135  T, F, F, T, F, T, F, T, F, T,
136  F, T, T, F, F, T, T, F, F, T,
137  F, T, T, F, F, T, F, T, T, F,
138  F, T, T, F, F, T, T, F, F, T,
139  F, T, T, F, F, T, F, T, T, F,
140  F, T, T, F, F, T, F, T, T, F,
141  F, T, T, F, F, T, T, F, F, T,
142  F, T, T, F, F, T, F, T, T, F,
143  F, T, F, T, T, F, F, T, T, F,
144  T, F, F, T, F, T, F, T, F, T,
145  F, T, T, F, F, T, F, T, T, F,
146  F, T, T, F, F, T, T, F, F, T,
147  F, T, F, T, T, F, F, T, T, F,
148  F, T, F, T, T, F, F, T, T, F,
149  F, T, F, T, T, F, T, F, F, T,
150  F, T, T, F, F, T, T, F, F, T,
151  F, T, F, T, T, F, T, F, F, T,
152  F, T, F, T, T, F, T, F, F, T,
153  T, F, F, T, F, T, F, T, F, T,
154  F, T, F, T, T, F, T, F, F, T,
155  F, T, T, F, F, T, F, T, T, F,
156  F, T, T, F, F, T, F, T, T, F,
157  F, T, T, F, F, T, T, F, F, T,
158  F, T, T, F, F, T, F, T, T, F,
159  F, T, F, T, T, F, F, T, T, F,
160  F, T, F, T, T, F, F, T, T, F,
161  F, T, T, F, F, T, F, T, T, F,
162  T, F, F, T, F, T, F, T, F, T
163};
164
165int
166main (void)
167{
168  int i, j, *res = correct_results;
169
170  for (i = 0; i < 8; i++)
171    {
172      unsigned int arg0 = args[i];
173      for (j = 0; j < 8; j++)
174	{
175	  unsigned int arg1 = args[j];
176
177	  if (feq (arg0, arg1) != *res++)
178	    abort ();
179	  if (fne (arg0, arg1) != *res++)
180	    abort ();
181	  if (flt (arg0, arg1) != *res++)
182	    abort ();
183	  if (fge (arg0, arg1) != *res++)
184	    abort ();
185	  if (fgt (arg0, arg1) != *res++)
186	    abort ();
187	  if (fle (arg0, arg1) != *res++)
188	    abort ();
189	  if (fltu (arg0, arg1) != *res++)
190	    abort ();
191	  if (fgeu (arg0, arg1) != *res++)
192	    abort ();
193	  if (fgtu (arg0, arg1) != *res++)
194	    abort ();
195	  if (fleu (arg0, arg1) != *res++)
196	    abort ();
197	}
198    }
199  exit (0);
200}
201