[DAG] Legalize umin(x,y) -> sub(x,usubsat(x,y)) and umax(x,y) -> add(x,usubsat(y...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 27 Nov 2020 11:00:34 +0000 (11:00 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 27 Nov 2020 11:18:58 +0000 (11:18 +0000)
commit969918e177adcfd526da7d8e21e5d76860e09c9e
tree58ac21840a54a08858d469dbccd75349d13a9d4d
parent4b9c2bbdb67139e69b689cbfc490632391324f02
[DAG] Legalize umin(x,y) -> sub(x,usubsat(x,y)) and umax(x,y) -> add(x,usubsat(y,x)) iff usubsat is legal

If usubsat() is legal, this is likely to result in smaller codegen expansion than the default cmp+select codegen expansion.

Allows us to move the x86-specific lowering to the generic expansion code.

Differential Revision: https://reviews.llvm.org/D92183
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/Analysis/CostModel/AArch64/min-max.ll
llvm/test/CodeGen/X86/midpoint-int-vec-128.ll