1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00
llvm-mirror/lib
Craig Topper 83013c5746 [X86] More accurately model the cost of horizontal reductions.
This patch attempts to more accurately model the reduction of
power of 2 vectors of types we natively support. This takes into
account the narrowing of vectors that occur as we go from 512
bits to 256 bits, to 128 bits. It also takes into account the use
of wider elements in the shuffles for the first 2 steps of a
reduction from 128 bits. And uses a v8i16 shift for the final step
of vXi8 reduction.

The default implementation uses the legalized type for the arithmetic
for all levels. And uses the single source permute cost of the
legalized type for all levels. This penalizes things like
lack of v16i8 pshufb on pre-sse3 targets and the splitting and
joining that needs to be done for integer types on AVX1. We never
need v16i8 shuffle for a reduction and we only need split AVX1 ops
when type the type wide and needs to be split. I think we're still
over costing splits and joins for AVX1, but we're closer now.

I've also removed all pairwise special casing because I don't
think we ever want to generate that on X86. I've also adjusted
the add handling to more accurately account for any type splitting
that occurs before we reach a legal type.

Differential Revision: https://reviews.llvm.org/D76478
2020-03-22 14:20:15 -07:00
..
Analysis Add Triple::isAMDGPU 2020-03-22 14:20:28 -04:00
AsmParser Add debug info support for Swift/Clang APINotes. 2020-03-11 18:47:30 -07:00
BinaryFormat [DebugInfo]: Added DWARFv5 macro header flags and corresponding helper 2020-03-07 17:53:01 +05:30
Bitcode Add debug info support for Swift/Clang APINotes. 2020-03-11 18:47:30 -07:00
Bitstream
CodeGen [DAGCombiner] Require nsz for aggressive fma fold 2020-03-22 23:10:07 +08:00
DebugInfo Cleanup the plumbing for DILineInfoSpecifier. [NFC - Try 2] 2020-03-20 10:29:57 -07:00
Demangle
DWARFLinker Revert "Allow remapping the sysroot with -fdebug-prefix-map." 2020-03-20 16:27:23 -07:00
ExecutionEngine [ORC] Move ostream operators for debugging output out of Core.h. 2020-03-21 18:27:28 -07:00
Frontend
Fuzzer
FuzzMutate Remove CompositeType class. 2020-03-18 13:53:17 -07:00
IR Verifier: Check bswap is supported size 2020-03-22 12:15:25 -04:00
IRReader
LineEditor
Linker
LTO [LTO] onfig::addSaveTemps: clear ResolutionFile upon an error 2020-03-02 17:49:04 -08:00
MC Revert rGd5d8569df14e95e2c53d167bd1b37995bcbec565 "Fix static analysis warnings about classes with virtual methods not having virtual destructors" 2020-03-21 11:39:34 +00:00
MCA
Object Drop a StringMap.h include, NFC 2020-03-11 15:45:34 -07:00
ObjectYAML [yaml2obj] - Add ELFYAML::YAMLIntUInt to fix how we parse a relocation Addend key. 2020-03-17 14:22:19 +03:00
Option
Passes [memtag] Plug in stack safety analysis. 2020-03-16 16:35:25 -07:00
ProfileData [Coverage] Collect all function records in an object (D69471 followup) 2020-03-02 12:01:09 -08:00
Remarks
Support [Support] Improve Windows widenPath and add support for long UNC paths 2020-03-19 13:00:21 +00:00
TableGen Explicitly include <cassert> when using assert 2020-03-02 22:45:28 +01:00
Target [X86] More accurately model the cost of horizontal reductions. 2020-03-22 14:20:15 -07:00
Testing
TextAPI [llvm][MachO] fix adding weak def syms 2020-03-02 17:00:24 -08:00
ToolDrivers
Transforms [InstCombine] Remove ExpensiveCombines option 2020-03-22 16:56:28 +01:00
WindowsManifest Try to fix WindowsManifest CMake logic on Windows 2020-02-28 17:24:03 -08:00
XRay
CMakeLists.txt
LLVMBuild.txt