garyaj Anyone else have a Parallella board and wanting to port moarvm/P6 to it? 00:07
00:07 colomon joined
garyaj rakudobrew installs the ARM version on the companion Zync chip. The trouble is getting it to use the Epiphany 16-core coprocessor. 00:08
s/Zync/Zynq/ 00:09
00:46 _sri_ joined 03:11 _sri_ joined 04:32 avuserow joined 04:46 ggoebel11111115 joined 05:02 avuserow joined 05:24 avuserow joined 06:24 FROGGS joined 07:00 zakharyas joined 08:32 kjs_ joined 09:59 kjs_ joined 11:27 garyaj left 11:33 brrt joined
brrt \o 11:33
timotimo: invokewithcapture is actually really simple 11:34
timotimo Oh cool 11:46
I did not even bother to look at what it takes to implement it 11:47
how do you feel about a vastly simplified register allocation scheme that only removed load instructions if the data we want is still in a register? 11:48
seems like a waste of time?
I've been told emitting loads of redundant loads and stores is pretty much worse than Hitler 11:50
FROGGS O.o 11:51
tadzik :D
timotimo best car you hit the proper caches, average case you could just as well insert fence ops everywhere 11:53
OSLT
brrt i feel that would be a good idea, yes 12:03
about the relative badness compared to well-known violent dictators, i'm not sure 12:04
but, are you talking about the JIT right now?
timotimo yes 13:28
well, eliminating set ops would also help if we do it in spesh 13:29
but even if we have no redundant set operations, we will still be loading and storing values to ram all the time 13:30
I wonder if there is any value at all to making register allocation on the mvm frame level align values to cache lines oslt 13:31
as in have the parameters to an op in a different line than the result
I have no idea what I'm talking about
brrt well, that's good, because neither have i :-) 13:34
basically, we run into 'we-can't-do-register-selection' argument still
register selection is a prerequisite for register allocation in any fashin
fashion
so
but otherwise such a scheme as you mentioned is really simple
textbook simple in fact 13:35
:-)
timotimo did i explain that scheme yet? just kicking out the loads after stores and just emit a register-register mov instead of a heap-register mov? 13:38
brrt you don't even need to do a register-register mov 13:40
i mean, if it is in one register, and you're going to move it to another register, why move it at all
just use the old register instead of the new one
13:41 JimmyZ joined
timotimo we can't do that with dynasm :) 13:42
not yet
that's why i'm suggesting it could be a waste of time
brrt well.... it should be relatively simple to add to dynasm 13:45
'relatively'
13:55 kjs_ joined
timotimo what are we waiting for? ;) 13:57
moritz tuits? motivation? inspiration? 14:03
timotimo of course :) 14:07
brrt tuits 14:09
i'm rather busy with a java project, of all things
a pretty cool java project, i might add, but still
timotimo that's fair 14:14
brrt and the next thing is, even if we have that, it'll be a pretty big rework of the way the JIT works until we can use it 14:15
that's ok, but it requires yet more tuits
JimmyZ still wonders how luajit does it :P 14:16
brrt luajit ahas it's own highly specialised bytecode emitter 14:23
luajit doesn't actually use dynasm to generate the bytecode
JimmyZ after luajit 2.0? 14:25
brrt yeah i'm referring to luajit-2.0
JimmyZ yeah, I know luajit 2.0 is written by hardcode asm 14:27
and using dynasm compile it
jnthn waves from Malaysia, land of good food to eat and big lightning storms to get caught out in. :) 14:28
JimmyZ jnthn: I will go to Malaysia , will next month :P 14:29
s/,will/, maybe/
jnthn JimmyZ: Enjoy ;)
brrt \o jnthn
jnthn I'm just here for a few days. I've already found more restaurants I want to eat at than I have meals to find... :) 14:30
[Coke] good problem to have!
jnthn Yes!
JimmyZ Are you in Kuala Lumpur?
jnthn Aye.
timotimo o/ jnthn 14:31
jnthn o/ timo 14:32
14:33 brother joined
timotimo jnthn: imagine this: remember how my game has an acceptable framerate? 14:33
brrt what
timotimo turns out i've been using software rendering the whole time
brrt :-D
you /did/ give me work for the JIT though 14:34
which is something i'm happy about
timotimo a bit :)
so not only did i get to a passable framerate with perl6, but it also had the extra penalty of rendering every frame in software
jnthn Oh...so when you use hardware acceleration your framerate pressure goes away? :) 14:38
timotimo er ... 14:39
it's not as easy as that
jnthn Dang :) 14:40
timotimo i'm going to have to switch from "GTK and using Cairo to draw the whole frame" to "Cairo renders sprite sheets and SDL2 composits the scene onto the screen",
at least that's what i've decided to do
it's surprisingly hard to get an opengl-backed cairo to work if you want to not use XGL, WGL, CGL, EGL, ... 14:41
so instead of trying to have a hardware accelerated cairo, i'm going to pre-render stuff in software and just move the already-pretty sprites over the screen with supersonic speeds using OpenGL
jnthn Neat. Have fun! ;) 14:43
hoelzro moarning #moarvm 14:46
brrt \o hoelzro 14:47
timotimo: what you can do simply is to make so-called 'register descriptors' which describe the contents of the cpu registers and 'address descriptors' which describe the addresses of any given value at any given time in the execution 14:48
timotimo that's probably what i've imagnied 14:58
brrt :-) 14:59
anyway, that's doable
timotimo so that part may be salvagable for when we actually have register selection 15:00
brrt it does complicate a lot of things, though
timotimo well, yeah 15:01
brrt the jit graph has to be developed as an actual (directed acyclic) graph, rather than a linked list (as it is now)
timotimo oh damn :(
you're making this sound less and less interesting :P 15:02
don't make it sound like actual work!
brrt and anyway, you'll still - currently - spend a lot of time in MVM_frame_inc_ref and MVM_frame_decr_ref
hey, it's fun work
:-)
but yeah, i'd admit i'd feel a bit better if i had another bout of gsoc-style tuits for it
timotimo .o( we could guard against "are multiple threads running" and deopt away from a fence-less/atomic-less inc_ref/dec_ref 15:03
brrt that won't help that much
basically 'frame allocation is expensive in moarvm' is one of our greater performance-wise problems
timotimo hmm
hoelzro is there a good way to inspect a P6Opaque from within MoarVM?
brrt or perhaps not allocation, but jumping-between-frames is
hoelzro - i don't think there is an easy way, no 15:04
hoelzro =(
JimmyZ
.oO(GCI...)
brrt afk. will try to look at invokewithcapture tonight, but i'm not promising anything 15:30
16:03 kjs_ joined 16:12 odc joined 17:07 vendethiel joined 18:00 Ven joined 18:22 FROGGS joined 18:36 kjs_ joined 19:07 kjs_ joined 19:30 brrt joined 20:10 kjs_ joined
brrt energy levels are not sufficient for great implementations today 20:11
20:15 Ven joined 20:24 brrt left
dalek arVM: b375d61 | (Bart Wiegmans)++ | src/jit/emit_x64.dasc:
Panic rather than throw for JIT errors

It makes no sense to throw an exception, they might be caught.
20:29
21:09 kjs_ joined 21:37 kjs_ joined 22:03 kjs_ joined 22:06 colomon joined 22:36 camelia joined 22:48 colomon joined