Calyx talk and next steps

Coming back to this thread, because the switch statement thread popped up in the MLIR forums and the switch statement RFC got me thinking about Calyx and “FSM + datapath” modelling in general.

How much of the Calyx control sub-language overlaps with the MLIR SCF dialect?

I don’t think this is a 1:1 mapping, but the following seem pretty similar

seq <> scf.for
par <> scf.parallel
if <> scf.if
while <> scf.while

I think there is also a loose correspondence between

invoke <> std.call

which isn’t part of the SCF dialect, but is also already upstream in MLIR.

Anyway, I had this thought and wanted to share it. I’ve been focused on the handshaking side of things, but it would be great if we could reuse some of the SCF dialect on the statically scheduled side of things.