The VSELECT splitting code tries to split a setcc input as well. But on avx512 where mask registers are well supported it should be better to just split the mask and use a single compare.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp | ||
---|---|---|
529–531 ↗ | (On Diff #222922) | I'm not familiar with how we make this kind of choice, but we could leave off the MVT::i1 clause and get the same results. |
llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp | ||
---|---|---|
529–531 ↗ | (On Diff #222922) | I think if the cond doesn’t have an i1 type then it’s likely the same size as the result type we’re splitting. But always has int type. Assuming that all same size vectors need to be split, then it hits the case above. |
llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp | ||
---|---|---|
529–531 ↗ | (On Diff #222922) | Or in other words, I could remove the i1 check, but the case where its not an i1 probably wouldn't be tested. |