Mill Computing, Inc. › Forums › The Mill › Tools › Compilers › Loop compilation › Reply To: Loop compilation
rd
can’t copy belt values; the whole point of that phase is that it has no belt inputs. It has four purposes:
1. Dropping predefined “popular constants” (popCons) like [0, 1, 2, 3], π, e, √2. “The selection of popCons varies by member, but all include 0, 1, -1, and None of all widths.” con should work as well, but is significantly larger.
2. Operating on the in-core scratchpad, allocated with scratchf
. spill
and fill
are for the extended scratchpad, which is stored in memory and allocated with exscratchf
, and can be much larger.
3. Reading registers. These aren’t belt locations, they are things like hardware counters, threadIDs, and supposedly also “thisPointer” for method calls.
4. Stream handling, a magic secret thing for “cacheless bulk memory access” we’ve never heard the details of, as far as I know.