1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
Go to file
Chris Lattner 7dfeebafe5 [Support/Parallel] Add a special case for 0/1 items to llvm::parallel_for_each.
This avoids the non-trivial overhead of creating a TaskGroup in these degenerate
cases, but also exposes parallelism.  It turns out that the default executor
underlying TaskGroup prevents recursive parallelism - so an instance of a task
group being alive will make nested ones become serial.

This is a big issue in MLIR in some dialects, if they have a single instance of
an outer op (e.g. a firrtl.circuit) that has many parallel ops within it (e.g.
a firrtl.module).  This patch side-steps the problem by avoiding creating the
TaskGroup in the unneeded case.  See this issue for more details:
https://github.com/llvm/circt/issues/993

Note that this isn't a really great solution for the general case of nested
parallelism.  A redesign of the TaskGroup stuff would be better, but would be
a much more invasive change.

Differential Revision: https://reviews.llvm.org/D101699
2021-05-03 10:08:00 -07:00
benchmarks
bindings [NFC][OCaml] Reformat to clean up following CAMLprim removal 2021-04-05 10:55:08 +01:00
cmake [cmake] Use -ffunction-sections and -Wl,--gc-sections on MinGW targets 2021-04-30 10:53:40 +03:00
docs [doc] typo fixes 2021-05-03 10:59:51 +02:00
examples [Orc][examples] Add missing FileCheck for lit test and polish output 2021-04-07 11:12:20 +02:00
include [Support/Parallel] Add a special case for 0/1 items to llvm::parallel_for_each. 2021-05-03 10:08:00 -07:00
lib [AArch64] Fold CSEL x, x, cc -> x 2021-05-03 17:34:05 +01:00
projects llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
resources
runtimes [runtimes] Add the libc project to the list of runtimes. 2021-03-23 17:33:03 +00:00
test [AArch64] Fold CSEL x, x, cc -> x 2021-05-03 17:34:05 +01:00
tools Reland "AMDGPU/llvm-readobj: Add missing tests for note parsing/displaying" 2021-05-02 22:56:17 -04:00
unittests [ADT] Add llvm::remove_cvref and llvm::remove_cvref_t 2021-04-30 18:22:38 +00:00
utils Partial revert of "Use std::foo_t rather than std::foo in LLVM." in googlebench 2021-05-03 07:49:30 -07:00
.clang-format
.clang-tidy
.gitattributes
.gitignore Remove .gitignore entries not relevant in the monorepo. 2021-04-07 12:25:02 -07:00
CMakeLists.txt [cmake] Configure policy CMP0116 2021-04-23 08:57:40 -07:00
CODE_OWNERS.TXT [M68k][CODE_OWNERS](0/8) Add code owner for the M68k target 2021-03-08 12:30:56 -08:00
configure
CREDITS.TXT Update personal info in CREDITS.TXT 2021-04-11 19:25:02 +08:00
LICENSE.TXT
llvm.spec.in
README.txt
RELEASE_TESTERS.TXT

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.