Initial IBC bring-up
Get the basic functional of IBC working and proven out. The objective of this milestone is to settle on a good set of core data structures and concepts for IBC and prove them out. After this point, IBC will start to grow significantly and making core changes will be difficult.
Everything targeting this milestone should be very tightly directed to teach as much as possible about the IR while adding as little code as possible. The objective of this milestone is not to get lots of stuff implemented but to prove out the core IR and demonstrate that it can do everything we want and do, preferably better than the old one. Things that need to be proven out include (but are not limited to):
- Multiple SIMD widths
- Multiple bit sizes
- RA for flag registers
- Encoding of complex instructions without codegen meta-instructions
- SSA-based RA and spilling
- Headers and payloads (implement tg4?)
- Multi-instruction SSA thing
- Push Constants
- Control Flow (unstructured)
- Re-materialization
- Subgroup Ops
- Accumulator (good enough for
[ui]mul_high
)