LLVM backend for 6502
Go to file
David Majnemer 594e4a1dd3 InstSimplify: Simplify trivial pointer expressions like b + (e - b)
consider:
long long *f(long long *b, long long *e) {
  return b + (e - b);
}

we would lower this to something like:
define i64* @f(i64* %b, i64* %e) {
  %1 = ptrtoint i64* %e to i64
  %2 = ptrtoint i64* %b to i64
  %3 = sub i64 %1, %2
  %4 = ashr exact i64 %3, 3
  %5 = getelementptr inbounds i64* %b, i64 %4
  ret i64* %5
}

This should fold away to just 'e'.

N.B.  This adds m_SpecificInt as a convenient way to match against a
particular 64-bit integer when using LLVM's match interface.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216439 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-26 05:55:16 +00:00
autoconf Delete support for AuroraUX. 2014-08-14 15:15:09 +00:00
bindings [OCaml] Expose Llvm.get_operand_use. 2014-08-12 02:55:45 +00:00
cmake cmake: actually test -Wcomment 2014-08-23 21:10:58 +00:00
docs Declare that musttail calls in variadic functions forward the ellipsis 2014-08-26 00:33:28 +00:00
examples Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
include InstSimplify: Simplify trivial pointer expressions like b + (e - b) 2014-08-26 05:55:16 +00:00
lib InstSimplify: Simplify trivial pointer expressions like b + (e - b) 2014-08-26 05:55:16 +00:00
projects [cmake] Use the external project machinery for libcxxabi so that it can 2014-07-25 10:27:40 +00:00
test InstSimplify: Simplify trivial pointer expressions like b + (e - b) 2014-08-26 05:55:16 +00:00
tools Modernize raw_fd_ostream's constructor a bit. 2014-08-25 18:16:47 +00:00
unittests Fix Path unittests on Windows after raw_fd_ostream changes 2014-08-26 00:24:23 +00:00
utils [SKX] avx512_icmp_packed multiclass extension 2014-08-25 14:49:34 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt Fix building with in-tree libc++abi on FreeBSD 2014-08-01 19:23:15 +00:00
CODE_OWNERS.TXT Add a sentence that all entries should include an email address. 2014-08-04 19:33:25 +00:00
configure Delete support for AuroraUX. 2014-08-14 15:15:09 +00:00
CREDITS.TXT Rise from the dead and update personal info 2014-08-25 17:51:04 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Track clang r213171 2014-07-16 16:50:34 +00:00
Makefile.rules Delete support for AuroraUX. 2014-08-14 15:15:09 +00:00
README.txt

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.