freenode/#sicl - IRC Chatlog
Search
8:08:06
beach
Register allocation is a lot messier than I had imagined. Not because of the basic idea, but because of the large number of cases possible just to allocate a register. I will try to simplify a bit today, so that I can make progress.
9:32:47
beach
On page 93 and a bit on page 94 of http://metamodular.com/SICL/sicl-specification.pdf I now think I have a description of how to allocate a register for the second operand of a typical instruction of the type r <- r op s, given a MIR instruction of the type c <- a op b. Please let me know whether this description is understandable.
9:36:03
beach
The abstractions are "allocate a new register", "relatively soon", and "far in the future".
9:44:41
no-defun-allowed
I finished a SIMD implementation of my metadata protocol (using a somewhat modified cl-simd), and it's about 20% faster than the bit-trickery reference implementation. sb-sprof suggests that there is a lot of time spent in readers.
9:49:02
no-defun-allowed
The fact that it at least works suggests that the internal protocol for the linear-probing hash table is reasonable, so I may look at beginning to write the concurrent version tomorrow.
10:00:20
beach
Actually, put off reading that section. I think I am close to finishing the entire thing, and I changed the names of the variables.
14:33:18
beach
I think I finished the description of register allocation (given that we have computed EDU). It is on pages 91-95 of http://metamodular.com/SICL/sicl-specification.pdf in case someone has the time to have a look.
14:34:24
beach
There are so many cases that it is might happen that some case that occurs infrequently is wrong, or implemented incorrectly. So I am inclined to make the rules simpler in an initial implementation.
16:13:04
splittist
beach: not a terribly helpful comment, but when you nest 7 layers deep, I don't think you need both an increase the length/depth of the numbering AND a further layer of indentation. That is, if you are already expressing the full reference ("2.2.1.2.1.2.1.2.3.2.1.2.3."), you don't also need to indent that reference. If you are indenting the reference, you don't need the full reference, you can just use the innermost
16:13:05
splittist
reference - but in this case you need to differentiate the levels (arabic, lower alpha, lower roman, ...). Or you can mix it up: keep the full reference to the first couple of levels, then break into different numbering schemes.