In a recent review, it came up that we only support integer and index types in Handshake: circt/HandshakeToFIRRTL.cpp at main · llvm/circt · GitHub. Similarly, FIRRTL does not support the fixed type defined by the FIRRTL spec: FIRRTL Dialect Rationale - CIRCT.
I am curious if anyone has plans for supporting floating/fixed/etc. types at these levels. Has this been brought up before? I may be missing some of the background.
I’ve run up against this once already, so I’d like to get the ball rolling (or catch up) on this discussion. The main use case I’m looking at is coming from the higher levels into the Linalg dialect, where all the named ops are defined in terms of f32
. You cannot invoke linalg.matmul
unless the tensors or memrefs are floating points. This is just one example, and I think there will be more math-heavy use cases that want this.
I would like these sorts of programs to be supported by CIRCT, and I’m happy to participate in the design and implementation of this feature.