freenode/#sbcl - IRC Chatlog
Search
0:17:36
stassats
did a proof-of-concept of fusing vops, vector-length+check-bound into check-bound-vector, to avoid loading the length
0:19:50
stassats
and i'm doing manual ir1 manipulation without using transforms, after all ir1 optimizations are done, to not lose VECTOR-LENGTH being folded
0:20:33
stassats
i guess i can come up with some easier pattern matching, since it should only need to change the combination fun, delete the unnecessary one, rearrange the args
0:28:45
stassats
or even easier (no new vops) make (lambda (a) (declare (notinline %ldb)) (ldb (byte 32 63) a)) as fast without notinline, by folding it back to %ldb
1:32:51
pkhuong
sounds like you're doing the transformation without inserting a lambda? that's a nice touch.
1:34:13
stassats
yes, just changing combination-fun and combination-args, after inserting some ref nodes
1:42:11
stassats
already have it pushed, https://github.com/stassats/sbcl/commit/0a2c47f0c9b3844a8dbca972ebba98736812d47c#diff-309e3afbb69d9c83af89f058ca3f01c5R488
1:49:13
stassats
as long as no new functional are needed, basically any node can be inserted without disturbing other nodes/needing further optimization
1:51:18
stassats
although here i'm also asking ir1-optimize to flush vector-length for me, but could manually unlink-node on it
1:59:09
stassats
adding new variables means adding a functional, with all the locall-analysis required, but i think if you have some interdependent operations you're going to have variables that are not converted to lvars directly
1:59:56
stassats
although if you transform into a new vop, you don't really need to worry about needing additional variables
2:04:47
stassats
my reasoning for doing it as late as possible is because if %check-bound+vector-length is transformed too early, now you'll also need to replicate the vector-length transforms, if the vector length ends up being known
2:10:38
stassats
i think it should be moved even later, after ltn, after knowing if a combination has applicable templates