llvm-project/llvm/lib
Amara Emerson 95ac3d15e9 [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization.
For some reductions like G_VECREDUCE_OR on AArch64, we need to scalarize
completely if the source is <= 64b. This change adds support for that in
the legalizer. If the source has a pow-2 num elements, then we can do
a tree reduction using the scalar operation in the individual elements.
Otherwise, we just create a sequential chain of operations.

For AArch64, we only need to scalarize if the input is <64b. If it's great than
64b then we can first do a fewElements step to 64b, taking advantage of vector
instructions until we reach the point of scalarization.

I also had to relax the verifier checks for reductions because the intrinsics
support <1 x EltTy> types, which we lower to scalars for GlobalISel.

Differential Revision: https://reviews.llvm.org/D108276
2021-08-19 16:38:52 -07:00
..
Analysis MemoryBuiltins: trailing , on collection literal 2021-08-19 17:59:23 +02:00
AsmParser Revert "[DebugInfo] generate btf_tag annotations for DIComposite types" 2021-08-19 15:54:38 -07:00
BinaryFormat [llvm][clang][NFC] updates inline licence info 2021-08-11 02:48:53 +00:00
Bitcode Revert "[DebugInfo] generate btf_tag annotations for DIComposite types" 2021-08-19 15:54:38 -07:00
Bitstream
CodeGen [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization. 2021-08-19 16:38:52 -07:00
DWARFLinker [Debug-Info][llvm-dwarfdump] Don't try to dump location 2021-07-27 07:28:59 +00:00
DWP [DWP] Refactoring llvm-dwp in to a library part 2 2021-07-22 14:23:29 -07:00
DebugInfo [DWARF][Verifier][NFC] Use reference to DWARFAddressRangesVector to avoid copying. 2021-08-19 16:23:05 +03:00
Demangle Demangle: correct swift_async demangling for Microsoft scheme 2021-07-14 11:43:44 -07:00
ExecutionEngine Avoid unused variable when NDEBUG 2021-08-19 13:00:16 +02:00
Extensions
FileCheck [llvm] Rename StringRef _lower() method calls to _insensitive() 2021-06-25 00:22:01 +03:00
Frontend [libomptarget][devicertl] Replace lanemask with uint64 at interface 2021-08-18 20:47:33 +01:00
FuzzMutate [NewPM][FuzzMutate] Fix renaming 'unswitch' to 'simple-loop-unswitch' 2021-07-09 12:24:12 +02:00
Fuzzer
IR [InstrProfiling] Make COFF use the ELF comdat scheme (drop link.exe compatibility) 2021-08-19 16:38:32 -07:00
IRReader
InterfaceStub [IFS] Fix the copy constructor warning in IFSStub.cpp 2021-08-13 10:17:53 -07:00
LTO [SampleFDO] Flow Sensitive Sample FDO (FSAFDO) profile loader 2021-08-18 18:37:35 -07:00
LineEditor
Linker [Linker] Import GlobalIFunc when importing symbols from another module 2021-08-14 22:01:11 -07:00
MC [MCParser] Correctly handle CRLF line ends when consuming line comments 2021-08-17 15:52:51 +01:00
MCA [MCA] Use LSU for the in-order pipeline 2021-07-29 14:40:23 +03:00
Object [Object] Move llvm-nm's symbol version utility to ELFObjectFile::readDynsymVersions 2021-08-17 09:06:39 -07:00
ObjectYAML [yaml2obj] Enable support for parsing 64-bit XCOFF. 2021-07-30 02:06:04 +00:00
Option [OptTable] Refine how `printHelp` treats empty help texts 2021-08-19 09:30:15 +00:00
Passes [NewPM] Make some sanitizer passes parameterized in the PassRegistry 2021-08-19 12:43:37 +02:00
ProfileData [SamplePGO][NFC] Dump function profiles in order 2021-08-16 17:22:30 -07:00
Remarks
Support [Support] Update `MD5` to follow other hashes. 2021-08-19 14:13:14 -07:00
TableGen
Target [AArch64][GlobalISel] Add G_VECREDUCE fewerElements support for full scalarization. 2021-08-19 16:38:52 -07:00
Testing
TextAPI
ToolDrivers [OptTable] Rename PrintHelp to printHelp 2021-06-24 14:47:03 -07:00
Transforms [InstrProfiling] Make COFF use the ELF comdat scheme (drop link.exe compatibility) 2021-08-19 16:38:32 -07:00
WindowsManifest
XRay
CMakeLists.txt [DWP] Refactoring llvm-dwp in to a library part 2 2021-07-22 14:23:29 -07:00