Commit Graph

14477 Commits

Author SHA1 Message Date
Reid Spencer
d722bf5c28 FreeBSD implementation of the TimeValue::now() method.
Patch kindly contributed by Jeff Cohen. Thanks Jeff!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16562 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 23:54:12 +00:00
Chris Lattner
b4f40d2059 Fold (X setcc C1) | (X setcc C2)
This implements or.ll:test1[89]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16561 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 22:33:08 +00:00
Chris Lattner
0b948848eb New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16560 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 22:31:49 +00:00
Chris Lattner
955f331a77 Fold (and (setcc X, C1), (setcc X, C2))
This is important for several reasons:

1. Benchmarks have lots of code that looks like this (perlbmk in particular):

  %tmp.2.i = setne int %tmp.0.i, 128              ; <bool> [#uses=1]
  %tmp.6343 = seteq int %tmp.0.i, 1               ; <bool> [#uses=1]
  %tmp.63 = and bool %tmp.2.i, %tmp.6343          ; <bool> [#uses=1]

   we now fold away the setne, a clear improvement.

2. In the more important cases, such as (X >= 10) & (X < 20), we now produce
   smaller code: (X-10) < 10.

3. Perhaps the nicest effect of this patch is that it really helps out the
   code generators.  In particular, for a 'range test' like the above,
   instead of generating this on X86 (the difference on PPC is even more
   pronounced):

        cmp %EAX, 50
        setge %CL
        cmp %EAX, 100
        setl %AL
        and %CL, %AL
        cmp %CL, 0

   we now generate this:

        add %EAX, -50
        cmp %EAX, 50

   Furthermore, this causes setcc's to be folded into branches more often.

These combinations trigger dozens of times in the spec benchmarks, particularly
in 176.gcc, 186.crafty, 253.perlbmk, 254.gap, & 099.go.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16559 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 21:48:02 +00:00
Misha Brukman
7f12bbbc92 * Add `deplibs' keyword for specifying a list of dependent libraries
* Convert tabs to spaces


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16558 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 21:46:18 +00:00
Misha Brukman
137c8fb8ba Add `deplibs' keyword for specifying a list of dependent libraries
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16557 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 21:45:54 +00:00
Chris Lattner
3b03395b38 New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16556 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 21:39:35 +00:00
Nate Begeman
8d5c50329b Add support for the isLoad and isStore flags, needed by the instruction scheduler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16555 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 21:29:00 +00:00
Nate Begeman
cdd66b524f Add support for the isLoad and isStore flags, needed by the instruction scheduler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16554 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 21:01:45 +00:00
Chris Lattner
5b71d3af35 Turn the hasDelaySlot flag into the M_DELAY_SLOT_FLAG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16553 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:38:01 +00:00
Chris Lattner
49db6fe193 Be consistent with our naming
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16552 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:37:00 +00:00
Chris Lattner
7baaf09f9f Capture delay slot info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16551 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:34:14 +00:00
Chris Lattner
dcc4a6f705 Capture information about whether the target instructions have delay slots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16550 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:33:50 +00:00
Chris Lattner
18d19ca6df Implement X / C1 / C2 folding
Implement (setcc (shl X, C1), C2) folding.

The second one occurs several dozen times in spec.  The first was added
just in case.  :)

These are tested by shift.ll:test2[12], and div.ll:test5


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16549 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:22:15 +00:00
Chris Lattner
46c4dcde44 New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16548 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:21:01 +00:00
Chris Lattner
59359f1e84 New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16547 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 18:18:35 +00:00
Chris Lattner
0cba71b0d6 shl is always zero extending, so always use a zero extending shift right.
This latent bug was exposed by recent changes, and is tested as:
llvm/test/Regression/Transforms/InstCombine/2004-09-28-BadShiftAndSetCC.llx


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16546 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 17:54:07 +00:00
Chris Lattner
8fb6882f19 New testcase for a latent bug in instcombine that I have been chasing for
1.5 days :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16545 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 17:50:05 +00:00
Misha Brukman
e39cd63ddd * InstructionReader.cpp was absorbed into Reader.cpp
* Wrap at 80 cols


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16543 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 16:58:12 +00:00
Misha Brukman
44666b15b1 Fix doxygen comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16542 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 16:57:46 +00:00
Brian Gaeke
90c82b9322 Touch output files before reading or writing them, so that they are
always guaranteed to exist. This fixes PR444. Thanks to Alkis
for reporting the bug and testing the patch.
AddRecord used to return a big list, but that return value was never
used. So now it doesn't return anything.
Create the WebDir if it does not exist.
Fix a typo in a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16541 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 16:04:00 +00:00
John Criswell
ef672a691c Corrected spelling of Makefile variable, thereby re-enabling profile
builds for projects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16540 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 14:52:58 +00:00
Alkis Evlogimenos
c72c617a4e Add includes and use std:: for standard library calls to make code
compile on windows. This patch was contributed by Paolo Invernizzi.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16539 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 14:42:44 +00:00
Chris Lattner
98e81bf16b Bug fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16538 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 03:45:22 +00:00
Chris Lattner
f9b28d2d74 Testcase for LLVM PR445
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16537 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 03:36:39 +00:00
Alkis Evlogimenos
f3ba6ddbec Since we use alloca now make sure we include the proper headers for it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16536 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 02:53:15 +00:00
Alkis Evlogimenos
0ee6e2a6da Use alloca instead of a C99 style array. This should fix the
compilation problem in windows.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16535 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 02:47:38 +00:00
Alkis Evlogimenos
200a360ec6 Pull assignment out of for loop conditional in order for this to
compile under windows. Patch contributed by Paolo Invernizzi!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16534 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 02:40:37 +00:00
Alkis Evlogimenos
c4d3b91816 Fix includes. Patch contributed by Paolo Invernizzi!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16533 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 02:38:58 +00:00
Chris Lattner
584902e0a3 New testcase that crashes the C++ FE, encountered while working on PR445
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16532 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 02:29:40 +00:00
Alkis Evlogimenos
148d2065e4 Use class instead of struct for defining classes. This unbreaks the
build on windows. Patch contributed by Paolo Invernizzi!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16531 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-28 01:59:17 +00:00
Chris Lattner
e19d7a7021 Patch contributed by Patrick Meredith:
added notes on the fact that the current implementation uses
sbyte* for va_list.  Updated all occurances of valist to va_list (it was
inconsistant and find/replace is so easy ;-) ).  Added <...> around all
occurances of va_list in the intrinsic functions to match the vaarg and
vanext instructions and to further show that va_list is a variable type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16530 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 21:51:25 +00:00
Misha Brukman
ad405ce3d2 Fix grammar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16529 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 20:35:59 +00:00
Chris Lattner
83c4ec0372 Fix two bugs: one where a condition was mistakenly swapped, and another
where we folded (X & 254) -> X < 1 instead of X < 2.  These problems were
latent problems exposed by the latest patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16528 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 19:29:18 +00:00
Chris Lattner
dffb445503 New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16527 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 19:25:20 +00:00
Misha Brukman
f90a656a9f SparcV8 int regs are not only 32-bits in width, but they are 32-bit aligned!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16526 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 18:22:18 +00:00
Chris Lattner
56bc894d06 The system ranlib on darwin occasionally adds two extra newlines to the
end of files, breaking the CFE build.  As a gross hack around this,
ignore any trailing garbage on bytecode files.  Thanks to Brian for digging
in and identifying the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16525 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 16:59:06 +00:00
Chris Lattner
48f44cf5b3 Hrm, if there is an error loading a file, try printing a message so the
user knows that...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16524 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 16:41:01 +00:00
Chris Lattner
907c7c7dd1 Testcases for rev 250 of InstructionCombining.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16522 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 16:21:26 +00:00
Chris Lattner
f63f647345 Fold: (setcc (shr X, ShAmt), CI), where 'cc' is eq or ne. This xform
triggers often, for example:

6x in povray, 1x in gzip, 279x in gcc, 1x in crafty, 8x in eon, 11x in perlbmk,
362x in gap, 4x in vortex, 14 in m88ksim, 211x in 126.gcc, 1x in compress,
11x in ijpeg, and 4x in 147.vortex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16521 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 16:18:50 +00:00
Alkis Evlogimenos
a281b6fa64 Improve warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16520 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 07:35:19 +00:00
Nate Begeman
da721e74f8 Correct some BuildMI arguments for the upcoming simple scheduler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16519 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-27 05:08:17 +00:00
Misha Brukman
c6e7430499 Fix the copy-pasto that Brian noticed: V8 int regs are 32-bits wide, not 64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16518 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-26 21:07:43 +00:00
Reid Spencer
aefd04b6d0 Add some missing #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16517 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-25 16:00:07 +00:00
Reid Spencer
8d9b6800f6 Qualify Path with sys:: namespace so this file compiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16516 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-25 15:59:41 +00:00
Reid Spencer
725f2c82c9 Updated to reflect changes in the interface of TimeValue::now().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16515 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-25 08:32:37 +00:00
Reid Spencer
45392b694f Clean up the interface of TimeValue:
- get rid of unneeded constructors
- get rid of duplicate methods/constructors/operators
- normalize to LLVM coding standards
- wrap to 80 columns.

Many thanks to Alkis Evlogimenos for his suggestions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16514 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-25 08:29:54 +00:00
Reid Spencer
0d5716e3af Added stub implementations of TimeValue concept for remaining platforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16513 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-25 05:03:54 +00:00
Reid Spencer
1fc194c610 Wrap to 80 cols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16512 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-25 05:03:22 +00:00
Reid Spencer
9926c31351 Initial implementation of the TimeValue abstraction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16511 91177308-0d34-0410-b5e6-96231b3b80d8
2004-09-24 23:25:19 +00:00