oota-llvm.git
18 years agoFix an infinite loop compiling oggenc last night.
Chris Lattner [Fri, 5 May 2006 20:51:30 +0000 (20:51 +0000)]
Fix an infinite loop compiling oggenc last night.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28128 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNeed extload patterns after Chris' DAG combiner changes
Evan Cheng [Fri, 5 May 2006 08:23:07 +0000 (08:23 +0000)]
Need extload patterns after Chris' DAG combiner changes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28127 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement InstCombine/cast.ll:test29
Chris Lattner [Fri, 5 May 2006 06:39:07 +0000 (06:39 +0000)]
Implement InstCombine/cast.ll:test29

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28126 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew testcase
Chris Lattner [Fri, 5 May 2006 06:38:40 +0000 (06:38 +0000)]
New testcase

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28125 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFold some common code.
Chris Lattner [Fri, 5 May 2006 06:32:04 +0000 (06:32 +0000)]
Fold some common code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28124 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement:
Chris Lattner [Fri, 5 May 2006 06:31:05 +0000 (06:31 +0000)]
Implement:

  // fold (and (sext x), (sext y)) -> (sext (and x, y))
  // fold (or  (sext x), (sext y)) -> (sext (or  x, y))
  // fold (xor (sext x), (sext y)) -> (sext (xor x, y))
  // fold (and (aext x), (aext y)) -> (aext (and x, y))
  // fold (or  (aext x), (aext y)) -> (aext (or  x, y))
  // fold (xor (aext x), (aext y)) -> (aext (xor x, y))

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28123 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPull and through and/or/xor. This compiles some bitfield code to:
Chris Lattner [Fri, 5 May 2006 06:10:43 +0000 (06:10 +0000)]
Pull and through and/or/xor.  This compiles some bitfield code to:

        mov EAX, DWORD PTR [ESP + 4]
        mov ECX, DWORD PTR [EAX]
        mov EDX, ECX
        add EDX, EDX
        or EDX, ECX
        and EDX, -2147483648
        and ECX, 2147483647
        or EDX, ECX
        mov DWORD PTR [EAX], EDX
        ret

instead of:

        sub ESP, 4
        mov DWORD PTR [ESP], ESI
        mov EAX, DWORD PTR [ESP + 8]
        mov ECX, DWORD PTR [EAX]
        mov EDX, ECX
        add EDX, EDX
        mov ESI, ECX
        and ESI, -2147483648
        and EDX, -2147483648
        or EDX, ESI
        and ECX, 2147483647
        or EDX, ECX
        mov DWORD PTR [EAX], EDX
        mov ESI, DWORD PTR [ESP]
        add ESP, 4
        ret

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28122 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoImplement a variety of simplifications for ANY_EXTEND.
Chris Lattner [Fri, 5 May 2006 05:58:59 +0000 (05:58 +0000)]
Implement a variety of simplifications for ANY_EXTEND.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28121 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFactor some code, add these transformations:
Chris Lattner [Fri, 5 May 2006 05:51:50 +0000 (05:51 +0000)]
Factor some code, add these transformations:

  // fold (and (trunc x), (trunc y)) -> (trunc (and x, y))
  // fold (or  (trunc x), (trunc y)) -> (trunc (or  x, y))
  // fold (xor (trunc x), (trunc y)) -> (trunc (xor x, y))

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28120 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBetter implementation of truncate. ISel matches it to a pseudo instruction
Evan Cheng [Fri, 5 May 2006 05:40:20 +0000 (05:40 +0000)]
Better implementation of truncate. ISel matches it to a pseudo instruction
that gets emitted as movl (for r32 to i16, i8) or a movw (for r16 to i8). And
if the destination gets allocated a subregister of the source operand, then
the instruction will not be emitted at all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28119 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew note, Nate, please check to see if I'm full of it :)
Chris Lattner [Fri, 5 May 2006 05:36:15 +0000 (05:36 +0000)]
New note, Nate, please check to see if I'm full of it :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28118 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix VC++ compilation error.
Jeff Cohen [Fri, 5 May 2006 01:47:05 +0000 (01:47 +0000)]
Fix VC++ compilation error.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28117 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSomehow, I missed this part of the checkin a couple days ago
Nate Begeman [Fri, 5 May 2006 01:13:11 +0000 (01:13 +0000)]
Somehow, I missed this part of the checkin a couple days ago

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28116 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSink noop copies into the basic block that uses them. This reduces the number
Chris Lattner [Fri, 5 May 2006 01:04:50 +0000 (01:04 +0000)]
Sink noop copies into the basic block that uses them.  This reduces the number
of cross-block live ranges, and allows the bb-at-a-time selector to always
coallesce these away, at isel time.

This reduces the load on the coallescer and register allocator.  For example
on a codec on X86, we went from:

   1643 asm-printer           - Number of machine instrs printed
    419 liveintervals         - Number of loads/stores folded into instructions
   1144 liveintervals         - Number of identity moves eliminated after coalescing
   1022 liveintervals         - Number of interval joins performed
    282 liveintervals         - Number of intervals after coalescing
   1304 liveintervals         - Number of original intervals
     86 regalloc              - Number of times we had to backtrack
1.90232 regalloc              - Ratio of intervals processed over total intervals
     40 spiller               - Number of values reused
    182 spiller               - Number of loads added
    121 spiller               - Number of stores added
    132 spiller               - Number of register spills
      6 twoaddressinstruction - Number of instructions commuted to coalesce
    360 twoaddressinstruction - Number of two-address instructions

to:

   1636 asm-printer           - Number of machine instrs printed
    403 liveintervals         - Number of loads/stores folded into instructions
   1155 liveintervals         - Number of identity moves eliminated after coalescing
   1033 liveintervals         - Number of interval joins performed
    279 liveintervals         - Number of intervals after coalescing
   1312 liveintervals         - Number of original intervals
     76 regalloc              - Number of times we had to backtrack
1.88998 regalloc              - Ratio of intervals processed over total intervals
      1 spiller               - Number of copies elided
     41 spiller               - Number of values reused
    191 spiller               - Number of loads added
    114 spiller               - Number of stores added
    128 spiller               - Number of register spills
      4 twoaddressinstruction - Number of instructions commuted to coalesce
    356 twoaddressinstruction - Number of two-address instructions

On this testcase, this change provides a modest reduction in spill code,
regalloc iterations, and total instructions emitted.  It increases the number
of register coallesces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28115 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a helper method.
Chris Lattner [Fri, 5 May 2006 00:51:42 +0000 (00:51 +0000)]
Add a helper method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28114 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agowrap long line
Chris Lattner [Thu, 4 May 2006 23:35:31 +0000 (23:35 +0000)]
wrap long line

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28113 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdjust to use proper TargetData copy ctor
Chris Lattner [Thu, 4 May 2006 21:18:40 +0000 (21:18 +0000)]
Adjust to use proper TargetData copy ctor

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28112 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix this to be a proper copy ctor
Chris Lattner [Thu, 4 May 2006 21:17:35 +0000 (21:17 +0000)]
Fix this to be a proper copy ctor

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28111 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFinal pass of minor cleanups for MachineInstr
Chris Lattner [Thu, 4 May 2006 19:36:09 +0000 (19:36 +0000)]
Final pass of minor cleanups for MachineInstr

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28110 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoInitial support for register pressure aware scheduling. The register reduction
Evan Cheng [Thu, 4 May 2006 19:16:39 +0000 (19:16 +0000)]
Initial support for register pressure aware scheduling. The register reduction
scheduler can go into a "vertical mode" (i.e. traversing up the two-address
chain, etc.) when the register pressure is low.
This does seem to reduce the number of spills in the cases I've looked at. But
with x86, it's no guarantee the performance of the code improves.
It can be turned on with -sched-vertically option.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28108 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove redundancy and a level of indirection when creating machine operands
Chris Lattner [Thu, 4 May 2006 19:14:44 +0000 (19:14 +0000)]
Remove redundancy and a level of indirection when creating machine operands

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28107 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMove register numbers out of "extra" into "contents". Other minor cleanup.
Chris Lattner [Thu, 4 May 2006 18:25:20 +0000 (18:25 +0000)]
Move register numbers out of "extra" into "contents".  Other minor cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28106 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove and simplify some more machineinstr/machineoperand stuff.
Chris Lattner [Thu, 4 May 2006 18:16:01 +0000 (18:16 +0000)]
Remove and simplify some more machineinstr/machineoperand stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28105 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRename MO_VirtualRegister -> MO_Register. Clean up immediate handling.
Chris Lattner [Thu, 4 May 2006 18:05:43 +0000 (18:05 +0000)]
Rename MO_VirtualRegister -> MO_Register.  Clean up immediate handling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28104 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoremove hasAllocatedReg
Chris Lattner [Thu, 4 May 2006 17:56:20 +0000 (17:56 +0000)]
remove hasAllocatedReg

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28103 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMove some methods out of MachineInstr into MachineOperand
Chris Lattner [Thu, 4 May 2006 17:52:23 +0000 (17:52 +0000)]
Move some methods out of MachineInstr into MachineOperand

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28102 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix Transforms/InstCombine/2006-05-04-DemandedBitCrash.ll
Chris Lattner [Thu, 4 May 2006 17:33:35 +0000 (17:33 +0000)]
Fix Transforms/InstCombine/2006-05-04-DemandedBitCrash.ll

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28101 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agonew testcase that crashes the instcombine pass
Chris Lattner [Thu, 4 May 2006 17:33:24 +0000 (17:33 +0000)]
new testcase that crashes the instcombine pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28100 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThere shalt be only one "immediate" operand type!
Chris Lattner [Thu, 4 May 2006 17:21:20 +0000 (17:21 +0000)]
There shalt be only one "immediate" operand type!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28099 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoChange "value" in MachineOperand to be a GlobalValue, as that is the only
Chris Lattner [Thu, 4 May 2006 17:02:51 +0000 (17:02 +0000)]
Change "value" in MachineOperand to be a GlobalValue, as that is the only
thing that can be in it.  Remove a dead method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28098 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRevert Nate's CR patch from last night, which caused many regressions (e.g. fhourstones).
Chris Lattner [Thu, 4 May 2006 16:56:45 +0000 (16:56 +0000)]
Revert Nate's CR patch from last night, which caused many regressions (e.g. fhourstones).

Loading and storing off R0 isn't what we wanted.  Also, taking some CR's out of
CRRC seems to cause failures as well.  Further investigation is required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28097 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake external globals public; other minor cleanup.
Jeff Cohen [Thu, 4 May 2006 16:20:22 +0000 (16:20 +0000)]
Make external globals public; other minor cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28096 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake Intel syntax the default when LLVM is built with VC++.
Jeff Cohen [Thu, 4 May 2006 16:19:27 +0000 (16:19 +0000)]
Make Intel syntax the default when LLVM is built with VC++.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28095 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove a bunch more dead V9 specific stuff
Chris Lattner [Thu, 4 May 2006 01:26:39 +0000 (01:26 +0000)]
Remove a bunch more dead V9 specific stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28094 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove a bunch more SparcV9 specific stuff
Chris Lattner [Thu, 4 May 2006 01:15:02 +0000 (01:15 +0000)]
Remove a bunch more SparcV9 specific stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28093 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove some more V9-specific stuff.
Chris Lattner [Thu, 4 May 2006 00:49:59 +0000 (00:49 +0000)]
Remove some more V9-specific stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28092 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove some more unused stuff from MachineInstr that was leftover from V9.
Chris Lattner [Thu, 4 May 2006 00:44:25 +0000 (00:44 +0000)]
Remove some more unused stuff from MachineInstr that was leftover from V9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28091 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSimplify handling of relocations
Chris Lattner [Thu, 4 May 2006 00:42:08 +0000 (00:42 +0000)]
Simplify handling of relocations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28090 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUse movsd to shuffle in the lowest two elements of a v4f32 / v4i32 vector when
Evan Cheng [Wed, 3 May 2006 20:32:03 +0000 (20:32 +0000)]
Use movsd to shuffle in the lowest two elements of a v4f32 / v4i32 vector when
movlps cannot be used (e.g. when load from m64 has multiple uses).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28089 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoChange from using MachineRelocation ctors to using static methods
Chris Lattner [Wed, 3 May 2006 20:30:20 +0000 (20:30 +0000)]
Change from using MachineRelocation ctors to using static methods
in MachineRelocation to create Relocations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28088 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agominor cleanups, no functionality change
Chris Lattner [Wed, 3 May 2006 18:55:56 +0000 (18:55 +0000)]
minor cleanups, no functionality change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28087 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoCleanup the internal implementation of MachineRelocation. No interface or
Chris Lattner [Wed, 3 May 2006 18:52:31 +0000 (18:52 +0000)]
Cleanup the internal implementation of MachineRelocation.  No interface or
functionality changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28086 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAttempt to get this script working on Darwin.
Reid Spencer [Wed, 3 May 2006 18:16:01 +0000 (18:16 +0000)]
Attempt to get this script working on Darwin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28085 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFor PR764:
Reid Spencer [Wed, 3 May 2006 17:49:50 +0000 (17:49 +0000)]
For PR764:
Don't check in the LibDeps.txt and FinalLibDeps.txt files to CVS because
the content differs from platform to platform. Instead, adjust the makefile
so that a dummy llvm-config is built if Perl is not available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28084 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoinline a simple method
Chris Lattner [Wed, 3 May 2006 17:21:32 +0000 (17:21 +0000)]
inline a simple method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28083 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSuck block address tracking out of targets into the JIT Emitter. This
Chris Lattner [Wed, 3 May 2006 17:10:41 +0000 (17:10 +0000)]
Suck block address tracking out of targets into the JIT Emitter.  This
simplifies the MachineCodeEmitter interface just a little bit and makes
BasicBlocks work like constant pools and jump tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28082 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a bug in Owen's checkin that broke the CBE on all non sparc v9 platforms.
Chris Lattner [Wed, 3 May 2006 05:48:41 +0000 (05:48 +0000)]
Fix a bug in Owen's checkin that broke the CBE on all non sparc v9 platforms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28081 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoTeach the x86 jit how to handle jump tables not directly used by a jump
Nate Begeman [Wed, 3 May 2006 04:52:47 +0000 (04:52 +0000)]
Teach the x86 jit how to handle jump tables not directly used by a jump
instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28080 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFinish up the initial jump table implementation by allowing jump tables to
Nate Begeman [Wed, 3 May 2006 03:48:02 +0000 (03:48 +0000)]
Finish up the initial jump table implementation by allowing jump tables to
not be 100% dense.  Increase the minimum threshold for the number of cases
in a switch statement from 4 to 6 in order to create a jump table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28079 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoA few instruction scheduling test cases.
Evan Cheng [Wed, 3 May 2006 02:11:36 +0000 (02:11 +0000)]
A few instruction scheduling test cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28077 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBottom up register pressure reduction work: clean up some hacks and enhanced
Evan Cheng [Wed, 3 May 2006 02:10:45 +0000 (02:10 +0000)]
Bottom up register pressure reduction work: clean up some hacks and enhanced
the heuristic to further reduce spills for several test cases. (Note, it may
not necessarily translate to runtime win!)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28076 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSet isStore of instructions with ISD::TRUNCSTORE root node.
Evan Cheng [Wed, 3 May 2006 02:08:34 +0000 (02:08 +0000)]
Set isStore of instructions with ISD::TRUNCSTORE root node.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28075 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRefactor TargetMachine, pushing handling of TargetData into the target-specific subcl...
Owen Anderson [Wed, 3 May 2006 01:29:57 +0000 (01:29 +0000)]
Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses.  This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.

This fixes PR 759.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28074 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAlign function bodies correctly.
Chris Lattner [Wed, 3 May 2006 01:03:20 +0000 (01:03 +0000)]
Align function bodies correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28073 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a new emitAlignment method
Chris Lattner [Wed, 3 May 2006 01:01:51 +0000 (01:01 +0000)]
Add a new emitAlignment method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28072 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSimplify some code. Don't add memory blocks to the Blocks list twice.
Chris Lattner [Wed, 3 May 2006 00:54:49 +0000 (00:54 +0000)]
Simplify some code.  Don't add memory blocks to the Blocks list twice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28071 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd assertions that verify that the actual arguments to a call or invoke match
Chris Lattner [Wed, 3 May 2006 00:48:22 +0000 (00:48 +0000)]
Add assertions that verify that the actual arguments to a call or invoke match
the prototype of the called function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28070 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoChange the BasicBlockAddrs map to be a vector, indexed by MBB number.
Chris Lattner [Wed, 3 May 2006 00:32:55 +0000 (00:32 +0000)]
Change the BasicBlockAddrs map to be a vector, indexed by MBB number.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28069 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoKeep the alpha JIT similar to the PPC/X86 jits
Chris Lattner [Wed, 3 May 2006 00:31:21 +0000 (00:31 +0000)]
Keep the alpha JIT similar to the PPC/X86 jits

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28068 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoKeep Visual Studio happy.
Jeff Cohen [Wed, 3 May 2006 00:28:50 +0000 (00:28 +0000)]
Keep Visual Studio happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28067 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSimplify some code
Chris Lattner [Wed, 3 May 2006 00:13:06 +0000 (00:13 +0000)]
Simplify some code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28066 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSeveral related changes:
Chris Lattner [Tue, 2 May 2006 23:22:24 +0000 (23:22 +0000)]
Several related changes:

1. Change several methods in the MachineCodeEmitter class to be pure virtual.
2. Suck emitConstantPool/initJumpTableInfo into startFunction, removing them
   from the MachineCodeEmitter interface, and reducing the amount of target-
   specific code.
3. Change the JITEmitter so that it allocates constantpools and jump tables
   *right* next to the functions that they belong to, instead of in a separate
   pool of memory.  This makes all memory for a function be contiguous, and
   means the JITEmitter only tracks one block of memory now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28065 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd a method for allocating space from the code buffer.
Chris Lattner [Tue, 2 May 2006 22:51:03 +0000 (22:51 +0000)]
Add a method for allocating space from the code buffer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28064 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove some stuff from the README
Nate Begeman [Tue, 2 May 2006 22:43:31 +0000 (22:43 +0000)]
Remove some stuff from the README

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28063 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDo not make the JIT memory manager manage the memory for globals. Instead
Chris Lattner [Tue, 2 May 2006 21:57:51 +0000 (21:57 +0000)]
Do not make the JIT memory manager manage the memory for globals.  Instead
just have the JIT malloc them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28062 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMinor cleanups, no functionality change.
Chris Lattner [Tue, 2 May 2006 21:44:14 +0000 (21:44 +0000)]
Minor cleanups, no functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28061 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a purely hypothetical problem (for now): emitWord emits in the host
Chris Lattner [Tue, 2 May 2006 19:14:47 +0000 (19:14 +0000)]
Fix a purely hypothetical problem (for now): emitWord emits in the host
byte format.  This doesn't work when using the code emitter in a cross target
environment.  Since the code emitter is only really used by the JIT, this
isn't a current problem, but if we ever start emitting .o files, it would be.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28060 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRefactor the machine code emitter interface to pull the pointers for the current
Chris Lattner [Tue, 2 May 2006 18:27:26 +0000 (18:27 +0000)]
Refactor the machine code emitter interface to pull the pointers for the current
code emission location into the base class, instead of being in the derived classes.

This change means that low-level methods like emitByte/emitWord now are no longer
virtual (yaay for speed), and we now have a framework to support growable code
segments.  This implements feature request #1 of PR469.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28059 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoSince we don't handle callee-save CRs right yet, don't allocate them. Also
Nate Begeman [Tue, 2 May 2006 17:37:31 +0000 (17:37 +0000)]
Since we don't handle callee-save CRs right yet, don't allocate them.  Also
don't step on R11 in the middle of a function when saving and restoring CRs

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28058 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPrint function number instead of name
Nate Begeman [Tue, 2 May 2006 17:36:46 +0000 (17:36 +0000)]
Print function number instead of name

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28057 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoHooray, everyone now uses the same printBasicBlockLabel implementation
Nate Begeman [Tue, 2 May 2006 17:34:51 +0000 (17:34 +0000)]
Hooray, everyone now uses the same printBasicBlockLabel implementation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28056 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove dead method
Chris Lattner [Tue, 2 May 2006 17:20:28 +0000 (17:20 +0000)]
Remove dead method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28055 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove a now-dead method
Chris Lattner [Tue, 2 May 2006 17:17:13 +0000 (17:17 +0000)]
Remove a now-dead method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28054 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoThere is no reason to use a virtual method to store this word.
Chris Lattner [Tue, 2 May 2006 17:16:20 +0000 (17:16 +0000)]
There is no reason to use a virtual method to store this word.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28053 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove the debug machine code emitter. The "FilePrinterEmitter" is moreuseful for...
Chris Lattner [Tue, 2 May 2006 16:59:49 +0000 (16:59 +0000)]
Remove the debug machine code emitter.  The "FilePrinterEmitter" is moreuseful for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28052 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove the debug machine code emitter. The "FilePrinterEmitter" is more
Chris Lattner [Tue, 2 May 2006 16:59:24 +0000 (16:59 +0000)]
Remove the debug machine code emitter.  The "FilePrinterEmitter" is more
useful for debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28051 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoExtend printBasicBlockLabel a bit so that it can be used to print all
Nate Begeman [Tue, 2 May 2006 05:37:32 +0000 (05:37 +0000)]
Extend printBasicBlockLabel a bit so that it can be used to print all
basic block labels, consolidating the code to do so in one place for each
target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28050 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoUpdate the PPC compilation callback code to not need weird abi-violating
Nate Begeman [Tue, 2 May 2006 04:50:05 +0000 (04:50 +0000)]
Update the PPC compilation callback code to not need weird abi-violating
prologs and epilogs, keep all the asm in one place, and remove use of
compiler builtin functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28049 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoAdd pass ID's for various passes, so they can be AddRequiredID. Patch by
Chris Lattner [Tue, 2 May 2006 04:24:36 +0000 (04:24 +0000)]
Add pass ID's for various passes, so they can be AddRequiredID.  Patch by
Domagoj Babic!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28048 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDe-virtualize SwitchSection.
Jeff Cohen [Tue, 2 May 2006 03:58:45 +0000 (03:58 +0000)]
De-virtualize SwitchSection.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28047 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDe-virtualize EmitZeroes.
Jeff Cohen [Tue, 2 May 2006 03:46:13 +0000 (03:46 +0000)]
De-virtualize EmitZeroes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28046 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFinish support for Microsoft ML/MASM. May still be a few rough edges.
Jeff Cohen [Tue, 2 May 2006 03:11:50 +0000 (03:11 +0000)]
Finish support for Microsoft ML/MASM.  May still be a few rough edges.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28045 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMake Intel syntax mode friendlier to Microsoft ML assembler (still needs more work).
Jeff Cohen [Tue, 2 May 2006 01:16:28 +0000 (01:16 +0000)]
Make Intel syntax mode friendlier to Microsoft ML assembler (still needs more work).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28044 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPut instruction names into the first non TargetInstrInfo namespace found.
Chris Lattner [Mon, 1 May 2006 23:46:16 +0000 (23:46 +0000)]
Put instruction names into the first non TargetInstrInfo namespace found.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28043 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoNew testcase that crashes the new CFE.
Chris Lattner [Mon, 1 May 2006 23:18:55 +0000 (23:18 +0000)]
New testcase that crashes the new CFE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28042 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFix a latent bug that my spiller patch last week exposed: we were leaving
Chris Lattner [Mon, 1 May 2006 22:03:24 +0000 (22:03 +0000)]
Fix a latent bug that my spiller patch last week exposed: we were leaving
instructions in the virtregfolded map that were deleted.  Because they
were deleted, newly allocated instructions could end up at the same address,
magically finding themselves in the map.  The solution is to remove entries
from the map when we delete the instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28041 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoWhen promoting a load to a reg-reg copy, where the load was a previous
Chris Lattner [Mon, 1 May 2006 21:17:10 +0000 (21:17 +0000)]
When promoting a load to a reg-reg copy, where the load was a previous
instruction folded with spill code, make sure the remove the load from
the virt reg folded map.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28040 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove previous patch, which wasn't quite right.
Chris Lattner [Mon, 1 May 2006 21:16:03 +0000 (21:16 +0000)]
Remove previous patch, which wasn't quite right.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28039 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoinstructions can be in different namespaces. Make sure to use the right
Chris Lattner [Mon, 1 May 2006 17:01:17 +0000 (17:01 +0000)]
instructions can be in different namespaces.  Make sure to use the right
one for each instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28038 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoPut PHI/INLINEASM into the correct namespace.
Chris Lattner [Mon, 1 May 2006 17:00:49 +0000 (17:00 +0000)]
Put PHI/INLINEASM into the correct namespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28037 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFormating
Evan Cheng [Mon, 1 May 2006 09:30:17 +0000 (09:30 +0000)]
Formating

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28036 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDis-favor stores more
Evan Cheng [Mon, 1 May 2006 09:20:44 +0000 (09:20 +0000)]
Dis-favor stores more

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28035 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoBottom up register-pressure reduction scheduler now pushes store operations
Evan Cheng [Mon, 1 May 2006 09:14:40 +0000 (09:14 +0000)]
Bottom up register-pressure reduction scheduler now pushes store operations
up the schedule. This helps code that looks like this:

loads ...
computations (first set) ...
stores (first set) ...
loads
computations (seccond set) ...
stores (seccond set) ...

Without this change, the stores and computations are more likely to
interleave:

loads ...
loads ...
computations (first set) ...
computations (second set) ...
computations (first set) ...
stores (first set) ...
computations (second set) ...
stores (stores set) ...

This can increase the number of spills if we are unlucky.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28033 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoMark instructions whose pattern is (store ...) isStore.
Evan Cheng [Mon, 1 May 2006 09:04:20 +0000 (09:04 +0000)]
Mark instructions whose pattern is (store ...) isStore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28032 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoDidn't mean ScheduleDAGList.cpp to make the last checkin.
Evan Cheng [Mon, 1 May 2006 08:56:34 +0000 (08:56 +0000)]
Didn't mean ScheduleDAGList.cpp to make the last checkin.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28030 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove temp. option -spiller-check-liveout, it didn't cause any failure nor performan...
Evan Cheng [Mon, 1 May 2006 08:54:57 +0000 (08:54 +0000)]
Remove temp. option -spiller-check-liveout, it didn't cause any failure nor performance regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28029 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoIntel mode no longer uses %'s on registers
Chris Lattner [Mon, 1 May 2006 05:56:51 +0000 (05:56 +0000)]
Intel mode no longer uses %'s on registers

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28028 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoRemove %'s from register names when in intel mode.
Chris Lattner [Mon, 1 May 2006 05:53:50 +0000 (05:53 +0000)]
Remove %'s from register names when in intel mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28027 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoFormat #APP lines a bit nicer
Chris Lattner [Mon, 1 May 2006 04:11:03 +0000 (04:11 +0000)]
Format #APP lines a bit nicer

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28026 91177308-0d34-0410-b5e6-96231b3b80d8

18 years agoLocal spiller kills a store if the folded restore is turned into a copy.
Evan Cheng [Sun, 30 Apr 2006 08:41:47 +0000 (08:41 +0000)]
Local spiller kills a store if the folded restore is turned into a copy.
But this is incorrect if the spilled value live range extends beyond the
current BB.
It is currently controlled by a temporary option -spiller-check-liveout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28024 91177308-0d34-0410-b5e6-96231b3b80d8