llvm-project/llvm/lib/Transforms
David Green 8675ef100f [LV] Logical and/or select costs
D99674 stopped the folding of certain select operations into and/or, due
to incorrect folding in the presence of poison. D97360 added some costs
to attempt to account for the change, but only worked at the getUserCost
level, not the getCmpSelInstrCost that the vectorizer will use directly.
This adds similar logic into the vectorizer to handle these logical
and/or selects, treating them like and/or directly.

This fixes 60% performance regressions from code like the attached test
case.

Differential Revision: https://reviews.llvm.org/D99884
2021-04-08 10:39:47 +01:00
..
AggressiveInstCombine [Transforms] Use llvm::append_range (NFC) 2021-01-20 21:35:54 -08:00
CFGuard llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
Coroutines [SplitEdge] Update SplitCriticalEdge to return a nullptr only when the edge is not critical 2021-04-06 21:24:40 +00:00
Hello
IPO [CSSPGO] Fix incorrect probe distribution factor computation in top-down inliner 2021-04-07 08:48:59 -07:00
InstCombine [InstCombine] fold not ops around min/max intrinsics 2021-04-07 17:31:36 -04:00
Instrumentation [ASan][RISCV] Fix RISC-V memory mapping 2021-04-06 20:46:17 +01:00
ObjCARC Move ObjCARCUtil.h back to llvm/Analysis 2021-03-08 16:35:24 -08:00
Scalar Revert "[LoopInterchange] Fix transformation bugs in loop interchange" 2021-04-07 21:17:30 -04:00
Utils [SplitEdge] Update SplitCriticalEdge to return a nullptr only when the edge is not critical 2021-04-06 21:24:40 +00:00
Vectorize [LV] Logical and/or select costs 2021-04-08 10:39:47 +01:00
CMakeLists.txt [NewPM][HelloWorld] Move HelloWorld to Utils 2021-02-03 12:59:40 -08:00