1 #include "gpsim_assert.h"
3 // Signed comparisons of the form: (variable>LIT)
5 // This regression test exercises all of the boundary
6 // conditions in literal less than comparisons. There
7 // are numerous opportunities to optimize these comparison
8 // and each one has an astonishing capability of failing
9 // a boundary condition.
11 unsigned char failures = 0;
12 unsigned char result = 0;
17 unsigned char uchar0 = 0;
18 unsigned char uchar1 = 0;
19 signed char char0 = 0;
20 signed char char1 = 0;
24 /* *** NOTE *** This particular test takes quite a while to run
25 * ~ 10,000,000 instruction cycles. (2.5 seconds on a 20Mhz PIC).
26 * The WDT will reset the CPU if it's enabled. So disable it...
29 typedef unsigned int word;
31 word at 0x2007 CONFIG = wdt_off & pwrte_on;
36 ASSERT(MANGLE(failures) == 0);
40 void c_char_gt_lit1(unsigned char expected_result)
63 if(result != expected_result)
68 void char_compare(void)
101 c_char_gt_lit1(0x00);
104 c_char_gt_lit1(0x00);
107 /* Now test entire range */
109 for(char0=2; char0 != 0x7f; char0++)
110 c_char_gt_lit1(0x0f);
113 for(char0=-0x7e; char0 != -1; char0++)
114 c_char_gt_lit1(0x01);
120 void c_int_gt_lit1(unsigned char expected_result)
149 if(result != expected_result)
155 void int_compare1(void)
199 /* now check contiguous ranges */
201 for(int0 = -0x7fff; int0 != -1; int0++)
204 for(int0 = 2; int0 != 0xff; int0++)
207 for(int0 = 0x202; int0 != 0x7fff; int0++)
213 void c_int_gt_lit2(unsigned char expected_result)
241 if(result != expected_result)
245 void int_compare2(void)
295 /* now check contiguous ranges */
297 for(int0 = -0x7ffe; int0 != -0x7f01; int0++)
300 for(int0 = -0x7dff; int0 != -0x101; int0++)
303 for(int0 = 0; int0 != 0x7fff; int0++)