[X86] Improve unsigned saturation downconvert detection.
authorArtur Gainullin <artur.gainullin@intel.com>
Tue, 15 May 2018 10:24:12 +0000 (10:24 +0000)
committerArtur Gainullin <artur.gainullin@intel.com>
Tue, 15 May 2018 10:24:12 +0000 (10:24 +0000)
commit243a3d56d8726ecee55480f9faf6eaa2ec160004
tree7c661a010ec53de1f612e98dd3c193d9720b7806
parentcfa6440b6c7611252eb3ad4d392507eb4630f333
[X86] Improve unsigned saturation downconvert detection.

Summary:
New unsigned saturation downconvert patterns detection was implemented in
X86 Codegen:

(truncate (smin (smax (x, C1), C2)) to dest_type),
where C1 >= 0 and C2 is unsigned max of destination type.

(truncate (smax (smin (x, C2), C1)) to dest_type)
where C1 >= 0, C2 is unsigned max of destination type and C1 <= C2.
These two patterns are equivalent to:

(truncate (umin (smax(x, C1), unsigned_max_of_dest_type)) to dest_type)

Reviewers: RKSimon

Subscribers: llvm-commits, a.elovikov

Differential Revision: https://reviews.llvm.org/D45315

llvm-svn: 332336
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx512-trunc.ll
llvm/test/CodeGen/X86/vector-trunc-packus.ll