This is an archive of the discontinued LLVM Phabricator instance.

Fix assertion with a trunc store to an i1 vector.
AbandonedPublic

Authored by arsenm on Mar 24 2014, 2:09 PM.

Details

Reviewers
None
Summary

The getZeroExtendInReg complains because the type is not a scalar.
This only half fixes the problem I ran into, since it ends up creating
an illegal vector operation, but I don't need this anymore.

Diff Detail

Event Timeline

arsenm updated this revision to Unknown Object (????).Apr 4 2014, 6:55 PM

Fix other assert in ShrinkDemandedOp. It might be better to just fully disable it for vectors, since it seems unlikely that isTruncateFree or isZExtFree would be true for any vectors

arsenm updated this revision to Diff 8894.Apr 28 2014, 1:10 PM

Add testcase that doesn't hit the assertion anymore. It's not particularly useful though, since this introduces an illegal vector operation which fails to select. I'm not sure exactly what i1 vector stores are supposed to do, so I'm not sure how to fix that part.

IIRC the semantic of Y x i1 is a packed vector of bool. I.e., you just need Y bits to hold the whole vector. This matches the AVX-512 vector mask.
That said, I do not find the thread discussing that and may be wrong.

Adding Nadav and Hal may be a good idea.

-Quentin

arsenm abandoned this revision.Apr 14 2016, 5:18 PM