llvm-project/llvm/lib/Transforms/InstCombine
Nikita Popov 7462303e06 [InstCombine] Use uadd.sat and usub.sat for canonicalization
Start using the uadd.sat and usub.sat intrinsics for the existing
canonicalizations. These intrinsics should optimize better than
expanded IR, have better handling in the X86 backend and should
be no worse than expanded IR in other backends, as far as we know.

rL357012 already introduced use of uadd.sat for the add+umin pattern.

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

llvm-svn: 357103
2019-03-27 17:56:15 +00:00
..
CMakeLists.txt [InstCombine] Optimize `atomicrmw <op>, 0` into `load atomic` when possible 2019-02-07 21:27:23 +00:00
InstCombineAddSub.cpp [InstCombine] form uaddsat from add+umin (PR14613) 2019-03-26 17:50:08 +00:00
InstCombineAndOrXor.cpp [InstCombine] Don't transform ((C1 OP zext(X)) & C2) -> zext((C1 OP X) & C2) if either zext or OP has another use. 2019-03-21 17:50:49 +00:00
InstCombineAtomicRMW.cpp [InstCombine] Extend saturating idempotent atomicrmw transform to FP 2019-03-01 19:50:36 +00:00
InstCombineCalls.cpp [instcombine] Add some todos, and arrange code for readibility 2019-03-21 03:23:40 +00:00
InstCombineCasts.cpp Extra processing for BitCast + PHI in InstCombine 2019-02-09 01:44:28 +00:00
InstCombineCompares.cpp [InstCombine] Fix crashing from (icmp (bitcast ([su]itofp X)), Y) 2019-02-07 21:12:01 +00:00
InstCombineInternal.h Simplify operands of masked stores and scatters based on demanded elements 2019-03-20 18:44:58 +00:00
InstCombineLoadStoreAlloca.cpp [opaque pointer types] Pass value type to GetElementPtr creation. 2019-02-01 20:44:47 +00:00
InstCombineMulDivRem.cpp [CallSite removal] Remove CallSite uses from InstCombine. 2019-01-31 17:23:29 +00:00
InstCombinePHI.cpp [opaque pointer types] Pass value type to LoadInst creation. 2019-02-01 20:44:24 +00:00
InstCombineSelect.cpp [InstCombine] Use uadd.sat and usub.sat for canonicalization 2019-03-27 17:56:15 +00:00
InstCombineShifts.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InstCombineSimplifyDemanded.cpp InstCombineSimplifyDemanded: Allow v3 results for AMDGCN buffer and image intrinsics 2019-03-22 15:53:50 +00:00
InstCombineTables.td InstCombine/AMDGPU: Add dimension-aware image intrinsics to SimplifyDemanded 2018-06-21 13:37:31 +00:00
InstCombineVectorOps.cpp [InstCombine] limit extracting shuffle transform based on uses 2019-02-05 22:58:45 +00:00
InstructionCombining.cpp [instcombine] Add some todos, and arrange code for readibility 2019-03-21 03:23:40 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00