| 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
|
|||