[llvm-dev] Reasoning about results of min and max with a constant
    Carlos Liam via llvm-dev 
    llvm-dev at lists.llvm.org
       
    Fri Jul 29 19:08:23 PDT 2016
    
    
  
Hi all,
Say we have this IR:
%1 = icmp slt i16 %x, 0
%.x = select i1 %1, i16 0, i16 %x
This is the canonical form of what is effectively max(x, 0).
From what I can tell LLVM has no facilities to determine from this code that %.x >= 0, so (for example) an SExt on %.x will not be converted to a ZExt.
I'm interested in seeing what sorts of changes would be needed to recognize this pattern in existing facilities (computeKnownBits, etc.) in order to more broadly apply optimizations that use those facilities.
Any insight would be appreciated. Thanks!
    
    
More information about the llvm-dev
mailing list