1 /** Test the bitwise operators.
3 type: char, short, long
10 testTwoOpBitwise(void)
12 {storage} {attr} {type} left, right;
14 left = ({type})0x3df7;
15 right = ({type})0xc1ec;
17 ASSERT(({type})(left & right) == ({type})0x1E4);
18 ASSERT(({type})(right & left) == ({type})0x1E4);
19 ASSERT(({type})(left & 0xc1ec) == ({type})0x1E4);
20 ASSERT(({type})(0x3df7 & right) == ({type})0x1E4);
22 ASSERT(({type})(left | right) == ({type})0xFDFF);
23 ASSERT(({type})(right | left) == ({type})0xFDFF);
24 ASSERT(({type})(left | 0xc1ec) == ({type})0xFDFF);
25 ASSERT(({type})(0x3df7 | right) == ({type})0xFDFF);
27 ASSERT(({type})(left ^ right) == ({type})0xFC1B);
28 ASSERT(({type})(right ^ left) == ({type})0xFC1B);
29 ASSERT(({type})(left ^ 0xc1ec) == ({type})0xFC1B);
30 ASSERT(({type})(0x3df7 ^ right) == ({type})0xFC1B);
32 #if defined (__alpha__) || defined (__x86_64__)
33 /* long is 64 bits on 64 bit machines */
34 ASSERT(({type})(~left) == ({type})0xFFFFFFFFFFFFC208);
36 ASSERT(({type})(~left) == ({type})0xFFFFC208);
46 /* always false if right literal == 0 */
65 * result: if, left: var, right: literal
76 /* nothing for true */
89 /* nothing for true */
152 /* literal with zero bytes */
180 * result: bit, left: var, right: literal
188 {attr} int a = 0x1234;
191 * result: if, left: var, right: literal
195 /* nothing for true */
202 /* nothing for true */
220 /* or with zero: result is left */
224 /* nothing for true */
233 /* nothing for true */
256 {attr} int a = 0x1234;
259 * result: if, left: var, right: literal
268 /* nothing for true */
281 /* nothing for true */
287 /* literal with 0xff bytes */
300 /* literal with zero bytes */
315 testBug_1777758(void)