diff options
| author | Alasdair Armstrong | 2018-04-03 15:06:56 +0100 |
|---|---|---|
| committer | Alasdair Armstrong | 2018-04-03 17:19:48 +0100 |
| commit | 6208b4a8d426abfee3c067b542573977f4cb4240 (patch) | |
| tree | 7808e09524a0d864af8d2aad58c84230ae4ad128 /test/builtins/signed.sail | |
| parent | 3e6cd07f4edebedfbcbd7bb4f3b80ddbba3cf420 (diff) | |
Added test cases for builtins
Added library for simple integer arithmetic functions in lib/arith.sail
WIP TeX file for formatting latex output included in lib/sail.tex
Fixes for bugs in sail_lib
Diffstat (limited to 'test/builtins/signed.sail')
| -rw-r--r-- | test/builtins/signed.sail | 1707 |
1 files changed, 1707 insertions, 0 deletions
diff --git a/test/builtins/signed.sail b/test/builtins/signed.sail new file mode 100644 index 00000000..7b9160f7 --- /dev/null +++ b/test/builtins/signed.sail @@ -0,0 +1,1707 @@ +default Order dec + +$include <exception_basic.sail> +$include <vector_dec.sail> + +function main (() : unit) -> unit = { + assert(signed(zero_extend(0x0, 32)) == 0); + assert(signed(zero_extend(0x1, 32)) == 1); + assert(signed(zero_extend(0x10, 32)) == 16); + assert(signed(zero_extend(0x10000, 32)) == 65536); + assert(signed(zero_extend(0x10001, 32)) == 65537); + assert(signed(zero_extend(0x11, 32)) == 17); + assert(signed(zero_extend(0x11223344, 32)) == 287454020); + assert(signed(zero_extend(0x118, 32)) == 280); + assert(signed(zero_extend(0x12, 32)) == 18); + assert(signed(zero_extend(0x1234, 32)) == 4660); + assert(signed(zero_extend(0x12345678, 32)) == 305419896); + assert(signed(zero_extend(0x13, 32)) == 19); + assert(signed(zero_extend(0x14, 32)) == 20); + assert(signed(zero_extend(0x15, 32)) == 21); + assert(signed(zero_extend(0x16, 32)) == 22); + assert(signed(zero_extend(0x17, 32)) == 23); + assert(signed(zero_extend(0x17ffe, 32)) == 98302); + assert(signed(zero_extend(0x17fff, 32)) == 98303); + assert(signed(zero_extend(0x18, 32)) == 24); + assert(signed(zero_extend(0x18000, 32)) == 98304); + assert(signed(zero_extend(0x19, 32)) == 25); + assert(signed(zero_extend(0x1a, 32)) == 26); + assert(signed(zero_extend(0x1b, 32)) == 27); + assert(signed(zero_extend(0x1c, 32)) == 28); + assert(signed(zero_extend(0x1d, 32)) == 29); + assert(signed(zero_extend(0x1e, 32)) == 30); + assert(signed(zero_extend(0x1f, 32)) == 31); + assert(signed(zero_extend(0x2, 32)) == 2); + assert(signed(zero_extend(0x20, 32)) == 32); + assert(signed(zero_extend(0x20000, 32)) == 131072); + assert(signed(zero_extend(0x21, 32)) == 33); + assert(signed(zero_extend(0x23, 32)) == 35); + assert(signed(zero_extend(0x230, 32)) == 560); + assert(signed(zero_extend(0x25, 32)) == 37); + assert(signed(zero_extend(0x26, 32)) == 38); + assert(signed(zero_extend(0x27, 32)) == 39); + assert(signed(zero_extend(0x28, 32)) == 40); + assert(signed(zero_extend(0x29, 32)) == 41); + assert(signed(zero_extend(0x2a, 32)) == 42); + assert(signed(zero_extend(0x2a0, 32)) == 672); + assert(signed(zero_extend(0x2b, 32)) == 43); + assert(signed(zero_extend(0x2d, 32)) == 45); + assert(signed(zero_extend(0x2e, 32)) == 46); + assert(signed(zero_extend(0x2f, 32)) == 47); + assert(signed(zero_extend(0x3, 32)) == 3); + assert(signed(zero_extend(0x30, 32)) == 48); + assert(signed(zero_extend(0x31, 32)) == 49); + assert(signed(zero_extend(0x32, 32)) == 50); + assert(signed(zero_extend(0x33, 32)) == 51); + assert(signed(zero_extend(0x34, 32)) == 52); + assert(signed(zero_extend(0x35, 32)) == 53); + assert(signed(zero_extend(0x36, 32)) == 54); + assert(signed(zero_extend(0x37, 32)) == 55); + assert(signed(zero_extend(0x38, 32)) == 56); + assert(signed(zero_extend(0x39, 32)) == 57); + assert(signed(zero_extend(0x3a, 32)) == 58); + assert(signed(zero_extend(0x3c, 32)) == 60); + assert(signed(zero_extend(0x3e, 32)) == 62); + assert(signed(zero_extend(0x3f, 32)) == 63); + assert(signed(zero_extend(0x4, 32)) == 4); + assert(signed(zero_extend(0x40, 32)) == 64); + assert(signed(zero_extend(0x41, 32)) == 65); + assert(signed(zero_extend(0x43, 32)) == 67); + assert(signed(zero_extend(0x44, 32)) == 68); + assert(signed(zero_extend(0x45, 32)) == 69); + assert(signed(zero_extend(0x46, 32)) == 70); + assert(signed(zero_extend(0x460, 32)) == 1120); + assert(signed(zero_extend(0x47, 32)) == 71); + assert(signed(zero_extend(0x48, 32)) == 72); + assert(signed(zero_extend(0x4a, 32)) == 74); + assert(signed(zero_extend(0x4b, 32)) == 75); + assert(signed(zero_extend(0x4c, 32)) == 76); + assert(signed(zero_extend(0x4d, 32)) == 77); + assert(signed(zero_extend(0x4e, 32)) == 78); + assert(signed(zero_extend(0x4f, 32)) == 79); + assert(signed(zero_extend(0x5, 32)) == 5); + assert(signed(zero_extend(0x50, 32)) == 80); + assert(signed(zero_extend(0x52, 32)) == 82); + assert(signed(zero_extend(0x53, 32)) == 83); + assert(signed(zero_extend(0x54, 32)) == 84); + assert(signed(zero_extend(0x55, 32)) == 85); + assert(signed(zero_extend(0x5a5a, 32)) == 23130); + assert(signed(zero_extend(0x5a5a5a59, 32)) == 1515870809); + assert(signed(zero_extend(0x5a5a5a5a, 32)) == 1515870810); + assert(signed(zero_extend(0x5f, 32)) == 95); + assert(signed(zero_extend(0x6, 32)) == 6); + assert(signed(zero_extend(0x60000000, 32)) == 1610612736); + assert(signed(zero_extend(0x61, 32)) == 97); + assert(signed(zero_extend(0x62, 32)) == 98); + assert(signed(zero_extend(0x63, 32)) == 99); + assert(signed(zero_extend(0x64, 32)) == 100); + assert(signed(zero_extend(0x65, 32)) == 101); + assert(signed(zero_extend(0x66, 32)) == 102); + assert(signed(zero_extend(0x68, 32)) == 104); + assert(signed(zero_extend(0x69, 32)) == 105); + assert(signed(zero_extend(0x6b7c8d9f, 32)) == 1803324831); + assert(signed(zero_extend(0x6c, 32)) == 108); + assert(signed(zero_extend(0x6d, 32)) == 109); + assert(signed(zero_extend(0x6e, 32)) == 110); + assert(signed(zero_extend(0x6f, 32)) == 111); + assert(signed(zero_extend(0x7, 32)) == 7); + assert(signed(zero_extend(0x70, 32)) == 112); + assert(signed(zero_extend(0x72, 32)) == 114); + assert(signed(zero_extend(0x73, 32)) == 115); + assert(signed(zero_extend(0x74, 32)) == 116); + assert(signed(zero_extend(0x75, 32)) == 117); + assert(signed(zero_extend(0x76, 32)) == 118); + assert(signed(zero_extend(0x764c321, 32)) == 124044065); + assert(signed(zero_extend(0x78, 32)) == 120); + assert(signed(zero_extend(0x7ffe, 32)) == 32766); + assert(signed(zero_extend(0x7fff, 32)) == 32767); + assert(signed(zero_extend(0x7fff7fff, 32)) == 2147450879); + assert(signed(zero_extend(0x7ffffffe, 32)) == 2147483646); + assert(signed(zero_extend(0x7fffffff, 32)) == 2147483647); + assert(signed(zero_extend(0x8, 32)) == 8); + assert(signed(zero_extend(0x8000, 32)) == 32768); + assert(signed(zero_extend(0x80000000, 32)) == -2147483648); + assert(signed(zero_extend(0x80000001, 32)) == -2147483647); + assert(signed(zero_extend(0x80000002, 32)) == -2147483646); + assert(signed(zero_extend(0x80000003, 32)) == -2147483645); + assert(signed(zero_extend(0x80008000, 32)) == -2147450880); + assert(signed(zero_extend(0x8001, 32)) == 32769); + assert(signed(zero_extend(0x8002, 32)) == 32770); + assert(signed(zero_extend(0x8003, 32)) == 32771); + assert(signed(zero_extend(0x87654321, 32)) == -2023406815); + assert(signed(zero_extend(0x8899aabb, 32)) == -2003195205); + assert(signed(zero_extend(0x89ab, 32)) == 35243); + assert(signed(zero_extend(0x8fffffff, 32)) == -1879048193); + assert(signed(zero_extend(0x9, 32)) == 9); + assert(signed(zero_extend(0x90000000, 32)) == -1879048192); + assert(signed(zero_extend(0x90000001, 32)) == -1879048191); + assert(signed(zero_extend(0x9234567a, 32)) == -1842063750); + assert(signed(zero_extend(0x9be0, 32)) == 39904); + assert(signed(zero_extend(0xa, 32)) == 10); + assert(signed(zero_extend(0xa5a5, 32)) == 42405); + assert(signed(zero_extend(0xa5a5a5a5, 32)) == -1515870811); + assert(signed(zero_extend(0xb, 32)) == 11); + assert(signed(zero_extend(0xc, 32)) == 12); + assert(signed(zero_extend(0xc000, 32)) == 49152); + assert(signed(zero_extend(0xd, 32)) == 13); + assert(signed(zero_extend(0xe, 32)) == 14); + assert(signed(zero_extend(0xe0000000, 32)) == -536870912); + assert(signed(zero_extend(0xf, 32)) == 15); + assert(signed(zero_extend(0xff, 32)) == 255); + assert(signed(zero_extend(0xfffe, 32)) == 65534); + assert(signed(zero_extend(0xffff, 32)) == 65535); + assert(signed(zero_extend(0xffff8000, 32)) == -32768); + assert(signed(zero_extend(0xffffff00, 32)) == -256); + assert(signed(zero_extend(0xffffff87, 32)) == -121); + assert(signed(zero_extend(0xffffff8c, 32)) == -116); + assert(signed(zero_extend(0xffffff93, 32)) == -109); + assert(signed(zero_extend(0xffffff9b, 32)) == -101); + assert(signed(zero_extend(0xffffffa7, 32)) == -89); + assert(signed(zero_extend(0xffffffd0, 32)) == -48); + assert(signed(zero_extend(0xffffffd8, 32)) == -40); + assert(signed(zero_extend(0xffffffda, 32)) == -38); + assert(signed(zero_extend(0xffffffdf, 32)) == -33); + assert(signed(zero_extend(0xffffffe0, 32)) == -32); + assert(signed(zero_extend(0xffffffe1, 32)) == -31); + assert(signed(zero_extend(0xffffffe2, 32)) == -30); + assert(signed(zero_extend(0xffffffe3, 32)) == -29); + assert(signed(zero_extend(0xffffffe4, 32)) == -28); + assert(signed(zero_extend(0xffffffe5, 32)) == -27); + assert(signed(zero_extend(0xffffffe6, 32)) == -26); + assert(signed(zero_extend(0xffffffe7, 32)) == -25); + assert(signed(zero_extend(0xffffffe8, 32)) == -24); + assert(signed(zero_extend(0xffffffe9, 32)) == -23); + assert(signed(zero_extend(0xffffffea, 32)) == -22); + assert(signed(zero_extend(0xffffffeb, 32)) == -21); + assert(signed(zero_extend(0xffffffec, 32)) == -20); + assert(signed(zero_extend(0xffffffed, 32)) == -19); + assert(signed(zero_extend(0xffffffee, 32)) == -18); + assert(signed(zero_extend(0xffffffef, 32)) == -17); + assert(signed(zero_extend(0xfffffff, 32)) == 268435455); + assert(signed(zero_extend(0xfffffff0, 32)) == -16); + assert(signed(zero_extend(0xfffffff1, 32)) == -15); + assert(signed(zero_extend(0xfffffff2, 32)) == -14); + assert(signed(zero_extend(0xfffffff3, 32)) == -13); + assert(signed(zero_extend(0xfffffff4, 32)) == -12); + assert(signed(zero_extend(0xfffffff5, 32)) == -11); + assert(signed(zero_extend(0xfffffff6, 32)) == -10); + assert(signed(zero_extend(0xfffffff7, 32)) == -9); + assert(signed(zero_extend(0xfffffff8, 32)) == -8); + assert(signed(zero_extend(0xfffffff9, 32)) == -7); + assert(signed(zero_extend(0xfffffffa, 32)) == -6); + assert(signed(zero_extend(0xfffffffb, 32)) == -5); + assert(signed(zero_extend(0xfffffffc, 32)) == -4); + assert(signed(zero_extend(0xfffffffd, 32)) == -3); + assert(signed(zero_extend(0xfffffffe, 32)) == -2); + assert(signed(zero_extend(0xffffffff, 32)) == -1); + assert(signed(zero_extend(0x0, 64)) == 0); + assert(signed(zero_extend(0x1, 64)) == 1); + assert(signed(zero_extend(0x10, 64)) == 16); + assert(signed(zero_extend(0x100, 64)) == 256); + assert(signed(zero_extend(0x10000, 64)) == 65536); + assert(signed(zero_extend(0x100000000, 64)) == 4294967296); + assert(signed(zero_extend(0x100000000000, 64)) == 17592186044416); + assert(signed(zero_extend(0x100000001, 64)) == 4294967297); + assert(signed(zero_extend(0x10001, 64)) == 65537); + assert(signed(zero_extend(0x1000100010001, 64)) == 281479271743489); + assert(signed(zero_extend(0x101000, 64)) == 1052672); + assert(signed(zero_extend(0x101220, 64)) == 1053216); + assert(signed(zero_extend(0x102000, 64)) == 1056768); + assert(signed(zero_extend(0x102220, 64)) == 1057312); + assert(signed(zero_extend(0x104000, 64)) == 1064960); + assert(signed(zero_extend(0x10400000, 64)) == 272629760); + assert(signed(zero_extend(0x1040022c, 64)) == 272630316); + assert(signed(zero_extend(0x10401220, 64)) == 272634400); + assert(signed(zero_extend(0x10402220, 64)) == 272638496); + assert(signed(zero_extend(0x10422c, 64)) == 1065516); + assert(signed(zero_extend(0x104320, 64)) == 1065760); + assert(signed(zero_extend(0x104368, 64)) == 1065832); + assert(signed(zero_extend(0x104410, 64)) == 1066000); + assert(signed(zero_extend(0x104418, 64)) == 1066008); + assert(signed(zero_extend(0x104420, 64)) == 1066016); + assert(signed(zero_extend(0x104428, 64)) == 1066024); + assert(signed(zero_extend(0x104550, 64)) == 1066320); + assert(signed(zero_extend(0x1045a0, 64)) == 1066400); + assert(signed(zero_extend(0x1045b0, 64)) == 1066416); + assert(signed(zero_extend(0x1045c0, 64)) == 1066432); + assert(signed(zero_extend(0x104660, 64)) == 1066592); + assert(signed(zero_extend(0x104670, 64)) == 1066608); + assert(signed(zero_extend(0x104690, 64)) == 1066640); + assert(signed(zero_extend(0x104730, 64)) == 1066800); + assert(signed(zero_extend(0x104740, 64)) == 1066816); + assert(signed(zero_extend(0x104750, 64)) == 1066832); + assert(signed(zero_extend(0x10764c321, 64)) == 4419011361); + assert(signed(zero_extend(0x108, 64)) == 264); + assert(signed(zero_extend(0x11, 64)) == 17); + assert(signed(zero_extend(0x110, 64)) == 272); + assert(signed(zero_extend(0x11223344, 64)) == 287454020); + assert(signed(zero_extend(0x1122334411223344, 64)) == 1234605615291183940); + assert(signed(zero_extend(0x118, 64)) == 280); + assert(signed(zero_extend(0x12, 64)) == 18); + assert(signed(zero_extend(0x120, 64)) == 288); + assert(signed(zero_extend(0x1200, 64)) == 4608); + assert(signed(zero_extend(0x120005c, 64)) == 18874460); + assert(signed(zero_extend(0x1200060, 64)) == 18874464); + assert(signed(zero_extend(0x1200064, 64)) == 18874468); + assert(signed(zero_extend(0x1220, 64)) == 4640); + assert(signed(zero_extend(0x12200078, 64)) == 304087160); + assert(signed(zero_extend(0x1220007c, 64)) == 304087164); + assert(signed(zero_extend(0x12200080, 64)) == 304087168); + assert(signed(zero_extend(0x1234, 64)) == 4660); + assert(signed(zero_extend(0x12345678, 64)) == 305419896); + assert(signed(zero_extend(0x123456789abcdef0, 64)) == 1311768467463790320); + assert(signed(zero_extend(0x123456789abcdef1, 64)) == 1311768467463790321); + assert(signed(zero_extend(0x123c, 64)) == 4668); + assert(signed(zero_extend(0x12500054, 64)) == 307232852); + assert(signed(zero_extend(0x1250006c, 64)) == 307232876); + assert(signed(zero_extend(0x12500070, 64)) == 307232880); + assert(signed(zero_extend(0x12600064, 64)) == 308281444); + assert(signed(zero_extend(0x1260007c, 64)) == 308281468); + assert(signed(zero_extend(0x12600080, 64)) == 308281472); + assert(signed(zero_extend(0x13, 64)) == 19); + assert(signed(zero_extend(0x1300368, 64)) == 19923816); + assert(signed(zero_extend(0x130036c, 64)) == 19923820); + assert(signed(zero_extend(0x1300370, 64)) == 19923824); + assert(signed(zero_extend(0x13004b8, 64)) == 19924152); + assert(signed(zero_extend(0x13004bc, 64)) == 19924156); + assert(signed(zero_extend(0x13004c0, 64)) == 19924160); + assert(signed(zero_extend(0x1300608, 64)) == 19924488); + assert(signed(zero_extend(0x130060c, 64)) == 19924492); + assert(signed(zero_extend(0x1300610, 64)) == 19924496); + assert(signed(zero_extend(0x1300910, 64)) == 19925264); + assert(signed(zero_extend(0x1300914, 64)) == 19925268); + assert(signed(zero_extend(0x1300918, 64)) == 19925272); + assert(signed(zero_extend(0x13f8754, 64)) == 20940628); + assert(signed(zero_extend(0x13f8758, 64)) == 20940632); + assert(signed(zero_extend(0x13f875c, 64)) == 20940636); + assert(signed(zero_extend(0x13f88a4, 64)) == 20940964); + assert(signed(zero_extend(0x13f88a8, 64)) == 20940968); + assert(signed(zero_extend(0x13f88ac, 64)) == 20940972); + assert(signed(zero_extend(0x14, 64)) == 20); + assert(signed(zero_extend(0x140, 64)) == 320); + assert(signed(zero_extend(0x14000ac, 64)) == 20971692); + assert(signed(zero_extend(0x14000c0, 64)) == 20971712); + assert(signed(zero_extend(0x14000c4, 64)) == 20971716); + assert(signed(zero_extend(0x14000ec, 64)) == 20971756); + assert(signed(zero_extend(0x1400100, 64)) == 20971776); + assert(signed(zero_extend(0x1400104, 64)) == 20971780); + assert(signed(zero_extend(0x140012c, 64)) == 20971820); + assert(signed(zero_extend(0x140013c, 64)) == 20971836); + assert(signed(zero_extend(0x1400140, 64)) == 20971840); + assert(signed(zero_extend(0x1400178, 64)) == 20971896); + assert(signed(zero_extend(0x1400190, 64)) == 20971920); + assert(signed(zero_extend(0x1400194, 64)) == 20971924); + assert(signed(zero_extend(0x14002dc, 64)) == 20972252); + assert(signed(zero_extend(0x14002fc, 64)) == 20972284); + assert(signed(zero_extend(0x1400300, 64)) == 20972288); + assert(signed(zero_extend(0x1400348, 64)) == 20972360); + assert(signed(zero_extend(0x1400368, 64)) == 20972392); + assert(signed(zero_extend(0x140036c, 64)) == 20972396); + assert(signed(zero_extend(0x1400438, 64)) == 20972600); + assert(signed(zero_extend(0x1400454, 64)) == 20972628); + assert(signed(zero_extend(0x1400458, 64)) == 20972632); + assert(signed(zero_extend(0x140049c, 64)) == 20972700); + assert(signed(zero_extend(0x14004b8, 64)) == 20972728); + assert(signed(zero_extend(0x14004bc, 64)) == 20972732); + assert(signed(zero_extend(0x1400588, 64)) == 20972936); + assert(signed(zero_extend(0x14005a4, 64)) == 20972964); + assert(signed(zero_extend(0x14005a8, 64)) == 20972968); + assert(signed(zero_extend(0x14005ec, 64)) == 20973036); + assert(signed(zero_extend(0x1400608, 64)) == 20973064); + assert(signed(zero_extend(0x140060c, 64)) == 20973068); + assert(signed(zero_extend(0x14006d8, 64)) == 20973272); + assert(signed(zero_extend(0x14006f4, 64)) == 20973300); + assert(signed(zero_extend(0x14006f8, 64)) == 20973304); + assert(signed(zero_extend(0x1400738, 64)) == 20973368); + assert(signed(zero_extend(0x1400754, 64)) == 20973396); + assert(signed(zero_extend(0x1400758, 64)) == 20973400); + assert(signed(zero_extend(0x1400824, 64)) == 20973604); + assert(signed(zero_extend(0x1400840, 64)) == 20973632); + assert(signed(zero_extend(0x1400844, 64)) == 20973636); + assert(signed(zero_extend(0x1400888, 64)) == 20973704); + assert(signed(zero_extend(0x14008a4, 64)) == 20973732); + assert(signed(zero_extend(0x14008a8, 64)) == 20973736); + assert(signed(zero_extend(0x14008f0, 64)) == 20973808); + assert(signed(zero_extend(0x1400910, 64)) == 20973840); + assert(signed(zero_extend(0x1400914, 64)) == 20973844); + assert(signed(zero_extend(0x14086f0, 64)) == 21006064); + assert(signed(zero_extend(0x14086f4, 64)) == 21006068); + assert(signed(zero_extend(0x14086f8, 64)) == 21006072); + assert(signed(zero_extend(0x140883c, 64)) == 21006396); + assert(signed(zero_extend(0x1408840, 64)) == 21006400); + assert(signed(zero_extend(0x1408844, 64)) == 21006404); + assert(signed(zero_extend(0x148, 64)) == 328); + assert(signed(zero_extend(0x15, 64)) == 21); + assert(signed(zero_extend(0x150, 64)) == 336); + assert(signed(zero_extend(0x15002f8, 64)) == 22020856); + assert(signed(zero_extend(0x15002fc, 64)) == 22020860); + assert(signed(zero_extend(0x1500300, 64)) == 22020864); + assert(signed(zero_extend(0x1500450, 64)) == 22021200); + assert(signed(zero_extend(0x1500454, 64)) == 22021204); + assert(signed(zero_extend(0x1500458, 64)) == 22021208); + assert(signed(zero_extend(0x15005a0, 64)) == 22021536); + assert(signed(zero_extend(0x15005a4, 64)) == 22021540); + assert(signed(zero_extend(0x15005a8, 64)) == 22021544); + assert(signed(zero_extend(0x16, 64)) == 22); + assert(signed(zero_extend(0x160, 64)) == 352); + assert(signed(zero_extend(0x168, 64)) == 360); + assert(signed(zero_extend(0x17, 64)) == 23); + assert(signed(zero_extend(0x170, 64)) == 368); + assert(signed(zero_extend(0x17ffe, 64)) == 98302); + assert(signed(zero_extend(0x17fff, 64)) == 98303); + assert(signed(zero_extend(0x17fffffff, 64)) == 6442450943); + assert(signed(zero_extend(0x18, 64)) == 24); + assert(signed(zero_extend(0x180, 64)) == 384); + assert(signed(zero_extend(0x18000, 64)) == 98304); + assert(signed(zero_extend(0x180000000, 64)) == 6442450944); + assert(signed(zero_extend(0x18001, 64)) == 98305); + assert(signed(zero_extend(0x18899aabb, 64)) == 6586739387); + assert(signed(zero_extend(0x19, 64)) == 25); + assert(signed(zero_extend(0x1a, 64)) == 26); + assert(signed(zero_extend(0x1a0, 64)) == 416); + assert(signed(zero_extend(0x1a600078, 64)) == 442499192); + assert(signed(zero_extend(0x1a60007c, 64)) == 442499196); + assert(signed(zero_extend(0x1a600080, 64)) == 442499200); + assert(signed(zero_extend(0x1b, 64)) == 27); + assert(signed(zero_extend(0x1c, 64)) == 28); + assert(signed(zero_extend(0x1c0, 64)) == 448); + assert(signed(zero_extend(0x1d, 64)) == 29); + assert(signed(zero_extend(0x1e, 64)) == 30); + assert(signed(zero_extend(0x1e0, 64)) == 480); + assert(signed(zero_extend(0x1e0ac, 64)) == 123052); + assert(signed(zero_extend(0x1e0ad, 64)) == 123053); + assert(signed(zero_extend(0x1e0ae, 64)) == 123054); + assert(signed(zero_extend(0x1e0af, 64)) == 123055); + assert(signed(zero_extend(0x1e0b0, 64)) == 123056); + assert(signed(zero_extend(0x1e0b1, 64)) == 123057); + assert(signed(zero_extend(0x1e0b2, 64)) == 123058); + assert(signed(zero_extend(0x1e0b3, 64)) == 123059); + assert(signed(zero_extend(0x1e0b4, 64)) == 123060); + assert(signed(zero_extend(0x1e0b5, 64)) == 123061); + assert(signed(zero_extend(0x1e0b6, 64)) == 123062); + assert(signed(zero_extend(0x1e0b7, 64)) == 123063); + assert(signed(zero_extend(0x1e0b8, 64)) == 123064); + assert(signed(zero_extend(0x1e0b9, 64)) == 123065); + assert(signed(zero_extend(0x1e0ba, 64)) == 123066); + assert(signed(zero_extend(0x1e0bb, 64)) == 123067); + assert(signed(zero_extend(0x1e0bc, 64)) == 123068); + assert(signed(zero_extend(0x1e0bd, 64)) == 123069); + assert(signed(zero_extend(0x1e0be, 64)) == 123070); + assert(signed(zero_extend(0x1e0bf, 64)) == 123071); + assert(signed(zero_extend(0x1e0c0, 64)) == 123072); + assert(signed(zero_extend(0x1e0c1, 64)) == 123073); + assert(signed(zero_extend(0x1e0c2, 64)) == 123074); + assert(signed(zero_extend(0x1e0c3, 64)) == 123075); + assert(signed(zero_extend(0x1e0c4, 64)) == 123076); + assert(signed(zero_extend(0x1e0c5, 64)) == 123077); + assert(signed(zero_extend(0x1e0c6, 64)) == 123078); + assert(signed(zero_extend(0x1e0ec, 64)) == 123116); + assert(signed(zero_extend(0x1e0ed, 64)) == 123117); + assert(signed(zero_extend(0x1e0ee, 64)) == 123118); + assert(signed(zero_extend(0x1e0ef, 64)) == 123119); + assert(signed(zero_extend(0x1e0f0, 64)) == 123120); + assert(signed(zero_extend(0x1e0f1, 64)) == 123121); + assert(signed(zero_extend(0x1e0f2, 64)) == 123122); + assert(signed(zero_extend(0x1e0f3, 64)) == 123123); + assert(signed(zero_extend(0x1e0f4, 64)) == 123124); + assert(signed(zero_extend(0x1e0f5, 64)) == 123125); + assert(signed(zero_extend(0x1e0f6, 64)) == 123126); + assert(signed(zero_extend(0x1e0f7, 64)) == 123127); + assert(signed(zero_extend(0x1e0f8, 64)) == 123128); + assert(signed(zero_extend(0x1e0f9, 64)) == 123129); + assert(signed(zero_extend(0x1e0fa, 64)) == 123130); + assert(signed(zero_extend(0x1e0fb, 64)) == 123131); + assert(signed(zero_extend(0x1e0fc, 64)) == 123132); + assert(signed(zero_extend(0x1e0fd, 64)) == 123133); + assert(signed(zero_extend(0x1e0fe, 64)) == 123134); + assert(signed(zero_extend(0x1e0ff, 64)) == 123135); + assert(signed(zero_extend(0x1e100, 64)) == 123136); + assert(signed(zero_extend(0x1e101, 64)) == 123137); + assert(signed(zero_extend(0x1e102, 64)) == 123138); + assert(signed(zero_extend(0x1e103, 64)) == 123139); + assert(signed(zero_extend(0x1e104, 64)) == 123140); + assert(signed(zero_extend(0x1e105, 64)) == 123141); + assert(signed(zero_extend(0x1e106, 64)) == 123142); + assert(signed(zero_extend(0x1e107, 64)) == 123143); + assert(signed(zero_extend(0x1e108, 64)) == 123144); + assert(signed(zero_extend(0x1e109, 64)) == 123145); + assert(signed(zero_extend(0x1e10a, 64)) == 123146); + assert(signed(zero_extend(0x1e10b, 64)) == 123147); + assert(signed(zero_extend(0x1e10c, 64)) == 123148); + assert(signed(zero_extend(0x1e10d, 64)) == 123149); + assert(signed(zero_extend(0x1e10e, 64)) == 123150); + assert(signed(zero_extend(0x1e10f, 64)) == 123151); + assert(signed(zero_extend(0x1e110, 64)) == 123152); + assert(signed(zero_extend(0x1e111, 64)) == 123153); + assert(signed(zero_extend(0x1e112, 64)) == 123154); + assert(signed(zero_extend(0x1e113, 64)) == 123155); + assert(signed(zero_extend(0x1e114, 64)) == 123156); + assert(signed(zero_extend(0x1e115, 64)) == 123157); + assert(signed(zero_extend(0x1e116, 64)) == 123158); + assert(signed(zero_extend(0x1e117, 64)) == 123159); + assert(signed(zero_extend(0x1e118, 64)) == 123160); + assert(signed(zero_extend(0x1e119, 64)) == 123161); + assert(signed(zero_extend(0x1e11a, 64)) == 123162); + assert(signed(zero_extend(0x1e11b, 64)) == 123163); + assert(signed(zero_extend(0x1e11c, 64)) == 123164); + assert(signed(zero_extend(0x1e11d, 64)) == 123165); + assert(signed(zero_extend(0x1e11e, 64)) == 123166); + assert(signed(zero_extend(0x1e140, 64)) == 123200); + assert(signed(zero_extend(0x1e141, 64)) == 123201); + assert(signed(zero_extend(0x1e142, 64)) == 123202); + assert(signed(zero_extend(0x1e143, 64)) == 123203); + assert(signed(zero_extend(0x1e144, 64)) == 123204); + assert(signed(zero_extend(0x1e145, 64)) == 123205); + assert(signed(zero_extend(0x1e146, 64)) == 123206); + assert(signed(zero_extend(0x1e147, 64)) == 123207); + assert(signed(zero_extend(0x1e148, 64)) == 123208); + assert(signed(zero_extend(0x1e149, 64)) == 123209); + assert(signed(zero_extend(0x1e14a, 64)) == 123210); + assert(signed(zero_extend(0x1e14b, 64)) == 123211); + assert(signed(zero_extend(0x1e14c, 64)) == 123212); + assert(signed(zero_extend(0x1e14d, 64)) == 123213); + assert(signed(zero_extend(0x1e14e, 64)) == 123214); + assert(signed(zero_extend(0x1e14f, 64)) == 123215); + assert(signed(zero_extend(0x1e150, 64)) == 123216); + assert(signed(zero_extend(0x1e151, 64)) == 123217); + assert(signed(zero_extend(0x1e152, 64)) == 123218); + assert(signed(zero_extend(0x1e153, 64)) == 123219); + assert(signed(zero_extend(0x1e154, 64)) == 123220); + assert(signed(zero_extend(0x1e155, 64)) == 123221); + assert(signed(zero_extend(0x1e156, 64)) == 123222); + assert(signed(zero_extend(0x1e157, 64)) == 123223); + assert(signed(zero_extend(0x1e158, 64)) == 123224); + assert(signed(zero_extend(0x1e159, 64)) == 123225); + assert(signed(zero_extend(0x1e15a, 64)) == 123226); + assert(signed(zero_extend(0x1e15b, 64)) == 123227); + assert(signed(zero_extend(0x1e15c, 64)) == 123228); + assert(signed(zero_extend(0x1e198, 64)) == 123288); + assert(signed(zero_extend(0x1e199, 64)) == 123289); + assert(signed(zero_extend(0x1e19a, 64)) == 123290); + assert(signed(zero_extend(0x1e19b, 64)) == 123291); + assert(signed(zero_extend(0x1e19c, 64)) == 123292); + assert(signed(zero_extend(0x1e19d, 64)) == 123293); + assert(signed(zero_extend(0x1e19e, 64)) == 123294); + assert(signed(zero_extend(0x1e19f, 64)) == 123295); + assert(signed(zero_extend(0x1e1a0, 64)) == 123296); + assert(signed(zero_extend(0x1e1a1, 64)) == 123297); + assert(signed(zero_extend(0x1e1a2, 64)) == 123298); + assert(signed(zero_extend(0x1e1a3, 64)) == 123299); + assert(signed(zero_extend(0x1e1a4, 64)) == 123300); + assert(signed(zero_extend(0x1e1a5, 64)) == 123301); + assert(signed(zero_extend(0x1e1a6, 64)) == 123302); + assert(signed(zero_extend(0x1e1a7, 64)) == 123303); + assert(signed(zero_extend(0x1e1a8, 64)) == 123304); + assert(signed(zero_extend(0x1e1a9, 64)) == 123305); + assert(signed(zero_extend(0x1e1aa, 64)) == 123306); + assert(signed(zero_extend(0x1e1ab, 64)) == 123307); + assert(signed(zero_extend(0x1e1ac, 64)) == 123308); + assert(signed(zero_extend(0x1e1ad, 64)) == 123309); + assert(signed(zero_extend(0x1e1ae, 64)) == 123310); + assert(signed(zero_extend(0x1e1af, 64)) == 123311); + assert(signed(zero_extend(0x1e1b0, 64)) == 123312); + assert(signed(zero_extend(0x1ec24, 64)) == 125988); + assert(signed(zero_extend(0x1ec25, 64)) == 125989); + assert(signed(zero_extend(0x1ec26, 64)) == 125990); + assert(signed(zero_extend(0x1ec27, 64)) == 125991); + assert(signed(zero_extend(0x1ec28, 64)) == 125992); + assert(signed(zero_extend(0x1ec29, 64)) == 125993); + assert(signed(zero_extend(0x1ec2a, 64)) == 125994); + assert(signed(zero_extend(0x1ec2b, 64)) == 125995); + assert(signed(zero_extend(0x1ec2c, 64)) == 125996); + assert(signed(zero_extend(0x1ec2d, 64)) == 125997); + assert(signed(zero_extend(0x1ec2e, 64)) == 125998); + assert(signed(zero_extend(0x1ec2f, 64)) == 125999); + assert(signed(zero_extend(0x1ec30, 64)) == 126000); + assert(signed(zero_extend(0x1ec31, 64)) == 126001); + assert(signed(zero_extend(0x1ec32, 64)) == 126002); + assert(signed(zero_extend(0x1ec33, 64)) == 126003); + assert(signed(zero_extend(0x1ec34, 64)) == 126004); + assert(signed(zero_extend(0x1ec35, 64)) == 126005); + assert(signed(zero_extend(0x1ec36, 64)) == 126006); + assert(signed(zero_extend(0x1ec37, 64)) == 126007); + assert(signed(zero_extend(0x1ec38, 64)) == 126008); + assert(signed(zero_extend(0x1ec39, 64)) == 126009); + assert(signed(zero_extend(0x1ec3a, 64)) == 126010); + assert(signed(zero_extend(0x1ec7c, 64)) == 126076); + assert(signed(zero_extend(0x1ec7d, 64)) == 126077); + assert(signed(zero_extend(0x1ec7e, 64)) == 126078); + assert(signed(zero_extend(0x1ec7f, 64)) == 126079); + assert(signed(zero_extend(0x1ec80, 64)) == 126080); + assert(signed(zero_extend(0x1ec81, 64)) == 126081); + assert(signed(zero_extend(0x1ec82, 64)) == 126082); + assert(signed(zero_extend(0x1ec83, 64)) == 126083); + assert(signed(zero_extend(0x1ec84, 64)) == 126084); + assert(signed(zero_extend(0x1ec85, 64)) == 126085); + assert(signed(zero_extend(0x1ec86, 64)) == 126086); + assert(signed(zero_extend(0x1ec87, 64)) == 126087); + assert(signed(zero_extend(0x1ec88, 64)) == 126088); + assert(signed(zero_extend(0x1ec89, 64)) == 126089); + assert(signed(zero_extend(0x1ec8a, 64)) == 126090); + assert(signed(zero_extend(0x1ec8b, 64)) == 126091); + assert(signed(zero_extend(0x1ec8c, 64)) == 126092); + assert(signed(zero_extend(0x1ec8d, 64)) == 126093); + assert(signed(zero_extend(0x1ec8e, 64)) == 126094); + assert(signed(zero_extend(0x1ec8f, 64)) == 126095); + assert(signed(zero_extend(0x1ec90, 64)) == 126096); + assert(signed(zero_extend(0x1ec91, 64)) == 126097); + assert(signed(zero_extend(0x1ec92, 64)) == 126098); + assert(signed(zero_extend(0x1f, 64)) == 31); + assert(signed(zero_extend(0x2, 64)) == 2); + assert(signed(zero_extend(0x20, 64)) == 32); + assert(signed(zero_extend(0x200, 64)) == 512); + assert(signed(zero_extend(0x2000, 64)) == 8192); + assert(signed(zero_extend(0x20000, 64)) == 131072); + assert(signed(zero_extend(0x20000000, 64)) == 536870912); + assert(signed(zero_extend(0x208, 64)) == 520); + assert(signed(zero_extend(0x20800, 64)) == 133120); + assert(signed(zero_extend(0x21, 64)) == 33); + assert(signed(zero_extend(0x21750, 64)) == 137040); + assert(signed(zero_extend(0x21751, 64)) == 137041); + assert(signed(zero_extend(0x21752, 64)) == 137042); + assert(signed(zero_extend(0x21753, 64)) == 137043); + assert(signed(zero_extend(0x21754, 64)) == 137044); + assert(signed(zero_extend(0x21755, 64)) == 137045); + assert(signed(zero_extend(0x21756, 64)) == 137046); + assert(signed(zero_extend(0x21757, 64)) == 137047); + assert(signed(zero_extend(0x21758, 64)) == 137048); + assert(signed(zero_extend(0x21759, 64)) == 137049); + assert(signed(zero_extend(0x2175a, 64)) == 137050); + assert(signed(zero_extend(0x2175b, 64)) == 137051); + assert(signed(zero_extend(0x2175c, 64)) == 137052); + assert(signed(zero_extend(0x2175d, 64)) == 137053); + assert(signed(zero_extend(0x2175e, 64)) == 137054); + assert(signed(zero_extend(0x2175f, 64)) == 137055); + assert(signed(zero_extend(0x21760, 64)) == 137056); + assert(signed(zero_extend(0x21761, 64)) == 137057); + assert(signed(zero_extend(0x21764, 64)) == 137060); + assert(signed(zero_extend(0x21765, 64)) == 137061); + assert(signed(zero_extend(0x21766, 64)) == 137062); + assert(signed(zero_extend(0x21767, 64)) == 137063); + assert(signed(zero_extend(0x21768, 64)) == 137064); + assert(signed(zero_extend(0x21769, 64)) == 137065); + assert(signed(zero_extend(0x2176a, 64)) == 137066); + assert(signed(zero_extend(0x217a8, 64)) == 137128); + assert(signed(zero_extend(0x217a9, 64)) == 137129); + assert(signed(zero_extend(0x217aa, 64)) == 137130); + assert(signed(zero_extend(0x217ab, 64)) == 137131); + assert(signed(zero_extend(0x217ac, 64)) == 137132); + assert(signed(zero_extend(0x217ad, 64)) == 137133); + assert(signed(zero_extend(0x217ae, 64)) == 137134); + assert(signed(zero_extend(0x217af, 64)) == 137135); + assert(signed(zero_extend(0x217b0, 64)) == 137136); + assert(signed(zero_extend(0x217b1, 64)) == 137137); + assert(signed(zero_extend(0x217b2, 64)) == 137138); + assert(signed(zero_extend(0x217b3, 64)) == 137139); + assert(signed(zero_extend(0x217b4, 64)) == 137140); + assert(signed(zero_extend(0x217b5, 64)) == 137141); + assert(signed(zero_extend(0x217b6, 64)) == 137142); + assert(signed(zero_extend(0x217b7, 64)) == 137143); + assert(signed(zero_extend(0x217b8, 64)) == 137144); + assert(signed(zero_extend(0x217b9, 64)) == 137145); + assert(signed(zero_extend(0x217bc, 64)) == 137148); + assert(signed(zero_extend(0x217bd, 64)) == 137149); + assert(signed(zero_extend(0x217be, 64)) == 137150); + assert(signed(zero_extend(0x217bf, 64)) == 137151); + assert(signed(zero_extend(0x217c0, 64)) == 137152); + assert(signed(zero_extend(0x217c1, 64)) == 137153); + assert(signed(zero_extend(0x217c2, 64)) == 137154); + assert(signed(zero_extend(0x2196c, 64)) == 137580); + assert(signed(zero_extend(0x2196d, 64)) == 137581); + assert(signed(zero_extend(0x2196e, 64)) == 137582); + assert(signed(zero_extend(0x2196f, 64)) == 137583); + assert(signed(zero_extend(0x21970, 64)) == 137584); + assert(signed(zero_extend(0x21971, 64)) == 137585); + assert(signed(zero_extend(0x21972, 64)) == 137586); + assert(signed(zero_extend(0x21973, 64)) == 137587); + assert(signed(zero_extend(0x21974, 64)) == 137588); + assert(signed(zero_extend(0x21975, 64)) == 137589); + assert(signed(zero_extend(0x21976, 64)) == 137590); + assert(signed(zero_extend(0x21977, 64)) == 137591); + assert(signed(zero_extend(0x21978, 64)) == 137592); + assert(signed(zero_extend(0x21979, 64)) == 137593); + assert(signed(zero_extend(0x2197a, 64)) == 137594); + assert(signed(zero_extend(0x2197b, 64)) == 137595); + assert(signed(zero_extend(0x2197c, 64)) == 137596); + assert(signed(zero_extend(0x2197d, 64)) == 137597); + assert(signed(zero_extend(0x2197e, 64)) == 137598); + assert(signed(zero_extend(0x2197f, 64)) == 137599); + assert(signed(zero_extend(0x21980, 64)) == 137600); + assert(signed(zero_extend(0x21981, 64)) == 137601); + assert(signed(zero_extend(0x21982, 64)) == 137602); + assert(signed(zero_extend(0x21983, 64)) == 137603); + assert(signed(zero_extend(0x219c4, 64)) == 137668); + assert(signed(zero_extend(0x219c5, 64)) == 137669); + assert(signed(zero_extend(0x219c6, 64)) == 137670); + assert(signed(zero_extend(0x219c7, 64)) == 137671); + assert(signed(zero_extend(0x219c8, 64)) == 137672); + assert(signed(zero_extend(0x219c9, 64)) == 137673); + assert(signed(zero_extend(0x219ca, 64)) == 137674); + assert(signed(zero_extend(0x219cb, 64)) == 137675); + assert(signed(zero_extend(0x219cc, 64)) == 137676); + assert(signed(zero_extend(0x219cd, 64)) == 137677); + assert(signed(zero_extend(0x219ce, 64)) == 137678); + assert(signed(zero_extend(0x219cf, 64)) == 137679); + assert(signed(zero_extend(0x219d0, 64)) == 137680); + assert(signed(zero_extend(0x219d1, 64)) == 137681); + assert(signed(zero_extend(0x219d2, 64)) == 137682); + assert(signed(zero_extend(0x219d3, 64)) == 137683); + assert(signed(zero_extend(0x219d4, 64)) == 137684); + assert(signed(zero_extend(0x219d5, 64)) == 137685); + assert(signed(zero_extend(0x219d6, 64)) == 137686); + assert(signed(zero_extend(0x219d7, 64)) == 137687); + assert(signed(zero_extend(0x219d8, 64)) == 137688); + assert(signed(zero_extend(0x219d9, 64)) == 137689); + assert(signed(zero_extend(0x219da, 64)) == 137690); + assert(signed(zero_extend(0x219db, 64)) == 137691); + assert(signed(zero_extend(0x21a90, 64)) == 137872); + assert(signed(zero_extend(0x21a91, 64)) == 137873); + assert(signed(zero_extend(0x21a92, 64)) == 137874); + assert(signed(zero_extend(0x21a93, 64)) == 137875); + assert(signed(zero_extend(0x21a94, 64)) == 137876); + assert(signed(zero_extend(0x21a95, 64)) == 137877); + assert(signed(zero_extend(0x21a96, 64)) == 137878); + assert(signed(zero_extend(0x21a97, 64)) == 137879); + assert(signed(zero_extend(0x21a98, 64)) == 137880); + assert(signed(zero_extend(0x21a99, 64)) == 137881); + assert(signed(zero_extend(0x21a9a, 64)) == 137882); + assert(signed(zero_extend(0x21a9b, 64)) == 137883); + assert(signed(zero_extend(0x21a9c, 64)) == 137884); + assert(signed(zero_extend(0x21a9d, 64)) == 137885); + assert(signed(zero_extend(0x21a9e, 64)) == 137886); + assert(signed(zero_extend(0x21a9f, 64)) == 137887); + assert(signed(zero_extend(0x21aa0, 64)) == 137888); + assert(signed(zero_extend(0x21aa1, 64)) == 137889); + assert(signed(zero_extend(0x21aa2, 64)) == 137890); + assert(signed(zero_extend(0x21aa3, 64)) == 137891); + assert(signed(zero_extend(0x21aa4, 64)) == 137892); + assert(signed(zero_extend(0x21aa5, 64)) == 137893); + assert(signed(zero_extend(0x21aa6, 64)) == 137894); + assert(signed(zero_extend(0x21aa7, 64)) == 137895); + assert(signed(zero_extend(0x21aa8, 64)) == 137896); + assert(signed(zero_extend(0x21aa9, 64)) == 137897); + assert(signed(zero_extend(0x21aaa, 64)) == 137898); + assert(signed(zero_extend(0x21ae8, 64)) == 137960); + assert(signed(zero_extend(0x21ae9, 64)) == 137961); + assert(signed(zero_extend(0x21aea, 64)) == 137962); + assert(signed(zero_extend(0x21aeb, 64)) == 137963); + assert(signed(zero_extend(0x21aec, 64)) == 137964); + assert(signed(zero_extend(0x21aed, 64)) == 137965); + assert(signed(zero_extend(0x21aee, 64)) == 137966); + assert(signed(zero_extend(0x21aef, 64)) == 137967); + assert(signed(zero_extend(0x21af0, 64)) == 137968); + assert(signed(zero_extend(0x21af1, 64)) == 137969); + assert(signed(zero_extend(0x21af2, 64)) == 137970); + assert(signed(zero_extend(0x21af3, 64)) == 137971); + assert(signed(zero_extend(0x21af4, 64)) == 137972); + assert(signed(zero_extend(0x21af5, 64)) == 137973); + assert(signed(zero_extend(0x21af6, 64)) == 137974); + assert(signed(zero_extend(0x21af7, 64)) == 137975); + assert(signed(zero_extend(0x21af8, 64)) == 137976); + assert(signed(zero_extend(0x21af9, 64)) == 137977); + assert(signed(zero_extend(0x21afa, 64)) == 137978); + assert(signed(zero_extend(0x21afb, 64)) == 137979); + assert(signed(zero_extend(0x21afc, 64)) == 137980); + assert(signed(zero_extend(0x21afd, 64)) == 137981); + assert(signed(zero_extend(0x21afe, 64)) == 137982); + assert(signed(zero_extend(0x21aff, 64)) == 137983); + assert(signed(zero_extend(0x21b00, 64)) == 137984); + assert(signed(zero_extend(0x21b01, 64)) == 137985); + assert(signed(zero_extend(0x21b02, 64)) == 137986); + assert(signed(zero_extend(0x21d08, 64)) == 138504); + assert(signed(zero_extend(0x21d09, 64)) == 138505); + assert(signed(zero_extend(0x21d0a, 64)) == 138506); + assert(signed(zero_extend(0x21d0b, 64)) == 138507); + assert(signed(zero_extend(0x21d0c, 64)) == 138508); + assert(signed(zero_extend(0x21d0d, 64)) == 138509); + assert(signed(zero_extend(0x21d0e, 64)) == 138510); + assert(signed(zero_extend(0x21d0f, 64)) == 138511); + assert(signed(zero_extend(0x21d10, 64)) == 138512); + assert(signed(zero_extend(0x21d11, 64)) == 138513); + assert(signed(zero_extend(0x21d14, 64)) == 138516); + assert(signed(zero_extend(0x21d15, 64)) == 138517); + assert(signed(zero_extend(0x21d16, 64)) == 138518); + assert(signed(zero_extend(0x21d17, 64)) == 138519); + assert(signed(zero_extend(0x21d18, 64)) == 138520); + assert(signed(zero_extend(0x21d19, 64)) == 138521); + assert(signed(zero_extend(0x21d1a, 64)) == 138522); + assert(signed(zero_extend(0x21d1b, 64)) == 138523); + assert(signed(zero_extend(0x21d1c, 64)) == 138524); + assert(signed(zero_extend(0x21d1d, 64)) == 138525); + assert(signed(zero_extend(0x21d1e, 64)) == 138526); + assert(signed(zero_extend(0x21d1f, 64)) == 138527); + assert(signed(zero_extend(0x21d20, 64)) == 138528); + assert(signed(zero_extend(0x21d21, 64)) == 138529); + assert(signed(zero_extend(0x21d22, 64)) == 138530); + assert(signed(zero_extend(0x21d23, 64)) == 138531); + assert(signed(zero_extend(0x21d24, 64)) == 138532); + assert(signed(zero_extend(0x21d25, 64)) == 138533); + assert(signed(zero_extend(0x21d26, 64)) == 138534); + assert(signed(zero_extend(0x21d27, 64)) == 138535); + assert(signed(zero_extend(0x21d28, 64)) == 138536); + assert(signed(zero_extend(0x21d29, 64)) == 138537); + assert(signed(zero_extend(0x21d2a, 64)) == 138538); + assert(signed(zero_extend(0x21d2b, 64)) == 138539); + assert(signed(zero_extend(0x21d2c, 64)) == 138540); + assert(signed(zero_extend(0x21d2d, 64)) == 138541); + assert(signed(zero_extend(0x21d30, 64)) == 138544); + assert(signed(zero_extend(0x21d31, 64)) == 138545); + assert(signed(zero_extend(0x21d32, 64)) == 138546); + assert(signed(zero_extend(0x21d33, 64)) == 138547); + assert(signed(zero_extend(0x21d34, 64)) == 138548); + assert(signed(zero_extend(0x21d35, 64)) == 138549); + assert(signed(zero_extend(0x21d36, 64)) == 138550); + assert(signed(zero_extend(0x21d37, 64)) == 138551); + assert(signed(zero_extend(0x21d38, 64)) == 138552); + assert(signed(zero_extend(0x21d39, 64)) == 138553); + assert(signed(zero_extend(0x21d3c, 64)) == 138556); + assert(signed(zero_extend(0x21d3d, 64)) == 138557); + assert(signed(zero_extend(0x21d3e, 64)) == 138558); + assert(signed(zero_extend(0x21d3f, 64)) == 138559); + assert(signed(zero_extend(0x21d40, 64)) == 138560); + assert(signed(zero_extend(0x21d41, 64)) == 138561); + assert(signed(zero_extend(0x21d42, 64)) == 138562); + assert(signed(zero_extend(0x21d43, 64)) == 138563); + assert(signed(zero_extend(0x21d44, 64)) == 138564); + assert(signed(zero_extend(0x21d45, 64)) == 138565); + assert(signed(zero_extend(0x21d48, 64)) == 138568); + assert(signed(zero_extend(0x21d49, 64)) == 138569); + assert(signed(zero_extend(0x21d4a, 64)) == 138570); + assert(signed(zero_extend(0x21d4b, 64)) == 138571); + assert(signed(zero_extend(0x21d4c, 64)) == 138572); + assert(signed(zero_extend(0x21d4d, 64)) == 138573); + assert(signed(zero_extend(0x21d4e, 64)) == 138574); + assert(signed(zero_extend(0x21d4f, 64)) == 138575); + assert(signed(zero_extend(0x21d50, 64)) == 138576); + assert(signed(zero_extend(0x21d51, 64)) == 138577); + assert(signed(zero_extend(0x21d54, 64)) == 138580); + assert(signed(zero_extend(0x21d55, 64)) == 138581); + assert(signed(zero_extend(0x21d56, 64)) == 138582); + assert(signed(zero_extend(0x21d57, 64)) == 138583); + assert(signed(zero_extend(0x21d58, 64)) == 138584); + assert(signed(zero_extend(0x21d59, 64)) == 138585); + assert(signed(zero_extend(0x21d5a, 64)) == 138586); + assert(signed(zero_extend(0x21d5b, 64)) == 138587); + assert(signed(zero_extend(0x21d5c, 64)) == 138588); + assert(signed(zero_extend(0x21d5d, 64)) == 138589); + assert(signed(zero_extend(0x21d60, 64)) == 138592); + assert(signed(zero_extend(0x21d61, 64)) == 138593); + assert(signed(zero_extend(0x21d62, 64)) == 138594); + assert(signed(zero_extend(0x21d63, 64)) == 138595); + assert(signed(zero_extend(0x21d64, 64)) == 138596); + assert(signed(zero_extend(0x21d65, 64)) == 138597); + assert(signed(zero_extend(0x21d66, 64)) == 138598); + assert(signed(zero_extend(0x21d67, 64)) == 138599); + assert(signed(zero_extend(0x21d68, 64)) == 138600); + assert(signed(zero_extend(0x21d69, 64)) == 138601); + assert(signed(zero_extend(0x21d6c, 64)) == 138604); + assert(signed(zero_extend(0x21d6d, 64)) == 138605); + assert(signed(zero_extend(0x21d6e, 64)) == 138606); + assert(signed(zero_extend(0x21d6f, 64)) == 138607); + assert(signed(zero_extend(0x21d70, 64)) == 138608); + assert(signed(zero_extend(0x21d71, 64)) == 138609); + assert(signed(zero_extend(0x21d72, 64)) == 138610); + assert(signed(zero_extend(0x21d73, 64)) == 138611); + assert(signed(zero_extend(0x21d74, 64)) == 138612); + assert(signed(zero_extend(0x21d75, 64)) == 138613); + assert(signed(zero_extend(0x21d76, 64)) == 138614); + assert(signed(zero_extend(0x21d77, 64)) == 138615); + assert(signed(zero_extend(0x21d78, 64)) == 138616); + assert(signed(zero_extend(0x21d79, 64)) == 138617); + assert(signed(zero_extend(0x21d7a, 64)) == 138618); + assert(signed(zero_extend(0x21d7b, 64)) == 138619); + assert(signed(zero_extend(0x21d7c, 64)) == 138620); + assert(signed(zero_extend(0x21d7d, 64)) == 138621); + assert(signed(zero_extend(0x21d7e, 64)) == 138622); + assert(signed(zero_extend(0x21d7f, 64)) == 138623); + assert(signed(zero_extend(0x21d80, 64)) == 138624); + assert(signed(zero_extend(0x21d81, 64)) == 138625); + assert(signed(zero_extend(0x21d82, 64)) == 138626); + assert(signed(zero_extend(0x21d83, 64)) == 138627); + assert(signed(zero_extend(0x21d84, 64)) == 138628); + assert(signed(zero_extend(0x21d85, 64)) == 138629); + assert(signed(zero_extend(0x21d88, 64)) == 138632); + assert(signed(zero_extend(0x21d89, 64)) == 138633); + assert(signed(zero_extend(0x21d8a, 64)) == 138634); + assert(signed(zero_extend(0x21d8b, 64)) == 138635); + assert(signed(zero_extend(0x21d8c, 64)) == 138636); + assert(signed(zero_extend(0x21d8d, 64)) == 138637); + assert(signed(zero_extend(0x21d8e, 64)) == 138638); + assert(signed(zero_extend(0x21d8f, 64)) == 138639); + assert(signed(zero_extend(0x21d90, 64)) == 138640); + assert(signed(zero_extend(0x21d91, 64)) == 138641); + assert(signed(zero_extend(0x21d94, 64)) == 138644); + assert(signed(zero_extend(0x21d95, 64)) == 138645); + assert(signed(zero_extend(0x21d96, 64)) == 138646); + assert(signed(zero_extend(0x21d97, 64)) == 138647); + assert(signed(zero_extend(0x21d98, 64)) == 138648); + assert(signed(zero_extend(0x21d99, 64)) == 138649); + assert(signed(zero_extend(0x21d9a, 64)) == 138650); + assert(signed(zero_extend(0x21d9b, 64)) == 138651); + assert(signed(zero_extend(0x21d9c, 64)) == 138652); + assert(signed(zero_extend(0x21d9d, 64)) == 138653); + assert(signed(zero_extend(0x21da0, 64)) == 138656); + assert(signed(zero_extend(0x21da1, 64)) == 138657); + assert(signed(zero_extend(0x21da2, 64)) == 138658); + assert(signed(zero_extend(0x21da3, 64)) == 138659); + assert(signed(zero_extend(0x21da4, 64)) == 138660); + assert(signed(zero_extend(0x21da5, 64)) == 138661); + assert(signed(zero_extend(0x21da6, 64)) == 138662); + assert(signed(zero_extend(0x21da7, 64)) == 138663); + assert(signed(zero_extend(0x21da8, 64)) == 138664); + assert(signed(zero_extend(0x21da9, 64)) == 138665); + assert(signed(zero_extend(0x21dac, 64)) == 138668); + assert(signed(zero_extend(0x21dad, 64)) == 138669); + assert(signed(zero_extend(0x21dae, 64)) == 138670); + assert(signed(zero_extend(0x21daf, 64)) == 138671); + assert(signed(zero_extend(0x21db0, 64)) == 138672); + assert(signed(zero_extend(0x21db1, 64)) == 138673); + assert(signed(zero_extend(0x21db2, 64)) == 138674); + assert(signed(zero_extend(0x21db3, 64)) == 138675); + assert(signed(zero_extend(0x21db4, 64)) == 138676); + assert(signed(zero_extend(0x21db5, 64)) == 138677); + assert(signed(zero_extend(0x22, 64)) == 34); + assert(signed(zero_extend(0x220, 64)) == 544); + assert(signed(zero_extend(0x2200, 64)) == 8704); + assert(signed(zero_extend(0x22000, 64)) == 139264); + assert(signed(zero_extend(0x22088, 64)) == 139400); + assert(signed(zero_extend(0x220e0, 64)) == 139488); + assert(signed(zero_extend(0x2220, 64)) == 8736); + assert(signed(zero_extend(0x2222222222222223, 64)) == 2459565876494606883); + assert(signed(zero_extend(0x223c, 64)) == 8764); + assert(signed(zero_extend(0x22c, 64)) == 556); + assert(signed(zero_extend(0x23, 64)) == 35); + assert(signed(zero_extend(0x235e0, 64)) == 144864); + assert(signed(zero_extend(0x235e1, 64)) == 144865); + assert(signed(zero_extend(0x235e2, 64)) == 144866); + assert(signed(zero_extend(0x235e3, 64)) == 144867); + assert(signed(zero_extend(0x235e4, 64)) == 144868); + assert(signed(zero_extend(0x235e5, 64)) == 144869); + assert(signed(zero_extend(0x235e6, 64)) == 144870); + assert(signed(zero_extend(0x235e7, 64)) == 144871); + assert(signed(zero_extend(0x235e8, 64)) == 144872); + assert(signed(zero_extend(0x235e9, 64)) == 144873); + assert(signed(zero_extend(0x235ea, 64)) == 144874); + assert(signed(zero_extend(0x235eb, 64)) == 144875); + assert(signed(zero_extend(0x235ec, 64)) == 144876); + assert(signed(zero_extend(0x235ed, 64)) == 144877); + assert(signed(zero_extend(0x235ee, 64)) == 144878); + assert(signed(zero_extend(0x235ef, 64)) == 144879); + assert(signed(zero_extend(0x235f0, 64)) == 144880); + assert(signed(zero_extend(0x235f1, 64)) == 144881); + assert(signed(zero_extend(0x235f2, 64)) == 144882); + assert(signed(zero_extend(0x235f3, 64)) == 144883); + assert(signed(zero_extend(0x235f4, 64)) == 144884); + assert(signed(zero_extend(0x235f5, 64)) == 144885); + assert(signed(zero_extend(0x235f6, 64)) == 144886); + assert(signed(zero_extend(0x235f7, 64)) == 144887); + assert(signed(zero_extend(0x235f8, 64)) == 144888); + assert(signed(zero_extend(0x23638, 64)) == 144952); + assert(signed(zero_extend(0x23639, 64)) == 144953); + assert(signed(zero_extend(0x2363a, 64)) == 144954); + assert(signed(zero_extend(0x2363b, 64)) == 144955); + assert(signed(zero_extend(0x2363c, 64)) == 144956); + assert(signed(zero_extend(0x2363d, 64)) == 144957); + assert(signed(zero_extend(0x2363e, 64)) == 144958); + assert(signed(zero_extend(0x2363f, 64)) == 144959); + assert(signed(zero_extend(0x23640, 64)) == 144960); + assert(signed(zero_extend(0x23641, 64)) == 144961); + assert(signed(zero_extend(0x23642, 64)) == 144962); + assert(signed(zero_extend(0x23643, 64)) == 144963); + assert(signed(zero_extend(0x23644, 64)) == 144964); + assert(signed(zero_extend(0x23645, 64)) == 144965); + assert(signed(zero_extend(0x23646, 64)) == 144966); + assert(signed(zero_extend(0x23647, 64)) == 144967); + assert(signed(zero_extend(0x23648, 64)) == 144968); + assert(signed(zero_extend(0x23649, 64)) == 144969); + assert(signed(zero_extend(0x2364a, 64)) == 144970); + assert(signed(zero_extend(0x2364b, 64)) == 144971); + assert(signed(zero_extend(0x2364c, 64)) == 144972); + assert(signed(zero_extend(0x2364d, 64)) == 144973); + assert(signed(zero_extend(0x2364e, 64)) == 144974); + assert(signed(zero_extend(0x2364f, 64)) == 144975); + assert(signed(zero_extend(0x23650, 64)) == 144976); + assert(signed(zero_extend(0x24, 64)) == 36); + assert(signed(zero_extend(0x24c, 64)) == 588); + assert(signed(zero_extend(0x25, 64)) == 37); + assert(signed(zero_extend(0x26, 64)) == 38); + assert(signed(zero_extend(0x27, 64)) == 39); + assert(signed(zero_extend(0x270, 64)) == 624); + assert(signed(zero_extend(0x28, 64)) == 40); + assert(signed(zero_extend(0x288, 64)) == 648); + assert(signed(zero_extend(0x29, 64)) == 41); + assert(signed(zero_extend(0x2a, 64)) == 42); + assert(signed(zero_extend(0x2b, 64)) == 43); + assert(signed(zero_extend(0x2c, 64)) == 44); + assert(signed(zero_extend(0x2c000, 64)) == 180224); + assert(signed(zero_extend(0x2d, 64)) == 45); + assert(signed(zero_extend(0x2e, 64)) == 46); + assert(signed(zero_extend(0x2eb0000, 64)) == 48955392); + assert(signed(zero_extend(0x2ec0000, 64)) == 49020928); + assert(signed(zero_extend(0x2ee0000, 64)) == 49152000); + assert(signed(zero_extend(0x2ef0000, 64)) == 49217536); + assert(signed(zero_extend(0x2ef0040, 64)) == 49217600); + assert(signed(zero_extend(0x2f, 64)) == 47); + assert(signed(zero_extend(0x2f0, 64)) == 752); + assert(signed(zero_extend(0x2f00000, 64)) == 49283072); + assert(signed(zero_extend(0x2f00008, 64)) == 49283080); + assert(signed(zero_extend(0x2f00018, 64)) == 49283096); + assert(signed(zero_extend(0x2f00200, 64)) == 49283584); + assert(signed(zero_extend(0x2f00538, 64)) == 49284408); + assert(signed(zero_extend(0x2f10000, 64)) == 49348608); + assert(signed(zero_extend(0x2f10800, 64)) == 49350656); + assert(signed(zero_extend(0x2f40000, 64)) == 49545216); + assert(signed(zero_extend(0x2f50000, 64)) == 49610752); + assert(signed(zero_extend(0x2f50040, 64)) == 49610816); + assert(signed(zero_extend(0x2f60000, 64)) == 49676288); + assert(signed(zero_extend(0x2f60200, 64)) == 49676800); + assert(signed(zero_extend(0x2f70000, 64)) == 49741824); + assert(signed(zero_extend(0x2f70800, 64)) == 49743872); + assert(signed(zero_extend(0x3, 64)) == 3); + assert(signed(zero_extend(0x30, 64)) == 48); + assert(signed(zero_extend(0x3000, 64)) == 12288); + assert(signed(zero_extend(0x30000, 64)) == 196608); + assert(signed(zero_extend(0x300001c, 64)) == 50331676); + assert(signed(zero_extend(0x3000020, 64)) == 50331680); + assert(signed(zero_extend(0x3000024, 64)) == 50331684); + assert(signed(zero_extend(0x3000054, 64)) == 50331732); + assert(signed(zero_extend(0x3000058, 64)) == 50331736); + assert(signed(zero_extend(0x300005c, 64)) == 50331740); + assert(signed(zero_extend(0x3000068, 64)) == 50331752); + assert(signed(zero_extend(0x30000c4, 64)) == 50331844); + assert(signed(zero_extend(0x30000c8, 64)) == 50331848); + assert(signed(zero_extend(0x30000cc, 64)) == 50331852); + assert(signed(zero_extend(0x3000288, 64)) == 50332296); + assert(signed(zero_extend(0x30002a0, 64)) == 50332320); + assert(signed(zero_extend(0x3006b10, 64)) == 50359056); + assert(signed(zero_extend(0x3006b1c, 64)) == 50359068); + assert(signed(zero_extend(0x3006e40, 64)) == 50359872); + assert(signed(zero_extend(0x3008d20, 64)) == 50367776); + assert(signed(zero_extend(0x3008d30, 64)) == 50367792); + assert(signed(zero_extend(0x3008d40, 64)) == 50367808); + assert(signed(zero_extend(0x3008d50, 64)) == 50367824); + assert(signed(zero_extend(0x3008d60, 64)) == 50367840); + assert(signed(zero_extend(0x3008d70, 64)) == 50367856); + assert(signed(zero_extend(0x3008d80, 64)) == 50367872); + assert(signed(zero_extend(0x3008d90, 64)) == 50367888); + assert(signed(zero_extend(0x3008d98, 64)) == 50367896); + assert(signed(zero_extend(0x3008da0, 64)) == 50367904); + assert(signed(zero_extend(0x3008db0, 64)) == 50367920); + assert(signed(zero_extend(0x3008db8, 64)) == 50367928); + assert(signed(zero_extend(0x3008dc0, 64)) == 50367936); + assert(signed(zero_extend(0x3008dc8, 64)) == 50367944); + assert(signed(zero_extend(0x3008dd0, 64)) == 50367952); + assert(signed(zero_extend(0x3008de0, 64)) == 50367968); + assert(signed(zero_extend(0x3008de8, 64)) == 50367976); + assert(signed(zero_extend(0x3008df0, 64)) == 50367984); + assert(signed(zero_extend(0x3008df8, 64)) == 50367992); + assert(signed(zero_extend(0x3008e00, 64)) == 50368000); + assert(signed(zero_extend(0x3008e10, 64)) == 50368016); + assert(signed(zero_extend(0x3008e20, 64)) == 50368032); + assert(signed(zero_extend(0x3008e28, 64)) == 50368040); + assert(signed(zero_extend(0x3008e30, 64)) == 50368048); + assert(signed(zero_extend(0x3008e40, 64)) == 50368064); + assert(signed(zero_extend(0x3010e40, 64)) == 50400832); + assert(signed(zero_extend(0x30e0000, 64)) == 51249152); + assert(signed(zero_extend(0x30f0000, 64)) == 51314688); + assert(signed(zero_extend(0x31, 64)) == 49); + assert(signed(zero_extend(0x3100000, 64)) == 51380224); + assert(signed(zero_extend(0x3100040, 64)) == 51380288); + assert(signed(zero_extend(0x3110000, 64)) == 51445760); + assert(signed(zero_extend(0x3110208, 64)) == 51446280); + assert(signed(zero_extend(0x3120000, 64)) == 51511296); + assert(signed(zero_extend(0x3120800, 64)) == 51513344); + assert(signed(zero_extend(0x31d0000, 64)) == 52232192); + assert(signed(zero_extend(0x31d0200, 64)) == 52232704); + assert(signed(zero_extend(0x31d0208, 64)) == 52232712); + assert(signed(zero_extend(0x31d02f0, 64)) == 52232944); + assert(signed(zero_extend(0x31d02f8, 64)) == 52232952); + assert(signed(zero_extend(0x31d0300, 64)) == 52232960); + assert(signed(zero_extend(0x31d0308, 64)) == 52232968); + assert(signed(zero_extend(0x31d0318, 64)) == 52232984); + assert(signed(zero_extend(0x31d0320, 64)) == 52232992); + assert(signed(zero_extend(0x31d0328, 64)) == 52233000); + assert(signed(zero_extend(0x31d04d0, 64)) == 52233424); + assert(signed(zero_extend(0x31d04d8, 64)) == 52233432); + assert(signed(zero_extend(0x31d04e4, 64)) == 52233444); + assert(signed(zero_extend(0x31d04ec, 64)) == 52233452); + assert(signed(zero_extend(0x31d04f8, 64)) == 52233464); + assert(signed(zero_extend(0x31d0500, 64)) == 52233472); + assert(signed(zero_extend(0x31d050c, 64)) == 52233484); + assert(signed(zero_extend(0x31d0518, 64)) == 52233496); + assert(signed(zero_extend(0x31d0524, 64)) == 52233508); + assert(signed(zero_extend(0x31d052c, 64)) == 52233516); + assert(signed(zero_extend(0x31d0538, 64)) == 52233528); + assert(signed(zero_extend(0x31d0540, 64)) == 52233536); + assert(signed(zero_extend(0x31d054c, 64)) == 52233548); + assert(signed(zero_extend(0x31d0554, 64)) == 52233556); + assert(signed(zero_extend(0x31d0560, 64)) == 52233568); + assert(signed(zero_extend(0x31d0568, 64)) == 52233576); + assert(signed(zero_extend(0x31d0584, 64)) == 52233604); + assert(signed(zero_extend(0x31d058c, 64)) == 52233612); + assert(signed(zero_extend(0x31d0598, 64)) == 52233624); + assert(signed(zero_extend(0x31d05a0, 64)) == 52233632); + assert(signed(zero_extend(0x31d05ac, 64)) == 52233644); + assert(signed(zero_extend(0x31d05b4, 64)) == 52233652); + assert(signed(zero_extend(0x31d05c0, 64)) == 52233664); + assert(signed(zero_extend(0x31d05c8, 64)) == 52233672); + assert(signed(zero_extend(0x31d05d4, 64)) == 52233684); + assert(signed(zero_extend(0x31d05dc, 64)) == 52233692); + assert(signed(zero_extend(0x31d05e8, 64)) == 52233704); + assert(signed(zero_extend(0x31d05f0, 64)) == 52233712); + assert(signed(zero_extend(0x31d05fc, 64)) == 52233724); + assert(signed(zero_extend(0x31d0604, 64)) == 52233732); + assert(signed(zero_extend(0x31d0610, 64)) == 52233744); + assert(signed(zero_extend(0x31d0618, 64)) == 52233752); + assert(signed(zero_extend(0x31d0624, 64)) == 52233764); + assert(signed(zero_extend(0x31d062c, 64)) == 52233772); + assert(signed(zero_extend(0x31d0638, 64)) == 52233784); + assert(signed(zero_extend(0x31d0640, 64)) == 52233792); + assert(signed(zero_extend(0x31d064c, 64)) == 52233804); + assert(signed(zero_extend(0x31d0654, 64)) == 52233812); + assert(signed(zero_extend(0x31d0660, 64)) == 52233824); + assert(signed(zero_extend(0x31d0668, 64)) == 52233832); + assert(signed(zero_extend(0x31d0674, 64)) == 52233844); + assert(signed(zero_extend(0x31d067c, 64)) == 52233852); + assert(signed(zero_extend(0x31d0688, 64)) == 52233864); + assert(signed(zero_extend(0x31d0690, 64)) == 52233872); + assert(signed(zero_extend(0x31d06b0, 64)) == 52233904); + assert(signed(zero_extend(0x31d06b8, 64)) == 52233912); + assert(signed(zero_extend(0x31d06c4, 64)) == 52233924); + assert(signed(zero_extend(0x31d06cc, 64)) == 52233932); + assert(signed(zero_extend(0x31d06d8, 64)) == 52233944); + assert(signed(zero_extend(0x31d06e0, 64)) == 52233952); + assert(signed(zero_extend(0x31d0700, 64)) == 52233984); + assert(signed(zero_extend(0x31d0708, 64)) == 52233992); + assert(signed(zero_extend(0x31d0714, 64)) == 52234004); + assert(signed(zero_extend(0x31d071c, 64)) == 52234012); + assert(signed(zero_extend(0x31d073c, 64)) == 52234044); + assert(signed(zero_extend(0x31d0744, 64)) == 52234052); + assert(signed(zero_extend(0x31d0750, 64)) == 52234064); + assert(signed(zero_extend(0x31d0758, 64)) == 52234072); + assert(signed(zero_extend(0x31d0764, 64)) == 52234084); + assert(signed(zero_extend(0x31d076c, 64)) == 52234092); + assert(signed(zero_extend(0x31d0780, 64)) == 52234112); + assert(signed(zero_extend(0x31d0788, 64)) == 52234120); + assert(signed(zero_extend(0x31d1398, 64)) == 52237208); + assert(signed(zero_extend(0x31d13b8, 64)) == 52237240); + assert(signed(zero_extend(0x31d13d8, 64)) == 52237272); + assert(signed(zero_extend(0x31d13f8, 64)) == 52237304); + assert(signed(zero_extend(0x31d1418, 64)) == 52237336); + assert(signed(zero_extend(0x31d1438, 64)) == 52237368); + assert(signed(zero_extend(0x31d1458, 64)) == 52237400); + assert(signed(zero_extend(0x31d1478, 64)) == 52237432); + assert(signed(zero_extend(0x31d1498, 64)) == 52237464); + assert(signed(zero_extend(0x31d14b8, 64)) == 52237496); + assert(signed(zero_extend(0x31d14d8, 64)) == 52237528); + assert(signed(zero_extend(0x31d14f8, 64)) == 52237560); + assert(signed(zero_extend(0x31d1518, 64)) == 52237592); + assert(signed(zero_extend(0x31d1538, 64)) == 52237624); + assert(signed(zero_extend(0x31d1558, 64)) == 52237656); + assert(signed(zero_extend(0x31d1578, 64)) == 52237688); + assert(signed(zero_extend(0x31d1598, 64)) == 52237720); + assert(signed(zero_extend(0x31d15b8, 64)) == 52237752); + assert(signed(zero_extend(0x31d15d8, 64)) == 52237784); + assert(signed(zero_extend(0x31d15f8, 64)) == 52237816); + assert(signed(zero_extend(0x31d1618, 64)) == 52237848); + assert(signed(zero_extend(0x31d1638, 64)) == 52237880); + assert(signed(zero_extend(0x31d1658, 64)) == 52237912); + assert(signed(zero_extend(0x31d1678, 64)) == 52237944); + assert(signed(zero_extend(0x31d1698, 64)) == 52237976); + assert(signed(zero_extend(0x31d16b8, 64)) == 52238008); + assert(signed(zero_extend(0x31d16d8, 64)) == 52238040); + assert(signed(zero_extend(0x31d16f8, 64)) == 52238072); + assert(signed(zero_extend(0x31d1718, 64)) == 52238104); + assert(signed(zero_extend(0x31d1738, 64)) == 52238136); + assert(signed(zero_extend(0x31d1758, 64)) == 52238168); + assert(signed(zero_extend(0x31d1780, 64)) == 52238208); + assert(signed(zero_extend(0x31d17d0, 64)) == 52238288); + assert(signed(zero_extend(0x31d17e0, 64)) == 52238304); + assert(signed(zero_extend(0x31d17f0, 64)) == 52238320); + assert(signed(zero_extend(0x31d1890, 64)) == 52238480); + assert(signed(zero_extend(0x31d18a0, 64)) == 52238496); + assert(signed(zero_extend(0x31d18c0, 64)) == 52238528); + assert(signed(zero_extend(0x31d1920, 64)) == 52238624); + assert(signed(zero_extend(0x31d1938, 64)) == 52238648); + assert(signed(zero_extend(0x31d1950, 64)) == 52238672); + assert(signed(zero_extend(0x31d1960, 64)) == 52238688); + assert(signed(zero_extend(0x31d1968, 64)) == 52238696); + assert(signed(zero_extend(0x31d1970, 64)) == 52238704); + assert(signed(zero_extend(0x31d1980, 64)) == 52238720); + assert(signed(zero_extend(0x32, 64)) == 50); + assert(signed(zero_extend(0x320, 64)) == 800); + assert(signed(zero_extend(0x33, 64)) == 51); + assert(signed(zero_extend(0x34, 64)) == 52); + assert(signed(zero_extend(0x34000, 64)) == 212992); + assert(signed(zero_extend(0x34040, 64)) == 213056); + assert(signed(zero_extend(0x35, 64)) == 53); + assert(signed(zero_extend(0x36, 64)) == 54); + assert(signed(zero_extend(0x368, 64)) == 872); + assert(signed(zero_extend(0x37, 64)) == 55); + assert(signed(zero_extend(0x38, 64)) == 56); + assert(signed(zero_extend(0x3800000, 64)) == 58720256); + assert(signed(zero_extend(0x380000a, 64)) == 58720266); + assert(signed(zero_extend(0x3800010, 64)) == 58720272); + assert(signed(zero_extend(0x3800038, 64)) == 58720312); + assert(signed(zero_extend(0x380003a, 64)) == 58720314); + assert(signed(zero_extend(0x380004b, 64)) == 58720331); + assert(signed(zero_extend(0x3800060, 64)) == 58720352); + assert(signed(zero_extend(0x38002c0, 64)) == 58720960); + assert(signed(zero_extend(0x38002f8, 64)) == 58721016); + assert(signed(zero_extend(0x3800310, 64)) == 58721040); + assert(signed(zero_extend(0x3800330, 64)) == 58721072); + assert(signed(zero_extend(0x3800338, 64)) == 58721080); + assert(signed(zero_extend(0x3800350, 64)) == 58721104); + assert(signed(zero_extend(0x3800360, 64)) == 58721120); + assert(signed(zero_extend(0x38003a0, 64)) == 58721184); + assert(signed(zero_extend(0x38003b0, 64)) == 58721200); + assert(signed(zero_extend(0x38003c0, 64)) == 58721216); + assert(signed(zero_extend(0x38003d0, 64)) == 58721232); + assert(signed(zero_extend(0x38003e0, 64)) == 58721248); + assert(signed(zero_extend(0x38003f0, 64)) == 58721264); + assert(signed(zero_extend(0x38003f8, 64)) == 58721272); + assert(signed(zero_extend(0x3800410, 64)) == 58721296); + assert(signed(zero_extend(0x3800420, 64)) == 58721312); + assert(signed(zero_extend(0x3800430, 64)) == 58721328); + assert(signed(zero_extend(0x3800440, 64)) == 58721344); + assert(signed(zero_extend(0x3800448, 64)) == 58721352); + assert(signed(zero_extend(0x3800450, 64)) == 58721360); + assert(signed(zero_extend(0x3800460, 64)) == 58721376); + assert(signed(zero_extend(0x3808060, 64)) == 58753120); + assert(signed(zero_extend(0x3808064, 64)) == 58753124); + assert(signed(zero_extend(0x3808068, 64)) == 58753128); + assert(signed(zero_extend(0x3808070, 64)) == 58753136); + assert(signed(zero_extend(0x3808078, 64)) == 58753144); + assert(signed(zero_extend(0x3808080, 64)) == 58753152); + assert(signed(zero_extend(0x3808140, 64)) == 58753344); + assert(signed(zero_extend(0x3808258, 64)) == 58753624); + assert(signed(zero_extend(0x3808a00, 64)) == 58755584); + assert(signed(zero_extend(0x3808a04, 64)) == 58755588); + assert(signed(zero_extend(0x3808a08, 64)) == 58755592); + assert(signed(zero_extend(0x3808a10, 64)) == 58755600); + assert(signed(zero_extend(0x3808a18, 64)) == 58755608); + assert(signed(zero_extend(0x3808a20, 64)) == 58755616); + assert(signed(zero_extend(0x3808a70, 64)) == 58755696); + assert(signed(zero_extend(0x3808a78, 64)) == 58755704); + assert(signed(zero_extend(0x3808b78, 64)) == 58755960); + assert(signed(zero_extend(0x3808b80, 64)) == 58755968); + assert(signed(zero_extend(0x380d000, 64)) == 58773504); + assert(signed(zero_extend(0x380d610, 64)) == 58775056); + assert(signed(zero_extend(0x380d880, 64)) == 58775680); + assert(signed(zero_extend(0x380d8c0, 64)) == 58775744); + assert(signed(zero_extend(0x380d8d0, 64)) == 58775760); + assert(signed(zero_extend(0x380d8e0, 64)) == 58775776); + assert(signed(zero_extend(0x380d8e8, 64)) == 58775784); + assert(signed(zero_extend(0x380d8f0, 64)) == 58775792); + assert(signed(zero_extend(0x380d900, 64)) == 58775808); + assert(signed(zero_extend(0x380d910, 64)) == 58775824); + assert(signed(zero_extend(0x380d960, 64)) == 58775904); + assert(signed(zero_extend(0x380d970, 64)) == 58775920); + assert(signed(zero_extend(0x380d980, 64)) == 58775936); + assert(signed(zero_extend(0x380d990, 64)) == 58775952); + assert(signed(zero_extend(0x380d9a0, 64)) == 58775968); + assert(signed(zero_extend(0x380d9b0, 64)) == 58775984); + assert(signed(zero_extend(0x380d9b8, 64)) == 58775992); + assert(signed(zero_extend(0x380d9d0, 64)) == 58776016); + assert(signed(zero_extend(0x380d9e0, 64)) == 58776032); + assert(signed(zero_extend(0x380d9f0, 64)) == 58776048); + assert(signed(zero_extend(0x380da00, 64)) == 58776064); + assert(signed(zero_extend(0x380da10, 64)) == 58776080); + assert(signed(zero_extend(0x3811610, 64)) == 58791440); + assert(signed(zero_extend(0x3813610, 64)) == 58799632); + assert(signed(zero_extend(0x3815610, 64)) == 58807824); + assert(signed(zero_extend(0x3815618, 64)) == 58807832); + assert(signed(zero_extend(0x3815624, 64)) == 58807844); + assert(signed(zero_extend(0x3815628, 64)) == 58807848); + assert(signed(zero_extend(0x3815630, 64)) == 58807856); + assert(signed(zero_extend(0x3815638, 64)) == 58807864); + assert(signed(zero_extend(0x381563c, 64)) == 58807868); + assert(signed(zero_extend(0x3815640, 64)) == 58807872); + assert(signed(zero_extend(0x3815648, 64)) == 58807880); + assert(signed(zero_extend(0x3815650, 64)) == 58807888); + assert(signed(zero_extend(0x3815658, 64)) == 58807896); + assert(signed(zero_extend(0x3815668, 64)) == 58807912); + assert(signed(zero_extend(0x3815670, 64)) == 58807920); + assert(signed(zero_extend(0x3815678, 64)) == 58807928); + assert(signed(zero_extend(0x3815778, 64)) == 58808184); + assert(signed(zero_extend(0x3815780, 64)) == 58808192); + assert(signed(zero_extend(0x3815b50, 64)) == 58809168); + assert(signed(zero_extend(0x3815b58, 64)) == 58809176); + assert(signed(zero_extend(0x3815c58, 64)) == 58809432); + assert(signed(zero_extend(0x3815c60, 64)) == 58809440); + assert(signed(zero_extend(0x3815d80, 64)) == 58809728); + assert(signed(zero_extend(0x3817d80, 64)) == 58817920); + assert(signed(zero_extend(0x3819d80, 64)) == 58826112); + assert(signed(zero_extend(0x3819d84, 64)) == 58826116); + assert(signed(zero_extend(0x3819d88, 64)) == 58826120); + assert(signed(zero_extend(0x3819d8c, 64)) == 58826124); + assert(signed(zero_extend(0x3819d90, 64)) == 58826128); + assert(signed(zero_extend(0x3819d98, 64)) == 58826136); + assert(signed(zero_extend(0x3819da0, 64)) == 58826144); + assert(signed(zero_extend(0x3819da8, 64)) == 58826152); + assert(signed(zero_extend(0x3819db8, 64)) == 58826168); + assert(signed(zero_extend(0x3819dc0, 64)) == 58826176); + assert(signed(zero_extend(0x3819dc8, 64)) == 58826184); + assert(signed(zero_extend(0x3819ed0, 64)) == 58826448); + assert(signed(zero_extend(0x381a000, 64)) == 58826752); + assert(signed(zero_extend(0x381a280, 64)) == 58827392); + assert(signed(zero_extend(0x381a284, 64)) == 58827396); + assert(signed(zero_extend(0x381a288, 64)) == 58827400); + assert(signed(zero_extend(0x381a28c, 64)) == 58827404); + assert(signed(zero_extend(0x381a290, 64)) == 58827408); + assert(signed(zero_extend(0x381a298, 64)) == 58827416); + assert(signed(zero_extend(0x381a2a0, 64)) == 58827424); + assert(signed(zero_extend(0x381a2a8, 64)) == 58827432); + assert(signed(zero_extend(0x381a2b8, 64)) == 58827448); + assert(signed(zero_extend(0x381a2c0, 64)) == 58827456); + assert(signed(zero_extend(0x381a2c8, 64)) == 58827464); + assert(signed(zero_extend(0x381a3c8, 64)) == 58827720); + assert(signed(zero_extend(0x381a3d0, 64)) == 58827728); + assert(signed(zero_extend(0x381a780, 64)) == 58828672); + assert(signed(zero_extend(0x381a784, 64)) == 58828676); + assert(signed(zero_extend(0x381a788, 64)) == 58828680); + assert(signed(zero_extend(0x381a790, 64)) == 58828688); + assert(signed(zero_extend(0x381a798, 64)) == 58828696); + assert(signed(zero_extend(0x381a7a0, 64)) == 58828704); + assert(signed(zero_extend(0x381a7a4, 64)) == 58828708); + assert(signed(zero_extend(0x381a7ac, 64)) == 58828716); + assert(signed(zero_extend(0x381a7b0, 64)) == 58828720); + assert(signed(zero_extend(0x381a7b8, 64)) == 58828728); + assert(signed(zero_extend(0x381a7c0, 64)) == 58828736); + assert(signed(zero_extend(0x381a7c8, 64)) == 58828744); + assert(signed(zero_extend(0x381a7d8, 64)) == 58828760); + assert(signed(zero_extend(0x381a7e0, 64)) == 58828768); + assert(signed(zero_extend(0x381a8e0, 64)) == 58829024); + assert(signed(zero_extend(0x381a8e8, 64)) == 58829032); + assert(signed(zero_extend(0x381acb0, 64)) == 58830000); + assert(signed(zero_extend(0x381acb8, 64)) == 58830008); + assert(signed(zero_extend(0x381adb8, 64)) == 58830264); + assert(signed(zero_extend(0x381adc0, 64)) == 58830272); + assert(signed(zero_extend(0x381aee0, 64)) == 58830560); + assert(signed(zero_extend(0x381af00, 64)) == 58830592); + assert(signed(zero_extend(0x381b150, 64)) == 58831184); + assert(signed(zero_extend(0x381b188, 64)) == 58831240); + assert(signed(zero_extend(0x381b1a0, 64)) == 58831264); + assert(signed(zero_extend(0x381b1d0, 64)) == 58831312); + assert(signed(zero_extend(0x381b1d8, 64)) == 58831320); + assert(signed(zero_extend(0x381b1e0, 64)) == 58831328); + assert(signed(zero_extend(0x381b1f0, 64)) == 58831344); + assert(signed(zero_extend(0x381b200, 64)) == 58831360); + assert(signed(zero_extend(0x381b240, 64)) == 58831424); + assert(signed(zero_extend(0x381b250, 64)) == 58831440); + assert(signed(zero_extend(0x381b260, 64)) == 58831456); + assert(signed(zero_extend(0x381b270, 64)) == 58831472); + assert(signed(zero_extend(0x381b278, 64)) == 58831480); + assert(signed(zero_extend(0x381b280, 64)) == 58831488); + assert(signed(zero_extend(0x381b290, 64)) == 58831504); + assert(signed(zero_extend(0x381b298, 64)) == 58831512); + assert(signed(zero_extend(0x381b2b0, 64)) == 58831536); + assert(signed(zero_extend(0x381b2c0, 64)) == 58831552); + assert(signed(zero_extend(0x381b2d0, 64)) == 58831568); + assert(signed(zero_extend(0x381b2e0, 64)) == 58831584); + assert(signed(zero_extend(0x381b2e8, 64)) == 58831592); + assert(signed(zero_extend(0x381b2f0, 64)) == 58831600); + assert(signed(zero_extend(0x381b300, 64)) == 58831616); + assert(signed(zero_extend(0x39, 64)) == 57); + assert(signed(zero_extend(0x3a, 64)) == 58); + assert(signed(zero_extend(0x3b, 64)) == 59); + assert(signed(zero_extend(0x3c, 64)) == 60); + assert(signed(zero_extend(0x3d, 64)) == 61); + assert(signed(zero_extend(0x3e, 64)) == 62); + assert(signed(zero_extend(0x3f, 64)) == 63); + assert(signed(zero_extend(0x3ff83ff83ff83ff8, 64)) == 4609504554071375864); + assert(signed(zero_extend(0x3fff, 64)) == 16383); + assert(signed(zero_extend(0x3ffffffff, 64)) == 17179869183); + assert(signed(zero_extend(0x4, 64)) == 4); + assert(signed(zero_extend(0x40, 64)) == 64); + assert(signed(zero_extend(0x400, 64)) == 1024); + assert(signed(zero_extend(0x4000, 64)) == 16384); + assert(signed(zero_extend(0x400000000, 64)) == 17179869184); + assert(signed(zero_extend(0x41, 64)) == 65); + assert(signed(zero_extend(0x42, 64)) == 66); + assert(signed(zero_extend(0x43, 64)) == 67); + assert(signed(zero_extend(0x44, 64)) == 68); + assert(signed(zero_extend(0x45, 64)) == 69); + assert(signed(zero_extend(0x46, 64)) == 70); + assert(signed(zero_extend(0x47, 64)) == 71); + assert(signed(zero_extend(0x48, 64)) == 72); + assert(signed(zero_extend(0x49, 64)) == 73); + assert(signed(zero_extend(0x4a, 64)) == 74); + assert(signed(zero_extend(0x4b, 64)) == 75); + assert(signed(zero_extend(0x4c, 64)) == 76); + assert(signed(zero_extend(0x4c000, 64)) == 311296); + assert(signed(zero_extend(0x4c800, 64)) == 313344); + assert(signed(zero_extend(0x4d, 64)) == 77); + assert(signed(zero_extend(0x4e, 64)) == 78); + assert(signed(zero_extend(0x4f, 64)) == 79); + assert(signed(zero_extend(0x5, 64)) == 5); + assert(signed(zero_extend(0x50, 64)) == 80); + assert(signed(zero_extend(0x51, 64)) == 81); + assert(signed(zero_extend(0x52, 64)) == 82); + assert(signed(zero_extend(0x53, 64)) == 83); + assert(signed(zero_extend(0x530, 64)) == 1328); + assert(signed(zero_extend(0x54, 64)) == 84); + assert(signed(zero_extend(0x54000, 64)) == 344064); + assert(signed(zero_extend(0x55, 64)) == 85); + assert(signed(zero_extend(0x56, 64)) == 86); + assert(signed(zero_extend(0x57, 64)) == 87); + assert(signed(zero_extend(0x58, 64)) == 88); + assert(signed(zero_extend(0x58000, 64)) == 360448); + assert(signed(zero_extend(0x59, 64)) == 89); + assert(signed(zero_extend(0x5a, 64)) == 90); + assert(signed(zero_extend(0x5a5a, 64)) == 23130); + assert(signed(zero_extend(0x5a5a5a59, 64)) == 1515870809); + assert(signed(zero_extend(0x5a5a5a5a, 64)) == 1515870810); + assert(signed(zero_extend(0x5a5a5a5a5a5a5a59, 64)) == 6510615555426900569); + assert(signed(zero_extend(0x5a5a5a5a5a5a5a5a, 64)) == 6510615555426900570); + assert(signed(zero_extend(0x5b, 64)) == 91); + assert(signed(zero_extend(0x5c, 64)) == 92); + assert(signed(zero_extend(0x5c000, 64)) == 376832); + assert(signed(zero_extend(0x5c040, 64)) == 376896); + assert(signed(zero_extend(0x5d, 64)) == 93); + assert(signed(zero_extend(0x5e, 64)) == 94); + assert(signed(zero_extend(0x5f, 64)) == 95); + assert(signed(zero_extend(0x6, 64)) == 6); + assert(signed(zero_extend(0x60, 64)) == 96); + assert(signed(zero_extend(0x61, 64)) == 97); + assert(signed(zero_extend(0x610, 64)) == 1552); + assert(signed(zero_extend(0x62, 64)) == 98); + assert(signed(zero_extend(0x620e000, 64)) == 102817792); + assert(signed(zero_extend(0x620e010, 64)) == 102817808); + assert(signed(zero_extend(0x6216000, 64)) == 102850560); + assert(signed(zero_extend(0x6216004, 64)) == 102850564); + assert(signed(zero_extend(0x6216008, 64)) == 102850568); + assert(signed(zero_extend(0x621600c, 64)) == 102850572); + assert(signed(zero_extend(0x6216030, 64)) == 102850608); + assert(signed(zero_extend(0x6216034, 64)) == 102850612); + assert(signed(zero_extend(0x6216038, 64)) == 102850616); + assert(signed(zero_extend(0x621603c, 64)) == 102850620); + assert(signed(zero_extend(0x6216040, 64)) == 102850624); + assert(signed(zero_extend(0x6216044, 64)) == 102850628); + assert(signed(zero_extend(0x6216048, 64)) == 102850632); + assert(signed(zero_extend(0x621604c, 64)) == 102850636); + assert(signed(zero_extend(0x6216054, 64)) == 102850644); + assert(signed(zero_extend(0x6216058, 64)) == 102850648); + assert(signed(zero_extend(0x6216064, 64)) == 102850660); + assert(signed(zero_extend(0x6216069, 64)) == 102850665); + assert(signed(zero_extend(0x62160aa, 64)) == 102850730); + assert(signed(zero_extend(0x63, 64)) == 99); + assert(signed(zero_extend(0x64, 64)) == 100); + assert(signed(zero_extend(0x65, 64)) == 101); + assert(signed(zero_extend(0x66, 64)) == 102); + assert(signed(zero_extend(0x67, 64)) == 103); + assert(signed(zero_extend(0x68, 64)) == 104); + assert(signed(zero_extend(0x69, 64)) == 105); + assert(signed(zero_extend(0x6a, 64)) == 106); + assert(signed(zero_extend(0x6b, 64)) == 107); + assert(signed(zero_extend(0x6b7c8d9f, 64)) == 1803324831); + assert(signed(zero_extend(0x6c, 64)) == 108); + assert(signed(zero_extend(0x6d, 64)) == 109); + assert(signed(zero_extend(0x6e, 64)) == 110); + assert(signed(zero_extend(0x6ede4cbc6ede4cbb, 64)) == 7988907161199463611); + assert(signed(zero_extend(0x6f, 64)) == 111); + assert(signed(zero_extend(0x6ffffffffffffffe, 64)) == 8070450532247928830); + assert(signed(zero_extend(0x6fffffffffffffff, 64)) == 8070450532247928831); + assert(signed(zero_extend(0x7, 64)) == 7); + assert(signed(zero_extend(0x70, 64)) == 112); + assert(signed(zero_extend(0x71, 64)) == 113); + assert(signed(zero_extend(0x72, 64)) == 114); + assert(signed(zero_extend(0x73, 64)) == 115); + assert(signed(zero_extend(0x74, 64)) == 116); + assert(signed(zero_extend(0x75, 64)) == 117); + assert(signed(zero_extend(0x76, 64)) == 118); + assert(signed(zero_extend(0x764c321, 64)) == 124044065); + assert(signed(zero_extend(0x77, 64)) == 119); + assert(signed(zero_extend(0x7765554377655542, 64)) == 8603376411415500098); + assert(signed(zero_extend(0x7766554477665542, 64)) == 8603657890687243586); + assert(signed(zero_extend(0x78, 64)) == 120); + assert(signed(zero_extend(0x789abcdef0123456, 64)) == 8690466096661279830); + assert(signed(zero_extend(0x79, 64)) == 121); + assert(signed(zero_extend(0x7a, 64)) == 122); + assert(signed(zero_extend(0x7b, 64)) == 123); + assert(signed(zero_extend(0x7c, 64)) == 124); + assert(signed(zero_extend(0x7d, 64)) == 125); + assert(signed(zero_extend(0x7e, 64)) == 126); + assert(signed(zero_extend(0x7f, 64)) == 127); + assert(signed(zero_extend(0x7ff, 64)) == 2047); + assert(signed(zero_extend(0x7ffc, 64)) == 32764); + assert(signed(zero_extend(0x7ffe, 64)) == 32766); + assert(signed(zero_extend(0x7fff, 64)) == 32767); + assert(signed(zero_extend(0x7fff7fff, 64)) == 2147450879); + assert(signed(zero_extend(0x7fff7fff7fff7ffd, 64)) == 9223231297218904061); + assert(signed(zero_extend(0x7fff7fff7fff7fff, 64)) == 9223231297218904063); + assert(signed(zero_extend(0x7fffffc, 64)) == 134217724); + assert(signed(zero_extend(0x7ffffffe, 64)) == 2147483646); + assert(signed(zero_extend(0x7fffffff, 64)) == 2147483647); + assert(signed(zero_extend(0x7fffffff00000000, 64)) == 9223372032559808512); + assert(signed(zero_extend(0x7fffffff00000001, 64)) == 9223372032559808513); + assert(signed(zero_extend(0x7fffffff7ffffffe, 64)) == 9223372034707292158); + assert(signed(zero_extend(0x7fffffff7fffffff, 64)) == 9223372034707292159); + assert(signed(zero_extend(0x7fffffff80000000, 64)) == 9223372034707292160); + assert(signed(zero_extend(0x7fffffff80000001, 64)) == 9223372034707292161); + assert(signed(zero_extend(0x7fffffffffff0000, 64)) == 9223372036854710272); + assert(signed(zero_extend(0x7fffffffffff0001, 64)) == 9223372036854710273); + assert(signed(zero_extend(0x7fffffffffff7ffe, 64)) == 9223372036854743038); + assert(signed(zero_extend(0x7fffffffffff7fff, 64)) == 9223372036854743039); + assert(signed(zero_extend(0x7fffffffffff8000, 64)) == 9223372036854743040); + assert(signed(zero_extend(0x7fffffffffff8001, 64)) == 9223372036854743041); + assert(signed(zero_extend(0x7ffffffffffffffc, 64)) == 9223372036854775804); + assert(signed(zero_extend(0x7ffffffffffffffd, 64)) == 9223372036854775805); + assert(signed(zero_extend(0x7ffffffffffffffe, 64)) == 9223372036854775806); + assert(signed(zero_extend(0x7fffffffffffffff, 64)) == 9223372036854775807); + assert(signed(zero_extend(0x8, 64)) == 8); + assert(signed(zero_extend(0x80, 64)) == 128); + assert(signed(zero_extend(0x800, 64)) == 2048); + assert(signed(zero_extend(0x8000, 64)) == 32768); + assert(signed(zero_extend(0x80000000, 64)) == 2147483648); + assert(signed(zero_extend(0x8000000000000000, 64)) == -9223372036854775808); + assert(signed(zero_extend(0x8000000000000001, 64)) == -9223372036854775807); + assert(signed(zero_extend(0x8000000000000002, 64)) == -9223372036854775806); + assert(signed(zero_extend(0x8000000000000003, 64)) == -9223372036854775805); + assert(signed(zero_extend(0x8000000000007ffe, 64)) == -9223372036854743042); + assert(signed(zero_extend(0x8000000000007fff, 64)) == -9223372036854743041); + assert(signed(zero_extend(0x8000000000008000, 64)) == -9223372036854743040); + assert(signed(zero_extend(0x8000000000008001, 64)) == -9223372036854743039); + assert(signed(zero_extend(0x800000000000fffe, 64)) == -9223372036854710274); + assert(signed(zero_extend(0x800000000000ffff, 64)) == -9223372036854710273); + assert(signed(zero_extend(0x800000007ffffffe, 64)) == -9223372034707292162); + assert(signed(zero_extend(0x800000007fffffff, 64)) == -9223372034707292161); + assert(signed(zero_extend(0x8000000080000000, 64)) == -9223372034707292160); + assert(signed(zero_extend(0x8000000080000001, 64)) == -9223372034707292159); + assert(signed(zero_extend(0x80000000fffffffe, 64)) == -9223372032559808514); + assert(signed(zero_extend(0x80000000ffffffff, 64)) == -9223372032559808513); + assert(signed(zero_extend(0x80000001, 64)) == 2147483649); + assert(signed(zero_extend(0x80000002, 64)) == 2147483650); + assert(signed(zero_extend(0x80000003, 64)) == 2147483651); + assert(signed(zero_extend(0x80008000, 64)) == 2147516416); + assert(signed(zero_extend(0x8000800080008000, 64)) == -9223231297218904064); + assert(signed(zero_extend(0x8000800080008002, 64)) == -9223231297218904062); + assert(signed(zero_extend(0x8001, 64)) == 32769); + assert(signed(zero_extend(0x80010003, 64)) == 2147549187); + assert(signed(zero_extend(0x8002, 64)) == 32770); + assert(signed(zero_extend(0x8003, 64)) == 32771); + assert(signed(zero_extend(0x8004, 64)) == 32772); + assert(signed(zero_extend(0x8008, 64)) == 32776); + assert(signed(zero_extend(0x800c, 64)) == 32780); + assert(signed(zero_extend(0x8030, 64)) == 32816); + assert(signed(zero_extend(0x8034, 64)) == 32820); + assert(signed(zero_extend(0x8038, 64)) == 32824); + assert(signed(zero_extend(0x803c, 64)) == 32828); + assert(signed(zero_extend(0x8040, 64)) == 32832); + assert(signed(zero_extend(0x8054, 64)) == 32852); + assert(signed(zero_extend(0x8058, 64)) == 32856); + assert(signed(zero_extend(0x8064, 64)) == 32868); + assert(signed(zero_extend(0x8069, 64)) == 32873); + assert(signed(zero_extend(0x80aa, 64)) == 32938); + assert(signed(zero_extend(0x81, 64)) == 129); + assert(signed(zero_extend(0x82, 64)) == 130); + assert(signed(zero_extend(0x83, 64)) == 131); + assert(signed(zero_extend(0x84, 64)) == 132); + assert(signed(zero_extend(0x84000, 64)) == 540672); + assert(signed(zero_extend(0x84800, 64)) == 542720); + assert(signed(zero_extend(0x85, 64)) == 133); + assert(signed(zero_extend(0x86, 64)) == 134); + assert(signed(zero_extend(0x87, 64)) == 135); + assert(signed(zero_extend(0x87654321, 64)) == 2271560481); + assert(signed(zero_extend(0x876543210fedcba9, 64)) == -8690466096661279831); + assert(signed(zero_extend(0x88, 64)) == 136); + assert(signed(zero_extend(0x8899aabb, 64)) == 2291772091); + assert(signed(zero_extend(0x8899aabb8899aabb, 64)) == -8603657890687243589); + assert(signed(zero_extend(0x8899aabb8899aabd, 64)) == -8603657890687243587); + assert(signed(zero_extend(0x889aaabc889aaabd, 64)) == -8603376411415500099); + assert(signed(zero_extend(0x89, 64)) == 137); + assert(signed(zero_extend(0x89ab, 64)) == 35243); + assert(signed(zero_extend(0x8a, 64)) == 138); + assert(signed(zero_extend(0x8b, 64)) == 139); + assert(signed(zero_extend(0x8c, 64)) == 140); + assert(signed(zero_extend(0x8d, 64)) == 141); + assert(signed(zero_extend(0x8fffffffffffffff, 64)) == -8070450532247928833); + assert(signed(zero_extend(0x9, 64)) == 9); + assert(signed(zero_extend(0x90, 64)) == 144); + assert(signed(zero_extend(0x90000000, 64)) == 2415919104); + assert(signed(zero_extend(0x9000000000000000, 64)) == -8070450532247928832); + assert(signed(zero_extend(0x9000000000000001, 64)) == -8070450532247928831); + assert(signed(zero_extend(0x90000001, 64)) == 2415919105); + assert(signed(zero_extend(0x9121b3439121b344, 64)) == -7988907161199463612); + assert(signed(zero_extend(0x9200040, 64)) == 153092160); + assert(signed(zero_extend(0x920005c, 64)) == 153092188); + assert(signed(zero_extend(0x9200060, 64)) == 153092192); + assert(signed(zero_extend(0x9234567a, 64)) == 2452903546); + assert(signed(zero_extend(0x9be0, 64)) == 39904); + assert(signed(zero_extend(0xa, 64)) == 10); + assert(signed(zero_extend(0xa0, 64)) == 160); + assert(signed(zero_extend(0xa000, 64)) == 40960); + assert(signed(zero_extend(0xa0000000, 64)) == 2684354560); + assert(signed(zero_extend(0xa200060, 64)) == 169869408); + assert(signed(zero_extend(0xa20007c, 64)) == 169869436); + assert(signed(zero_extend(0xa200080, 64)) == 169869440); + assert(signed(zero_extend(0xa50006c, 64)) == 173015148); + assert(signed(zero_extend(0xa500070, 64)) == 173015152); + assert(signed(zero_extend(0xa500074, 64)) == 173015156); + assert(signed(zero_extend(0xa5a5, 64)) == 42405); + assert(signed(zero_extend(0xa5a5a5a5, 64)) == 2779096485); + assert(signed(zero_extend(0xa5a5a5a5a5a5a5a5, 64)) == -6510615555426900571); + assert(signed(zero_extend(0xa8, 64)) == 168); + assert(signed(zero_extend(0xb, 64)) == 11); + assert(signed(zero_extend(0xb0, 64)) == 176); + assert(signed(zero_extend(0xb8, 64)) == 184); + assert(signed(zero_extend(0xc, 64)) == 12); + assert(signed(zero_extend(0xc0, 64)) == 192); + assert(signed(zero_extend(0xc00fefff, 64)) == 3222269951); + assert(signed(zero_extend(0xd, 64)) == 13); + assert(signed(zero_extend(0xd0, 64)) == 208); + assert(signed(zero_extend(0xdddddddddddddddc, 64)) == -2459565876494606884); + assert(signed(zero_extend(0xe, 64)) == 14); + assert(signed(zero_extend(0xe0, 64)) == 224); + assert(signed(zero_extend(0xedcba9876543210e, 64)) == -1311768467463790322); + assert(signed(zero_extend(0xf, 64)) == 15); + assert(signed(zero_extend(0xf00, 64)) == 3840); + assert(signed(zero_extend(0xf000000000000000, 64)) == -1152921504606846976); + assert(signed(zero_extend(0xff, 64)) == 255); + assert(signed(zero_extend(0xfffe, 64)) == 65534); + assert(signed(zero_extend(0xffff, 64)) == 65535); + assert(signed(zero_extend(0xffff8000, 64)) == 4294934528); + assert(signed(zero_extend(0xffffc, 64)) == 1048572); + assert(signed(zero_extend(0xffffe000ffffe000, 64)) == -35180077129728); + assert(signed(zero_extend(0xfffffff, 64)) == 268435455); + assert(signed(zero_extend(0xfffffffe, 64)) == 4294967294); + assert(signed(zero_extend(0xfffffffe77665544, 64)) == -6586739388); + assert(signed(zero_extend(0xfffffffe7fffffff, 64)) == -6442450945); + assert(signed(zero_extend(0xfffffffe80000000, 64)) == -6442450944); + assert(signed(zero_extend(0xfffffffef89b3cde, 64)) == -4419011362); + assert(signed(zero_extend(0xfffffffefffffffe, 64)) == -4294967298); + assert(signed(zero_extend(0xfffffffeffffffff, 64)) == -4294967297); + assert(signed(zero_extend(0xffffffff, 64)) == 4294967295); + assert(signed(zero_extend(0xffffffff00000000, 64)) == -4294967296); + assert(signed(zero_extend(0xffffffff00000001, 64)) == -4294967295); + assert(signed(zero_extend(0xffffffff00007fff, 64)) == -4294934529); + assert(signed(zero_extend(0xffffffff3ff01000, 64)) == -3222269952); + assert(signed(zero_extend(0xffffffff5fffffff, 64)) == -2684354561); + assert(signed(zero_extend(0xffffffff6dcba985, 64)) == -2452903547); + assert(signed(zero_extend(0xffffffff6ffffffe, 64)) == -2415919106); + assert(signed(zero_extend(0xffffffff6fffffff, 64)) == -2415919105); + assert(signed(zero_extend(0xffffffff77665544, 64)) == -2291772092); + assert(signed(zero_extend(0xffffffff7ffefffc, 64)) == -2147549188); + assert(signed(zero_extend(0xffffffff7ffffffc, 64)) == -2147483652); + assert(signed(zero_extend(0xffffffff7ffffffd, 64)) == -2147483651); + assert(signed(zero_extend(0xffffffff7ffffffe, 64)) == -2147483650); + assert(signed(zero_extend(0xffffffff7fffffff, 64)) == -2147483649); + assert(signed(zero_extend(0xffffffff80000000, 64)) == -2147483648); + assert(signed(zero_extend(0xffffffff80000001, 64)) == -2147483647); + assert(signed(zero_extend(0xffffffff94837260, 64)) == -1803324832); + assert(signed(zero_extend(0xffffffffdfffffff, 64)) == -536870913); + assert(signed(zero_extend(0xffffffffed9fff7f, 64)) == -308281473); + assert(signed(zero_extend(0xffffffffedafff8f, 64)) == -307232881); + assert(signed(zero_extend(0xfffffffff0000000, 64)) == -268435456); + assert(signed(zero_extend(0xfffffffff7ffffff, 64)) == -134217729); + assert(signed(zero_extend(0xfffffffff89b3cde, 64)) == -124044066); + assert(signed(zero_extend(0xfffffffffcefffff, 64)) == -51380225); + assert(signed(zero_extend(0xfffffffffcf0ffff, 64)) == -51314689); + assert(signed(zero_extend(0xfffffffffcf1ffff, 64)) == -51249153); + assert(signed(zero_extend(0xfffffffffcf84000, 64)) == -50839552); + assert(signed(zero_extend(0xfffffffffcf94000, 64)) == -50774016); + assert(signed(zero_extend(0xfffffffffcfa4000, 64)) == -50708480); + assert(signed(zero_extend(0xfffffffffd0affff, 64)) == -49610753); + assert(signed(zero_extend(0xfffffffffd0bffff, 64)) == -49545217); + assert(signed(zero_extend(0xfffffffffd0fc000, 64)) == -49299456); + assert(signed(zero_extend(0xfffffffffd10c000, 64)) == -49233920); + assert(signed(zero_extend(0xfffffffffd10ffff, 64)) == -49217537); + assert(signed(zero_extend(0xfffffffffd11ffff, 64)) == -49152001); + assert(signed(zero_extend(0xfffffffffd130000, 64)) == -49086464); + assert(signed(zero_extend(0xfffffffffd13ffff, 64)) == -49020929); + assert(signed(zero_extend(0xfffffffffd140000, 64)) == -49020928); + assert(signed(zero_extend(0xfffffffffd14ffff, 64)) == -48955393); + assert(signed(zero_extend(0xfffffffffd170000, 64)) == -48824320); + assert(signed(zero_extend(0xfffffffffd18c000, 64)) == -48709632); + assert(signed(zero_extend(0xfffffffffebffe6b, 64)) == -20971925); + assert(signed(zero_extend(0xfffffffffebffefb, 64)) == -20971781); + assert(signed(zero_extend(0xfffffffffebfff3b, 64)) == -20971717); + assert(signed(zero_extend(0xffffffffffefffff, 64)) == -1048577); + assert(signed(zero_extend(0xfffffffffff, 64)) == 17592186044415); + assert(signed(zero_extend(0xfffffffffff70000, 64)) == -589824); + assert(signed(zero_extend(0xfffffffffff80000, 64)) == -524288); + assert(signed(zero_extend(0xfffffffffffc0000, 64)) == -262144); + assert(signed(zero_extend(0xfffffffffffd0000, 64)) == -196608); + assert(signed(zero_extend(0xfffffffffffdffff, 64)) == -131073); + assert(signed(zero_extend(0xfffffffffffe0000, 64)) == -131072); + assert(signed(zero_extend(0xfffffffffffe7ffe, 64)) == -98306); + assert(signed(zero_extend(0xfffffffffffe7fff, 64)) == -98305); + assert(signed(zero_extend(0xfffffffffffe8000, 64)) == -98304); + assert(signed(zero_extend(0xfffffffffffe8001, 64)) == -98303); + assert(signed(zero_extend(0xfffffffffffefffe, 64)) == -65538); + assert(signed(zero_extend(0xfffffffffffeffff, 64)) == -65537); + assert(signed(zero_extend(0xffffffffffff0000, 64)) == -65536); + assert(signed(zero_extend(0xffffffffffff0001, 64)) == -65535); + assert(signed(zero_extend(0xffffffffffff641f, 64)) == -39905); + assert(signed(zero_extend(0xffffffffffff7ffc, 64)) == -32772); + assert(signed(zero_extend(0xffffffffffff7ffd, 64)) == -32771); + assert(signed(zero_extend(0xffffffffffff7ffe, 64)) == -32770); + assert(signed(zero_extend(0xffffffffffff7fff, 64)) == -32769); + assert(signed(zero_extend(0xffffffffffff8000, 64)) == -32768); + assert(signed(zero_extend(0xffffffffffff8001, 64)) == -32767); + assert(signed(zero_extend(0xffffffffffffbeff, 64)) == -16641); + assert(signed(zero_extend(0xffffffffffffbf40, 64)) == -16576); + assert(signed(zero_extend(0xffffffffffffbf41, 64)) == -16575); + assert(signed(zero_extend(0xffffffffffffbfff, 64)) == -16385); + assert(signed(zero_extend(0xffffffffffffc22c, 64)) == -15828); + assert(signed(zero_extend(0xffffffffffffc24c, 64)) == -15796); + assert(signed(zero_extend(0xffffffffffffd220, 64)) == -11744); + assert(signed(zero_extend(0xffffffffffffd23c, 64)) == -11716); + assert(signed(zero_extend(0xffffffffffffe220, 64)) == -7648); + assert(signed(zero_extend(0xffffffffffffe23c, 64)) == -7620); + assert(signed(zero_extend(0xffffffffffffefff, 64)) == -4097); + assert(signed(zero_extend(0xfffffffffffffeef, 64)) == -273); + assert(signed(zero_extend(0xfffffffffffffeff, 64)) == -257); + assert(signed(zero_extend(0xffffffffffffff1f, 64)) == -225); + assert(signed(zero_extend(0xffffffffffffff2f, 64)) == -209); + assert(signed(zero_extend(0xffffffffffffff4f, 64)) == -177); + assert(signed(zero_extend(0xffffffffffffff6f, 64)) == -145); + assert(signed(zero_extend(0xffffffffffffff80, 64)) == -128); + assert(signed(zero_extend(0xffffffffffffff8f, 64)) == -113); + assert(signed(zero_extend(0xffffffffffffff9f, 64)) == -97); + assert(signed(zero_extend(0xffffffffffffffa0, 64)) == -96); + assert(signed(zero_extend(0xffffffffffffffaf, 64)) == -81); + assert(signed(zero_extend(0xffffffffffffffbf, 64)) == -65); + assert(signed(zero_extend(0xffffffffffffffc2, 64)) == -62); + assert(signed(zero_extend(0xffffffffffffffc4, 64)) == -60); + assert(signed(zero_extend(0xffffffffffffffc6, 64)) == -58); + assert(signed(zero_extend(0xffffffffffffffc8, 64)) == -56); + assert(signed(zero_extend(0xffffffffffffffca, 64)) == -54); + assert(signed(zero_extend(0xffffffffffffffcc, 64)) == -52); + assert(signed(zero_extend(0xffffffffffffffce, 64)) == -50); + assert(signed(zero_extend(0xffffffffffffffcf, 64)) == -49); + assert(signed(zero_extend(0xffffffffffffffd0, 64)) == -48); + assert(signed(zero_extend(0xffffffffffffffd2, 64)) == -46); + assert(signed(zero_extend(0xffffffffffffffd4, 64)) == -44); + assert(signed(zero_extend(0xffffffffffffffd6, 64)) == -42); + assert(signed(zero_extend(0xffffffffffffffd8, 64)) == -40); + assert(signed(zero_extend(0xffffffffffffffda, 64)) == -38); + assert(signed(zero_extend(0xffffffffffffffdb, 64)) == -37); + assert(signed(zero_extend(0xffffffffffffffdc, 64)) == -36); + assert(signed(zero_extend(0xffffffffffffffde, 64)) == -34); + assert(signed(zero_extend(0xffffffffffffffdf, 64)) == -33); + assert(signed(zero_extend(0xffffffffffffffe0, 64)) == -32); + assert(signed(zero_extend(0xffffffffffffffe2, 64)) == -30); + assert(signed(zero_extend(0xffffffffffffffe4, 64)) == -28); + assert(signed(zero_extend(0xffffffffffffffe6, 64)) == -26); + assert(signed(zero_extend(0xffffffffffffffe7, 64)) == -25); + assert(signed(zero_extend(0xffffffffffffffe8, 64)) == -24); + assert(signed(zero_extend(0xffffffffffffffea, 64)) == -22); + assert(signed(zero_extend(0xffffffffffffffec, 64)) == -20); + assert(signed(zero_extend(0xffffffffffffffee, 64)) == -18); + assert(signed(zero_extend(0xffffffffffffffef, 64)) == -17); + assert(signed(zero_extend(0xfffffffffffffff, 64)) == 1152921504606846975); + assert(signed(zero_extend(0xfffffffffffffff0, 64)) == -16); + assert(signed(zero_extend(0xfffffffffffffff1, 64)) == -15); + assert(signed(zero_extend(0xfffffffffffffff2, 64)) == -14); + assert(signed(zero_extend(0xfffffffffffffff4, 64)) == -12); + assert(signed(zero_extend(0xfffffffffffffff6, 64)) == -10); + assert(signed(zero_extend(0xfffffffffffffff7, 64)) == -9); + assert(signed(zero_extend(0xfffffffffffffff8, 64)) == -8); + assert(signed(zero_extend(0xfffffffffffffffa, 64)) == -6); + assert(signed(zero_extend(0xfffffffffffffffb, 64)) == -5); + assert(signed(zero_extend(0xfffffffffffffffc, 64)) == -4); + assert(signed(zero_extend(0xfffffffffffffffd, 64)) == -3); + assert(signed(zero_extend(0xfffffffffffffffe, 64)) == -2); + assert(signed(zero_extend(0xffffffffffffffff, 64)) == -1); +}
\ No newline at end of file |
