vp.select|merge both select lanes based on a condition mask. Unlike other VP intrinsics the lanes are defined where the condition mask is false. Hence, the condition mask in vp.select|mask is not a mask in the sense of VP intrinsics.
By doing not treating the condition mask specially, vp.select becomes the canonical VP translation of the select instruction.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Makes sense to me: it's not a mask. I was looking around to see what knock-on effects this has, and good news is that I think this fixes a bug we're not testing where an all-zeros "mask" will DAGCombine to undef (visitVPOp). Could you maybe pre-commit a test for that and show this patch fixing it?
On that note: I don't know if this is truly a child of D105283. Can't we merge it right away?
Comment Actions
I'll commit an XFAIL test for VE and update with this patch to a passing test. D105283 only depends on this patch (no other way to add dependence edges) - we can merge this.
Comment Actions
Actually, DAGCombine won't do that because it only folds bvp inary operators mem ops and reduction. So, also nothing to test.