Go to file
Matt Davis 362ea5f2c3 [llvm-mca] Add HardwareUnit and Context classes.
This patch moves the construction of the default backend from llvm-mca.cpp and
into mca::Context. The Context class is responsible for holding ownership of
the simulated hardware components. These components are subclasses of
HardwareUnit. Right now the HardwareUnit is pretty bare-bones, but eventually
we might want to add some common functionality across all hardware components,
such as isReady() or something similar.

I have a feeling this patch will probably need some updates, but it's a start.
One thing I am not particularly fond of is the rather large interface for
createDefaultPipeline. That convenience routine takes a rather large set of
inputs from the llvm-mca driver, where many of those inputs are generated via
command line options.

One item I think we might want to change is the separating of ownership of
hardware components (owned by the context) and the pipeline (which owns
Stages). In short, a Pipeline owns Stages, a Context (currently) owns hardware.
The Pipeline's Stages make use of the components, and thus there is a lifetime
dependency generated. The components must outlive the pipeline. We could solve
this by having the Context also own the Pipeline, and not return a
unique_ptr<Pipeline>. Now that I think about it, I like that idea more.

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

llvm-svn: 336456
2018-07-06 18:03:14 +00:00
clang [Driver,AArch64] Add support for -mcpu=native. 2018-07-06 10:49:59 +00:00
clang-tools-extra [clangd] Make SymbolOrigin an enum class, rather than a plain enum. 2018-07-06 11:50:49 +00:00
compiler-rt Recommit "[CMake] Run libFuzzer tests with check-all." 2018-07-06 17:22:02 +00:00
debuginfo-tests [debuginfo-tests] Always use the system python to invoke llgdb.py. 2018-06-10 19:38:26 +00:00
libclc atom: Use volatile pointers for cl_khr_{global,local}_int32_{base,extended}_atomics 2018-06-21 19:27:39 +00:00
libcxx Revert "[libc++] Replace uses of _LIBCPP_ALWAYS_INLINE by _LIBCPP_INLINE_VISIBILITY" 2018-07-05 18:41:50 +00:00
libcxxabi [demangler] Avoid alignment warning 2018-07-05 06:24:29 +00:00
libunwind Introduce a separate preprocessor macro, _LIBUNWIND_USE_DLADDR, for directly controlling a dependency on dladdr(). This will allow us to use libunwind without adding a libdl dependency. 2018-06-29 20:41:50 +00:00
lld [ELF] - Add test for empty version in a symbol name. 2018-07-06 15:03:53 +00:00
lldb Remove a bunch more references to _LIBCPP_INLINE_VISIBILITY 2018-07-06 00:16:21 +00:00
llgo Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
llvm [llvm-mca] Add HardwareUnit and Context classes. 2018-07-06 18:03:14 +00:00
openmp Define the __STDC_FORMAT_MACROS to avoid test failure on some platforms. 2018-07-06 14:15:59 +00:00
parallel-libs Update copyright year to 2018. 2018-06-18 12:22:17 +00:00
polly Add a file that was missing in r336425 2018-07-06 11:33:35 +00:00
README.md

README.md

Low Level Virtual Machine (LLVM)

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