Move / Remove `vcix` dialect

(My apologies if I can’t quote a specific comment)

On the topic of low-level “intrinsic” dialect, in addition to modeling some target-specific operations, another thing that I thought will be useful for such dialects would be type legalization: take RISC-V as an example, it only supports a subset of (scalable) vector types. If we want to generate RISC-V intrinsics directly from MLIR side, regardless of using a dedicated dialect or not, those intrinsic need to use legalized types.

If there is a low-level intrinsic dialect for, said RVV intrinsics, then such legalization can be easily implemented with the existing conversion framework. This applies to the case when there is a high-level RISC-V dialect added in the future. If we want to adopt Proposal #2’s approach to lower any higher level dialects directly to LLVMIR intrinsics, that – please correct me if I’m wrong – I think we kind of have to roll our own type legalizer in this conversion, or at least adding many custom conversion rules.

I’m not sure whether type legalization for generating target-specific intrinsics in MLIR is a huge problem for other architectures like ARM SVE, but it’s kind of a pain for RISC-V – maybe it’s because we support less number of legal vector types so we have to think about this problem early on.

Agree on the fact that the name “vcix” by itself is pretty confusing for non RISC-V developers.

I understand that there isn’t any high-level RISC-V dialects at this moment so we can only talk about hypothetic situation here. But I have previously expressed my concern on potentially not being able to use the conversion framework to do legalization

Also related:

Sub-grouping is something I’m not really familiar with so please correct me if I’m wrong: with that approach does that mean individual dialect needs to do things like marking and filtering out illegal operations by themselves?

Similar to @jpienaar originally I also thought separating each extension into its own dialects would be way easier (just mark the unsupported extension as illegal and MLIR will take care of the rest). Sure, it might bloat the compiler size but I thought that’s a technical issue we can solve iteratively.

I think all proposals and discussions we have here are pretty helpful for establishing a rigid framework or convention for future target-specific dialect in this space. Especially for RISC-V with its enormous number of extensions, I’m sure similar topics on abstraction level / extensibility will be brought up again and again.