dalek | arVM: 8620dbf | timotimo++ | src/spesh/optimize.c: optimize_can_op is fixed and fully enabled now |
00:01 | |
00:33
lizmat joined
01:21
pyrimidine joined
06:07
FROGGS joined
06:55
zakharyas joined
08:10
pyrimidine joined
08:14
moritz joined
08:31
Ven joined
09:08
brrt joined
|
|||
brrt | \o | 09:11 | |
FROGGS | hi brrt | 09:12 | |
nwc10 | o/ | ||
brrt | hi FROGGS :-) | ||
and nwc10 | 09:13 | ||
masak | hi brrt | 09:30 | |
jnthn | o/ brrt | ||
dynasm hacking today? :) | |||
brrt | yes, trying at least | ||
i think i know how to do the hard case too | 09:31 | ||
masak | keep us posted! many of us are curious to hear how it's going :) | 09:32 | |
moritz seconds that | 09:33 | ||
brrt | i will do that, yes | 09:35 | |
masak re-reads news.perlfoundation.org/2015/04/per...ation.html | |||
brrt | do you want a short update on the IRC channel or a longer update on my blog :-) | 09:38 | |
long story very short, i need to know a lot more about x86 instruction encoding than i had expected | 09:44 | ||
masak | both :) | 09:45 | |
nwc10 | and a pony! | ||
masak | but do the one(s) that don't take too much time from being productive :) | 09:46 | |
FROGGS | pi@raspberrypi ~/dev $ git clone github.com/MoarVM/MoarVM.git # \o/ | ||
brrt | \o/ | 09:49 | |
well, blogging isnt unproductive, its documentation | |||
:-P | |||
bbiab | |||
10:35
brrt joined
10:43
rudi_s joined,
zakharyas joined
10:46
lizmat_ joined
|
|||
masak | blogging isn't documentation -- but I guess it's a good first step. | 10:46 | |
10:47
dalek joined
|
|||
brrt | yeah, you're right enough :-) | 10:48 | |
arnsholt | It's a first step, I suspect | 12:07 | |
brrt | nah, the first steps are my notebook scriblings] | 12:08 | |
arnsholt | Troo, troo | 12:09 | |
brrt | i have an unrelated puzzle to solve, by the way | 12:10 | |
or rather, a dillema | |||
i need to read a lot of papers | 12:11 | ||
reading papers on a computer screen is annoying | |||
printing papers is not very good for the environment | 12:12 | ||
buying a tablet to read papers on is also not very good of the environment | |||
jnthn | Printing on paper is still better for than the environment that producing a tablet :P | ||
*than | |||
brrt | is the environmental cost of printing papers ever going to outrun the cost of making that tablet | ||
yes, that's what i'm guessing too | |||
arnsholt | I've been wanting to write some slightly more substantial documentation on how to create a language with NQP, based on my experiences with Snake. More or less mal a propos | ||
jnthn | mal a propos = bad to propose ? :) | 12:13 | |
brrt | arnsholt: i know for a fact people are interested in that | ||
arnsholt | And reading on paper is still superior, IMO | ||
brrt | i think 'poorly suited to topic', but i've never heard of it | ||
arnsholt | jnthn: A propos, but a bit of a spurious association. That's how I use it, anyways =) | 12:14 | |
brrt | i cite: " Thus, a good compiler for a modern superscalar machine is an artful blend of theory, of practical knowledge, of engineering, and of experience" | 12:17 | |
arnsholt | brrt: Anyways, on the topic of reading papers, I'm 100% in favour of printing. I've been doing it shamelessly for the last four years | ||
brrt | :-) | ||
it just feels wasteful, i guess | 12:18 | ||
arnsholt | Yeah, I agree. It's just that reading on a computer is extremely annoying, if you want to pay proper attention | ||
For more superficial readings, it's not that big of a deal. But for really dense stuff (like academic papers), you really need to work much harder | 12:19 | ||
masak | arnsholt: I find it depends very much on the type of screen. | 12:20 | |
arnsholt: I read a fair bit on my iPad these days, using the Kindle app. | 12:21 | ||
arnsholt | Oh, neat! | ||
I don't have a tablet, so I haven't tried that | |||
masak | most of what I've learned about algebraic topology, I've learned on that screen :> | ||
arnsholt | I do have a Kindle, which is really nice for books, but not so great for PDFs | ||
brrt | i don't have a tablet and would buy one purely for the purpose of reading. i can't justify that on those grounds | 12:22 | |
tadzik | *wouldn't | ||
? | |||
brrt | i meant: if i would buy one, it'd be solely for the purpose of reading | ||
ironically, that means that if i'd become convinced of it's entertainment value then that would change the equation | 12:23 | ||
tadzik | ah | ||
timotimo | brrt: i think it'd be interesting to have a document somewhere that gives a rough step-by-step guide on how to port the moarvm jit to more architectures, perhaps using armel as an example? :) | 13:40 | |
brrt | hmm | ||
yes | |||
timotimo | if i vow to port the moarvm jit to arm, maybe TPF will sponsor a pyra for me :D | ||
brrt | it's not a bad idea | 13:41 | |
but | |||
dynasm for ARM doesn't have register addressing yet, at all | |||
timotimo | at all! | 13:42 | |
brrt | which means the expression JIT wouldn't work for ARM | ||
that means additional complexity if you'd start on it before the expression JIT was finalized | |||
... although, of course, that's not really what you mean | |||
it's a good idea, yes | 13:43 | ||
nwc10 | what does a dual core Cortex A15 get you that a quad core Cortex A7 doesn't? | ||
timotimo | well, you're about to build register addressing for x86; i bet a guide (more or less?) could fall out of that work :) | ||
brrt | hah | ||
well.... | |||
timotimo | nwc10: well 4x7 is a tiny bit less than 2x15 | ||
brrt | i'll blog about it, how about that | ||
:-) | 13:44 | ||
there are a few more difficulties i foresee, though | 13:48 | ||
timotimo | nwc10: is that the difference between a raspi2 and the pyra? | ||
brrt | basically, nearly all of ARM still uses 32 bit registers, and we use 64 bit registers | ||
timotimo | oh, i hadn't realized that | ||
nwc10 | timotimo: not the only one | ||
brrt | 64 bit values | ||
i mean | |||
timotimo | nwc10: well, of course; the pyra is a portable device with keyboard, screen and battery | 13:49 | |
nwc10 | but it's the most obvious one. In that, is there a proposed cost yet for a pyra? | ||
timotimo | i don't quite recall | ||
i expect "expensive*" | 13:50 | ||
(*when compared to other handheld devices, like a nintendo 3ds, or a smart phone) | |||
brrt | (we use 64 values, ARMv7 is 32 bit). that can be worked arround of course, but a larger problem we'd have is that we're being generally sloppy in the current JIT with the distinction | ||
whats more, we generally use large swaths of custom assembly for every block, and all of that would have to be ported | 13:51 | ||
timotimo | of course | ||
brrt | if you'd do it after the expression compiler had been put into place, things should be simpler on one hand; you'd just need to define a large enough tileset | 13:52 | |
if you'd do it today, your larger challenges would be dealing with ABI (c-calls) | |||
in general, all the architecture specific bits are contained in emit_x64.dasc ; so it's not like all of the graph stuff would have to be rewritten | 13:53 | ||
that said, i'm not even 100% sure on what the expression IR will be like | 13:54 | ||
timotimo | mhm | ||
brrt | it'd be a quite significant challenge to take up in exchange for a pyra computer | 13:55 | |
timotimo | hmm | 13:56 | |
brrt | i would add: because /me didn't take portability into sufficient account during the development of the x64 jit | 14:00 | |
timotimo | i thought having emit_*.dasc would be a good portability "tool" | 14:01 | |
jnthn | We'd be no better off without it :) | ||
timotimo | :) | 14:02 | |
i rebased merge_facts_at_phi and ran a spectest, it's all clean | |||
i wonder if i should merge it before it gets forgotten again :) | |||
FROGGS | Stage parse : 1407.825 Stage syntaxcheck: 0.042 Stage ast : 0.017 Stage optimize : 274.049 Stage mast : Killed | 14:06 | |
Makefile:417: recipe for target 'CORE.setting.moarvm' failed | |||
make: *** [CORE.setting.moarvm] Error 137 | |||
:o( | |||
timotimo | uh oh | ||
FROGGS | what can I do? | 14:11 | |
timotimo | this is on the raspberrypi? | ||
FROGGS | (this happens on the raspberry I own since a few hours) | ||
aye | |||
timotimo | ah | ||
i have no idea :\ | |||
brrt | (aaargh bad news :-( | 14:18 | |
) | |||
timotimo | uh oh | 14:19 | |
brrt | ... i need a different strategy | ||
i had expected i could use the marking functionality of dynasm to mark the REX byte | |||
so that i can OR in the right flags at encoding time | |||
however, that won't work because the MARK is also used to mark the ModR/M byte | 14:20 | ||
in fact, just before the REX byte | |||
eh, the VREG action | |||
on the other hand | 14:21 | ||
waitaminute | |||
i think i can safely move the mark *after* the vreg | |||
ah, no, not really so easily | 14:22 | ||
hmmm | 14:26 | ||
ok, puzzling continues | 14:27 | ||
hmmpf | 14:41 | ||
i'm afk for the night | |||
FROGGS | :S | ||
brrt | no success yet | ||
:-( | |||
sorry kids... i'll figure it out sooner or later :-) | 14:42 | ||
FROGGS | :o) | ||
timotimo | i'm expecting that :) | ||
brrt | there is always a solution | ||
what there is not always is a nice solution | |||
but always a solution :-) | |||
14:59
JimmyZ_ joined
15:38
FROGGS joined
16:22
synbot6 joined
16:32
vendethiel joined
17:05
vendethiel joined
17:06
colomon joined
17:55
vendethiel joined
18:03
colomon joined
18:09
mj41 joined
18:24
vendethiel joined
18:30
JimmyZ_ joined
18:48
vendethiel joined
|
|||
hoelzro | I've noticed when running Rakudo programs that ps aux shows the gnarly moar command line invocation; is there any desire to have it show the perl6 command line instead? | 19:08 | |
jnthn | Some, but not enough to make it happen :) | 19:18 | |
(yet) :) | 19:19 | ||
hoelzro | =) | ||
it seems that libuv only exposes a binding to prctl, which changes /proc/$PID/name, which ps (on Linux) doesn't use =( | 20:04 | ||
nwc10 | if you want to see what Perl 5 does (and how many different approaches might work) look in mg.c | 20:06 | |
search for LOCK_DOLLARZERO_MUTEX | |||
prctl(PR_SET_NAME, ...) might be the most simple to (also) implement | 20:07 | ||
oh, wait, you just said that | |||
so, sigh, sadly, looks like what's needed is to overwrite argv[0] | 20:08 | ||
20:17
colomon joined
|
|||
hoelzro | yup =( | 20:20 | |
which I'm willing to bet is in an RO segment on some OSen | |||
nwc10 | not on any that Perl 5 runs regression tests on. | 20:23 | |
hoelzro | ok, that gives me hope =) | 20:25 | |
jnthn packs up his main dev machine for it's journey to $new-home, and hopes it'll make it in one piece. | 20:51 | ||
*its | |||
jnthn will have to survive on half the cores for the next days... | 20:52 | ||
dalek | arVM/wip-mvmarray-refactor: f60e50f | jnthn++ | src/ (7 files): [NOT FOR MERGE] WIP on MVMArray refactor. |
20:57 | |
lizmat | jnthn: safe journeys! | 20:58 | |
jnthn | lizmat: I'm not journeying for another few days yet :) | 21:00 | |
Just shipping a bunch of stuff tomorrow :) | 21:01 | ||
lizmat | ah, shipping... let me *not* tell our story of shipping stuff recently until it has safely arrived :-) | 21:04 | |
*yours | |||
21:11
brrt joined
|
|||
jnthn | :-) | 21:12 | |
jnthn hopes to not have any stories to tell :) | |||
21:14
dalek joined
|
|||
jnthn | Having just seen the back of this machine for the first time since I got it ~1.5 years ago...I think I can say a can of compressed air will be one of the first purchases when I get it over to Praha :) | 21:14 | |
brrt | (what kind of machine uses compressed air? :-o) | 21:15 | |
or, compressed air as a cleaning tool | |||
oh, i've come to ask for advice | |||
lizmat | jnthn: you should see it if you have cats :-) | ||
brrt | not sure if advice is the right word, but | ||
lizmat is in 2 minds: do I say "don't do that" or "go for it!" ? | 21:16 | ||
brrt | i had planned on using the generic marking facility of dynasm to signify the REX byte (the one that has to be extended in order to address the upper GPRs) | ||
lizmat | .oO( can't give a sensible answer to that one ) |
21:17 | |
brrt | however, that won't work; the ModR/M encoding machinery relies on the same marking facility, and sits between the rex byte and the vreg action byte (the one that instructs dynasm to encode a dynamic register) | 21:18 | |
so i'd expect to modify my REX byte and would in fact modify the ModR/M byte | |||
less than awesome | |||
the easiest way out of this would be to add another way of specifically marking the REX bytes | 21:19 | ||
it'd be called MARK_REX of MREX or something like that | |||
in general, i'm more in favor of *using* functionality rather than creating it. but i don't think i have much choice now | 21:20 | ||
do you think this is a sensible way forward? | 21:21 | ||
(i have one more issue left,though, to figure out exactly in which bit of the rex byte the extension bit goes. but i can figure that one out, i think, or change dynasm to provide the information at runtime) | |||
(am i making sense at all) | 21:22 | ||
the alternative would be searching the byte, i guess? | 21:24 | ||
jnthn | Well, if you've a state machine that doesn't have the state you need... :) | 21:25 | |
brrt | i suppose that's the state i find myself in, yes :-) | 21:26 | |
hey, what's going on with the mvmarray-refactor thingy | 21:29 | ||
:-) | |||
jnthn | It's wise to look for existing things to re-use, but going too nuts on that can end up in a worse place... | ||
brrt: That's a pile of code that was sat on a machine that's about to spend (hopefully just) several days on the road, and I wanted it to hand in case I decided to hack on it in the next days :) | 21:30 | ||
but it doesn't even build | |||
So I figured I'd flag it prominently to stop folks wasting much time reviewing it :) | 21:31 | ||
(or trying to build it, 'cus it doesn't build either) | |||
brrt | right :-) i didn't know that it was a goal to change mvmarray | ||
good news, for once | 21:40 | ||
near as i can tell dynasm already differentiates between the kind of things it puts into SIB/ModRM bytes | 21:41 | ||
(both are involved with addressing) | |||
i think it does it for internal checking purposes | |||
but for me it means i can use that to decide which bit to set in the REX byte | |||
23:11
vendethiel joined
23:59
vendethiel joined
|