Differences From
Artifact [60110bc615]:
1 1 -- vim: ft=terra
2 2 local m = {
3 - shorthand = {maxlen = 14}
3 + shorthand = {maxlen = 14};
4 + ll = {
5 + ctpop_u8 = terralib.intrinsic('llvm.ctpop.i8', uint8 -> uint8);
6 + };
4 7 }
5 8
6 9 local pstring = lib.mem.ptr(int8)
7 10
8 11 -- swap in place -- faster on little endian
9 12 m.netswap_ip = macro(function(ty, src, dest)
10 13 if ty:astype().type ~= 'integer' then error('bad type') end
................................................................................
52 55 elseif ch == 0x3a then ch = 37
53 56 elseif ch >= 0x61 and ch <= 0x7a then
54 57 ch = 38 + (ch - 0x61)
55 58 else return 0, false end
56 59
57 60 return ch, true
58 61 end
62 +
63 +terra m.pow(n: intptr, fac: intptr): intptr
64 + var o = n
65 + for i=0,fac do n = n * o end
66 + return n
67 +end
59 68
60 69 terra m.shorthand.gen(val: uint64, dest: rawstring): ptrdiff
61 70 var lst = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz"
62 71 var buf: int8[m.shorthand.maxlen]
63 72 var ptr = [&int8](buf)
64 73 while val ~= 0 do
65 74 var v = val % 64