llvm-project/llvm/lib/Transforms/InstCombine
Philip Reames 2ce017026a [InstCombine] Convert a masked.load of a dereferenceable address to an unconditional load
If we have a masked.load from a location we know to be dereferenceable, we can simply issue a speculative unconditional load against that address. The key advantage is that it produces IR which is well understood by the optimizer. The select (cnd, load, passthrough) form produced should be pattern matchable back to hardware predication if profitable.

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

llvm-svn: 359000
2019-04-23 15:25:14 +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] prevent possible miscompile with negate+sdiv of vector op 2019-04-09 14:09:06 +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] Convert a masked.load of a dereferenceable address to an unconditional load 2019-04-23 15:25:14 +00:00
InstCombineCasts.cpp Extra processing for BitCast + PHI in InstCombine 2019-02-09 01:44:28 +00:00
InstCombineCompares.cpp [InstCombine] Remove redundant/bogus mul_with_overflow combines 2019-04-13 19:43:35 +00:00
InstCombineInternal.h [InstCombine] Factor out unreachable inst idiom creation [NFC] 2019-04-17 17:37:58 +00:00
InstCombineLoadStoreAlloca.cpp [InstCombine] Eliminate stores to constant memory 2019-04-22 20:28:19 +00:00
InstCombineMulDivRem.cpp [InstCombine] canonicalize fdiv after fmul if reassociation is allowed 2019-04-15 13:23:38 +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 [InstCombine] Fix a nasty miscompile introduced w/masked.gather demanded elts 2019-04-12 18:26:56 +00:00
InstCombineTables.td InstCombine/AMDGPU: Add dimension-aware image intrinsics to SimplifyDemanded 2018-06-21 13:37:31 +00:00
InstCombineVectorOps.cpp [InstCombine] remove overzealous assert for shuffles (PR41419) 2019-04-08 13:28:29 +00:00
InstructionCombining.cpp [InstCombine] Factor out unreachable inst idiom creation [NFC] 2019-04-17 17:37:58 +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