[llvm-dev] Question about canonicalizing cmp+select
Yuan Lin via llvm-dev
llvm-dev at lists.llvm.org
Tue Jul 3 11:06:55 PDT 2018
Hi, Sanjay/all,
I noticed in rL331486 that some compare-select optimizations are disabled
in favor of providing canonicalized cmp+select to the backend.
I am currently working on a private backend target, and the target has a
small code size limit. With this change, some of the apps went over the
codesize limit. As an example,
C code:
b = (a > -1) ? 4 : 5;
ll code:
Before rL331486:
%0 = lshr i16 %a.0.a.0., 15
%1 = or i16 %0, 4
After rL331486:
%cmp = icmp sgt i16 %a.0.a.0., -1
%cond = select i1 %cmp, i16 4, i16 5
With the various encoding restrictions of my particular target, the
cmp/select generated slightly larger code size. However, because the apps
were very close to the code size limit, this slight change pushed them over
the limit.
If I still prefer to have this optimization performed, then is my best
strategy moving forward to implement this optimization as a peephole opt in
my backend?
Thanks,
--Yuan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180703/02716f3d/attachment.html>
More information about the llvm-dev
mailing list