LLVM backend for 6502
Go to file
Arnold Schwaighofer 08a0e8f8db LoopVectorizer: integer division is not a reduction operation
Don't classify idiv/udiv as a reduction operation. Integer division is lossy.
For example : (1 / 2) * 4 != 4/2.

Example:

int a[] = { 2, 5, 2, 2}
int x = 80;

for()
  x /= a[i];

Scalar:
  x /= 2 // = 40
  x /= 5 // = 8
  x /= 2 // = 4
  x /= 2 // = 2

Vectorized:

 <80, 1> / <2,5> //= <40,0>
 <40, 0> / <2,2> //= <20,0>

 20*0 = 0

radar://13640654

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179381 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-12 15:15:19 +00:00
autoconf Refine fenv.h handling: check if the desired macros exist, before using 2013-03-25 13:13:33 +00:00
bindings
cmake Don't explicitly provide -pie in MSan bootstrap of LLVM, as it's now implied by the driver 2013-04-12 07:18:55 +00:00
docs Teach llvm-readobj to print ELF program headers 2013-04-12 04:07:39 +00:00
examples
include Revert broken pieces of r179373. 2013-04-12 12:13:51 +00:00
lib LoopVectorizer: integer division is not a reduction operation 2013-04-12 15:15:19 +00:00
projects Print a warning message if compiler-rt can't be built because of old CMake version to make this requirement more visible to users 2013-03-05 14:43:07 +00:00
runtime Remove GCDAProfiling.c. This copy is old, the copy in compiler-rt is newer and 2013-03-07 02:03:08 +00:00
test LoopVectorizer: integer division is not a reduction operation 2013-04-12 15:15:19 +00:00
tools Revert broken pieces of r179373. 2013-04-12 12:13:51 +00:00
unittests Fix a disconcerting bug in Value::isUsedInBasicBlock, which gave wrong answers for blocks larger than 3 instrs. 2013-04-12 08:33:11 +00:00
utils Add CLAC/STAC instruction encoding/decoding support 2013-04-11 04:52:28 +00:00
.arcconfig
.gitignore
CMakeLists.txt Revert "TMP" 2013-04-10 12:08:57 +00:00
CODE_OWNERS.TXT Move info to CREDITS.TXT file. 2013-04-10 21:56:52 +00:00
configure Refine fenv.h handling: check if the desired macros exist, before using 2013-03-25 13:13:33 +00:00
CREDITS.TXT Add myself in the CREDITS.TXT 2013-04-11 13:15:39 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile Improved svn repo searching for 'make update' 2013-01-28 03:19:57 +00:00
Makefile.common
Makefile.config.in Turn anonymous type in anonymous union warning back on after cleaning up 2013-03-15 00:43:00 +00:00
Makefile.rules Make check depend on all. 2013-04-09 19:42:12 +00:00
README.txt Revert "Test commit" 2013-02-22 19:19:41 +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.