Disable conversion of a `(select (icmp))` when it would result in more instructions `(xor (lshr (and)))`. This transformation produces more instructions and can interfere with other more profitable folds for `select`. For example before this change the following folding would occur: ```llvm %1 = icmp slt i32 %X, 0 %2 = select i1 %1, i64 0, i64 8 ``` to ```llvm %1 = lshr i32 %X, 28 %2 = and i32 %1, 8 %3 = xor i32 %2, 8 %4 = zext nneg i32 %3 to i64 ```
159 KiB
159 KiB