If we have a signed comparison like this:
%cmp = icmp sge i32 %x, 0 %select = select i1 %cmp, i32 %x, i32 0 ret i32 %select
We can represent it using an and + a right shift.
On AArch64, this allows us to do the cmp + select in a single instruction.
This also works with signed less-than operators, but instead we compliment the
shift first.
Saves 0.12% code size on CTMark/lencod @ -Os for AArch64. Other minor code size
savings as well with no regressions.
These assignments on the right aren't part of the pattern and confusing