[llvm-dev] IR canonicalization: select or bool math?

Krzysztof Parzyszek via llvm-dev llvm-dev at lists.llvm.org
Thu Sep 29 09:12:25 PDT 2016

On 9/28/2016 11:21 PM, Chris Lattner via llvm-dev wrote:
> Right.  That’s the general (abstract, and probably not uniformly
> followed) goal: canonicalize towards the conceptually most strength
> reduced operation.  zext is simpler than select, so it should be more
> canonical when it applies.

IMO, canonicalization should aim at making it easy for the rest of the 
compiler to reason about the code. While select may not appear the 
simplest in terms of code complexity, it can lead to a simpler code when 
combined with other operations (as per Sanjoy's example), while at the 
same time it can always become a zext later on (if it's not combined 
with anything).


Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, 
hosted by The Linux Foundation

More information about the llvm-dev mailing list