Commit Graph

15311 Commits

Author SHA1 Message Date
Tanya Lattner b947fb3e95 Rewrote prcontext.py in tcl.
llvm-svn: 17708
2004-11-13 21:03:22 +00:00
Chris Lattner 049d33a717 shld is a very high latency operation. Instead of emitting it for shifts of
two or three, open code the equivalent operation which is faster on athlon
and P4 (by a substantial margin).

For example, instead of compiling this:

long long X2(long long Y) { return Y << 2; }

to:

X3_2:
        movl 4(%esp), %eax
        movl 8(%esp), %edx
        shldl $2, %eax, %edx
        shll $2, %eax
        ret

Compile it to:

X2:
        movl 4(%esp), %eax
        movl 8(%esp), %ecx
        movl %eax, %edx
        shrl $30, %edx
        leal (%edx,%ecx,4), %edx
        shll $2, %eax
        ret

Likewise, for << 3, compile to:

X3:
        movl 4(%esp), %eax
        movl 8(%esp), %ecx
        movl %eax, %edx
        shrl $29, %edx
        leal (%edx,%ecx,8), %edx
        shll $3, %eax
        ret

This matches icc, except that icc open codes the shifts as adds on the P4.

llvm-svn: 17707
2004-11-13 20:48:57 +00:00
Chris Lattner ef6bd92a8c Add missing check
llvm-svn: 17706
2004-11-13 20:04:38 +00:00
Chris Lattner 8d521bb16e Compile:
long long X3_2(long long Y) { return Y+Y; }
int X(int Y) { return Y+Y; }

into:

X3_2:
        movl 4(%esp), %eax
        movl 8(%esp), %edx
        addl %eax, %eax
        adcl %edx, %edx
        ret
X:
        movl 4(%esp), %eax
        addl %eax, %eax
        ret

instead of:

X3_2:
        movl 4(%esp), %eax
        movl 8(%esp), %edx
        shldl $1, %eax, %edx
        shll $1, %eax
        ret

X:
        movl 4(%esp), %eax
        shll $1, %eax
        ret

llvm-svn: 17705
2004-11-13 20:03:48 +00:00
Chris Lattner 8c3e7b92af Simplify handling of shifts to be the same as we do for adds. Add support
for (X * C1) + (X * C2) (where * can be mul or shl), allowing us to fold:

   Y+Y+Y+Y+Y+Y+Y+Y

into
         %tmp.8 = shl long %Y, ubyte 3           ; <long> [#uses=1]

instead of

        %tmp.4 = shl long %Y, ubyte 2           ; <long> [#uses=1]
        %tmp.12 = shl long %Y, ubyte 2          ; <long> [#uses=1]
        %tmp.8 = add long %tmp.4, %tmp.12               ; <long> [#uses=1]

This implements add.ll:test25

Also add support for (X*C1)-(X*C2) -> X*(C1-C2), implementing sub.ll:test18

llvm-svn: 17704
2004-11-13 19:50:12 +00:00
Chris Lattner f6392b4616 New testcase
llvm-svn: 17703
2004-11-13 19:49:39 +00:00
Chris Lattner 6912370a78 Add support for shifts
llvm-svn: 17702
2004-11-13 19:32:45 +00:00
Chris Lattner 4efe20a103 Fold:
(X + (X << C2)) --> X * ((1 << C2) + 1)
   ((X << C2) + X) --> X * ((1 << C2) + 1)

This means that we now canonicalize "Y+Y+Y" into:

        %tmp.2 = mul long %Y, 3         ; <long> [#uses=1]

instead of:

        %tmp.10 = shl long %Y, ubyte 1          ; <long> [#uses=1]
        %tmp.6 = add long %Y, %tmp.10               ; <long> [#uses=1]

llvm-svn: 17701
2004-11-13 19:31:40 +00:00
Chris Lattner 2858e17538 Lazily create the abort message, so only translation units that use unwind
will actually get it.

llvm-svn: 17700
2004-11-13 19:07:32 +00:00
Chris Lattner 9b0291b18d Fix: CodeExtractor/2004-11-12-InvokeExtract.ll
llvm-svn: 17699
2004-11-13 00:06:45 +00:00
Chris Lattner 8cc98850f9 New testcase
llvm-svn: 17698
2004-11-13 00:06:32 +00:00
Chris Lattner 5bcca6058a Fix a bug where the code extractor would get a bit confused handling invoke
instructions, setting DefBlock to a block it did not have dom info for.

llvm-svn: 17697
2004-11-12 23:50:44 +00:00
Chris Lattner 5c1d84c769 Simplify handling of constant initializers
llvm-svn: 17696
2004-11-12 22:42:57 +00:00
Reid Spencer a81f8197eb Makefile for lib/Linker
llvm-svn: 17695
2004-11-12 20:38:45 +00:00
Reid Spencer 361e513db0 This file originated in lib/VMCore/Linker.cpp but now lives in
lib/Linker/LinkModules.cpp

llvm-svn: 17694
2004-11-12 20:37:43 +00:00
Reid Spencer 1cfa8d60f8 This file originated in tools/gccld/Linker.cpp but now lives in
lib/Linker/LinkArchives.cpp

llvm-svn: 17693
2004-11-12 20:34:32 +00:00
Reid Spencer aee67e6547 * Clean up all the shared library output on uninstall
* Provide the correct set of input directories to the TAGS target
* Provide a CTAGS target for building Vi style ctags files.

llvm-svn: 17688
2004-11-12 02:27:36 +00:00
Reid Spencer 2ea5ae618c Document the new llvm-ranlib command.
llvm-svn: 17687
2004-11-12 00:18:35 +00:00
Reid Spencer ffb9f06135 Correctly terminate a list.
llvm-svn: 17686
2004-11-12 00:16:51 +00:00
Reid Spencer 2e34034d80 Document the modifiers and the file format.
llvm-svn: 17685
2004-11-12 00:15:43 +00:00
Chris Lattner 738c89ecec Make this build in release mode
llvm-svn: 17684
2004-11-11 22:11:17 +00:00
Reid Spencer e448500e6d Add llvm-ar to the index.
llvm-svn: 17682
2004-11-11 09:30:00 +00:00
Reid Spencer 8beeb49594 First attempt at llvm-ar documentation. Modifiers need a little more
explanation.

llvm-svn: 17681
2004-11-11 09:21:18 +00:00
Chris Lattner 9621dfab3f Actually, leave the check in. This prevents us from counting dead arguments
as IPCP opportunities.

llvm-svn: 17680
2004-11-11 07:47:54 +00:00
Chris Lattner 5fa696f8e4 Fix bug: IPConstantProp/deadarg.ll
llvm-svn: 17679
2004-11-11 07:46:29 +00:00
Chris Lattner ba582f0d11 new testcase
llvm-svn: 17678
2004-11-11 07:46:11 +00:00
Reid Spencer 45dc1394cd Fix documentation for Makefile target name change. install-bytecode is now
just "install" in the runtime directory.

llvm-svn: 17677
2004-11-11 07:30:27 +00:00
Chris Lattner c1d24cd859 Make IP Constant prop more aggressive about handling self recursive calls.
This implements IPConstantProp/recursion.ll

llvm-svn: 17666
2004-11-10 19:43:59 +00:00
Chris Lattner 59e5462557 New testcase
llvm-svn: 17665
2004-11-10 19:43:31 +00:00
John Criswell 04570265a5 Correct the name of stosd for the AT&T syntax:
It's stosl (l for long == 32 bit).

llvm-svn: 17658
2004-11-10 04:48:15 +00:00
Chris Lattner 0d3773d8b1 Do not let dead constant expressions hanging off of functions prevent IPCP.
This allows to elimination of a bunch of global pool descriptor args from
programs being pool allocated (and is also generally useful!)

llvm-svn: 17657
2004-11-09 20:47:30 +00:00
Reid Spencer e5142be411 Provide conversion from posix time.
llvm-svn: 17656
2004-11-09 20:29:10 +00:00
Reid Spencer 202eaeb272 Fix isBytecodeFile to correctly recognized compressed bytecode too.
llvm-svn: 17655
2004-11-09 20:27:23 +00:00
Reid Spencer fb1f7357c2 * Implement getStatusInfo for getting stat(2) like information
* Implement createTemporaryFile for mkstemp(3) functionality
* Fix isBytecodeFile to accept llvc magic # (compressed) as bytecode.

llvm-svn: 17654
2004-11-09 20:26:31 +00:00
Reid Spencer abbefecf8e Make sure llee can deal with compressed bytecode too.
llvm-svn: 17652
2004-11-09 20:21:25 +00:00
John Criswell 623dc9c5c0 Recognize compressed LLVM bytecode files.
This should fix the problem of not being able to link compressed LLVM
bytecode files from LLVM libraries.

llvm-svn: 17648
2004-11-09 19:37:07 +00:00
Reid Spencer 6a1a10aa54 Tune compression:
bzip2: block size 9 -> 5, reduces memory by 400Kbytes, doesn't affect speed
       or compression ratio on all but the largest bytecode files (>1MB)
zip:   level 9 -> 6, this speeds up compression time by ~30% but only
       degrades the compressed size by a few bytes per megabyte. Those few
       bytes aren't worth the effort.

llvm-svn: 17647
2004-11-09 17:58:09 +00:00
Chris Lattner 436285e75d Change this back so that I get stable numbers to reflect the change from the
nightly testers

llvm-svn: 17646
2004-11-09 08:05:23 +00:00
Reid Spencer 981afd7c1c Document quick-test target.
llvm-svn: 17644
2004-11-09 06:32:58 +00:00
Reid Spencer 3006081612 Add a quick-test target that uses QUICKTEST variable to quickly run a
portion of the test suite. e.g.:

make quck-test QUICKTEST=Regression/Bytecode

llvm-svn: 17643
2004-11-09 06:28:32 +00:00
Chris Lattner 1f0a97c6cb Fix bug: 2004-11-08-FreeUseCrash.ll
llvm-svn: 17642
2004-11-09 05:10:56 +00:00
Chris Lattner 1276fbe8ba Name file properly
llvm-svn: 17641
2004-11-09 05:07:01 +00:00
Chris Lattner 5a1e9bf72f Hrm, don't ask how I ran into this bug
llvm-svn: 17640
2004-11-09 05:06:23 +00:00
Misha Brukman 3e5dd6d34c * Convert tabs to spaces
* Order #includes according to style guide
* Remove extraneous blank lines

llvm-svn: 17639
2004-11-09 04:27:19 +00:00
Misha Brukman 8d5c13c3e3 Output the program name (in this case, gccld) with warning about invalid files
llvm-svn: 17638
2004-11-09 04:24:59 +00:00
Nate Begeman 1164955bf1 Allow hbd to be bugpointable on darwin by fixing common and linkonce codegen
llvm-svn: 17637
2004-11-09 04:01:18 +00:00
Misha Brukman 1df8148b01 Handle headers for compressed bytecode files
llvm-svn: 17634
2004-11-08 22:03:32 +00:00
Misha Brukman 465e7fb8ef Don't silently ignore invalid files: tell the user!
llvm-svn: 17633
2004-11-08 22:03:10 +00:00
Chris Lattner 068c0cf56a Fix a bug that was preventing povray and namd from pool allocating correctly.
llvm-svn: 17632
2004-11-08 21:08:46 +00:00
Chris Lattner 1feea5ffc9 Handle assert_fail special
llvm-svn: 17631
2004-11-08 21:08:28 +00:00