1 /** test one byte mul/div/mod operations.
12 {attrL} unsigned char ucL;
14 {attrR} unsigned char ucR;
15 volatile char r8 , r8b;
16 volatile unsigned char ur8, ur8b;
17 volatile short r16, r16b;
19 cL = -127; cR = -5; r16 = cL * cR; r16b = cR * cL; ASSERT (r16 == 635); ASSERT (r16b == 635);
20 cL = 127; cR = -5; r16 = cL * cR; r16b = cR * cL; ASSERT (r16 == -635); ASSERT (r16b == -635);
21 cL = -127; cR = 5; r16 = cL * cR; r16b = cR * cL; ASSERT (r16 == -635); ASSERT (r16b == -635);
22 cL = 127; cR = 5; r16 = cL * cR; r16b = cR * cL; ASSERT (r16 == 635); ASSERT (r16b == 635);
24 cL = -128; cR = -1; ur8 = cL * cR; ur8b = cR * cL; ASSERT (ur8 == 128); ASSERT (ur8b == 128);
25 cL = 128; cR = -1; r8 = cL * cR; r8b = cR * cL; ASSERT ( r8 == -128); ASSERT ( r8b == -128);
26 cL = -128; cR = 1; r8 = cL * cR; r8b = cR * cL; ASSERT ( r8 == -128); ASSERT ( r8b == -128);
27 cL = 128; cR = 1; ur8 = cL * cR; ur8b = cR * cL; ASSERT (ur8 == 128); ASSERT (ur8b == 128);
29 ucL = 128; cR = -5; r16 = ucL * cR; r16b = cR * ucL; ASSERT (r16 == -640); ASSERT (r16b == -640);
30 ucL = 128; cR = 5; r16 = ucL * cR; r16b = cR * ucL; ASSERT (r16 == 640); ASSERT (r16b == 640);
32 ucL = 127; cR = -1; r8 = ucL * cR; r8b = cR * ucL; ASSERT ( r8 == -127); ASSERT ( r8b == -127);
33 ucL = 128; cR = 1; ur8 = ucL * cR; ur8b = cR * ucL; ASSERT (ur8 == 128); ASSERT (ur8b == 128);
34 ucL = 128; ucR = 5; r16 = ucL * ucR; r16b = ucR * ucL; ASSERT (r16 == 640); ASSERT (r16b == 640);
35 ucL = 128; ucR = 1; ur8 = ucL * ucR; ur8b = ucR * ucL; ASSERT (ur8 == 128); ASSERT (ur8b == 128);
42 {attrL} unsigned char ucL;
44 {attrR} unsigned char ucR;
46 volatile unsigned char ur8;
49 cL = -128; cR = -2; r8 = cL / cR; ASSERT (r8 == 64);
50 cL = -128; cR = -2; r16 = cL / cR; ASSERT (r16 == 64);
52 ucL = 255; ucR = 3; r8 = ucL / ucR; ASSERT (r8 == 85);
53 ucL = 255; ucR = 255; r8 = ucL / ucR; ASSERT (r8 == 1);
54 ucL = 3; ucR = 255; r8 = ucL / ucR; ASSERT (r8 == 0);
56 cL = 127; cR = 3; r8 = cL / cR; ASSERT (r8 == 42);
57 cL = -127; cR = 3; r8 = cL / cR; ASSERT (r8 == -42);
58 cL = 127; cR = -3; r8 = cL / cR; ASSERT (r8 == -42);
59 cL = -127; cR = -3; r8 = cL / cR; ASSERT (r8 == 42);
61 ucL = 127; cR = 3; r8 = ucL / cR; ASSERT (r8 == 42);
62 ucL = 255; cR = 3; r8 = ucL / cR; ASSERT (r8 == 85);
63 ucL = 127; cR = -3; r8 = ucL / cR; ASSERT (r8 == -42);
64 ucL = 255; cR = -3; r8 = ucL / cR; ASSERT (r8 == -85);
66 cL = 127; ucR = 3; r8 = cL / ucR; ASSERT (r8 == 42);
67 cL = -127; ucR = 3; r8 = cL / ucR; ASSERT (r8 == -42);
68 cL = 127; ucR = 128; r8 = cL / ucR; ASSERT (r8 == 0);
69 cL = -127; ucR = 128; r8 = cL / ucR; ASSERT (r8 == 0);
71 cL = 127; cR = 1; r8 = cL / cR; ASSERT (r8 == 127);
72 cL = 127; cR = 1; r16 = cL / cR; ASSERT (r16 == 127);
74 ucL = 251; cR = 1; ur8 = ucL / cR; ASSERT (ur8 == 251);
75 ucL = 251; cR = 1; r16 = ucL / cR; ASSERT (r16 == 251);
77 ucL = 253; cR = -3; r8 = ucL / cR; ASSERT (r8 == -84);
78 ucL = 253; cR = -3; r16 = ucL / cR; ASSERT (r16 == -84);
80 ucL = 254; cR = -1; r16 = ucL / cR; ASSERT (r16 == -254);
81 cL = -128; cR = -1; r16 = cL / cR; ASSERT (r16 == 128);
88 {attrL} unsigned char ucL;
90 {attrR} unsigned char ucR;
92 volatile unsigned char ur8;
95 ucL = 128; cR = 5; r16 = ucL % cR; ASSERT (r16 == 3);
96 ucL = 128; cR = -5; r16 = ucL % cR; ASSERT (r16 == 3);
97 ucL = 128; ucR = 5; r16 = ucL % ucR; ASSERT (r16 == 3);
99 ucL = 128; ucR = 255; ur8 = ucL % ucR; ASSERT (ur8 == 128);
100 ucL = 128; ucR = 255; r16 = ucL % ucR; ASSERT (r16 == 128);
102 ucL = 128; cR = 127; r8 = ucL % cR; ASSERT (r8 == 1);
104 cL = 127; cR = 5; r16 = cL % cR; ASSERT (r16 == 2);
106 cL = 127; cR = -5; r16 = cL % cR; ASSERT (r16 == 2);
108 cL = 127; ucR = 5; r16 = cL % ucR; ASSERT (r16 == 2);
110 cL = -128; cR = 5; r16 = cL % cR; ASSERT (r16 == -3);
112 cL = -128; cR = -5; r16 = cL % cR; ASSERT (r16 == -3);
114 cL = -128; ucR = 5; r16 = cL % ucR; ASSERT (r16 == -3);
121 {attrL} unsigned char ucL;
123 {attrR} unsigned char ucR;
124 volatile short r16, r16b;
126 cL = 0x00; cR = 0x80; r16 = cL | cR; r16b = cR | cL; ASSERT (r16 == (short) 0xff80); ASSERT (r16b == (short) 0xff80);
127 ucL = 0x80; cR = 0x00; r16 = ucL | cR; r16b = cR | ucL; ASSERT (r16 == 0x80); ASSERT (r16b == 0x80);
128 ucL = 0x80; ucR = 0x80; r16 = ucL | ucR; r16b = ucR | ucL; ASSERT (r16 == 0x80); ASSERT (r16b == 0x80);
135 {attrL} unsigned char ucL;
137 {attrR} unsigned char ucR;
138 volatile short r16, r16b;
140 cL = 0x80; cR = 0x80; r16 = cL ^ cR; r16b = cR ^ cL; ASSERT (r16 == 0); ASSERT (r16b == 0);
141 cL = 0x80; cR = 0x00; r16 = cL ^ cR; r16b = cR ^ cL; ASSERT (r16 == (short) 0xff80); ASSERT (r16b == (short) 0xff80);
143 ucL = 0x80; cR = 0x80; r16 = ucL ^ cR; r16b = cR ^ ucL; ASSERT (r16 == (short) 0xff00); ASSERT (r16b == (short) 0xff00);
144 ucL = 0x80; cR = 0; r16 = ucL ^ cR; r16b = cR ^ ucL; ASSERT (r16 == 0x80); ASSERT (r16b == 0x80);
145 ucL = 0; cR = 0x80; r16 = ucL ^ cR; r16b = cR ^ ucL; ASSERT (r16 == (short) 0xff80); ASSERT (r16b == (short) 0xff80);
147 ucL = 0x80; ucR = 0x80; r16 = ucL ^ ucR; r16b = ucR ^ ucL; ASSERT (r16 == 0); ASSERT (r16b == 0);
148 ucL = 0; ucR = 0x80; r16 = ucL ^ ucR; r16b = ucR ^ ucL; ASSERT (r16 == 0x80); ASSERT (r16b == 0x80);
155 {attrL} unsigned char ucL;
157 {attrR} unsigned char ucR;
158 volatile short r16, r16b;
160 cL = 0x80; cR = 0x80; r16 = cL & cR; r16b = cR & cL; ASSERT (r16 == (short) 0xff80); ASSERT (r16b == (short) 0xff80);
161 ucL = 0x80; cR = 0x80; r16 = ucL & cR; r16b = cR & ucL; ASSERT (r16 == 0x80); ASSERT (r16b == 0x80);
162 ucL = 0x80; ucR = 0x80; r16 = ucL & ucR; r16b = ucR & ucL; ASSERT (r16 == 0x80); ASSERT (r16b == 0x80);
166 testComplement (void)
169 {attrR} unsigned char uc;
172 c = 0x00; r16 = ~ c; ASSERT (r16 == (short) 0xffff); ASSERT (~ c < 0);
173 uc = 0x00; r16 = ~uc; ASSERT (r16 == (short) 0xffff); ASSERT (~uc < 0);
174 ASSERT (~ (char) 0x00 == (short) 0xffff); ASSERT (~ (char) 0x00 < 0);
175 ASSERT (~ (unsigned char) 0x00 == (short) 0xffff); ASSERT (~ (unsigned char) 0x00 < 0);
176 c = 0x80; r16 = ~ c; ASSERT (r16 == (short) 0x007f); ASSERT (~ c > 0);
177 uc = 0x80; r16 = ~uc; ASSERT (r16 == (short) 0xff7f); ASSERT (~uc < 0);
178 ASSERT (~ (char) 0x80 == (short) 0x007f); ASSERT (~ (char) 0x80 > 0);
179 ASSERT (~ (unsigned char) 0x80 == (short) 0xff7f); ASSERT (~ (unsigned char) 0x80 < 0);
190 {attrL} signed char c;
191 {attrR} unsigned char uc;
194 uc = 0x80; /* +128 */
207 signed char {attrL} sc;
208 unsigned char {attrL} uc;
209 signed int {attrL} si;
210 unsigned int {attrL} ui;
211 signed long {attrL} sl;
212 unsigned long {attrL} ul;
214 ASSERT (-(53l ) < 0);
215 ASSERT (-(53ul) > 0);
222 ASSERT (-(53u ) > 0);
228 ASSERT (-( 250 ) == -250);
230 ASSERT (-uc == -250);
232 ASSERT (-(-128 ) == 128);
238 testBug1571231 (void)
240 unsigned char {attrL} uc;