Mill Computing, Inc. › Forums › The Mill › Tools › Compilers › Paper about hoisting loads above other instructions using a LLVM tool. › Reply To: Paper about hoisting loads above other instructions using a LLVM tool.
An interesting paper, but of limited relevance to the Mill. Because (as you note) both aliasing and protection checks are not an issue for us, we can in general hoist a load to any point after the address is available, and can often hoist (much of) the address computation too.
Of the issues listed in the paper:
1) Finding enough independent instructions: always an issue on the higher end members, even when being liberal with speculation. Hoisting helps somewhat, but there’s no point in hoisting just to introduce no-ops.
2) Chains of long-latency instructions: This is a restate of #1, because if there are plenty of independent instructions then long chains are hatmless.
3) Increased register (retire station) pressure: this is a lesser issue on the Mill because we don’t unroll.
So while the paper addresses some of the same things that the Mill architecture does, the methods used have costs that are obviated on the Mill.I doubt that combining the two would give any net benefit.