LLVM backend for 6502
Go to file
Hal Finkel c72cf87285 Add an OutPatFrag TableGen class
Unfortunately, it is currently impossible to use a PatFrag as part of an output
pattern (the part of the pattern that has instructions in it) in TableGen.
Looking at the current implementation, this was clearly intended to work (there
is already code in place to expand patterns in the output DAG), but is
currently broken by the baked-in type-checking assumption and the order in which
the pattern fragments are processed (output pattern fragments need to be
processed after the instruction definitions are processed).

Fixing this is fairly simple, but requires some way of differentiating output
patterns from the existing input patterns. The simplest way to handle this
seems to be to create a subclass of PatFrag, and so that's what I've done here.

As a simple example, this allows us to write:

def crnot : OutPatFrag<(ops node:$in),
                       (CRNOR $in, $in)>;

def       : Pat<(not i1:$in),
                (crnot $in)>;

which captures the core use case: handling of repeated subexpressions inside
of complicated output patterns.

This will be used by an upcoming commit to the PowerPC backend.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202450 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-28 00:26:56 +00:00
autoconf Add aarch64 to config.guess 2014-02-25 09:30:54 +00:00
bindings [python-bindings] Remove some cruft that snuck in. 2014-02-23 04:43:26 +00:00
cmake [CMake] Work around to use target_link_libraries(PUBLIC) in BUILD_SHARED_LIBS mode. 2014-02-26 11:58:11 +00:00
docs [docs] Stop advertising 'make update'. It isn't implemented in CMake and 2014-02-27 21:19:42 +00:00
examples Use DataLayout from the module when easily available. 2014-02-25 23:25:17 +00:00
include Add an OutPatFrag TableGen class 2014-02-28 00:26:56 +00:00
lib Fix visitTRUNCATE for legal i1 values 2014-02-28 00:26:45 +00:00
projects [CMake] Introduce LLVM_BUILD_EXTERNAL_COMPILER_RT option 2014-02-27 08:59:01 +00:00
test Lower FNEG just like FABS to fneg[ds] and fmov[ds], thus avoiding 2014-02-27 19:26:29 +00:00
tools Remove unnecessary temporary variable. 2014-02-28 00:06:20 +00:00
unittests Use the overloaded std::abs rather than C's abs(int) to address Clang's -Wabsolute-value 2014-02-26 19:12:28 +00:00
utils Add an OutPatFrag TableGen class 2014-02-28 00:26:56 +00:00
.arcconfig
.clang-format
.gitignore Added .DS_Store entry in .gitignore for ignoring .DS_Store files in the source 2014-01-25 15:15:16 +00:00
CMakeLists.txt [CMake] Introduce LLVM_BUILD_EXTERNAL_COMPILER_RT option 2014-02-27 08:59:01 +00:00
CODE_OWNERS.TXT Add myself as owner for libc++ 2014-02-18 14:03:17 +00:00
configure Add version, arch, system libs, and targets to Makefile.config 2014-02-09 16:36:42 +00:00
CREDITS.TXT Fix documentation typos 2013-12-20 00:33:39 +00:00
LICENSE.TXT Update the copyright credits -- Happy new year 2014! 2014-01-01 08:27:31 +00:00
llvm.spec.in
LLVMBuild.txt Remove the very substantial, largely unmaintained legacy PGO 2013-10-02 15:42:23 +00:00
Makefile Provide CMake package modules in install tree 2014-02-09 16:37:02 +00:00
Makefile.common
Makefile.config.in Add version, arch, system libs, and targets to Makefile.config 2014-02-09 16:36:42 +00:00
Makefile.rules Provide CMake package modules in install tree 2014-02-09 16:37:02 +00:00
README.txt Revert "Test commit to check e-mail address. Please discard this." 2013-10-04 10:59:13 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, 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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.