github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
brrt \o 11:07
timotimo o/ 11:08
brrt ugh, too much to do 12:54
I suppose you'd like to have shift and truncate instructions in the JIT?
I want to split signed and unsigned cast into separate operators
timotimo somewhat importantly, these shift ops would be for big ints, but i can probably just steal how jnthn already implemented add and such. 13:02
we probably already have shift ops for regular native ints 13:05
but yeah, truncate (do we also have extend ops?) would be good to have in the jit
brrt we have cast (up) 13:12
truncate would be implemented essentially the same, with movzx, except that we'd assign a different size 13:13
I think I'm going to merge MasterDuke++ and jstuder++'s PRs
timotimo mhh. since registers are 64bit either way, even when using int8, it's probably actually better performance either way to use "int" instead of "int8" here 13:14
since i grab the value out of an int8 @foo anyway
brrt depends on how you read them, yes
timotimo BTW SIMD when? ;) ;)
perhaps we'll actually keep a bit of .c code in rakudo so we can implement SIMD-improved fast paths for some operations there 13:15
like "oh, [+] on a int16 @foo? i have a native call for that!"
since we're pretty sure we don't want to try autovectorization, right? 13:17
i wonder if it's a terrible idea to implement some "heavy" ops in the interp.c thing by having the labels for multiple ops point at the same body and then differentiate inside 13:23
like sp_add_I and sp_sub_I are pretty big, and only differ in one single little spot
well, two little spots 13:24
one is the fallback, which is extra expensive anyway, because it's a call
brrt no, no C code in rakudo
timotimo OK, OK :)
brrt :-P
timotimo but how about ... writing the assembly into a Buf using nqp code! 13:25
brrt question is... and I'm going to slightly lean on jnthn's design chops here
how can we design an interface that allows us to use SIMD internally, that is useable by a (high-level) rakudo compiler
and if we have that, can we scale it to GPU if there are platforms that support it 13:26
counterquestion is, how much perl code *isn't* reading and writing from files/sockets
timotimo: actually, if we had done that, we'd have had graal 13:27
timotimo well, graal is well received ;)
but yeah, at some point we'll reach the limit of opcodes if we just build opcodes for loads of simd things 13:29
brrt I think their bucks-for-bang ratio slightly exceeds our 13:30
timotimo then we can have an argument that differentiates between the different things we could want
brrt ever heard of liborc?
timotimo yep
optimized ... something
brrt started as liboil, optimized inner loops
timotimo yes, exactly that one 13:31
brrt then became a JIT compiler for the same
timotimo and orc is the oil compiler
brrt maybe we can expose a sort of interface to that
timotimo well, obviously we could nativecall into it ;) 13:32
brrt or that. but I think we can do better
brrt ugh, how do I convince whitespace-mode that no, I really do want spaces rather than tabs 16:41
Geth MoarVM: 17365037b6 | (Daniel Green)++ | 2 files
Add a macro for decoder_ensure_decoder and ...

templates for decoder<addbytes takebytes takeline empty>.
17:29
MoarVM: df121f9d29 | (Bart Wiegmans)++ | 2 files
Merge remote-tracking branch 'Masterduke17/jit_macro_and_template_for_decoder_ops'
MoarVM: f1e83f6f60 | (Bart Wiegmans)++ | 5 files
[JIT] A few more macros

  - repr_id, is_repr_id and not_repr_id
  - throw_adhoc - what it says
  - &CAT3 for string concatentation
travis-ci MoarVM build failed. Bart Wiegmans '[JIT] A few more macros 17:43
travis-ci.org/MoarVM/MoarVM/builds/425842859 github.com/MoarVM/MoarVM/compare/2...e83f6f60b6
brrt ugh, i'm an idiot 17:45
diakopter we are all idiots, sometimes more often than other times :D 17:46
AlexDaniel but typically very often, which is why we delegate our tasks to machines as much as we can… 17:52
AlexDaniel is speaking for himself obviously
🤤 17:53
Geth MoarVM: 22c98176a1 | (Bart Wiegmans)++ | tools/tiler-table-generator.pl
[JIT] Tiler table generator changes

  - sexpr::encode -> sexpr_encode (oops)
  - package rule -> package tiler
  - renames
17:54
MoarVM/master: 5 commits pushed by (Jeremy Studer)++, (Bart Wiegmans)++ 18:02
brrt ok, /me afk 18:03
travis-ci MoarVM build passed. Bart Wiegmans '[JIT] Tiler table generator changes 18:14
travis-ci.org/MoarVM/MoarVM/builds/425852245 github.com/MoarVM/MoarVM/compare/f...c98176a154
travis-ci MoarVM build passed. Bart Wiegmans 'Merge remote-tracking branch 'jstuder/exprjit_cast_load_addr'' 18:30
travis-ci.org/MoarVM/MoarVM/builds/425855309 github.com/MoarVM/MoarVM/compare/2...c718411abe
Geth MoarVM: 477ec445f8 | (Bart Wiegmans)++ | 7 files
[JIT] Split signed and unsigned cast operators

Have different semantics, are different operators.
20:56
jnthn For SIMD at the op level, we can probably have a small number of ops that take an operand indicating the operation to distribute (add, sub, mul, etc) and maybe the width of the operands or some such 21:01
Rather than an op explosion over all the pairings of those
masak I love it when a force multiplier comes together 21:05
diakopter force left-shifter 21:06
masak hey didn't Knuth warn you to not prematurely optimize
diakopter arbitrary-precision left-shift a trillion 21:07
masak boggles
I think I... need to sit down 21:08
diakopter on that note, decommute &
masak .oO( you're commute consists of a trillion-step left shift!?! )
your* 21:09