Home | History | Annotate | Line # | Download | only in lint1
      1 /*	$NetBSD: msg_141.c,v 1.17 2024/03/27 20:09:43 rillig Exp $	*/
      2 # 3 "msg_141.c"
      3 
      4 // Test for message: '%s' overflows '%s' [141]
      5 
      6 /* lint1-extra-flags: -h -X 351 */
      7 
      8 // Integer overflow occurs when the arbitrary-precision result of an
      9 // arithmetic operation cannot be represented by the type of the expression.
     10 
     11 signed int s32;
     12 unsigned int u32;
     13 signed long long s64;
     14 unsigned long long u64;
     15 _Bool cond;
     16 
     17 void
     18 compl_s32(void)
     19 {
     20 	s32 = ~(-0x7fffffff - 1);
     21 	s32 = ~-1;
     22 	s32 = ~0;
     23 	s32 = ~1;
     24 	s32 = ~0x7fffffff;
     25 }
     26 
     27 void
     28 compl_u32(void)
     29 {
     30 	u32 = ~0x00000000U;
     31 	u32 = ~0x7fffffffU;
     32 	u32 = ~0x80000000U;
     33 	u32 = ~0xffffffffU;
     34 }
     35 
     36 void
     37 compl_s64(void)
     38 {
     39 	s64 = ~(-0x7fffffffffffffffLL - 1LL);
     40 	s64 = ~-1LL;
     41 	s64 = ~0LL;
     42 	s64 = ~0x7fffffffffffffffLL;
     43 }
     44 
     45 void
     46 compl_u64(void)
     47 {
     48 	u64 = ~0ULL;
     49 	u64 = ~0x7fffffffffffffffULL;
     50 	u64 = ~0x8000000000000000ULL;
     51 	u64 = ~0xffffffffffffffffULL;
     52 }
     53 
     54 void
     55 uplus_s32(void)
     56 {
     57 	s32 = +(-0x7fffffff - 1);
     58 	s32 = +-1;
     59 	s32 = +0;
     60 	s32 = +0x7fffffff;
     61 }
     62 
     63 void
     64 uplus_u32(void)
     65 {
     66 	u32 = +0x00000000U;
     67 	u32 = +0x7fffffffU;
     68 	u32 = +0x80000000U;
     69 	u32 = +0xffffffffU;
     70 }
     71 
     72 void
     73 uplus_s64(void)
     74 {
     75 	s64 = +(-0x7fffffffffffffffLL - 1LL);
     76 	s64 = +-1LL;
     77 	s64 = +0LL;
     78 	s64 = +0x7fffffffffffffffLL;
     79 }
     80 
     81 void
     82 uplus_u64(void)
     83 {
     84 	u64 = +0x0000000000000000ULL;
     85 	u64 = +0x7fffffffffffffffULL;
     86 	u64 = +0x8000000000000000ULL;
     87 	u64 = +0xffffffffffffffffULL;
     88 }
     89 
     90 void
     91 uminus_s32(void)
     92 {
     93 	/* expect+1: warning: '-(-2147483648)' overflows 'int' [141] */
     94 	s32 = -(-0x7fffffff - 1);
     95 	s32 = - -1;
     96 	s32 = -0;
     97 	s32 = -0x7fffffff;
     98 }
     99 
    100 void
    101 uminus_u32(void)
    102 {
    103 	u32 = -0x00000000U;
    104 	u32 = -0x7fffffffU;
    105 	u32 = -0x80000000U;
    106 	u32 = -0xffffffffU;
    107 }
    108 
    109 void
    110 uminus_s64(void)
    111 {
    112 	/* expect+1: warning: '-(-9223372036854775808)' overflows 'long long' [141] */
    113 	s64 = -(-0x7fffffffffffffffLL - 1LL);
    114 	s64 = - -1LL;
    115 	s64 = -0LL;
    116 	s64 = -0x7fffffffffffffffLL;
    117 }
    118 
    119 void
    120 uminus_u64(void)
    121 {
    122 	u64 = -0x0000000000000000ULL;
    123 	u64 = -0x7fffffffffffffffULL;
    124 	u64 = -0x8000000000000000ULL;
    125 	u64 = -0xffffffffffffffffULL;
    126 }
    127 
    128 void
    129 mult_s32(void)
    130 {
    131 	/* expect+1: warning: '-65536 * 65536' overflows 'int' [141] */
    132 	s32 = -0x00010000 * +0x00010000;	// -0x0100000000
    133 	/* expect+1: warning: '-3 * 715827883' overflows 'int' [141] */
    134 	s32 = -0x00000003 * +0x2aaaaaab;	// -0x80000001
    135 	/* expect+1: warning: '715827883 * -3' overflows 'int' [141] */
    136 	s32 = +0x2aaaaaab * -0x00000003;	// -0x80000001
    137 	s32 = -0x00000008 * +0x10000000;	// -0x80000000
    138 	s32 = +0x10000000 * -0x00000008;	// -0x80000000
    139 	s32 = +0x00000002 * +0x3fffffff;	// +0x7ffffffe
    140 	s32 = +0x3fffffff * +0x00000002;	// +0x7ffffffe
    141 	s32 = +0x7fffffff * +0x00000001;	// +0x7fffffff
    142 	s32 = +0x00000001 * +0x7fffffff;	// +0x7fffffff
    143 	/* expect+1: warning: '2 * 1073741824' overflows 'int' [141] */
    144 	s32 = +0x00000002 * +0x40000000;	// +0x80000000
    145 	/* expect+1: warning: '1073741824 * 2' overflows 'int' [141] */
    146 	s32 = +0x40000000 * +0x00000002;	// +0x80000000
    147 	/* expect+1: warning: '65535 * 65537' overflows 'int' [141] */
    148 	s32 = +0x0000ffff * +0x00010001;	// +0xffffffff
    149 	/* expect+1: warning: '65536 * 65536' overflows 'int' [141] */
    150 	s32 = +0x00010000 * +0x00010000;	// +0x0100000000
    151 }
    152 
    153 void
    154 mult_u32(void)
    155 {
    156 	u32 = 0xffffU * 0x10001U;		// +0xffffffff
    157 	/* expect+1: warning: '65536 * 65536' overflows 'unsigned int' [141] */
    158 	u32 = 0x10000U * 0x10000U;		// +0x0100000000
    159 }
    160 
    161 void
    162 mult_s64(void)
    163 {
    164 	/* expect+1: warning: '-4294967296 * 4294967296' overflows 'long long' [141] */
    165 	s64 = -0x100000000LL * 0x100000000LL;	// -0x010000000000000000
    166 	/* expect+1: warning: '-3 * 3074457345618258603' overflows 'long long' [141] */
    167 	s64 = -3LL * 0x2aaaaaaaaaaaaaabLL;	// -0x8000000000000001
    168 	/* expect+1: warning: '3074457345618258603 * -3' overflows 'long long' [141] */
    169 	s64 = 0x2aaaaaaaaaaaaaabLL * -3LL;	// -0x8000000000000001
    170 	s64 = -8LL * +0x1000000000000000LL;	// -0x8000000000000000
    171 	s64 = +0x1000000000000000LL * -8LL;	// -0x8000000000000000
    172 	s64 = +2LL * +0x3fffffffffffffffLL;	// +0x7ffffffffffffffe
    173 	s64 = +0x3fffffffffffffffLL * +2LL;	// +0x7ffffffffffffffe
    174 	s64 = +0x7fffffffffffffffLL * +1LL;	// +0x7fffffffffffffff
    175 	s64 = +1LL * +0x7fffffffffffffffLL;	// +0x7fffffffffffffff
    176 	/* expect+1: warning: '2 * 4611686018427387904' overflows 'long long' [141] */
    177 	s64 = +2LL * +0x4000000000000000LL;	// +0x8000000000000000
    178 	/* expect+1: warning: '4611686018427387904 * 2' overflows 'long long' [141] */
    179 	s64 = +0x4000000000000000LL * +2LL;	// +0x8000000000000000
    180 	/* expect+1: warning: '4294967295 * 4294967297' overflows 'long long' [141] */
    181 	s64 = +0xffffffffLL * +0x100000001LL;	// +0xffffffffffffffff
    182 	/* expect+1: warning: '4294967296 * 4294967296' overflows 'long long' [141] */
    183 	s64 = +0x100000000LL * +0x100000000LL;	// +0x010000000000000000
    184 }
    185 
    186 void
    187 mult_u64(void)
    188 {
    189 	u64 = 0xffffffffULL * 0x100000001ULL;	// +0xffffffffffffffff
    190 	u64 = 0x00010000ULL * 0x00010000ULL;	// +0x0100000000
    191 	/* expect+1: warning: '4294967296 * 4294967296' overflows 'unsigned long long' [141] */
    192 	u64 = 0x100000000ULL * 0x100000000ULL;	// +0x010000000000000000
    193 }
    194 
    195 void
    196 div_s32(void)
    197 {
    198 	/* expect+1: warning: '-2147483648 / -1' overflows 'int' [141] */
    199 	s32 = (-0x7fffffff - 1) / -1;
    200 	s32 = (-0x7fffffff - 1) / 1;
    201 	s32 = 0x7fffffff / -1;
    202 	/* expect+1: error: division by 0 [139] */
    203 	s32 = 0 / 0;
    204 	/* expect+1: error: division by 0 [139] */
    205 	s32 = 0x7fffffff / 0;
    206 }
    207 
    208 void
    209 div_u32(void)
    210 {
    211 	u32 = 0xffffffffU / -1U;
    212 	u32 = 0xffffffffU / 1U;
    213 	/* expect+1: error: division by 0 [139] */
    214 	u32 = 0U / 0U;
    215 	/* expect+1: error: division by 0 [139] */
    216 	u32 = 0xffffffffU / 0U;
    217 }
    218 
    219 void
    220 div_s64(void)
    221 {
    222 	/* expect+1: warning: '-9223372036854775808 / -1' overflows 'long long' [141] */
    223 	s64 = (-0x7fffffffffffffffLL - 1LL) / -1LL;
    224 	s64 = (-0x7fffffffffffffffLL - 1LL) / 1LL;
    225 	s64 = (-0x7fffffffffffffffLL - 1LL) / 0x7fffffffffffffffLL;
    226 	s64 = 0x7fffffffffffffffLL / -1LL;
    227 	s64 = (-0x7fffffffLL - 1LL) / -1LL;
    228 	s64 = (-0x7fffffffLL - 1LL) / 0x7fffffffLL;
    229 	/* expect+1: error: division by 0 [139] */
    230 	s64 = 0LL / 0LL;
    231 	/* expect+1: error: division by 0 [139] */
    232 	s64 = 0x7fffffffffffffffLL / 0LL;
    233 }
    234 
    235 void
    236 div_u64(void)
    237 {
    238 	u64 = 0xffffffffffffffffULL / -1ULL;
    239 	u64 = 0xffffffffffffffffULL / 1ULL;
    240 	/* expect+1: error: division by 0 [139] */
    241 	u64 = 0ULL / 0ULL;
    242 	/* expect+1: error: division by 0 [139] */
    243 	u64 = 0xffffffffffffffffULL / 0ULL;
    244 }
    245 
    246 void
    247 mod_s32(void)
    248 {
    249 	s32 = -1 % (-0x7fffffff - 1);
    250 	s32 = -1 % 0x7fffffff;
    251 	/* expect+1: warning: '-2147483648 % -1' overflows 'int' [141] */
    252 	s32 = (-0x7fffffff - 1) % -1;
    253 	s32 = 0x7fffffff % -1;
    254 }
    255 
    256 void
    257 mod_u32(void)
    258 {
    259 	u64 = 0xffffffffU % -1U;
    260 	u64 = 0xffffffffU % 1U;
    261 	/* expect+1: error: modulus by 0 [140] */
    262 	u64 = 0U % 0U;
    263 	/* expect+1: error: modulus by 0 [140] */
    264 	u64 = 0xffffffffU % 0U;
    265 }
    266 
    267 void
    268 mod_s64(void)
    269 {
    270 	s64 = -1LL % (-0x7fffffffffffffffLL - 1LL);
    271 	s64 = -1LL % 0x7fffffffffffffffLL;
    272 	/* expect+1: warning: '-9223372036854775808 % -1' overflows 'long long' [141] */
    273 	s64 = (-0x7fffffffffffffffLL - 1LL) % -1LL;
    274 	s64 = 0x7fffffffffffffffLL % -1LL;
    275 }
    276 
    277 void
    278 mod_u64(void)
    279 {
    280 	u64 = 0xffffffffffffffffULL % -1ULL;
    281 	u64 = 0xffffffffffffffffULL % 1ULL;
    282 	/* expect+1: error: modulus by 0 [140] */
    283 	u64 = 0ULL % 0ULL;
    284 	/* expect+1: error: modulus by 0 [140] */
    285 	u64 = 0xffffffffffffffffULL % 0ULL;
    286 }
    287 
    288 void
    289 plus_s32(void)
    290 {
    291 	/* expect+1: warning: '-2147483647 + -2147483647' overflows 'int' [141] */
    292 	s32 = -0x7fffffff + -0x7fffffff;
    293 	/* expect+1: warning: '-2147483647 + -2' overflows 'int' [141] */
    294 	s32 = -0x7fffffff + -2;			// INT_MIN - 1
    295 	/* expect+1: warning: '-2 + -2147483647' overflows 'int' [141] */
    296 	s32 = -2 + -0x7fffffff;			// INT_MIN - 1
    297 	s32 = -0x7fffffff + -1;			// INT_MIN
    298 	s32 = -1 + -0x7fffffff;			// INT_MIN
    299 	s32 = -0x7fffffff + 0;			// INT_MIN + 1
    300 	s32 = 0 + -0x7fffffff;			// INT_MIN + 1
    301 	s32 = (-0x7fffffff - 1) + 0x7fffffff;	// -1
    302 	s32 = 0x7fffffff + (-0x7fffffff - 1);	// -1
    303 	s32 = 0x7ffffffe + 1;			// INT_MAX
    304 	s32 = 1 + 0x7ffffffe;			// INT_MAX
    305 	s32 = 0x7fffffff + 0;			// INT_MAX
    306 	s32 = 0 + 0x7fffffff;			// INT_MAX
    307 	/* expect+1: warning: '2147483647 + 1' overflows 'int' [141] */
    308 	s32 = 0x7fffffff + 1;			// INT_MAX + 1
    309 	/* expect+1: warning: '1 + 2147483647' overflows 'int' [141] */
    310 	s32 = 1 + 0x7fffffff;			// INT_MAX + 1
    311 	/* expect+1: warning: '1073741824 + 1073741824' overflows 'int' [141] */
    312 	s32 = 0x40000000 + 0x40000000;		// INT_MAX + 1
    313 	/* expect+1: warning: '2147483647 + 2147483647' overflows 'int' [141] */
    314 	s32 = 0x7fffffff + 0x7fffffff;
    315 }
    316 
    317 void
    318 plus_u32(void)
    319 {
    320 	u32 = 0x00000000U + 0x00000000U;
    321 	u32 = 0x40000000U + 0x40000000U;
    322 	u32 = 0xffffffffU + 0x00000000U;
    323 	u32 = 0x00000000U + 0xffffffffU;
    324 	u32 = 0xfffffffeU + 0x00000001U;
    325 	/* expect+1: warning: '4294967295 + 1' overflows 'unsigned int' [141] */
    326 	u32 = 0xffffffffU + 0x00000001U;
    327 	/* expect+1: warning: '1 + 4294967295' overflows 'unsigned int' [141] */
    328 	u32 = 0x00000001U + 0xffffffffU;
    329 	/* expect+1: warning: '4294967295 + 4294967295' overflows 'unsigned int' [141] */
    330 	u32 = 0xffffffffU + 0xffffffffU;
    331 }
    332 
    333 void
    334 plus_s64(void)
    335 {
    336 	/* expect+1: warning: '-9223372036854775807 + -2' overflows 'long long' [141] */
    337 	s64 = -0x7fffffffffffffffLL + -2LL;
    338 	s64 = -0x7fffffffffffffffLL + -1LL;
    339 	s64 = 0x7ffffffffffffffeLL + 1LL;
    340 	/* expect+1: warning: '9223372036854775807 + 1' overflows 'long long' [141] */
    341 	s64 = 0x7fffffffffffffffLL + 1LL;
    342 }
    343 
    344 void
    345 plus_u64(void)
    346 {
    347 	u64 = 0x0000000000000000ULL + 0x0000000000000000ULL;
    348 	u64 = 0xffffffffffffffffULL + 0x0000000000000000ULL;
    349 	u64 = 0x0000000000000000ULL + 0xffffffffffffffffULL;
    350 	u64 = 0xfffffffffffffffeULL + 0x0000000000000001ULL;
    351 	/* expect+1: warning: '18446744073709551615 + 1' overflows 'unsigned long long' [141] */
    352 	u64 = 0xffffffffffffffffULL + 0x0000000000000001ULL;
    353 	/* expect+1: warning: '1 + 18446744073709551615' overflows 'unsigned long long' [141] */
    354 	u64 = 0x0000000000000001ULL + 0xffffffffffffffffULL;
    355 	/* expect+1: warning: '18446744073709551615 + 18446744073709551615' overflows 'unsigned long long' [141] */
    356 	u64 = 0xffffffffffffffffULL + 0xffffffffffffffffULL;
    357 }
    358 
    359 void
    360 minus_s32(void)
    361 {
    362 	/* expect+1: warning: '-2147483647 - 2' overflows 'int' [141] */
    363 	s32 = -0x7fffffff - 2;
    364 	s32 = -0x7fffffff - 1;
    365 	s32 = -0x7fffffff - 1 - 0;
    366 	s32 = -0x7fffffff - 1 - -1;
    367 	s32 = 0x7fffffff - 0x7fffffff;
    368 	s32 = 0x7fffffff - 1;
    369 	s32 = 0x7fffffff - 0;
    370 	/* expect+1: warning: '2147483647 - -1' overflows 'int' [141] */
    371 	s32 = 0x7fffffff - -1;
    372 }
    373 
    374 void
    375 minus_u32(void)
    376 {
    377 	u32 = 0x00000000U - 0x00000000U;
    378 	/* expect+1: warning: '0 - 1' overflows 'unsigned int' [141] */
    379 	u32 = 0x00000000U - 0x00000001U;
    380 	/* expect+1: warning: '0 - 2147483648' overflows 'unsigned int' [141] */
    381 	u32 = 0x00000000U - 0x80000000U;
    382 	u32 = 0x80000000U - 0x00000001U;
    383 	/* expect+1: warning: '0 - 4294967295' overflows 'unsigned int' [141] */
    384 	u32 = 0x00000000U - 0xffffffffU;
    385 	u32 = 0xffffffffU - 0x00000000U;
    386 	u32 = 0xffffffffU - 0xffffffffU;
    387 }
    388 
    389 void
    390 minus_s64(void)
    391 {
    392 	/* expect+1: warning: '-9223372036854775807 - 9223372036854775807' overflows 'long long' [141] */
    393 	s64 = -0x7fffffffffffffffLL - 0x7fffffffffffffffLL;
    394 	/* expect+1: warning: '-9223372036854775807 - 2' overflows 'long long' [141] */
    395 	s64 = -0x7fffffffffffffffLL - 2LL;
    396 	s64 = -0x7fffffffffffffffLL - 1LL;
    397 	s64 = -0x7fffffffffffffffLL - 0LL;
    398 	s64 = -0x7fffffffffffffffLL - -1LL;
    399 	s64 = 0x7fffffffffffffffLL - 1LL;
    400 	s64 = 0x7fffffffffffffffLL - 0LL;
    401 	/* expect+1: warning: '9223372036854775807 - -1' overflows 'long long' [141] */
    402 	s64 = 0x7fffffffffffffffLL - -1LL;
    403 	/* expect+1: warning: '9223372036854775807 - -9223372036854775807' overflows 'long long' [141] */
    404 	s64 = 0x7fffffffffffffffLL - -0x7fffffffffffffffLL;
    405 }
    406 
    407 void
    408 minus_u64(void)
    409 {
    410 	u64 = 0x0000000000000000ULL - 0x0000000000000000ULL;
    411 	/* expect+1: warning: '0 - 1' overflows 'unsigned long long' [141] */
    412 	u64 = 0x0000000000000000ULL - 0x0000000000000001ULL;
    413 	/* expect+1: warning: '0 - 9223372036854775808' overflows 'unsigned long long' [141] */
    414 	u64 = 0x0000000000000000ULL - 0x8000000000000000ULL;
    415 	u64 = 0x8000000000000000ULL - 0x0000000000000001ULL;
    416 	/* expect+1: warning: '0 - 18446744073709551615' overflows 'unsigned long long' [141] */
    417 	u64 = 0x0000000000000000ULL - 0xffffffffffffffffULL;
    418 	u64 = 0xffffffffffffffffULL - 0x0000000000000000ULL;
    419 	u64 = 0xffffffffffffffffULL - 0xffffffffffffffffULL;
    420 }
    421 
    422 void
    423 shl_s32(void)
    424 {
    425 	/* expect+1: warning: '256 << 23' overflows 'int' [141] */
    426 	s32 = 0x0100 << 23;
    427 	/* expect+1: warning: '256 << 24' overflows 'int' [141] */
    428 	s32 = 0x0100 << 24;
    429 	/* expect+1: warning: shift amount 18446744073709551615 is greater than bit-size 32 of 'int' [122] */
    430 	s32 = 0 << 0xffffffffffffffff;
    431 }
    432 
    433 void
    434 shl_u32(void)
    435 {
    436 	u32 = 0x0100U << 23;
    437 	/* expect+1: warning: '256 << 24' overflows 'unsigned int' [141] */
    438 	u32 = 0x0100U << 24;
    439 	/* expect+1: warning: negative shift [121] */
    440 	u32 = 0x0000U << -1;
    441 	/* expect+1: warning: shift amount 256 is greater than bit-size 32 of 'unsigned int' [122] */
    442 	u32 = 0x0100U << 0x0100U;
    443 	/* expect+1: warning: shift amount 4294967295 is greater than bit-size 32 of 'unsigned int' [122] */
    444 	u32 = 0x0100U << 0xffffffffU;
    445 	/* expect+1: warning: shift amount 18446744073709551615 is greater than bit-size 32 of 'unsigned int' [122] */
    446 	u32 = 0x0100U << 0xffffffffffffffffULL;
    447 }
    448 
    449 void
    450 shl_s64(void)
    451 {
    452 	s64 = 1LL << 62;
    453 	s64 = 1LL << 63;
    454 	/* expect+1: warning: shift amount 64 equals bit-size of 'long long' [267] */
    455 	s64 = 1LL << 64;
    456 }
    457 
    458 void
    459 shl_u64(void)
    460 {
    461 	s64 = 1ULL << 62;
    462 	s64 = 1ULL << 63;
    463 	/* expect+1: warning: shift amount 64 equals bit-size of 'unsigned long long' [267] */
    464 	s64 = 1ULL << 64;
    465 }
    466 
    467 void
    468 shr_s32(void)
    469 {
    470 	s32 = -0x7fffffff >> 1;
    471 	s32 = -10 >> 1;
    472 	s32 = -9 >> 1;
    473 	s32 = +9 >> 1;
    474 	s32 = +10 >> 1;
    475 	s32 = 0x7fffffff >> 1;
    476 
    477 	/* expect+1: error: negative array dimension (-16) [20] */
    478 	typedef int minus_32_shr_1[-32 >> 1];
    479 	/* expect+1: error: negative array dimension (-16) [20] */
    480 	typedef int minus_31_shr_1[-31 >> 1];
    481 	/* expect+1: error: negative array dimension (-15) [20] */
    482 	typedef int minus_30_shr_1[-30 >> 1];
    483 	/* expect+1: error: negative array dimension (-1) [20] */
    484 	typedef int minus_1_shr_1[-1 >> 31];
    485 }
    486 
    487 void
    488 shr_u32(void)
    489 {
    490 	u32 = 0xffffffffU >> 1;
    491 	/* expect+1: warning: shift amount 32 equals bit-size of 'unsigned int' [267] */
    492 	u32 = 0xffffffffU >> 32;
    493 	u32 = 0x00000000U >> 1;
    494 }
    495 
    496 void
    497 shr_s64(void)
    498 {
    499 	// TODO
    500 
    501 	/* expect+1: error: negative array dimension (-16) [20] */
    502 	typedef int minus_16_shr_0[-16LL >> 0];
    503 	/* expect+1: error: negative array dimension (-8) [20] */
    504 	typedef int minus_16_shr_1[-16LL >> 1];
    505 	/* expect+1: error: negative array dimension (-1) [20] */
    506 	typedef int minus_16_shr_16[-16LL >> 16];
    507 	/* expect+1: error: negative array dimension (-1) [20] */
    508 	typedef int minus_16_shr_40[-16LL >> 40];
    509 }
    510 
    511 void
    512 shr_u64(void)
    513 {
    514 	// TODO
    515 }
    516 
    517 void
    518 compare_s32(void)
    519 {
    520 	cond = 0x7fffffff <  (-0x7fffffff - 1);
    521 	cond = 0x7fffffff <= (-0x7fffffff - 1);
    522 	cond = 0x7fffffff >  (-0x7fffffff - 1);
    523 	cond = 0x7fffffff >= (-0x7fffffff - 1);
    524 	cond = 0x7fffffff == (-0x7fffffff - 1);
    525 	cond = 0x7fffffff != (-0x7fffffff - 1);
    526 }
    527 
    528 void
    529 compare_u32(void)
    530 {
    531 	cond = 0xffffffffU <  0x00000000U;
    532 	cond = 0xffffffffU <= 0x00000000U;
    533 	cond = 0xffffffffU >  0x00000000U;
    534 	cond = 0xffffffffU >= 0x00000000U;
    535 	cond = 0xffffffffU == 0x00000000U;
    536 	cond = 0xffffffffU != 0x00000000U;
    537 }
    538 
    539 void
    540 compare_s64(void)
    541 {
    542 	cond = 0x7fffffffffffffffLL <  (-0x7fffffffffffffffLL - 1);
    543 	cond = 0x7fffffffffffffffLL <= (-0x7fffffffffffffffLL - 1);
    544 	cond = 0x7fffffffffffffffLL >  (-0x7fffffffffffffffLL - 1);
    545 	cond = 0x7fffffffffffffffLL >= (-0x7fffffffffffffffLL - 1);
    546 	cond = 0x7fffffffffffffffLL == (-0x7fffffffffffffffLL - 1);
    547 	cond = 0x7fffffffffffffffLL != (-0x7fffffffffffffffLL - 1);
    548 }
    549 
    550 void
    551 compare_u64(void)
    552 {
    553 	cond = 0xffffffffffffffffULL <  0x0000000000000000ULL;
    554 	cond = 0xffffffffffffffffULL <= 0x0000000000000000ULL;
    555 	cond = 0xffffffffffffffffULL >  0x0000000000000000ULL;
    556 	cond = 0xffffffffffffffffULL >= 0x0000000000000000ULL;
    557 	cond = 0xffffffffffffffffULL == 0x0000000000000000ULL;
    558 	cond = 0xffffffffffffffffULL != 0x0000000000000000ULL;
    559 }
    560 
    561 void
    562 bitand_s32(void)
    563 {
    564 	s32 = 0x55555555 & -0xff;
    565 }
    566 
    567 void
    568 bitand_u32(void)
    569 {
    570 	u32 = 0xffffffffU & 0x55555555U;
    571 	u32 = 0x55555555U & 0xaaaaaaaaU;
    572 }
    573 
    574 void
    575 bitand_s64(void)
    576 {
    577 	u64 = ~0x7fffeeeeddddccccLL & 0x1111222233334444LL;
    578 }
    579 
    580 void
    581 bitand_u64(void)
    582 {
    583 	u64 = 0xffffeeeeddddccccULL & 0x1111222233334444ULL;
    584 }
    585 
    586 void
    587 bitxor_s32(void)
    588 {
    589 	s32 = 0x12345678 ^ 0x76543210;
    590 }
    591 
    592 void
    593 bitxor_u32(void)
    594 {
    595 	u32 = 0xffffffffU ^ 0x55555555U;
    596 	u32 = 0x55555555U ^ 0xaaaaaaaaU;
    597 }
    598 
    599 void
    600 bitxor_s64(void)
    601 {
    602 	s64 = ~0x123456789abcdef0LL ^ 0x0123456789abcdefLL;
    603 }
    604 
    605 void
    606 bitxor_u64(void)
    607 {
    608 	u64 = 0xfedcba9876543210ULL ^ 0x0123456789abcdefULL;
    609 }
    610 
    611 void
    612 bitor_s32(void)
    613 {
    614 	s32 = 0x3333cccc | 0x5555aaaa;
    615 }
    616 
    617 void
    618 bitor_u32(void)
    619 {
    620 	u32 = 0xffffffffU | 0x00000000U;
    621 	u32 = 0xffffffffU | 0xffffffffU;
    622 	u32 = 0x55555555U | 0xaaaaaaaaU;
    623 }
    624 
    625 void
    626 bitor_s64(void)
    627 {
    628 	s64 = 0x1111222233334444LL | ~0x0000111122223333LL;
    629 }
    630 
    631 void
    632 bitor_u64(void)
    633 {
    634 	u64 = 0x1111222233334444ULL | 0xffffeeeeddddccccULL;
    635 }
    636