canWidenShuffleElements can do a better job if given a mask with ZeroableElements info. Apparently, ZeroableElements was being only used to identify AllZero candidates, but possibly we could plug it into more shuffle matchers.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
14401 ↗ | (On Diff #129794) | ISD::isBuildVectorAllZeros allows undef elements (as long as it isn't all undefs) - should we test for a splat build vector of zero and check that we have no undefs at all? |
lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
14401 ↗ | (On Diff #129794) | What would be the benefit of that? I mean, undefs can be zeroed if profitable. |
lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
14571 ↗ | (On Diff #132777) | Are there any cases where the zero entry came from V1 that could cause a problem? |
14595 ↗ | (On Diff #132777) | APInt Undefs = APInt::getAllOnesValue(NewNumElts); |
14597 ↗ | (On Diff #132777) | APInt::getNullValue(NewEltVT.getSizeInBits()) |
14600 ↗ | (On Diff #132777) | i > NewNumElts can't ever be true? And anyway, we expect the zero to have come from V2. |
Comment Actions
- Rebase
- Simplify the creation of the shuffle by only modifying the widened mask to take all zeros from the all-zero operand.
lib/Target/X86/X86ISelLowering.cpp | ||
---|---|---|
14571 ↗ | (On Diff #132777) | Sorry i didn't understand the question. |
14595 ↗ | (On Diff #132777) | Thanks, this code was removed from latest revision |
14597 ↗ | (On Diff #132777) | Thanks, this code was removed from latest revision |
14600 ↗ | (On Diff #132777) | whoops. I fixed this in the latest revision |