This is limited to a set of patterns based on the example in PR34111:
https://bugs.llvm.org/show_bug.cgi?id=34111
...but as I was investigating this, I see that horizontal patterns can go wrong in many, many other ways that would not be handled by this patch. Each data type may even go different in the DAG after starting with the same basic IR pattern, so even proper IR canonicalization won't fix it all.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
Patch updated:
- Take ArrayRef by value rather than ref.
- Add TODO about checking more shuffle masks (h-op matching doesn't currently work for the listed cases, so it probably doesn't make sense to add those unless/until we fix that).
Take ArrayRef by value, its a pointer and size.