I could only see two dialects using LLVM types that way: AMX and X86Vector, both using a table-gen flag -gen-llvmir-conversions, which basically defines the LLVMOpBase symbols by hand via emitBuilders.
Does that mean including LLVMOpBase.td isn’t doing what I expect it should, ie. include the definitions like mlir/IR/OpBase.td does? Or am I missing something obvious from the LLVM definitions?
The dag element type in parameters is expected to derive the TypeParameter tablegen class (or, in rare cases, it’s just a string with the C++ type name) - see Operation Definition Specification (ODS) - MLIR. Type parameters are not necessarily other types, so you can’t just use a def deriving Type there.