oota-llvm.git
20 years agoThis is the only file in the system that uses this enum. eliminate it.
Chris Lattner [Sun, 29 Feb 2004 05:57:59 +0000 (05:57 +0000)]
This is the only file in the system that uses this enum. eliminate it.

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

20 years agoScrap a huge layer of cruft out of this interface.
Chris Lattner [Sun, 29 Feb 2004 05:57:21 +0000 (05:57 +0000)]
Scrap a huge layer of cruft out of this interface.

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

20 years agoImplement initial prolog/epilog code insertion methods.
Chris Lattner [Sun, 29 Feb 2004 05:18:30 +0000 (05:18 +0000)]
Implement initial prolog/epilog code insertion methods.

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

20 years agoRemove unneeded #include
Chris Lattner [Sun, 29 Feb 2004 05:15:56 +0000 (05:15 +0000)]
Remove unneeded #include

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

20 years agoint64_t -> int
Chris Lattner [Sun, 29 Feb 2004 05:07:02 +0000 (05:07 +0000)]
int64_t -> int

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

20 years agoContinue Alkis's int64_t cleanup. This makes all of the immediate related
Chris Lattner [Sun, 29 Feb 2004 05:06:49 +0000 (05:06 +0000)]
Continue Alkis's int64_t cleanup.  This makes all of the immediate related
methods take an int or unsigned value instead of int64_t.

Also, add an 'addImm' method to the MachineInstrBuilder class, because the
fact that the hardware sign or zero extends it does not/should not matter
to the code generator.  Once the old sparc backend is removed the difference
can be eliminated.

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

20 years agoAdd BuildMI variants that take a MBB::iterator
Chris Lattner [Sun, 29 Feb 2004 04:55:28 +0000 (04:55 +0000)]
Add BuildMI variants that take a MBB::iterator

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

20 years agoUse correct template for ADC instruction with memory operands.
Alkis Evlogimenos [Sun, 29 Feb 2004 02:18:17 +0000 (02:18 +0000)]
Use correct template for ADC instruction with memory operands.

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

20 years agoAdd an instruction selector capable of selecting 'ret void'
Chris Lattner [Sun, 29 Feb 2004 00:27:00 +0000 (00:27 +0000)]
Add an instruction selector capable of selecting 'ret void'

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

20 years agoSHLD and SHRD take 32-bit operands but an 8-bit immediate. Rename them
Alkis Evlogimenos [Sat, 28 Feb 2004 23:46:44 +0000 (23:46 +0000)]
SHLD and SHRD take 32-bit operands but an 8-bit immediate. Rename them
to denote this fact.

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

20 years agoFloating point loads/stores act on memory operands. Rename them to
Alkis Evlogimenos [Sat, 28 Feb 2004 23:42:35 +0000 (23:42 +0000)]
Floating point loads/stores act on memory operands. Rename them to
denote this fact.

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

20 years agoRename instruction templates to be easier to the human eye to
Alkis Evlogimenos [Sat, 28 Feb 2004 23:09:03 +0000 (23:09 +0000)]
Rename instruction templates to be easier to the human eye to
parse. The name is now I (operand size)*. For example:

Im32 -> instruction with 32-bit memory operands.

Im16i8 -> instruction with 16-bit memory operands and 8 bit immediate
          operands.

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

20 years agoUncomment instructions that take both an immediate and a memory
Alkis Evlogimenos [Sat, 28 Feb 2004 22:06:59 +0000 (22:06 +0000)]
Uncomment instructions that take both an immediate and a memory
operand but their sizes differ.

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

20 years agoFix my sloppiness
Brian Gaeke [Sat, 28 Feb 2004 22:06:03 +0000 (22:06 +0000)]
Fix my sloppiness

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

20 years agoEach instruction now has both an ImmType and a MemType. This describes
Alkis Evlogimenos [Sat, 28 Feb 2004 22:02:05 +0000 (22:02 +0000)]
Each instruction now has both an ImmType and a MemType. This describes
the size of the immediate and the memory operand on instructions that
use them. This resolves problems with instructions that take both a
memory and an immediate operand but their sizes differ (i.e. ADDmi32b).

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

20 years agoFix typo in comment
Brian Gaeke [Sat, 28 Feb 2004 21:55:18 +0000 (21:55 +0000)]
Fix typo in comment

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

20 years agoAdd a testcase for switch instruction induction
Chris Lattner [Sat, 28 Feb 2004 21:30:39 +0000 (21:30 +0000)]
Add a testcase for switch instruction induction

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

20 years agoImplement switch->br and br->switch folding by ripping out the switch->switch
Chris Lattner [Sat, 28 Feb 2004 21:28:10 +0000 (21:28 +0000)]
Implement switch->br and br->switch folding by ripping out the switch->switch
and br->br code and generalizing it.  This allows us to compile code like this:

int test(Instruction *I) {
  if (isa<CastInst>(I))
    return foo(7);
  else if (isa<BranchInst>(I))
    return foo(123);
  else if (isa<UnwindInst>(I))
    return foo(1241);
  else if (isa<SetCondInst>(I))
    return foo(1);
  else if (isa<VAArgInst>(I))
    return foo(42);
  return foo(-1);
}

into:

int %_Z4testPN4llvm11InstructionE("struct.llvm::Instruction"* %I) {
entry:
        %tmp.1.i.i.i.i.i.i.i = getelementptr "struct.llvm::Instruction"* %I, long 0, ubyte 4            ; <uint*> [#uses=1]
        %tmp.2.i.i.i.i.i.i.i = load uint* %tmp.1.i.i.i.i.i.i.i          ; <uint> [#uses=2]
        %tmp.2.i.i.i.i.i.i = seteq uint %tmp.2.i.i.i.i.i.i.i, 27                ; <bool> [#uses=0]
        switch uint %tmp.2.i.i.i.i.i.i.i, label %endif.0 [
                 uint 27, label %then.0
                 uint 2, label %then.1
                 uint 5, label %then.2
                 uint 14, label %then.3
                 uint 15, label %then.3
                 uint 16, label %then.3
                 uint 17, label %then.3
                 uint 18, label %then.3
                 uint 19, label %then.3
                 uint 32, label %then.4
        ]
...

As well as handling the cases in 176.gcc and many other programs more effectively.

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

20 years agoChange this so that LLC actually tries to run the code generator, though it will
Chris Lattner [Sat, 28 Feb 2004 20:21:45 +0000 (20:21 +0000)]
Change this so that LLC actually tries to run the code generator, though it will
immediately abort due to lack of an instruction selector. :)

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

20 years agoAdd a hook to run with the V8 target, though it doesn't currently work. Also
Chris Lattner [Sat, 28 Feb 2004 19:55:16 +0000 (19:55 +0000)]
Add a hook to run with the V8 target, though it doesn't currently work.  Also
mark the PPC backend as experimental

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

20 years agoAdd hook for V8 target
Chris Lattner [Sat, 28 Feb 2004 19:54:16 +0000 (19:54 +0000)]
Add hook for V8 target

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

20 years agoSparcV8 now builds.
Chris Lattner [Sat, 28 Feb 2004 19:54:00 +0000 (19:54 +0000)]
SparcV8 now builds.

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

20 years agofine grainify namespacification
Chris Lattner [Sat, 28 Feb 2004 19:53:18 +0000 (19:53 +0000)]
fine grainify namespacification

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

20 years agoFinegrainify namespacification
Chris Lattner [Sat, 28 Feb 2004 19:52:49 +0000 (19:52 +0000)]
Finegrainify namespacification

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

20 years agoTab completion is our friend.
Chris Lattner [Sat, 28 Feb 2004 19:45:39 +0000 (19:45 +0000)]
Tab completion is our friend.

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

20 years agoClean up rules
Chris Lattner [Sat, 28 Feb 2004 19:43:40 +0000 (19:43 +0000)]
Clean up rules

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

20 years agoBring this directory into "it actually compiles" land
Chris Lattner [Sat, 28 Feb 2004 19:37:18 +0000 (19:37 +0000)]
Bring this directory into "it actually compiles" land

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

20 years agoFix multiple inclusion problem
Chris Lattner [Sat, 28 Feb 2004 19:31:32 +0000 (19:31 +0000)]
Fix multiple inclusion problem

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

20 years agoif there is already a prototype for malloc/free, use it, even if it's incorrect.
Chris Lattner [Sat, 28 Feb 2004 18:51:45 +0000 (18:51 +0000)]
if there is already a prototype for malloc/free, use it, even if it's incorrect.
Do not just inject a new prototype.

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

20 years agoDo not remove an active template argument even if the superclass had one of the
Chris Lattner [Sat, 28 Feb 2004 17:41:48 +0000 (17:41 +0000)]
Do not remove an active template argument even if the superclass had one of the
same name

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

20 years agofix a bug in the testcase
Chris Lattner [Sat, 28 Feb 2004 17:33:21 +0000 (17:33 +0000)]
fix a bug in the testcase

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

20 years agoIgnore X = X assignments that was causing Alkis's rewrite of X86.td to crash
Chris Lattner [Sat, 28 Feb 2004 17:31:28 +0000 (17:31 +0000)]
Ignore X = X assignments that was causing Alkis's rewrite of X86.td to crash
tblgen.

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

20 years agonew testcase for a tblgen bug that alkis ran into
Chris Lattner [Sat, 28 Feb 2004 16:43:44 +0000 (16:43 +0000)]
new testcase for a tblgen bug that alkis ran into

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

20 years agoAssert instead of going into an infinite loop!
Chris Lattner [Sat, 28 Feb 2004 16:31:53 +0000 (16:31 +0000)]
Assert instead of going into an infinite loop!

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

20 years agoELF constants and data structures.
Brian Gaeke [Sat, 28 Feb 2004 06:26:20 +0000 (06:26 +0000)]
ELF constants and data structures.

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

20 years agoDo not generate instructions with mismatched memory/immediate sized
Alkis Evlogimenos [Sat, 28 Feb 2004 06:01:43 +0000 (06:01 +0000)]
Do not generate instructions with mismatched memory/immediate sized
operands. The X86 backend doesn't handle them properly right now.

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

20 years agonew testcase for intrinsic folding
Chris Lattner [Sat, 28 Feb 2004 05:28:42 +0000 (05:28 +0000)]
new testcase for intrinsic folding

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

20 years agoThe instruction combining pass removes dead instructions, there is no need
Chris Lattner [Sat, 28 Feb 2004 05:26:06 +0000 (05:26 +0000)]
The instruction combining pass removes dead instructions, there is no need
to run the die pass after it.

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

20 years agoRename AddUsesToWorkList -> AddUsersToWorkList, as that is what it does.
Chris Lattner [Sat, 28 Feb 2004 05:22:00 +0000 (05:22 +0000)]
Rename AddUsesToWorkList -> AddUsersToWorkList, as that is what it does.
Create a new AddUsesToWorkList method
optimize memmove/set/cpy of zero bytes to a noop.

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

20 years agoTurn 'free null' into nothing
Chris Lattner [Sat, 28 Feb 2004 04:57:37 +0000 (04:57 +0000)]
Turn 'free null' into nothing

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

20 years agoRight, it's really Extractor, not Extraction.
Misha Brukman [Sat, 28 Feb 2004 03:37:58 +0000 (03:37 +0000)]
Right, it's really Extractor, not Extraction.

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

20 years agoNew Function-level transformation utils.
Misha Brukman [Sat, 28 Feb 2004 03:33:30 +0000 (03:33 +0000)]
New Function-level transformation utils.

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

20 years agoAdd the prototype for the LoopExtractor Pass.
Misha Brukman [Sat, 28 Feb 2004 03:33:17 +0000 (03:33 +0000)]
Add the prototype for the LoopExtractor Pass.

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

20 years agoA pass that uses the generic CodeExtractor to rip out *every* loop in every
Misha Brukman [Sat, 28 Feb 2004 03:33:01 +0000 (03:33 +0000)]
A pass that uses the generic CodeExtractor to rip out *every* loop in every
function, as long as the loop isn't the only one in that function. This should
help debugging passes easier with BugPoint.

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

20 years agoA generic code extractor: given a list of BasicBlocks, it will rip them out into
Misha Brukman [Sat, 28 Feb 2004 03:26:20 +0000 (03:26 +0000)]
A generic code extractor: given a list of BasicBlocks, it will rip them out into
a new function, taking care of inputs and outputs.

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

20 years agoTwo testcases for loops: one with outputs, one without.
Misha Brukman [Sat, 28 Feb 2004 03:20:41 +0000 (03:20 +0000)]
Two testcases for loops: one with outputs, one without.

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

20 years agoFurther comment updates.
Alkis Evlogimenos [Sat, 28 Feb 2004 03:20:31 +0000 (03:20 +0000)]
Further comment updates.

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

20 years agoUpdate comments.
Alkis Evlogimenos [Sat, 28 Feb 2004 03:12:31 +0000 (03:12 +0000)]
Update comments.

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

20 years agoMy previous commit broke the jit. The shift instructions always take
Alkis Evlogimenos [Sat, 28 Feb 2004 02:56:26 +0000 (02:56 +0000)]
My previous commit broke the jit. The shift instructions always take
an 8-bit immediate. So mark the shifts that take immediates as taking
an 8-bit argument. The rest with the implicit use of CL are marked
appropriately.

A bug still exists:

def SHLDmri32  : I2A8 <"shld", 0xA4, MRMDestMem>, TB;           // [mem32] <<= [mem32],R32 imm8

The immediate in the above instruction is 8-bit but the memory
reference is 32-bit. The printer prints this as an 8-bit reference
which confuses the assembler. Same with SHRDmri32.

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

20 years agoTurn off the SparcV9MachineCodeDestructionPass for now, because it's buggy
Brian Gaeke [Fri, 27 Feb 2004 21:15:40 +0000 (21:15 +0000)]
Turn off the SparcV9MachineCodeDestructionPass for now, because it's buggy

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

20 years agoCorrect DestroyMachineFunction's getPassName
Brian Gaeke [Fri, 27 Feb 2004 21:01:14 +0000 (21:01 +0000)]
Correct DestroyMachineFunction's getPassName

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

20 years agoOnly clone global nodes between graphs if both graphs have the global.
Chris Lattner [Fri, 27 Feb 2004 20:05:15 +0000 (20:05 +0000)]
Only clone global nodes between graphs if both graphs have the global.

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

20 years agoADD MORE FUNCTIONS!
Chris Lattner [Fri, 27 Feb 2004 20:04:48 +0000 (20:04 +0000)]
ADD MORE FUNCTIONS!

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

20 years agoFix argument size for SHL, SHR, SAR, SHLD and SHRD families of
Alkis Evlogimenos [Fri, 27 Feb 2004 19:46:30 +0000 (19:46 +0000)]
Fix argument size for SHL, SHR, SAR, SHLD and SHRD families of
instructions.

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

20 years agoFix encoding of ADD and SUB family of instructions. Also rearrange
Alkis Evlogimenos [Fri, 27 Feb 2004 18:57:00 +0000 (18:57 +0000)]
Fix encoding of ADD and SUB family of instructions. Also rearrange
them so that they are consistent with AND, XOR, etc...

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

20 years agoRename MRMS[0-7]{r,m} to MRM[0-7]{r,m}.
Alkis Evlogimenos [Fri, 27 Feb 2004 18:55:12 +0000 (18:55 +0000)]
Rename MRMS[0-7]{r,m} to MRM[0-7]{r,m}.

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

20 years agosetcond instructions don't have aliasing implications.
Chris Lattner [Fri, 27 Feb 2004 18:09:25 +0000 (18:09 +0000)]
setcond instructions don't have aliasing implications.

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

20 years agoAdded d and hbd MultiSource applications.
John Criswell [Fri, 27 Feb 2004 18:02:06 +0000 (18:02 +0000)]
Added d and hbd MultiSource applications.

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

20 years agoFix Regression/Assembler/2004-02-27-SelfUseAssertError.ll
Chris Lattner [Fri, 27 Feb 2004 17:28:25 +0000 (17:28 +0000)]
Fix Regression/Assembler/2004-02-27-SelfUseAssertError.ll

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

20 years agoFix a verifier bug that was preventing us from ripping povray+libpng to pieces.
Chris Lattner [Fri, 27 Feb 2004 17:26:08 +0000 (17:26 +0000)]
Fix a verifier bug that was preventing us from ripping povray+libpng to pieces.

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

20 years agoBuild zlib and libpng
Chris Lattner [Fri, 27 Feb 2004 17:00:29 +0000 (17:00 +0000)]
Build zlib and libpng

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

20 years agoUpdates from Reid
Chris Lattner [Fri, 27 Feb 2004 16:17:20 +0000 (16:17 +0000)]
Updates from Reid

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

20 years agoAdd memory operand folding support for the SETcc family of
Alkis Evlogimenos [Fri, 27 Feb 2004 16:13:37 +0000 (16:13 +0000)]
Add memory operand folding support for the SETcc family of
instructions.

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

20 years agoMake MachineOperand's immediate value an int and save 4 bytes out of
Alkis Evlogimenos [Fri, 27 Feb 2004 15:05:28 +0000 (15:05 +0000)]
Make MachineOperand's immediate value an int and save 4 bytes out of
each MachineOperand. We don't really need an int64_t immediate :-).

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

20 years agoAdd memory operand folding support for SHLD and SHRD instructions.
Alkis Evlogimenos [Fri, 27 Feb 2004 15:03:18 +0000 (15:03 +0000)]
Add memory operand folding support for SHLD and SHRD instructions.

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

20 years agoAdd memory operand folding support for SHL, SHR and SAR, SHLD instructions.
Alkis Evlogimenos [Fri, 27 Feb 2004 09:28:43 +0000 (09:28 +0000)]
Add memory operand folding support for SHL, SHR and SAR, SHLD instructions.

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

20 years agoRename SHL, SHR, SAR, SHLD and SHLR instructions to make them
Alkis Evlogimenos [Fri, 27 Feb 2004 06:57:05 +0000 (06:57 +0000)]
Rename SHL, SHR, SAR, SHLD and SHLR instructions to make them
consistent with the rest and also pepare for the addition of their
memory operand variants.

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

20 years agoInitial checkin of document, contributed by Reid Spencer.
Chris Lattner [Fri, 27 Feb 2004 06:28:34 +0000 (06:28 +0000)]
Initial checkin of document, contributed by Reid Spencer.

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

20 years agoImplement test/Regression/Transforms/InstCombine/canonicalize_branch.ll
Chris Lattner [Fri, 27 Feb 2004 06:27:46 +0000 (06:27 +0000)]
Implement test/Regression/Transforms/InstCombine/canonicalize_branch.ll

This is a really minor thing, but might help out the 'switch statement induction'
code in simplifycfg.

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

20 years agoThe instcombiner should canonicalize comparisons.
Chris Lattner [Fri, 27 Feb 2004 06:27:07 +0000 (06:27 +0000)]
The instcombiner should canonicalize comparisons.

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

20 years agoRename member function to be consistent with the rest.
Alkis Evlogimenos [Fri, 27 Feb 2004 06:11:15 +0000 (06:11 +0000)]
Rename member function to be consistent with the rest.

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

20 years agoAdd improvements to the code generator.
Alkis Evlogimenos [Fri, 27 Feb 2004 05:26:23 +0000 (05:26 +0000)]
Add improvements to the code generator.

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

20 years agoMake spiller push stores right after the definition of a register so
Alkis Evlogimenos [Fri, 27 Feb 2004 04:51:35 +0000 (04:51 +0000)]
Make spiller push stores right after the definition of a register so
that they are as far away from the loads as possible.

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

20 years agoFix crash caused by passing register 0 to
Alkis Evlogimenos [Fri, 27 Feb 2004 01:52:34 +0000 (01:52 +0000)]
Fix crash caused by passing register 0 to
MRegisterInfo::isPhysicalRegister().

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

20 years agoClear maps right after basic block is processed.
Alkis Evlogimenos [Thu, 26 Feb 2004 23:22:23 +0000 (23:22 +0000)]
Clear maps right after basic block is processed.

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

20 years agoDoxygenify comments.
Misha Brukman [Thu, 26 Feb 2004 23:20:29 +0000 (23:20 +0000)]
Doxygenify comments.

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

20 years agoDoxygenify and tersify comments.
Misha Brukman [Thu, 26 Feb 2004 23:20:08 +0000 (23:20 +0000)]
Doxygenify and tersify comments.

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

20 years agoAdded PR258 and 259.
John Criswell [Thu, 26 Feb 2004 23:13:34 +0000 (23:13 +0000)]
Added PR258 and 259.

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

20 years agoAdded support for C++ compilation.
John Criswell [Thu, 26 Feb 2004 23:02:25 +0000 (23:02 +0000)]
Added support for C++ compilation.
Made removing the object files a separate sh command so that it can easily
be commented out.

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

20 years agoC++ version of llvm-native-gcc.
John Criswell [Thu, 26 Feb 2004 23:01:21 +0000 (23:01 +0000)]
C++ version of llvm-native-gcc.

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

20 years agoFixed test case to actually check for the static declaration.
John Criswell [Thu, 26 Feb 2004 22:56:13 +0000 (22:56 +0000)]
Fixed test case to actually check for the static declaration.
Oops.

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

20 years agoRegression tests for PR258 and PR259.
John Criswell [Thu, 26 Feb 2004 22:55:11 +0000 (22:55 +0000)]
Regression tests for PR258 and PR259.
2004-02-26-FPNotPrintableConstants.llx ensures that constants used in an
LLVM program are declared static if they are assigned to global variables.
2004-02-26-LinkOnceFunctions.llx ensures that linkonce functions get the
weak attribute.

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

20 years agoFixes for PR258 and PR259.
John Criswell [Thu, 26 Feb 2004 22:20:58 +0000 (22:20 +0000)]
Fixes for PR258 and PR259.
Functions with linkonce linkage are declared with weak linkage.
Global floating point constants used to represent unprintable values
(such as NaN and infinity) are declared static so that they don't interfere
with other CBE generated translation units.

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

20 years agoBe a good little compiler and handle direct calls efficiently, even if there
Chris Lattner [Thu, 26 Feb 2004 22:07:22 +0000 (22:07 +0000)]
Be a good little compiler and handle direct calls efficiently, even if there
are beastly ConstantPointerRefs in the way...

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

20 years agoUncomment assertions that register# != 0 on calls to
Alkis Evlogimenos [Thu, 26 Feb 2004 22:00:20 +0000 (22:00 +0000)]
Uncomment assertions that register# != 0 on calls to
MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes
to relevant files.

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

20 years agoModified the default pathname for Povray.
John Criswell [Thu, 26 Feb 2004 20:22:59 +0000 (20:22 +0000)]
Modified the default pathname for Povray.

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

20 years agoSince LLVM uses structure type equivalence, it isn't useful to keep around
Chris Lattner [Thu, 26 Feb 2004 20:02:23 +0000 (20:02 +0000)]
Since LLVM uses structure type equivalence, it isn't useful to keep around
multiple type names for the same structural type.  Make DTE eliminate all
but one of the type names

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

20 years agoAnnotations are evil. This makes Value not derive from Annotable, which makes
Chris Lattner [Thu, 26 Feb 2004 08:08:38 +0000 (08:08 +0000)]
Annotations are evil.  This makes Value not derive from Annotable, which makes
all dynamically allocated LLVM values 4 bytes smaller, eliminate some vtables, and
make Value's destructor faster.

This makes Function derive from Annotation now because it is the only core LLVM
class that still has an annotation stuck onto it: MachineFunction.
MachineFunction is obviously horrible and gross (like most other annotations), but
will be the subject of refactorings later in the future.  Besides many fewer
Function objects are dynamically allocated that instructions blocks, constants,
types, etc... :)

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

20 years agoadd note
Chris Lattner [Thu, 26 Feb 2004 08:02:57 +0000 (08:02 +0000)]
add note

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

20 years agoUse a map instead of annotations
Chris Lattner [Thu, 26 Feb 2004 08:02:17 +0000 (08:02 +0000)]
Use a map instead of annotations

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

20 years agoMake TargetData no longer use annotations!
Chris Lattner [Thu, 26 Feb 2004 08:01:57 +0000 (08:01 +0000)]
Make TargetData no longer use annotations!

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

20 years agoEliminate copy-and-paste comments
Chris Lattner [Thu, 26 Feb 2004 08:01:30 +0000 (08:01 +0000)]
Eliminate copy-and-paste comments

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

20 years agoremove obsolete comment
Chris Lattner [Thu, 26 Feb 2004 07:59:22 +0000 (07:59 +0000)]
remove obsolete comment

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

20 years agoMake sure that at least one virtual method is defined in a .cpp file to avoid
Chris Lattner [Thu, 26 Feb 2004 07:24:18 +0000 (07:24 +0000)]
Make sure that at least one virtual method is defined in a .cpp file to avoid
having the compiler emit RTTI and vtables to EVERY translation unit.

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

20 years agoturn things like:
Chris Lattner [Thu, 26 Feb 2004 07:13:46 +0000 (07:13 +0000)]
turn things like:
   if (X == 0 || X == 2)

...where the comparisons and branches are in different blocks... into a switch
instruction.  This comes up a lot in various programs, and works well with
the switch/switch merging code I checked earlier.  For example, this testcase:

int switchtest(int C) {
  return C == 0 ? f(123) :
         C == 1 ? f(3123) :
         C == 4 ? f(312) :
         C == 5 ? f(1234): f(444);
}

is converted into this:
        switch int %C, label %cond_false.3 [
                 int 0, label %cond_true.0
                 int 1, label %cond_true.1
                 int 4, label %cond_true.2
                 int 5, label %cond_true.3
        ]

instead of a whole bunch of conditional branches.

Admittedly the code is ugly, and incomplete.  To be complete, we need to add
br -> switch merging and switch -> br merging.  For example, this testcase:

struct foo { int Q, R, Z; };
#define A (X->Q+X->R * 123)
int test(struct foo *X) {
  return A  == 123 ? X1() :
        A == 12321 ? X2():
        (A == 111 || A == 222) ? X3() :
        A == 875 ? X4() : X5();
}

Gets compiled to this:
        switch int %tmp.7, label %cond_false.2 [
                 int 123, label %cond_true.0
                 int 12321, label %cond_true.1
                 int 111, label %cond_true.2
                 int 222, label %cond_true.2
        ]
...
cond_false.2:           ; preds = %entry
        %tmp.52 = seteq int %tmp.7, 875         ; <bool> [#uses=1]
        br bool %tmp.52, label %cond_true.3, label %cond_false.3

where the branch could be folded into the switch.

This kind of thing occurs *ALL OF THE TIME*, especially in programs like
176.gcc, which is a horrible mess of code.  It contains stuff like *shudder*:

#define SWITCH_TAKES_ARG(CHAR) \
  (   (CHAR) == 'D' \
   || (CHAR) == 'U' \
   || (CHAR) == 'o' \
   || (CHAR) == 'e' \
   || (CHAR) == 'u' \
   || (CHAR) == 'I' \
   || (CHAR) == 'm' \
   || (CHAR) == 'L' \
   || (CHAR) == 'A' \
   || (CHAR) == 'h' \
   || (CHAR) == 'z')

and

#define CONST_OK_FOR_LETTER_P(VALUE, C)                 \
  ((C) == 'I' ? SMALL_INTVAL (VALUE)                    \
   : (C) == 'J' ? SMALL_INTVAL (-(VALUE))               \
   : (C) == 'K' ? (unsigned)(VALUE) < 32                \
   : (C) == 'L' ? ((VALUE) & 0xffff) == 0               \
   : (C) == 'M' ? integer_ok_for_set (VALUE)            \
   : (C) == 'N' ? (VALUE) < 0                           \
   : (C) == 'O' ? (VALUE) == 0                          \
   : (C) == 'P' ? (VALUE) >= 0                          \
   : 0)

and

#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN)                     \
{                                                               \
  if (GET_CODE (X) == PLUS && CONSTANT_ADDRESS_P (XEXP (X, 1))) \
    (X) = gen_rtx (PLUS, SImode, XEXP (X, 0),                   \
                   copy_to_mode_reg (SImode, XEXP (X, 1)));     \
  if (GET_CODE (X) == PLUS && CONSTANT_ADDRESS_P (XEXP (X, 0))) \
    (X) = gen_rtx (PLUS, SImode, XEXP (X, 1),                   \
                   copy_to_mode_reg (SImode, XEXP (X, 0)));     \
  if (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 0)) == MULT)   \
    (X) = gen_rtx (PLUS, SImode, XEXP (X, 1),                   \
                   force_operand (XEXP (X, 0), 0));             \
  if (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 1)) == MULT)   \
    (X) = gen_rtx (PLUS, SImode, XEXP (X, 0),                   \
                   force_operand (XEXP (X, 1), 0));             \
  if (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 0)) == PLUS)   \
    (X) = gen_rtx (PLUS, Pmode, force_operand (XEXP (X, 0), NULL_RTX),\
                   XEXP (X, 1));                                \
  if (GET_CODE (X) == PLUS && GET_CODE (XEXP (X, 1)) == PLUS)   \
    (X) = gen_rtx (PLUS, Pmode, XEXP (X, 0),                    \
                   force_operand (XEXP (X, 1), NULL_RTX));      \
  if (GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == CONST       \
           || GET_CODE (X) == LABEL_REF)                        \
    (X) = legitimize_address (flag_pic, X, 0, 0);               \
  if (memory_address_p (MODE, X))                               \
    goto WIN; }

and others.  These macros get used multiple times of course.  These are such
lovely candidates for macros, aren't they?  :)

This code also nicely handles LLVM constructs that look like this:

  if (isa<CastInst>(I))
   ...
  else if (isa<BranchInst>(I))
   ...
  else if (isa<SetCondInst>(I))
   ...
  else if (isa<UnwindInst>(I))
   ...
  else if (isa<VAArgInst>(I))
   ...

where the isa can obviously be a dyn_cast as well.  Switch instructions are a
good thing.

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

20 years agoNo need to clear the map here, it will always be empty
Chris Lattner [Thu, 26 Feb 2004 05:21:21 +0000 (05:21 +0000)]
No need to clear the map here, it will always be empty

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

20 years agoFix a bug in the densemap that was killing the local allocator, and probably
Chris Lattner [Thu, 26 Feb 2004 05:00:15 +0000 (05:00 +0000)]
Fix a bug in the densemap that was killing the local allocator, and probably
other clients.  The problem is that the nullVal member was left to the default
constructor to initialize, which for int's does nothing (ie, leaves it unspecified).

To get a zero value, we must use T().  It's C++ wonderful? :)

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

20 years agoRemove .micro references as those files no longer exist and add some more recent...
Alkis Evlogimenos [Thu, 26 Feb 2004 04:14:10 +0000 (04:14 +0000)]
Remove .micro references as those files no longer exist and add some more recent Makefile additions to the list

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

20 years agoFix typeo. grow() cannot shrink storage. clear() should really nuke storage
Chris Lattner [Thu, 26 Feb 2004 04:07:12 +0000 (04:07 +0000)]
Fix typeo.  grow() cannot shrink storage.  clear() should really nuke storage

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

20 years agoFix typo
Chris Lattner [Thu, 26 Feb 2004 03:45:03 +0000 (03:45 +0000)]
Fix typo

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