Differences From
Artifact [12858be43d]:
1 1 -- vim: ft=terra
2 2 local m = {
3 3 shorthand = {maxlen = 14};
4 - ll = {
5 - ctpop_u8 = terralib.intrinsic('llvm.ctpop.i8', uint8 -> uint8);
6 - };
7 4 }
5 +m.shorthand.t = int8[m.shorthand.maxlen]
8 6
9 7 local pstring = lib.mem.ptr(int8)
10 8
11 9 -- swap in place -- faster on little endian
12 10 m.netswap_ip = macro(function(ty, src, dest)
13 11 if ty:astype().type ~= 'integer' then error('bad type') end
14 12 local bytes = ty:astype().bytes
................................................................................
64 62 var o = n
65 63 for i=0,fac do n = n * o end
66 64 return n
67 65 end
68 66
69 67 terra m.shorthand.gen(val: uint64, dest: rawstring): ptrdiff
70 68 var lst = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz"
71 - var buf: int8[m.shorthand.maxlen]
69 + var buf: m.shorthand.t
72 70 var ptr = [&int8](buf)
73 71 while val ~= 0 do
74 72 var v = val % 64
75 73 @ptr = lst[v]
76 74 ptr = ptr + 1
77 75 val = val / 64
78 76 end