LLVM backend for 6502
Go to file
Chris Lattner de1c3605a6 Add a couple dag combines to transform mulhi/mullo into a wider multiply
when the wider type is legal.  This allows us to compile:

define zeroext i16 @test1(i16 zeroext %x) nounwind {
entry:
	%div = udiv i16 %x, 33
	ret i16 %div
}

into:

test1:                                  # @test1
	movzwl	4(%esp), %eax
	imull	$63551, %eax, %eax      # imm = 0xF83F
	shrl	$21, %eax
	ret

instead of:

test1:                                  # @test1
        movw    $-1985, %ax             # imm = 0xFFFFFFFFFFFFF83F
        mulw    4(%esp)
        andl    $65504, %edx            # imm = 0xFFE0
        movl    %edx, %eax
        shrl    $5, %eax
        ret

Implementing rdar://8760399 and example #4 from:
http://blog.regehr.org/archives/320

We should implement the same thing for [su]mul_hilo, but I don't
have immediate plans to do this.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121696 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-13 08:39:01 +00:00
autoconf Use GZIPBIN instead of GZIP. Apparently gzip uses GZIP as an environment 2010-12-10 01:31:51 +00:00
bindings
cmake Reverting commit to LLVMLibDeps that was inadvertently done in 121649. 2010-12-12 22:28:51 +00:00
docs further fixes. 2010-12-13 00:17:12 +00:00
examples
include Introduce a new PartialAlias response for AliasAnalysis. For most 2010-12-10 19:38:58 +00:00
lib Add a couple dag combines to transform mulhi/mullo into a wider multiply 2010-12-13 08:39:01 +00:00
projects Regen configure 2010-12-12 21:42:01 +00:00
runtime
test Add a couple dag combines to transform mulhi/mullo into a wider multiply 2010-12-13 08:39:01 +00:00
tools macho-dump: Fix CMake build, following up to r121466. 2010-12-10 09:18:26 +00:00
unittests
utils Add support for using the `!if' operator when initializing variables: 2010-12-13 01:46:19 +00:00
website
build-for-llvm-top.sh
CMakeLists.txt CMake: Add FileUpdate to the build. 2010-12-09 17:54:44 +00:00
configure Use GZIPBIN instead of GZIP. Apparently gzip uses GZIP as an environment 2010-12-10 01:31:51 +00:00
CREDITS.TXT Another git svn dcommit test. This time let's hope it doesn't kill my repo. 2010-12-10 14:45:10 +00:00
LICENSE.TXT
llvm.spec.in
Makefile
Makefile.common
Makefile.config.in Use GZIPBIN instead of GZIP. Apparently gzip uses GZIP as an environment 2010-12-10 01:31:51 +00:00
Makefile.rules
ModuleInfo.txt
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 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.