Previously, vecreduce_{and,or} vNi1 could lead to miscompilations because the legalizer first decides to any_ext the operand (which is correct for vecreduce_{and,or}) and then decides to use vecreduce_u{min,max} instead (for which any_ext is incorrect). This patch changes it so the vecreduce_u{min,max} operations use sign_ext instead of any_ext.
Details
Details
Diff Detail
Diff Detail
Event Timeline
llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp | ||
---|---|---|
2304 | Should this follow TLI.getBooleanContents? |
Comment Actions
Use getBooleanContents to decide how to extend the vectors. Also update some codegen tests which I forgot to update in the previous revision.
Comment Actions
I don't think I have commit access, so I believe someone else will have to commit the changes for me.
Should this follow TLI.getBooleanContents?