Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes.
Set by lizmat on 24 May 2021.
timo ... still want the validator to be faster ... 20:47
i was hoping i could somehow shoehorn vectorization aka SIMD in there 20:48
the first thought was that if i can ingest like 256 bits or even 512 bits of bytecode at once and for every 16bit chunk, which is what we are aligning to, figure out the length of the corresponding operation, and then "skip through" the bytes, then i'd already have a list of offsets where operations start, and there'd also have to be some kind of signal for "this could not be handled trivially", 20:51
like when there's a jumplist, or a dispatch call where the number and types of operands depends on the callsite passed in
when the offsets are known, parallelization suddenly becomes possible, since the bytecode can now be chopped up into pieces of known sizes and with some extra care we can hopefully find spots to split where context is not needed, like when there's a list of ops that make up a sequence, i.e. where one op starts a sequence where only one specific set of other ops are allowed until one of a few 20:53
specific ops are encountered. our invoke bytecodes work like that for example 20:54
at what point is any win i might possibly achieve going to be swallowed by the extra work i have to do with all the simd to get the results that i want 21:02
.o( sir, this is a wendy's ) 21:06