mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-11 23:08:08 +02:00
1531 lines
33 KiB
ObjectPascal
1531 lines
33 KiB
ObjectPascal
{$mode objfpc}
|
|
|
|
program tbsx2;
|
|
|
|
function test_byte: boolean;
|
|
var
|
|
f,r: byte;
|
|
begin
|
|
f:=BsfByte($07);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsfByte($07) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($01);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsrByte($01) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($0E);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsfByte($0E) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($03);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsrByte($03) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($14);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsfByte($14) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($06);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsrByte($06) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($28);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsfByte($28) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($0B);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsrByte($0B) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($30);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsfByte($30) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($14);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsrByte($14) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($60);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsfByte($60) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($25);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsrByte($25) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($40);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsfByte($40) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($46);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsrByte($46) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsfByte($80);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsfByte($80) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsrByte($87);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsrByte($87) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
|
|
f:=BsfByte(0);
|
|
if (f<>$ff) then
|
|
begin
|
|
writeln('BsfByte(0) returned ',f,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
r:=BsrByte(0);
|
|
if r<>$ff then
|
|
begin
|
|
writeln('BsrByte(0) returned ',r,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
result:=true;
|
|
end;
|
|
|
|
function test_word: boolean;
|
|
var
|
|
f,r: integer;
|
|
begin
|
|
f:=BsfWord(15);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsfWord(15) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(1);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsrWord(1) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(30);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsfWord(30) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(3);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsrWord(3) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(52);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsfWord(52) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(6);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsrWord(6) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(104);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsfWord(104) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(11);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsrWord(11) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(176);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsfWord(176) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(20);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsrWord(20) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(352);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsfWord(352) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(37);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsrWord(37) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(576);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsfWord(576) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(70);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsrWord(70) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(1152);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsfWord(1152) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(135);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsrWord(135) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(1792);
|
|
if f<>8 then
|
|
begin
|
|
writeln('BsfWord(1792) returned ',f,', should be 8');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(264);
|
|
if f<>8 then
|
|
begin
|
|
writeln('BsrWord(264) returned ',f,', should be 8');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(3584);
|
|
if f<>9 then
|
|
begin
|
|
writeln('BsfWord(3584) returned ',f,', should be 9');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(521);
|
|
if f<>9 then
|
|
begin
|
|
writeln('BsrWord(521) returned ',f,', should be 9');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(5120);
|
|
if f<>10 then
|
|
begin
|
|
writeln('BsfWord(5120) returned ',f,', should be 10');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(1034);
|
|
if f<>10 then
|
|
begin
|
|
writeln('BsrWord(1034) returned ',f,', should be 10');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(10240);
|
|
if f<>11 then
|
|
begin
|
|
writeln('BsfWord(10240) returned ',f,', should be 11');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(2059);
|
|
if f<>11 then
|
|
begin
|
|
writeln('BsrWord(2059) returned ',f,', should be 11');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(12288);
|
|
if f<>12 then
|
|
begin
|
|
writeln('BsfWord(12288) returned ',f,', should be 12');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(4108);
|
|
if f<>12 then
|
|
begin
|
|
writeln('BsrWord(4108) returned ',f,', should be 12');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(24576);
|
|
if f<>13 then
|
|
begin
|
|
writeln('BsfWord(24576) returned ',f,', should be 13');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(8205);
|
|
if f<>13 then
|
|
begin
|
|
writeln('BsrWord(8205) returned ',f,', should be 13');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(16384);
|
|
if f<>14 then
|
|
begin
|
|
writeln('BsfWord(16384) returned ',f,', should be 14');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(16398);
|
|
if f<>14 then
|
|
begin
|
|
writeln('BsrWord(16398) returned ',f,', should be 14');
|
|
exit(false);
|
|
end;
|
|
f:=BsfWord(32768);
|
|
if f<>15 then
|
|
begin
|
|
writeln('BsfWord(32768) returned ',f,', should be 15');
|
|
exit(false);
|
|
end;
|
|
f:=BsrWord(32783);
|
|
if f<>15 then
|
|
begin
|
|
writeln('BsrWord(32783) returned ',f,', should be 15');
|
|
exit(false);
|
|
end;
|
|
|
|
f:=BsfWord(0);
|
|
if (f<>$ff) then
|
|
begin
|
|
writeln('BsfWord(0) returned ',f,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
r:=BsrWord(0);
|
|
if r<>$ff then
|
|
begin
|
|
writeln('BsrWord(0) returned ',r,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
result:=true;
|
|
end;
|
|
|
|
function test_dword: boolean;
|
|
var
|
|
f,r: integer;
|
|
begin
|
|
f:=BsfDWord(31);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsfDWord(31) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(1);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsrDWord(1) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(62);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsfDWord(62) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(3);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsrDWord(3) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(116);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsfDWord(116) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(6);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsrDWord(6) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(232);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsfDWord(232) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(11);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsrDWord(11) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(432);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsfDWord(432) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(20);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsrDWord(20) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(864);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsfDWord(864) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(37);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsrDWord(37) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(1600);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsfDWord(1600) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(70);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsrDWord(70) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(3200);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsfDWord(3200) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(135);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsrDWord(135) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(5888);
|
|
if f<>8 then
|
|
begin
|
|
writeln('BsfDWord(5888) returned ',f,', should be 8');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(264);
|
|
if f<>8 then
|
|
begin
|
|
writeln('BsrDWord(264) returned ',f,', should be 8');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(11776);
|
|
if f<>9 then
|
|
begin
|
|
writeln('BsfDWord(11776) returned ',f,', should be 9');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(521);
|
|
if f<>9 then
|
|
begin
|
|
writeln('BsrDWord(521) returned ',f,', should be 9');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(21504);
|
|
if f<>10 then
|
|
begin
|
|
writeln('BsfDWord(21504) returned ',f,', should be 10');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(1034);
|
|
if f<>10 then
|
|
begin
|
|
writeln('BsrDWord(1034) returned ',f,', should be 10');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(43008);
|
|
if f<>11 then
|
|
begin
|
|
writeln('BsfDWord(43008) returned ',f,', should be 11');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(2059);
|
|
if f<>11 then
|
|
begin
|
|
writeln('BsrDWord(2059) returned ',f,', should be 11');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(77824);
|
|
if f<>12 then
|
|
begin
|
|
writeln('BsfDWord(77824) returned ',f,', should be 12');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(4108);
|
|
if f<>12 then
|
|
begin
|
|
writeln('BsrDWord(4108) returned ',f,', should be 12');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(155648);
|
|
if f<>13 then
|
|
begin
|
|
writeln('BsfDWord(155648) returned ',f,', should be 13');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(8205);
|
|
if f<>13 then
|
|
begin
|
|
writeln('BsrDWord(8205) returned ',f,', should be 13');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(278528);
|
|
if f<>14 then
|
|
begin
|
|
writeln('BsfDWord(278528) returned ',f,', should be 14');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(16398);
|
|
if f<>14 then
|
|
begin
|
|
writeln('BsrDWord(16398) returned ',f,', should be 14');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(557056);
|
|
if f<>15 then
|
|
begin
|
|
writeln('BsfDWord(557056) returned ',f,', should be 15');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(32783);
|
|
if f<>15 then
|
|
begin
|
|
writeln('BsrDWord(32783) returned ',f,', should be 15');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(983040);
|
|
if f<>16 then
|
|
begin
|
|
writeln('BsfDWord(983040) returned ',f,', should be 16');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(65552);
|
|
if f<>16 then
|
|
begin
|
|
writeln('BsrDWord(65552) returned ',f,', should be 16');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(1966080);
|
|
if f<>17 then
|
|
begin
|
|
writeln('BsfDWord(1966080) returned ',f,', should be 17');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(131089);
|
|
if f<>17 then
|
|
begin
|
|
writeln('BsrDWord(131089) returned ',f,', should be 17');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(3407872);
|
|
if f<>18 then
|
|
begin
|
|
writeln('BsfDWord(3407872) returned ',f,', should be 18');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(262162);
|
|
if f<>18 then
|
|
begin
|
|
writeln('BsrDWord(262162) returned ',f,', should be 18');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(6815744);
|
|
if f<>19 then
|
|
begin
|
|
writeln('BsfDWord(6815744) returned ',f,', should be 19');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(524307);
|
|
if f<>19 then
|
|
begin
|
|
writeln('BsrDWord(524307) returned ',f,', should be 19');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(11534336);
|
|
if f<>20 then
|
|
begin
|
|
writeln('BsfDWord(11534336) returned ',f,', should be 20');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(1048596);
|
|
if f<>20 then
|
|
begin
|
|
writeln('BsrDWord(1048596) returned ',f,', should be 20');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(23068672);
|
|
if f<>21 then
|
|
begin
|
|
writeln('BsfDWord(23068672) returned ',f,', should be 21');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(2097173);
|
|
if f<>21 then
|
|
begin
|
|
writeln('BsrDWord(2097173) returned ',f,', should be 21');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(37748736);
|
|
if f<>22 then
|
|
begin
|
|
writeln('BsfDWord(37748736) returned ',f,', should be 22');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(4194326);
|
|
if f<>22 then
|
|
begin
|
|
writeln('BsrDWord(4194326) returned ',f,', should be 22');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(75497472);
|
|
if f<>23 then
|
|
begin
|
|
writeln('BsfDWord(75497472) returned ',f,', should be 23');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(8388631);
|
|
if f<>23 then
|
|
begin
|
|
writeln('BsrDWord(8388631) returned ',f,', should be 23');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(117440512);
|
|
if f<>24 then
|
|
begin
|
|
writeln('BsfDWord(117440512) returned ',f,', should be 24');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(16777240);
|
|
if f<>24 then
|
|
begin
|
|
writeln('BsrDWord(16777240) returned ',f,', should be 24');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(234881024);
|
|
if f<>25 then
|
|
begin
|
|
writeln('BsfDWord(234881024) returned ',f,', should be 25');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(33554457);
|
|
if f<>25 then
|
|
begin
|
|
writeln('BsrDWord(33554457) returned ',f,', should be 25');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(335544320);
|
|
if f<>26 then
|
|
begin
|
|
writeln('BsfDWord(335544320) returned ',f,', should be 26');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(67108890);
|
|
if f<>26 then
|
|
begin
|
|
writeln('BsrDWord(67108890) returned ',f,', should be 26');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(671088640);
|
|
if f<>27 then
|
|
begin
|
|
writeln('BsfDWord(671088640) returned ',f,', should be 27');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(134217755);
|
|
if f<>27 then
|
|
begin
|
|
writeln('BsrDWord(134217755) returned ',f,', should be 27');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(805306368);
|
|
if f<>28 then
|
|
begin
|
|
writeln('BsfDWord(805306368) returned ',f,', should be 28');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(268435484);
|
|
if f<>28 then
|
|
begin
|
|
writeln('BsrDWord(268435484) returned ',f,', should be 28');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(1610612736);
|
|
if f<>29 then
|
|
begin
|
|
writeln('BsfDWord(1610612736) returned ',f,', should be 29');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(536870941);
|
|
if f<>29 then
|
|
begin
|
|
writeln('BsrDWord(536870941) returned ',f,', should be 29');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(1073741824);
|
|
if f<>30 then
|
|
begin
|
|
writeln('BsfDWord(1073741824) returned ',f,', should be 30');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(1073741854);
|
|
if f<>30 then
|
|
begin
|
|
writeln('BsrDWord(1073741854) returned ',f,', should be 30');
|
|
exit(false);
|
|
end;
|
|
f:=BsfDWord(2147483648);
|
|
if f<>31 then
|
|
begin
|
|
writeln('BsfDWord(2147483648) returned ',f,', should be 31');
|
|
exit(false);
|
|
end;
|
|
f:=BsrDWord(2147483679);
|
|
if f<>31 then
|
|
begin
|
|
writeln('BsrDWord(2147483679) returned ',f,', should be 31');
|
|
exit(false);
|
|
end;
|
|
|
|
f:=BsfDWord(0);
|
|
if (f<>$ff) then
|
|
begin
|
|
writeln('BsfDWord(0) returned ',f,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
r:=BsrDWord(0);
|
|
if r<>$ff then
|
|
begin
|
|
writeln('BsrDWord(0) returned ',r,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
result:=true;
|
|
end;
|
|
|
|
function test_qword: boolean;
|
|
var
|
|
f, r: integer;
|
|
begin
|
|
f:=BsfQWord(63);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsfQWord(63) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1);
|
|
if f<>0 then
|
|
begin
|
|
writeln('BsrQWord(1) returned ',f,', should be 0');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(126);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsfQWord(126) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(3);
|
|
if f<>1 then
|
|
begin
|
|
writeln('BsrQWord(3) returned ',f,', should be 1');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(244);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsfQWord(244) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(6);
|
|
if f<>2 then
|
|
begin
|
|
writeln('BsrQWord(6) returned ',f,', should be 2');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(488);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsfQWord(488) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(11);
|
|
if f<>3 then
|
|
begin
|
|
writeln('BsrQWord(11) returned ',f,', should be 3');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(944);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsfQWord(944) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(20);
|
|
if f<>4 then
|
|
begin
|
|
writeln('BsrQWord(20) returned ',f,', should be 4');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1888);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsfQWord(1888) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(37);
|
|
if f<>5 then
|
|
begin
|
|
writeln('BsrQWord(37) returned ',f,', should be 5');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(3648);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsfQWord(3648) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(70);
|
|
if f<>6 then
|
|
begin
|
|
writeln('BsrQWord(70) returned ',f,', should be 6');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(7296);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsfQWord(7296) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(135);
|
|
if f<>7 then
|
|
begin
|
|
writeln('BsrQWord(135) returned ',f,', should be 7');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(14080);
|
|
if f<>8 then
|
|
begin
|
|
writeln('BsfQWord(14080) returned ',f,', should be 8');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(264);
|
|
if f<>8 then
|
|
begin
|
|
writeln('BsrQWord(264) returned ',f,', should be 8');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(28160);
|
|
if f<>9 then
|
|
begin
|
|
writeln('BsfQWord(28160) returned ',f,', should be 9');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(521);
|
|
if f<>9 then
|
|
begin
|
|
writeln('BsrQWord(521) returned ',f,', should be 9');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(54272);
|
|
if f<>10 then
|
|
begin
|
|
writeln('BsfQWord(54272) returned ',f,', should be 10');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1034);
|
|
if f<>10 then
|
|
begin
|
|
writeln('BsrQWord(1034) returned ',f,', should be 10');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(108544);
|
|
if f<>11 then
|
|
begin
|
|
writeln('BsfQWord(108544) returned ',f,', should be 11');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(2059);
|
|
if f<>11 then
|
|
begin
|
|
writeln('BsrQWord(2059) returned ',f,', should be 11');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(208896);
|
|
if f<>12 then
|
|
begin
|
|
writeln('BsfQWord(208896) returned ',f,', should be 12');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(4108);
|
|
if f<>12 then
|
|
begin
|
|
writeln('BsrQWord(4108) returned ',f,', should be 12');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(417792);
|
|
if f<>13 then
|
|
begin
|
|
writeln('BsfQWord(417792) returned ',f,', should be 13');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(8205);
|
|
if f<>13 then
|
|
begin
|
|
writeln('BsrQWord(8205) returned ',f,', should be 13');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(802816);
|
|
if f<>14 then
|
|
begin
|
|
writeln('BsfQWord(802816) returned ',f,', should be 14');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(16398);
|
|
if f<>14 then
|
|
begin
|
|
writeln('BsrQWord(16398) returned ',f,', should be 14');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1605632);
|
|
if f<>15 then
|
|
begin
|
|
writeln('BsfQWord(1605632) returned ',f,', should be 15');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(32783);
|
|
if f<>15 then
|
|
begin
|
|
writeln('BsrQWord(32783) returned ',f,', should be 15');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(3080192);
|
|
if f<>16 then
|
|
begin
|
|
writeln('BsfQWord(3080192) returned ',f,', should be 16');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(65552);
|
|
if f<>16 then
|
|
begin
|
|
writeln('BsrQWord(65552) returned ',f,', should be 16');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(6160384);
|
|
if f<>17 then
|
|
begin
|
|
writeln('BsfQWord(6160384) returned ',f,', should be 17');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(131089);
|
|
if f<>17 then
|
|
begin
|
|
writeln('BsrQWord(131089) returned ',f,', should be 17');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(11796480);
|
|
if f<>18 then
|
|
begin
|
|
writeln('BsfQWord(11796480) returned ',f,', should be 18');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(262162);
|
|
if f<>18 then
|
|
begin
|
|
writeln('BsrQWord(262162) returned ',f,', should be 18');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(23592960);
|
|
if f<>19 then
|
|
begin
|
|
writeln('BsfQWord(23592960) returned ',f,', should be 19');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(524307);
|
|
if f<>19 then
|
|
begin
|
|
writeln('BsrQWord(524307) returned ',f,', should be 19');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(45088768);
|
|
if f<>20 then
|
|
begin
|
|
writeln('BsfQWord(45088768) returned ',f,', should be 20');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1048596);
|
|
if f<>20 then
|
|
begin
|
|
writeln('BsrQWord(1048596) returned ',f,', should be 20');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(90177536);
|
|
if f<>21 then
|
|
begin
|
|
writeln('BsfQWord(90177536) returned ',f,', should be 21');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(2097173);
|
|
if f<>21 then
|
|
begin
|
|
writeln('BsrQWord(2097173) returned ',f,', should be 21');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(171966464);
|
|
if f<>22 then
|
|
begin
|
|
writeln('BsfQWord(171966464) returned ',f,', should be 22');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(4194326);
|
|
if f<>22 then
|
|
begin
|
|
writeln('BsrQWord(4194326) returned ',f,', should be 22');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(343932928);
|
|
if f<>23 then
|
|
begin
|
|
writeln('BsfQWord(343932928) returned ',f,', should be 23');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(8388631);
|
|
if f<>23 then
|
|
begin
|
|
writeln('BsrQWord(8388631) returned ',f,', should be 23');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(654311424);
|
|
if f<>24 then
|
|
begin
|
|
writeln('BsfQWord(654311424) returned ',f,', should be 24');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(16777240);
|
|
if f<>24 then
|
|
begin
|
|
writeln('BsrQWord(16777240) returned ',f,', should be 24');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1308622848);
|
|
if f<>25 then
|
|
begin
|
|
writeln('BsfQWord(1308622848) returned ',f,', should be 25');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(33554457);
|
|
if f<>25 then
|
|
begin
|
|
writeln('BsrQWord(33554457) returned ',f,', should be 25');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(2483027968);
|
|
if f<>26 then
|
|
begin
|
|
writeln('BsfQWord(2483027968) returned ',f,', should be 26');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(67108890);
|
|
if f<>26 then
|
|
begin
|
|
writeln('BsrQWord(67108890) returned ',f,', should be 26');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(4966055936);
|
|
if f<>27 then
|
|
begin
|
|
writeln('BsfQWord(4966055936) returned ',f,', should be 27');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(134217755);
|
|
if f<>27 then
|
|
begin
|
|
writeln('BsrQWord(134217755) returned ',f,', should be 27');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(9395240960);
|
|
if f<>28 then
|
|
begin
|
|
writeln('BsfQWord(9395240960) returned ',f,', should be 28');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(268435484);
|
|
if f<>28 then
|
|
begin
|
|
writeln('BsrQWord(268435484) returned ',f,', should be 28');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(18790481920);
|
|
if f<>29 then
|
|
begin
|
|
writeln('BsfQWord(18790481920) returned ',f,', should be 29');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(536870941);
|
|
if f<>29 then
|
|
begin
|
|
writeln('BsrQWord(536870941) returned ',f,', should be 29');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(35433480192);
|
|
if f<>30 then
|
|
begin
|
|
writeln('BsfQWord(35433480192) returned ',f,', should be 30');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1073741854);
|
|
if f<>30 then
|
|
begin
|
|
writeln('BsrQWord(1073741854) returned ',f,', should be 30');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(70866960384);
|
|
if f<>31 then
|
|
begin
|
|
writeln('BsfQWord(70866960384) returned ',f,', should be 31');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(2147483679);
|
|
if f<>31 then
|
|
begin
|
|
writeln('BsrQWord(2147483679) returned ',f,', should be 31');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(133143986176);
|
|
if f<>32 then
|
|
begin
|
|
writeln('BsfQWord(133143986176) returned ',f,', should be 32');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(4294967328);
|
|
if f<>32 then
|
|
begin
|
|
writeln('BsrQWord(4294967328) returned ',f,', should be 32');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(266287972352);
|
|
if f<>33 then
|
|
begin
|
|
writeln('BsfQWord(266287972352) returned ',f,', should be 33');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(8589934625);
|
|
if f<>33 then
|
|
begin
|
|
writeln('BsrQWord(8589934625) returned ',f,', should be 33');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(498216206336);
|
|
if f<>34 then
|
|
begin
|
|
writeln('BsfQWord(498216206336) returned ',f,', should be 34');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(17179869218);
|
|
if f<>34 then
|
|
begin
|
|
writeln('BsrQWord(17179869218) returned ',f,', should be 34');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(996432412672);
|
|
if f<>35 then
|
|
begin
|
|
writeln('BsfQWord(996432412672) returned ',f,', should be 35');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(34359738403);
|
|
if f<>35 then
|
|
begin
|
|
writeln('BsrQWord(34359738403) returned ',f,', should be 35');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1855425871872);
|
|
if f<>36 then
|
|
begin
|
|
writeln('BsfQWord(1855425871872) returned ',f,', should be 36');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(68719476772);
|
|
if f<>36 then
|
|
begin
|
|
writeln('BsrQWord(68719476772) returned ',f,', should be 36');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(3710851743744);
|
|
if f<>37 then
|
|
begin
|
|
writeln('BsfQWord(3710851743744) returned ',f,', should be 37');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(137438953509);
|
|
if f<>37 then
|
|
begin
|
|
writeln('BsrQWord(137438953509) returned ',f,', should be 37');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(6871947673600);
|
|
if f<>38 then
|
|
begin
|
|
writeln('BsfQWord(6871947673600) returned ',f,', should be 38');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(274877906982);
|
|
if f<>38 then
|
|
begin
|
|
writeln('BsrQWord(274877906982) returned ',f,', should be 38');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(13743895347200);
|
|
if f<>39 then
|
|
begin
|
|
writeln('BsfQWord(13743895347200) returned ',f,', should be 39');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(549755813927);
|
|
if f<>39 then
|
|
begin
|
|
writeln('BsrQWord(549755813927) returned ',f,', should be 39');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(25288767438848);
|
|
if f<>40 then
|
|
begin
|
|
writeln('BsfQWord(25288767438848) returned ',f,', should be 40');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1099511627816);
|
|
if f<>40 then
|
|
begin
|
|
writeln('BsrQWord(1099511627816) returned ',f,', should be 40');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(50577534877696);
|
|
if f<>41 then
|
|
begin
|
|
writeln('BsfQWord(50577534877696) returned ',f,', should be 41');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(2199023255593);
|
|
if f<>41 then
|
|
begin
|
|
writeln('BsrQWord(2199023255593) returned ',f,', should be 41');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(92358976733184);
|
|
if f<>42 then
|
|
begin
|
|
writeln('BsfQWord(92358976733184) returned ',f,', should be 42');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(4398046511146);
|
|
if f<>42 then
|
|
begin
|
|
writeln('BsrQWord(4398046511146) returned ',f,', should be 42');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(184717953466368);
|
|
if f<>43 then
|
|
begin
|
|
writeln('BsfQWord(184717953466368) returned ',f,', should be 43');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(8796093022251);
|
|
if f<>43 then
|
|
begin
|
|
writeln('BsrQWord(8796093022251) returned ',f,', should be 43');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(334251534843904);
|
|
if f<>44 then
|
|
begin
|
|
writeln('BsfQWord(334251534843904) returned ',f,', should be 44');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(17592186044460);
|
|
if f<>44 then
|
|
begin
|
|
writeln('BsrQWord(17592186044460) returned ',f,', should be 44');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(668503069687808);
|
|
if f<>45 then
|
|
begin
|
|
writeln('BsfQWord(668503069687808) returned ',f,', should be 45');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(35184372088877);
|
|
if f<>45 then
|
|
begin
|
|
writeln('BsrQWord(35184372088877) returned ',f,', should be 45');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1196268651020288);
|
|
if f<>46 then
|
|
begin
|
|
writeln('BsfQWord(1196268651020288) returned ',f,', should be 46');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(70368744177710);
|
|
if f<>46 then
|
|
begin
|
|
writeln('BsrQWord(70368744177710) returned ',f,', should be 46');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(2392537302040576);
|
|
if f<>47 then
|
|
begin
|
|
writeln('BsfQWord(2392537302040576) returned ',f,', should be 47');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(140737488355375);
|
|
if f<>47 then
|
|
begin
|
|
writeln('BsrQWord(140737488355375) returned ',f,', should be 47');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(4222124650659840);
|
|
if f<>48 then
|
|
begin
|
|
writeln('BsfQWord(4222124650659840) returned ',f,', should be 48');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(281474976710704);
|
|
if f<>48 then
|
|
begin
|
|
writeln('BsrQWord(281474976710704) returned ',f,', should be 48');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(8444249301319680);
|
|
if f<>49 then
|
|
begin
|
|
writeln('BsfQWord(8444249301319680) returned ',f,', should be 49');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(562949953421361);
|
|
if f<>49 then
|
|
begin
|
|
writeln('BsrQWord(562949953421361) returned ',f,', should be 49');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(14636698788954112);
|
|
if f<>50 then
|
|
begin
|
|
writeln('BsfQWord(14636698788954112) returned ',f,', should be 50');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1125899906842674);
|
|
if f<>50 then
|
|
begin
|
|
writeln('BsrQWord(1125899906842674) returned ',f,', should be 50');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(29273397577908224);
|
|
if f<>51 then
|
|
begin
|
|
writeln('BsfQWord(29273397577908224) returned ',f,', should be 51');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(2251799813685299);
|
|
if f<>51 then
|
|
begin
|
|
writeln('BsrQWord(2251799813685299) returned ',f,', should be 51');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(49539595901075456);
|
|
if f<>52 then
|
|
begin
|
|
writeln('BsfQWord(49539595901075456) returned ',f,', should be 52');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(4503599627370548);
|
|
if f<>52 then
|
|
begin
|
|
writeln('BsrQWord(4503599627370548) returned ',f,', should be 52');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(99079191802150912);
|
|
if f<>53 then
|
|
begin
|
|
writeln('BsfQWord(99079191802150912) returned ',f,', should be 53');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(9007199254741045);
|
|
if f<>53 then
|
|
begin
|
|
writeln('BsrQWord(9007199254741045) returned ',f,', should be 53');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(162129586585337856);
|
|
if f<>54 then
|
|
begin
|
|
writeln('BsfQWord(162129586585337856) returned ',f,', should be 54');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(18014398509482038);
|
|
if f<>54 then
|
|
begin
|
|
writeln('BsrQWord(18014398509482038) returned ',f,', should be 54');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(324259173170675712);
|
|
if f<>55 then
|
|
begin
|
|
writeln('BsfQWord(324259173170675712) returned ',f,', should be 55');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(36028797018964023);
|
|
if f<>55 then
|
|
begin
|
|
writeln('BsrQWord(36028797018964023) returned ',f,', should be 55');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(504403158265495552);
|
|
if f<>56 then
|
|
begin
|
|
writeln('BsfQWord(504403158265495552) returned ',f,', should be 56');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(72057594037927992);
|
|
if f<>56 then
|
|
begin
|
|
writeln('BsrQWord(72057594037927992) returned ',f,', should be 56');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1008806316530991104);
|
|
if f<>57 then
|
|
begin
|
|
writeln('BsfQWord(1008806316530991104) returned ',f,', should be 57');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(144115188075855929);
|
|
if f<>57 then
|
|
begin
|
|
writeln('BsrQWord(144115188075855929) returned ',f,', should be 57');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(1441151880758558720);
|
|
if f<>58 then
|
|
begin
|
|
writeln('BsfQWord(1441151880758558720) returned ',f,', should be 58');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(288230376151711802);
|
|
if f<>58 then
|
|
begin
|
|
writeln('BsrQWord(288230376151711802) returned ',f,', should be 58');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(2882303761517117440);
|
|
if f<>59 then
|
|
begin
|
|
writeln('BsfQWord(2882303761517117440) returned ',f,', should be 59');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(576460752303423547);
|
|
if f<>59 then
|
|
begin
|
|
writeln('BsrQWord(576460752303423547) returned ',f,', should be 59');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(3458764513820540928);
|
|
if f<>60 then
|
|
begin
|
|
writeln('BsfQWord(3458764513820540928) returned ',f,', should be 60');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(1152921504606847036);
|
|
if f<>60 then
|
|
begin
|
|
writeln('BsrQWord(1152921504606847036) returned ',f,', should be 60');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(6917529027641081856);
|
|
if f<>61 then
|
|
begin
|
|
writeln('BsfQWord(6917529027641081856) returned ',f,', should be 61');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(2305843009213694013);
|
|
if f<>61 then
|
|
begin
|
|
writeln('BsrQWord(2305843009213694013) returned ',f,', should be 61');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(4611686018427387904);
|
|
if f<>62 then
|
|
begin
|
|
writeln('BsfQWord(4611686018427387904) returned ',f,', should be 62');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(4611686018427387966);
|
|
if f<>62 then
|
|
begin
|
|
writeln('BsrQWord(4611686018427387966) returned ',f,', should be 62');
|
|
exit(false);
|
|
end;
|
|
f:=BsfQWord(9223372036854775808);
|
|
if f<>63 then
|
|
begin
|
|
writeln('BsfQWord(9223372036854775808) returned ',f,', should be 63');
|
|
exit(false);
|
|
end;
|
|
f:=BsrQWord(9223372036854775871);
|
|
if f<>63 then
|
|
begin
|
|
writeln('BsrQWord(9223372036854775871) returned ',f,', should be 63');
|
|
exit(false);
|
|
end;
|
|
|
|
f:=BsfQWord(0);
|
|
if (f<>$ff) then
|
|
begin
|
|
writeln('BsfQWord(0) returned ',f,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
r:=BsrQWord(0);
|
|
if r<>$ff then
|
|
begin
|
|
writeln('BsrQWord(0) returned ',r,', should be ',$ff);
|
|
exit(false);
|
|
end;
|
|
result:=true;
|
|
end;
|
|
|
|
begin
|
|
if test_byte then writeln('passed') else halt(1);
|
|
if test_word then writeln('passed') else halt(1);
|
|
if test_dword then writeln('passed') else halt(1);
|
|
if test_qword then writeln('passed') else halt(1);
|
|
end.
|