This is an archive of the discontinued LLVM Phabricator instance.

Avoid double branch / conditional move for promoted cttz
Needs ReviewPublic

Authored by dotdash on Apr 26 2015, 1:24 PM.
This revision needs review, but there are no reviewers specified.

Details

Reviewers
None
Summary

Instead of handling the zero case for that promoted value and then
adjusting the result for the original type, we can set the appropriate
bit in the promoted value.

Diff Detail

Event Timeline

dotdash updated this revision to Diff 24447.Apr 26 2015, 1:24 PM
dotdash retitled this revision from to Avoid double branch / conditional move for promoted cttz.
dotdash updated this object.
dotdash edited the test plan for this revision. (Show Details)
dotdash added a subscriber: Unknown Object (MLST).

Looks good, but there's room for a minor improvement still - see inline comment.

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
4051

Another trick that can be added here: operation can now be safely changed to CTTZ_UNDEF.