Encoding was accidentally left out here even though it forms part of the type.
This is small tightening step and I'll look at follow on to tighten more.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
I'm getting confused as to what this trait actually means anymore. Why doesn't it just check that the types are pointer equal?
I agree with Jeff here, and think this is getting further out of hand. I strongly feel like we should push https://reviews.llvm.org/D125051 forward.
I'll look at that one after as its more invasive.
This trait signifies equivalence and only flags where known non-matching (not where potentially not matching). E.g., tensor<?xf32> input to op where the other operands is tensor<2xf32> effectively means post type inference these should be equal or an error, or alternatively that we have effectively a runtime assert that they are equal. Which is also true for 2 tensor<?xf32> operands that pointer equality is not sufficient, it has to match executionally - the same static type doesn't suffice, we require the fully known type to be equal, which is something that the pointer check would be permissive off. But it would not fail verification with tensor<?xf32> != tensor<2xf32> . So it means one can express this type constraint and represents something different than the raw type being the same. Naming is difficult.