Skip to content

Instantly share code, notes, and snippets.

@brandonbloom
Created February 17, 2019 01:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brandonbloom/53c87366ecfac1d1666c80c005fbbe3a to your computer and use it in GitHub Desktop.
Save brandonbloom/53c87366ecfac1d1666c80c005fbbe3a to your computer and use it in GitHub Desktop.
local C = terralib.includecstring [[
#include <stdio.h>
]]
function makeAdder(x)
print("makeAdder(" .. x .. ")")
return terra(y : int)
return x + y
end
end
local jitAdder = terralib.cast({int} -> {int} -> int, terralib.memoize(function(x)
return terralib.cast({int} -> int, makeAdder(x):compile())
end))
terra main()
for i = 0, 5 do
var f = jitAdder(i)
C.printf("%d\n", f(100))
end
for i = 0, 10 do
var f = jitAdder(i)
C.printf("%d\n", f(200))
end
end
main()
makeAdder(0)
100
makeAdder(1)
101
makeAdder(2)
102
makeAdder(3)
103
makeAdder(4)
104
200
201
202
203
204
makeAdder(5)
205
makeAdder(6)
206
makeAdder(7)
207
makeAdder(8)
208
makeAdder(9)
209
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment