LLVM backend for 6502
Go to file
Nadav Rotem 2ee746b87d This patch addresses the problem of poor code generation for the zext
v8i8 -> v8i32 on AVX machines. The codegen often scalarizes ANY_EXTEND nodes.
The DAGCombiner has two optimizations that can mitigate the problem. First,
if all of the operands of a BUILD_VECTOR node are extracted from an ZEXT/ANYEXT
nodes, then it is possible to create a new simplified BUILD_VECTOR which uses
UNDEFS/ZERO values to eliminate the scalar ZEXT/ANYEXT nodes.
Second, another dag combine optimization lowers BUILD_VECTOR into a shuffle
vector instruction.

In the case of zext v8i8->v8i32 on AVX, a value in an XMM register is to be
shuffled into a wide YMM register.

This patch modifes the second optimization and allows the creation of
shuffle vectors even when the newly generated vector and the original vector
from which we extract the values are of different types.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150340 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-12 15:05:31 +00:00
autoconf autoconf: put generated clang files in build dir 2012-02-04 03:00:50 +00:00
bindings ocaml bindings: landing pad is now the last opcode. 2012-02-07 18:58:19 +00:00
cmake CMake: Add the folder "Tablegenning" on llvm-tblgen targets. 2012-01-30 03:01:03 +00:00
docs Document the new module flags. 2012-02-11 11:59:36 +00:00
examples Update ExceptionDemo to use ConstantDataArray. 2012-02-06 14:09:13 +00:00
include Expose the ELFObjectFile class directly in the Object/ELF.h header, similarly 2012-02-12 06:12:10 +00:00
lib This patch addresses the problem of poor code generation for the zext 2012-02-12 15:05:31 +00:00
projects Replace the old --with-cxx-* configure options with a single --with-gcc-toolchain 2012-02-03 00:59:30 +00:00
runtime Fixing a warning in MSVC (this is also a test commit) 2012-02-05 19:43:39 +00:00
test This patch addresses the problem of poor code generation for the zext 2012-02-12 15:05:31 +00:00
tools RegAlloc superpass: includes phi elimination, coalescing, and scheduling. 2012-02-10 04:10:36 +00:00
unittests Add a unittest for rotating a really big APInt. 2012-02-07 16:27:39 +00:00
utils Make the EDis tables const. 2012-02-11 14:51:07 +00:00
.gitignore git: Add tools/lldb to the ignore list. 2011-11-10 22:55:50 +00:00
CMakeLists.txt cmake: update outdated CPack version info 2012-02-04 02:52:48 +00:00
configure autoconf: put generated clang files in build dir 2012-02-04 03:00:50 +00:00
CREDITS.TXT CREDITS.TXT: Add a line. (test commit) 2011-10-29 23:42:14 +00:00
LICENSE.TXT Happy new year 2012! 2012-01-01 08:16:56 +00:00
llvm.spec.in Tidy up. s/Low Level Virtual Machine/LLVM/. 2012-01-25 22:00:23 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Makefile: add missing files to FilesToConfig 2012-01-17 02:56:49 +00:00
Makefile.common
Makefile.config.in capitalize project name, reference bugzilla 2011-12-18 18:50:16 +00:00
Makefile.rules build/make: Ensure make clean removes the LLVMBuild makefile fragment. 2012-02-02 23:27:34 +00:00
README.txt test commit 2012-02-07 08:18:05 +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 HTML documentation provided in docs/index.html for further
assistance with LLVM.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.