04:04
jcea has quit [Quit: jcea]
04:04
jcea1 has joined #pypy
04:07
jcea1 is now known as jcea
05:32
jcea has quit [Ping timeout: 252 seconds]
07:19
dmalcolm_ has quit [Read error: Connection reset by peer]
09:35
dmalcolm has joined #pypy
11:45
vext01 has joined #pypy
11:46
<
vext01 >
Hey, I'm studying the pypy codegen backends. It looks like a forward traversal of the IR ops, with register allocation interleaved, is that correct?
11:46
<
vext01 >
you don't do reverse register allocation?
13:00
itamarst has quit [Quit: Connection closed for inactivity]
13:41
<
cfbolz >
vext01: we do one reverse pass for lifetime analysis
13:42
<
cfbolz >
but indeed no backwards register allocation
13:48
<
vext01 >
cfbolz: thanks
13:52
<
vext01 >
also, hello :)
13:53
<
cfbolz >
vext01: honestly our backends aren't very good
13:54
<
vext01 >
good enough, by the look of it
13:54
<
vext01 >
we are weighing up adding "reverse assembly" support to dynasm-rs so that we can visit our IR ops in reverse and do better regalloc
13:57
<
vext01 >
i noticed some kind of register allocation "hinting" system
13:57
<
cfbolz >
yeah, a little bit. but not very smart, all in all
13:58
<
vext01 >
does this just note fixed registers required in the future for stuff like ABI constraints?
13:58
<
vext01 >
"try and store it here if you can, because we will need it there later"?
14:03
jcea has joined #pypy
14:05
<
cfbolz >
vext01: yeah, exactly
14:06
<
cfbolz >
also stuff like 'try not to put these to variables in the same registers because their lifetimes overlap'
14:08
<
vext01 >
thanks, this is pure gold in terms of saving us some implementation effort!
14:53
jcea has quit [Ping timeout: 272 seconds]
18:46
Dejan has quit [Quit: Leaving]
20:26
_val__ has quit [Quit: leaving]