[DAG] Legalize abs(x) -> umin(x,sub(0,x)) iff umin/sub are legal
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 25 Nov 2020 18:05:41 +0000 (18:05 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 25 Nov 2020 18:06:02 +0000 (18:06 +0000)
commit9c86c5e8add23a29fb19f7c0ac366a2063a5073a
tree04dc037c7ae60ce2d9937b3c742c2225be4c2704
parentcf1c774d6ace59c5adc9ab71b31e762c1be695b1
[DAG] Legalize abs(x) -> umin(x,sub(0,x)) iff umin/sub are legal

If umin() is legal, this is likely to result in smaller codegen expansion for abs(x) than the xor(add,ashr) method.

Followup to D92095

Alive2: https://alive2.llvm.org/ce/z/8nuX6s  https://alive2.llvm.org/ce/z/q2hB9w
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
llvm/test/CodeGen/X86/abs.ll
llvm/test/CodeGen/X86/combine-abs.ll
llvm/test/CodeGen/X86/viabs.ll