Mill Computing, Inc. › Forums › Announcements › Events › Ivan Godard and Mill at the 2015 European LLVM Conference › Reply To: Ivan Godard and Mill at the 2015 European LLVM Conference
32+(3*5) != 57 🙂
The con() op uses the same flow-side bit-bunching that is used by the polyadic ops like call() and conform(). The extra slots encode the flowArg() pseudo-op, so you can consider it a flow-side gang.
The bit-bunching happens for all the flow side ops, starting in D0; all the extension and manifest bits are moved to a long array with 47 (Gold) bits per slot. The move is controlled by two two-bit fields at fixed position in every op in the slot, so we can do the move without parsing the op or even knowing how many real ops there are. In D1 we know how many 47-bit elements are associated with each op, and for con we chop those out and ship them to the belt crossbar in time for the con to drop at the end of D2. The “<" is in X0 a.k.a D3, so it can use the literal. Ain't phasing lovely!