590 lines · c
1// RUN: %clang_builtins %s %librt -o %t && %run %t2// REQUIRES: librt_has_clzsi23 4#include "int_lib.h"5#include <stdio.h>6 7// Returns: the number of leading 0-bits8 9// Precondition: a != 010 11COMPILER_RT_ABI int __clzsi2(si_int a);12 13int test__clzsi2(si_int a, int expected)14{15 int x = __clzsi2(a);16 if (x != expected)17 printf("error in __clzsi2(0x%X) = %d, expected %d\n", a, x, expected);18 return x != expected;19}20 21char assumption_1[sizeof(di_int) == 2*sizeof(si_int)] = {0};22char assumption_2[sizeof(si_int)*CHAR_BIT == 32] = {0};23 24int main()25{26// if (test__clzsi2(0x00000000, 32)) // undefined27// return 1;28 if (test__clzsi2(0x00800000, 8))29 return 1;30 if (test__clzsi2(0x01000000, 7))31 return 1;32 if (test__clzsi2(0x02000000, 6))33 return 1;34 if (test__clzsi2(0x03000000, 6))35 return 1;36 if (test__clzsi2(0x04000000, 5))37 return 1;38 if (test__clzsi2(0x05000000, 5))39 return 1;40 if (test__clzsi2(0x06000000, 5))41 return 1;42 if (test__clzsi2(0x07000000, 5))43 return 1;44 if (test__clzsi2(0x08000000, 4))45 return 1;46 if (test__clzsi2(0x09000000, 4))47 return 1;48 if (test__clzsi2(0x0A000000, 4))49 return 1;50 if (test__clzsi2(0x0B000000, 4))51 return 1;52 if (test__clzsi2(0x0C000000, 4))53 return 1;54 if (test__clzsi2(0x0D000000, 4))55 return 1;56 if (test__clzsi2(0x0E000000, 4))57 return 1;58 if (test__clzsi2(0x0F000000, 4))59 return 1;60 if (test__clzsi2(0x10000000, 3))61 return 1;62 if (test__clzsi2(0x11000000, 3))63 return 1;64 if (test__clzsi2(0x12000000, 3))65 return 1;66 if (test__clzsi2(0x13000000, 3))67 return 1;68 if (test__clzsi2(0x14000000, 3))69 return 1;70 if (test__clzsi2(0x15000000, 3))71 return 1;72 if (test__clzsi2(0x16000000, 3))73 return 1;74 if (test__clzsi2(0x17000000, 3))75 return 1;76 if (test__clzsi2(0x18000000, 3))77 return 1;78 if (test__clzsi2(0x19000000, 3))79 return 1;80 if (test__clzsi2(0x1A000000, 3))81 return 1;82 if (test__clzsi2(0x1B000000, 3))83 return 1;84 if (test__clzsi2(0x1C000000, 3))85 return 1;86 if (test__clzsi2(0x1D000000, 3))87 return 1;88 if (test__clzsi2(0x1E000000, 3))89 return 1;90 if (test__clzsi2(0x1F000000, 3))91 return 1;92 if (test__clzsi2(0x20000000, 2))93 return 1;94 if (test__clzsi2(0x21000000, 2))95 return 1;96 if (test__clzsi2(0x22000000, 2))97 return 1;98 if (test__clzsi2(0x23000000, 2))99 return 1;100 if (test__clzsi2(0x24000000, 2))101 return 1;102 if (test__clzsi2(0x25000000, 2))103 return 1;104 if (test__clzsi2(0x26000000, 2))105 return 1;106 if (test__clzsi2(0x27000000, 2))107 return 1;108 if (test__clzsi2(0x28000000, 2))109 return 1;110 if (test__clzsi2(0x29000000, 2))111 return 1;112 if (test__clzsi2(0x2A000000, 2))113 return 1;114 if (test__clzsi2(0x2B000000, 2))115 return 1;116 if (test__clzsi2(0x2C000000, 2))117 return 1;118 if (test__clzsi2(0x2D000000, 2))119 return 1;120 if (test__clzsi2(0x2E000000, 2))121 return 1;122 if (test__clzsi2(0x2F000000, 2))123 return 1;124 if (test__clzsi2(0x30000000, 2))125 return 1;126 if (test__clzsi2(0x31000000, 2))127 return 1;128 if (test__clzsi2(0x32000000, 2))129 return 1;130 if (test__clzsi2(0x33000000, 2))131 return 1;132 if (test__clzsi2(0x34000000, 2))133 return 1;134 if (test__clzsi2(0x35000000, 2))135 return 1;136 if (test__clzsi2(0x36000000, 2))137 return 1;138 if (test__clzsi2(0x37000000, 2))139 return 1;140 if (test__clzsi2(0x38000000, 2))141 return 1;142 if (test__clzsi2(0x39000000, 2))143 return 1;144 if (test__clzsi2(0x3A000000, 2))145 return 1;146 if (test__clzsi2(0x3B000000, 2))147 return 1;148 if (test__clzsi2(0x3C000000, 2))149 return 1;150 if (test__clzsi2(0x3D000000, 2))151 return 1;152 if (test__clzsi2(0x3E000000, 2))153 return 1;154 if (test__clzsi2(0x3F000000, 2))155 return 1;156 if (test__clzsi2(0x40000000, 1))157 return 1;158 if (test__clzsi2(0x41000000, 1))159 return 1;160 if (test__clzsi2(0x42000000, 1))161 return 1;162 if (test__clzsi2(0x43000000, 1))163 return 1;164 if (test__clzsi2(0x44000000, 1))165 return 1;166 if (test__clzsi2(0x45000000, 1))167 return 1;168 if (test__clzsi2(0x46000000, 1))169 return 1;170 if (test__clzsi2(0x47000000, 1))171 return 1;172 if (test__clzsi2(0x48000000, 1))173 return 1;174 if (test__clzsi2(0x49000000, 1))175 return 1;176 if (test__clzsi2(0x4A000000, 1))177 return 1;178 if (test__clzsi2(0x4B000000, 1))179 return 1;180 if (test__clzsi2(0x4C000000, 1))181 return 1;182 if (test__clzsi2(0x4D000000, 1))183 return 1;184 if (test__clzsi2(0x4E000000, 1))185 return 1;186 if (test__clzsi2(0x4F000000, 1))187 return 1;188 if (test__clzsi2(0x50000000, 1))189 return 1;190 if (test__clzsi2(0x51000000, 1))191 return 1;192 if (test__clzsi2(0x52000000, 1))193 return 1;194 if (test__clzsi2(0x53000000, 1))195 return 1;196 if (test__clzsi2(0x54000000, 1))197 return 1;198 if (test__clzsi2(0x55000000, 1))199 return 1;200 if (test__clzsi2(0x56000000, 1))201 return 1;202 if (test__clzsi2(0x57000000, 1))203 return 1;204 if (test__clzsi2(0x58000000, 1))205 return 1;206 if (test__clzsi2(0x59000000, 1))207 return 1;208 if (test__clzsi2(0x5A000000, 1))209 return 1;210 if (test__clzsi2(0x5B000000, 1))211 return 1;212 if (test__clzsi2(0x5C000000, 1))213 return 1;214 if (test__clzsi2(0x5D000000, 1))215 return 1;216 if (test__clzsi2(0x5E000000, 1))217 return 1;218 if (test__clzsi2(0x5F000000, 1))219 return 1;220 if (test__clzsi2(0x60000000, 1))221 return 1;222 if (test__clzsi2(0x61000000, 1))223 return 1;224 if (test__clzsi2(0x62000000, 1))225 return 1;226 if (test__clzsi2(0x63000000, 1))227 return 1;228 if (test__clzsi2(0x64000000, 1))229 return 1;230 if (test__clzsi2(0x65000000, 1))231 return 1;232 if (test__clzsi2(0x66000000, 1))233 return 1;234 if (test__clzsi2(0x67000000, 1))235 return 1;236 if (test__clzsi2(0x68000000, 1))237 return 1;238 if (test__clzsi2(0x69000000, 1))239 return 1;240 if (test__clzsi2(0x6A000000, 1))241 return 1;242 if (test__clzsi2(0x6B000000, 1))243 return 1;244 if (test__clzsi2(0x6C000000, 1))245 return 1;246 if (test__clzsi2(0x6D000000, 1))247 return 1;248 if (test__clzsi2(0x6E000000, 1))249 return 1;250 if (test__clzsi2(0x6F000000, 1))251 return 1;252 if (test__clzsi2(0x70000000, 1))253 return 1;254 if (test__clzsi2(0x71000000, 1))255 return 1;256 if (test__clzsi2(0x72000000, 1))257 return 1;258 if (test__clzsi2(0x73000000, 1))259 return 1;260 if (test__clzsi2(0x74000000, 1))261 return 1;262 if (test__clzsi2(0x75000000, 1))263 return 1;264 if (test__clzsi2(0x76000000, 1))265 return 1;266 if (test__clzsi2(0x77000000, 1))267 return 1;268 if (test__clzsi2(0x78000000, 1))269 return 1;270 if (test__clzsi2(0x79000000, 1))271 return 1;272 if (test__clzsi2(0x7A000000, 1))273 return 1;274 if (test__clzsi2(0x7B000000, 1))275 return 1;276 if (test__clzsi2(0x7C000000, 1))277 return 1;278 if (test__clzsi2(0x7D000000, 1))279 return 1;280 if (test__clzsi2(0x7E000000, 1))281 return 1;282 if (test__clzsi2(0x7F000000, 1))283 return 1;284 if (test__clzsi2(0x80000000, 0))285 return 1;286 if (test__clzsi2(0x81000000, 0))287 return 1;288 if (test__clzsi2(0x82000000, 0))289 return 1;290 if (test__clzsi2(0x83000000, 0))291 return 1;292 if (test__clzsi2(0x84000000, 0))293 return 1;294 if (test__clzsi2(0x85000000, 0))295 return 1;296 if (test__clzsi2(0x86000000, 0))297 return 1;298 if (test__clzsi2(0x87000000, 0))299 return 1;300 if (test__clzsi2(0x88000000, 0))301 return 1;302 if (test__clzsi2(0x89000000, 0))303 return 1;304 if (test__clzsi2(0x8A000000, 0))305 return 1;306 if (test__clzsi2(0x8B000000, 0))307 return 1;308 if (test__clzsi2(0x8C000000, 0))309 return 1;310 if (test__clzsi2(0x8D000000, 0))311 return 1;312 if (test__clzsi2(0x8E000000, 0))313 return 1;314 if (test__clzsi2(0x8F000000, 0))315 return 1;316 if (test__clzsi2(0x90000000, 0))317 return 1;318 if (test__clzsi2(0x91000000, 0))319 return 1;320 if (test__clzsi2(0x92000000, 0))321 return 1;322 if (test__clzsi2(0x93000000, 0))323 return 1;324 if (test__clzsi2(0x94000000, 0))325 return 1;326 if (test__clzsi2(0x95000000, 0))327 return 1;328 if (test__clzsi2(0x96000000, 0))329 return 1;330 if (test__clzsi2(0x97000000, 0))331 return 1;332 if (test__clzsi2(0x98000000, 0))333 return 1;334 if (test__clzsi2(0x99000000, 0))335 return 1;336 if (test__clzsi2(0x9A000000, 0))337 return 1;338 if (test__clzsi2(0x9B000000, 0))339 return 1;340 if (test__clzsi2(0x9C000000, 0))341 return 1;342 if (test__clzsi2(0x9D000000, 0))343 return 1;344 if (test__clzsi2(0x9E000000, 0))345 return 1;346 if (test__clzsi2(0x9F000000, 0))347 return 1;348 if (test__clzsi2(0xA0000000, 0))349 return 1;350 if (test__clzsi2(0xA1000000, 0))351 return 1;352 if (test__clzsi2(0xA2000000, 0))353 return 1;354 if (test__clzsi2(0xA3000000, 0))355 return 1;356 if (test__clzsi2(0xA4000000, 0))357 return 1;358 if (test__clzsi2(0xA5000000, 0))359 return 1;360 if (test__clzsi2(0xA6000000, 0))361 return 1;362 if (test__clzsi2(0xA7000000, 0))363 return 1;364 if (test__clzsi2(0xA8000000, 0))365 return 1;366 if (test__clzsi2(0xA9000000, 0))367 return 1;368 if (test__clzsi2(0xAA000000, 0))369 return 1;370 if (test__clzsi2(0xAB000000, 0))371 return 1;372 if (test__clzsi2(0xAC000000, 0))373 return 1;374 if (test__clzsi2(0xAD000000, 0))375 return 1;376 if (test__clzsi2(0xAE000000, 0))377 return 1;378 if (test__clzsi2(0xAF000000, 0))379 return 1;380 if (test__clzsi2(0xB0000000, 0))381 return 1;382 if (test__clzsi2(0xB1000000, 0))383 return 1;384 if (test__clzsi2(0xB2000000, 0))385 return 1;386 if (test__clzsi2(0xB3000000, 0))387 return 1;388 if (test__clzsi2(0xB4000000, 0))389 return 1;390 if (test__clzsi2(0xB5000000, 0))391 return 1;392 if (test__clzsi2(0xB6000000, 0))393 return 1;394 if (test__clzsi2(0xB7000000, 0))395 return 1;396 if (test__clzsi2(0xB8000000, 0))397 return 1;398 if (test__clzsi2(0xB9000000, 0))399 return 1;400 if (test__clzsi2(0xBA000000, 0))401 return 1;402 if (test__clzsi2(0xBB000000, 0))403 return 1;404 if (test__clzsi2(0xBC000000, 0))405 return 1;406 if (test__clzsi2(0xBD000000, 0))407 return 1;408 if (test__clzsi2(0xBE000000, 0))409 return 1;410 if (test__clzsi2(0xBF000000, 0))411 return 1;412 if (test__clzsi2(0xC0000000, 0))413 return 1;414 if (test__clzsi2(0xC1000000, 0))415 return 1;416 if (test__clzsi2(0xC2000000, 0))417 return 1;418 if (test__clzsi2(0xC3000000, 0))419 return 1;420 if (test__clzsi2(0xC4000000, 0))421 return 1;422 if (test__clzsi2(0xC5000000, 0))423 return 1;424 if (test__clzsi2(0xC6000000, 0))425 return 1;426 if (test__clzsi2(0xC7000000, 0))427 return 1;428 if (test__clzsi2(0xC8000000, 0))429 return 1;430 if (test__clzsi2(0xC9000000, 0))431 return 1;432 if (test__clzsi2(0xCA000000, 0))433 return 1;434 if (test__clzsi2(0xCB000000, 0))435 return 1;436 if (test__clzsi2(0xCC000000, 0))437 return 1;438 if (test__clzsi2(0xCD000000, 0))439 return 1;440 if (test__clzsi2(0xCE000000, 0))441 return 1;442 if (test__clzsi2(0xCF000000, 0))443 return 1;444 if (test__clzsi2(0xD0000000, 0))445 return 1;446 if (test__clzsi2(0xD1000000, 0))447 return 1;448 if (test__clzsi2(0xD2000000, 0))449 return 1;450 if (test__clzsi2(0xD3000000, 0))451 return 1;452 if (test__clzsi2(0xD4000000, 0))453 return 1;454 if (test__clzsi2(0xD5000000, 0))455 return 1;456 if (test__clzsi2(0xD6000000, 0))457 return 1;458 if (test__clzsi2(0xD7000000, 0))459 return 1;460 if (test__clzsi2(0xD8000000, 0))461 return 1;462 if (test__clzsi2(0xD9000000, 0))463 return 1;464 if (test__clzsi2(0xDA000000, 0))465 return 1;466 if (test__clzsi2(0xDB000000, 0))467 return 1;468 if (test__clzsi2(0xDC000000, 0))469 return 1;470 if (test__clzsi2(0xDD000000, 0))471 return 1;472 if (test__clzsi2(0xDE000000, 0))473 return 1;474 if (test__clzsi2(0xDF000000, 0))475 return 1;476 if (test__clzsi2(0xE0000000, 0))477 return 1;478 if (test__clzsi2(0xE1000000, 0))479 return 1;480 if (test__clzsi2(0xE2000000, 0))481 return 1;482 if (test__clzsi2(0xE3000000, 0))483 return 1;484 if (test__clzsi2(0xE4000000, 0))485 return 1;486 if (test__clzsi2(0xE5000000, 0))487 return 1;488 if (test__clzsi2(0xE6000000, 0))489 return 1;490 if (test__clzsi2(0xE7000000, 0))491 return 1;492 if (test__clzsi2(0xE8000000, 0))493 return 1;494 if (test__clzsi2(0xE9000000, 0))495 return 1;496 if (test__clzsi2(0xEA000000, 0))497 return 1;498 if (test__clzsi2(0xEB000000, 0))499 return 1;500 if (test__clzsi2(0xEC000000, 0))501 return 1;502 if (test__clzsi2(0xED000000, 0))503 return 1;504 if (test__clzsi2(0xEE000000, 0))505 return 1;506 if (test__clzsi2(0xEF000000, 0))507 return 1;508 if (test__clzsi2(0xF0000000, 0))509 return 1;510 if (test__clzsi2(0xF1000000, 0))511 return 1;512 if (test__clzsi2(0xF2000000, 0))513 return 1;514 if (test__clzsi2(0xF3000000, 0))515 return 1;516 if (test__clzsi2(0xF4000000, 0))517 return 1;518 if (test__clzsi2(0xF5000000, 0))519 return 1;520 if (test__clzsi2(0xF6000000, 0))521 return 1;522 if (test__clzsi2(0xF7000000, 0))523 return 1;524 if (test__clzsi2(0xF8000000, 0))525 return 1;526 if (test__clzsi2(0xF9000000, 0))527 return 1;528 if (test__clzsi2(0xFA000000, 0))529 return 1;530 if (test__clzsi2(0xFB000000, 0))531 return 1;532 if (test__clzsi2(0xFC000000, 0))533 return 1;534 if (test__clzsi2(0xFD000000, 0))535 return 1;536 if (test__clzsi2(0xFE000000, 0))537 return 1;538 if (test__clzsi2(0xFF000000, 0))539 return 1;540 541 if (test__clzsi2(0x00000001, 31))542 return 1;543 if (test__clzsi2(0x00000002, 30))544 return 1;545 if (test__clzsi2(0x00000004, 29))546 return 1;547 if (test__clzsi2(0x00000008, 28))548 return 1;549 if (test__clzsi2(0x00000010, 27))550 return 1;551 if (test__clzsi2(0x00000020, 26))552 return 1;553 if (test__clzsi2(0x00000040, 25))554 return 1;555 if (test__clzsi2(0x00000080, 24))556 return 1;557 if (test__clzsi2(0x00000100, 23))558 return 1;559 if (test__clzsi2(0x00000200, 22))560 return 1;561 if (test__clzsi2(0x00000400, 21))562 return 1;563 if (test__clzsi2(0x00000800, 20))564 return 1;565 if (test__clzsi2(0x00001000, 19))566 return 1;567 if (test__clzsi2(0x00002000, 18))568 return 1;569 if (test__clzsi2(0x00004000, 17))570 return 1;571 if (test__clzsi2(0x00008000, 16))572 return 1;573 if (test__clzsi2(0x00010000, 15))574 return 1;575 if (test__clzsi2(0x00020000, 14))576 return 1;577 if (test__clzsi2(0x00040000, 13))578 return 1;579 if (test__clzsi2(0x00080000, 12))580 return 1;581 if (test__clzsi2(0x00100000, 11))582 return 1;583 if (test__clzsi2(0x00200000, 10))584 return 1;585 if (test__clzsi2(0x00400000, 9))586 return 1;587 588 return 0;589}590