LLVM backend for 6502
Go to file
James Molloy d594ba0815 Reapply r237539 with a fix for the Chromium build.
Make sure if we're truncating a constant that would then be sign extended
that the sign extension of the truncated constant is the same as the
original constant.

> Canonicalize min/max expressions correctly.
>
> This patch introduces a canonical form for min/max idioms where one operand
> is extended or truncated. This often happens when the other operand is a
> constant. For example:
>
> %1 = icmp slt i32 %a, i32 0
> %2 = sext i32 %a to i64
> %3 = select i1 %1, i64 %2, i64 0
>
> Would now be canonicalized into:
>
> %1 = icmp slt i32 %a, i32 0
> %2 = select i1 %1, i32 %a, i32 0
> %3 = sext i32 %2 to i64
>
> This builds upon a patch posted by David Majenemer
> (https://www.marc.info/?l=llvm-commits&m=143008038714141&w=2). That pass
> passively stopped instcombine from ruining canonical patterns. This
> patch additionally actively makes instcombine canonicalize too.
>
> Canonicalization of expressions involving a change in type from int->fp
> or fp->int are not yet implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237821 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-20 18:41:25 +00:00
autoconf Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
bindings IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
cmake Try to fix the build with MSVC 2015 by disabling sized deallocation 2015-05-19 23:28:23 +00:00
docs Dereferenceable, dereferenceable_or_null metadata for loads 2015-05-19 20:10:19 +00:00
examples BrainF.cpp: Update CreateCall() according to r237624. 2015-05-19 06:50:19 +00:00
include MC: Use MCSymbol in LocalCommon, NFC 2015-05-20 18:25:40 +00:00
lib Reapply r237539 with a fix for the Chromium build. 2015-05-20 18:41:25 +00:00
projects build: make libunwind a proper project 2015-04-25 01:47:39 +00:00
test Reapply r237539 with a fix for the Chromium build. 2015-05-20 18:41:25 +00:00
tools [DWARF parser] Make DWARF parser more robust against missing compile/type units. 2015-05-19 21:54:32 +00:00
unittests Get Triple::getARMCPUForArch() to use TargetParser 2015-05-20 15:05:07 +00:00
utils Improve check on git-svnrevert, better error message 2015-05-16 10:23:48 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Enable solid lzma compression for cpack, decreases setup size by ~30% 2015-05-14 17:07:41 +00:00
CODE_OWNERS.TXT Added Andrey Churbanov as the owner of the OpenMP runtime library code 2015-05-05 20:17:53 +00:00
configure Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in Tidy up. s/Low Level Virtual Machine/LLVM/. 2012-01-25 22:00:23 +00:00
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
Makefile.rules
README.txt

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.

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.