[X86][AVX] LowerADDSAT_SUBSAT - avoid X86ISD::BLENDV in UADDSAT/USUBSAT v8i32/v4i64...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 20 Nov 2020 18:07:33 +0000 (18:07 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 20 Nov 2020 18:16:44 +0000 (18:16 +0000)
commit0341029bb414d346edcceeeabaf4c5bb3312c38c
tree706e04d185bc51bb28eff69a8c678293ddfad098
parentf5c5fd1c50bf2475262007dc8071f3a6a19f0a18
[X86][AVX] LowerADDSAT_SUBSAT - avoid X86ISD::BLENDV in UADDSAT/USUBSAT v8i32/v4i64 lowering

Use the OR(CMP,ADD) / AND(CMP,SUB) patterns like we do on SSE targets.

Enable custom lowering for v8i32/v4i64 and generalize the 128-bit lowering code for any vector size - this also lets us use the slightly cheaper codegen for icmp_ugt instead of umin/umax.
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/uadd_sat_vec.ll
llvm/test/CodeGen/X86/usub_sat_vec.ll