oota-llvm.git
18 years agothese registers don't belong to any register classes, so don't mark them
Chris Lattner [Fri, 30 Sep 2005 06:42:24 +0000 (06:42 +0000)]
these registers don't belong to any register classes, so don't mark them
as callee save.  They can never be generated by the compiler.

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

18 years agoFix a warning
Chris Lattner [Fri, 30 Sep 2005 06:09:50 +0000 (06:09 +0000)]
Fix a warning

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

18 years agoRegenerate
Chris Lattner [Fri, 30 Sep 2005 04:53:25 +0000 (04:53 +0000)]
Regenerate

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

18 years agoRefactor this a bit to move ParsingTemplateArgs to only apply to classes,
Chris Lattner [Fri, 30 Sep 2005 04:53:04 +0000 (04:53 +0000)]
Refactor this a bit to move ParsingTemplateArgs to only apply to classes,
not defs.

Implement support for forward definitions of classes.  This implements
TableGen/ForwardRef.td.

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

18 years agoAdd a test that you can forward ref a class.
Chris Lattner [Fri, 30 Sep 2005 04:52:43 +0000 (04:52 +0000)]
Add a test that you can forward ref a class.

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

18 years agoRegenerate
Chris Lattner [Fri, 30 Sep 2005 04:42:56 +0000 (04:42 +0000)]
Regenerate

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

18 years agoGenerate a parse error instead of a checked exception if template args are
Chris Lattner [Fri, 30 Sep 2005 04:42:31 +0000 (04:42 +0000)]
Generate a parse error instead of a checked exception if template args are
used on a def.

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

18 years agoNow that self referential classes are supported, get rid of a work-around.
Chris Lattner [Fri, 30 Sep 2005 04:13:23 +0000 (04:13 +0000)]
Now that self referential classes are supported, get rid of a work-around.

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

18 years agoregenerate
Chris Lattner [Fri, 30 Sep 2005 04:11:27 +0000 (04:11 +0000)]
regenerate

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

18 years agoRefactor the grammar a bit to implement TableGen/ForwardRef.td
Chris Lattner [Fri, 30 Sep 2005 04:10:49 +0000 (04:10 +0000)]
Refactor the grammar a bit to implement TableGen/ForwardRef.td

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

18 years agoCheck that we can refer to the same class we are defining.
Chris Lattner [Fri, 30 Sep 2005 04:10:17 +0000 (04:10 +0000)]
Check that we can refer to the same class we are defining.

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

18 years agoallow regs to be in multiple reg classes
Chris Lattner [Fri, 30 Sep 2005 01:33:48 +0000 (01:33 +0000)]
allow regs to be in multiple reg classes

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

18 years agopass extra args
Chris Lattner [Fri, 30 Sep 2005 01:31:52 +0000 (01:31 +0000)]
pass extra args

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

18 years agothese methods get extra args
Chris Lattner [Fri, 30 Sep 2005 01:30:55 +0000 (01:30 +0000)]
these methods get extra args

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

18 years agoPass extra regclasses into spilling code
Chris Lattner [Fri, 30 Sep 2005 01:29:42 +0000 (01:29 +0000)]
Pass extra regclasses into spilling code

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

18 years agoChange this code ot pass register classes into the stack slot spiller/reloader
Chris Lattner [Fri, 30 Sep 2005 01:29:00 +0000 (01:29 +0000)]
Change this code ot pass register classes into the stack slot spiller/reloader
code.  PrologEpilogInserter hasn't been updated yet though, so targets cannot
use this info.

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

18 years agoChange these methods to take RC's
Chris Lattner [Fri, 30 Sep 2005 01:28:14 +0000 (01:28 +0000)]
Change these methods to take RC's

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

18 years agoUse the 32-bit version for now
Chris Lattner [Fri, 30 Sep 2005 00:05:05 +0000 (00:05 +0000)]
Use the 32-bit version for now

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

18 years agoAdd a bunch of patterns for F64 FP ops, add some more integer ops
Chris Lattner [Thu, 29 Sep 2005 23:34:24 +0000 (23:34 +0000)]
Add a bunch of patterns for F64 FP ops, add some more integer ops

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

18 years agoRemove code for patterns that are autogenerated
Chris Lattner [Thu, 29 Sep 2005 23:33:31 +0000 (23:33 +0000)]
Remove code for patterns that are autogenerated

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

18 years agobegining alpha subtarget support
Andrew Lenharth [Thu, 29 Sep 2005 22:54:56 +0000 (22:54 +0000)]
begining alpha subtarget support

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

18 years agotblgen autogens this pattern now
Chris Lattner [Thu, 29 Sep 2005 22:37:24 +0000 (22:37 +0000)]
tblgen autogens this pattern now

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

18 years agoTeach tablegen to reassociate operators when possible. This allows it to
Chris Lattner [Thu, 29 Sep 2005 22:36:54 +0000 (22:36 +0000)]
Teach tablegen to reassociate operators when possible.  This allows it to
find all of teh pattern matches for EQV from one definition

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

18 years agocopy and paste error
Andrew Lenharth [Thu, 29 Sep 2005 21:11:57 +0000 (21:11 +0000)]
copy and paste error

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

18 years agonow that tblgen is smarter, this pattern is not needed. Also, tblgen
Chris Lattner [Thu, 29 Sep 2005 19:29:15 +0000 (19:29 +0000)]
now that tblgen is smarter, this pattern is not needed.  Also, tblgen
now inverts commuted versions of ANDC/ORC with the current .td file.

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

18 years agoTeach tblgen to build permutations of instructions, so that the target author
Chris Lattner [Thu, 29 Sep 2005 19:28:10 +0000 (19:28 +0000)]
Teach tblgen to build permutations of instructions, so that the target author
doesn't have to specify them manually.  It currently handles associativity,
e.g. knowing that (X*Y)+Z  also matches  X+(Y*Z)  and will be extended in
the future.

It is smart enough to not introduce duplicate patterns or patterns that can
never match.

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

18 years agoInsert stores after phi nodes in the normal dest. This fixes
Chris Lattner [Thu, 29 Sep 2005 17:44:20 +0000 (17:44 +0000)]
Insert stores after phi nodes in the normal dest.  This fixes
LowerInvoke/2005-08-03-InvokeWithPHI.ll

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

18 years agoconsistency with other cases, no functionality change
Chris Lattner [Thu, 29 Sep 2005 17:38:52 +0000 (17:38 +0000)]
consistency with other cases, no functionality change

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

18 years agoMake the JIT default to the DAG isel instead of the pattern isel, like LLC.
Chris Lattner [Thu, 29 Sep 2005 17:31:03 +0000 (17:31 +0000)]
Make the JIT default to the DAG isel instead of the pattern isel, like LLC.
The Pattern isel has some strange memory corruption issues going on. :(

This should have been converted over anyway, but it got forgotten somehow
when switching to the dag isel.

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

18 years agoFix two bugs in my patch earlier today that broke int->fp conversion on X86.
Chris Lattner [Thu, 29 Sep 2005 06:44:39 +0000 (06:44 +0000)]
Fix two bugs in my patch earlier today that broke int->fp conversion on X86.

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

18 years agoFold isascii into a simple comparison. This speeds up 197.parser by 7.4%,
Chris Lattner [Thu, 29 Sep 2005 06:17:27 +0000 (06:17 +0000)]
Fold isascii into a simple comparison.  This speeds up 197.parser by 7.4%,
bringing the LLC time down to the CBE time.

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

18 years agonew testcase for isascii
Chris Lattner [Thu, 29 Sep 2005 06:16:37 +0000 (06:16 +0000)]
new testcase for isascii

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

18 years agoremove a bunch of unneeded stuff, or self evident comments
Chris Lattner [Thu, 29 Sep 2005 06:16:11 +0000 (06:16 +0000)]
remove a bunch of unneeded stuff, or self evident comments

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

18 years agoadd a new testcase
Chris Lattner [Thu, 29 Sep 2005 06:11:34 +0000 (06:11 +0000)]
add a new testcase

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

18 years agoImplement a couple of memcmp folds from the todo list
Chris Lattner [Thu, 29 Sep 2005 04:54:20 +0000 (04:54 +0000)]
Implement a couple of memcmp folds from the todo list

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

18 years agoSilence VC++ redeclaration warnings.
Jeff Cohen [Thu, 29 Sep 2005 01:59:49 +0000 (01:59 +0000)]
Silence VC++ redeclaration warnings.

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

18 years agoNever rely on ReplaceAllUsesWith when selecting, use CodeGenMap instead.
Chris Lattner [Thu, 29 Sep 2005 00:59:32 +0000 (00:59 +0000)]
Never rely on ReplaceAllUsesWith when selecting, use CodeGenMap instead.
ReplaceAllUsesWith does not replace scalars SDOperand floating around on
the stack, permitting things to be selected multiple times.

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

18 years agoCodegen ADD X, IMM -> addis/addi if needed.
Chris Lattner [Wed, 28 Sep 2005 23:07:13 +0000 (23:07 +0000)]
Codegen ADD X, IMM -> addis/addi if needed.
This implements PowerPC/fold-li.ll

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

18 years agoadd a testcase for a feature we regressed on because noone wrote the test! :(
Chris Lattner [Wed, 28 Sep 2005 23:03:11 +0000 (23:03 +0000)]
add a testcase for a feature we regressed on because noone wrote the test! :(

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

18 years agoAutogen MUL, move FP cases together
Chris Lattner [Wed, 28 Sep 2005 22:53:16 +0000 (22:53 +0000)]
Autogen MUL, move FP cases together

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

18 years agodisentangle FP from INT versions of div/mul
Chris Lattner [Wed, 28 Sep 2005 22:50:24 +0000 (22:50 +0000)]
disentangle FP from INT versions of div/mul

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

18 years agoUse the autogenerated matcher for ADD/SUB
Chris Lattner [Wed, 28 Sep 2005 22:47:28 +0000 (22:47 +0000)]
Use the autogenerated matcher for ADD/SUB

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

18 years agoadd a patter for SUBFIC
Chris Lattner [Wed, 28 Sep 2005 22:47:06 +0000 (22:47 +0000)]
add a patter for SUBFIC

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

18 years agoMark int binops as int-only, add FP binops. Mark FADD/FMUL as commutative but
Chris Lattner [Wed, 28 Sep 2005 22:38:27 +0000 (22:38 +0000)]
Mark int binops as int-only, add FP binops.  Mark FADD/FMUL as commutative but
not associative.  Add [SU]REM.

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

18 years agowrap a long line
Chris Lattner [Wed, 28 Sep 2005 22:30:58 +0000 (22:30 +0000)]
wrap a long line

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

18 years agoAdd FP versions of the binary operators, keeping the int and fp worlds seperate.
Chris Lattner [Wed, 28 Sep 2005 22:29:58 +0000 (22:29 +0000)]
Add FP versions of the binary operators, keeping the int and fp worlds seperate.

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

18 years agoAdd FP versions of the binary operators, keeping the int and fp worlds seperate.
Chris Lattner [Wed, 28 Sep 2005 22:29:17 +0000 (22:29 +0000)]
Add FP versions of the binary operators, keeping the int and fp worlds seperate.
Though I have done extensive testing, it is possible that this will break
things in configs I can't test.  Please let me know if this causes a problem
and I'll fix it ASAP.

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

18 years agoAdd FP versions of the binary operators, keeping the int and fp worlds seperate.
Chris Lattner [Wed, 28 Sep 2005 22:28:18 +0000 (22:28 +0000)]
Add FP versions of the binary operators, keeping the int and fp worlds seperate.

Though I have done extensive testing, it is possible that this will break
things in configs I can't test.  Please let me know if this causes a problem
and I'll fix it ASAP.

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

18 years agoMark associative nodes as associative
Chris Lattner [Wed, 28 Sep 2005 20:58:39 +0000 (20:58 +0000)]
Mark associative nodes as associative

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

18 years agoadd support for an associative marker
Chris Lattner [Wed, 28 Sep 2005 20:58:06 +0000 (20:58 +0000)]
add support for an associative marker

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

18 years agoEmit an error if instructions or patterns are defined but can never match.
Chris Lattner [Wed, 28 Sep 2005 19:27:25 +0000 (19:27 +0000)]
Emit an error if instructions or patterns are defined but can never match.
Currently we check that immediate values live on the RHS of commutative
operators.  Defining ORI like this, for example:

def ORI   : DForm_4<24, (ops GPRC:$dst, GPRC:$src1, u16imm:$src2),
                    "ori $dst, $src1, $src2",
                    [(set GPRC:$dst, (or immZExt16:$src2, GPRC:$src1))]>;

results in:

tblgen: In ORI: Instruction can never match: Immediate values must be on the RHS of commutative operators!

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

18 years agoNate pointed out that mulh[us] are commutative as well. Thanks!
Chris Lattner [Wed, 28 Sep 2005 19:01:44 +0000 (19:01 +0000)]
Nate pointed out that mulh[us] are commutative as well. Thanks!

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

18 years agocollect commutativity information
Chris Lattner [Wed, 28 Sep 2005 18:28:29 +0000 (18:28 +0000)]
collect commutativity information

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

18 years agoexpose commutativity information
Chris Lattner [Wed, 28 Sep 2005 18:27:58 +0000 (18:27 +0000)]
expose commutativity information

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

18 years agoAll (xor *) cases are autogenerated now
Chris Lattner [Wed, 28 Sep 2005 18:12:37 +0000 (18:12 +0000)]
All (xor *) cases are autogenerated now

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

18 years agoadd support for missed eqv tests
Chris Lattner [Wed, 28 Sep 2005 18:10:51 +0000 (18:10 +0000)]
add support for missed eqv tests

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

18 years agoadd testcase for nand
Chris Lattner [Wed, 28 Sep 2005 18:08:58 +0000 (18:08 +0000)]
add testcase for nand

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

18 years agoImplement PowerPC/eqv-andc-orc-nor.ll:EQV3
Chris Lattner [Wed, 28 Sep 2005 18:04:52 +0000 (18:04 +0000)]
Implement PowerPC/eqv-andc-orc-nor.ll:EQV3

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

18 years agoConsolidate the eqv.ll and nor.ll files together.
Chris Lattner [Wed, 28 Sep 2005 18:04:22 +0000 (18:04 +0000)]
Consolidate the eqv.ll and nor.ll files together.
Add a missed eqv case.

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

18 years agoPrefer cheaper patterns to more expensive ones. Print the costs to the generated
Chris Lattner [Wed, 28 Sep 2005 17:57:56 +0000 (17:57 +0000)]
Prefer cheaper patterns to more expensive ones.  Print the costs to the generated
file

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

18 years agosimple tests for nor generation
Chris Lattner [Wed, 28 Sep 2005 17:55:10 +0000 (17:55 +0000)]
simple tests for nor generation

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

18 years agolearn to codegen not as NOR instead of xoris/xori
Chris Lattner [Wed, 28 Sep 2005 17:13:15 +0000 (17:13 +0000)]
learn to codegen not as NOR instead of xoris/xori

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

18 years agoThese nodes are all autogenerated
Chris Lattner [Wed, 28 Sep 2005 17:07:09 +0000 (17:07 +0000)]
These nodes are all autogenerated

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

18 years agoSelect Constant nodes to TargetConstant nodes
Chris Lattner [Wed, 28 Sep 2005 16:58:06 +0000 (16:58 +0000)]
Select Constant nodes to TargetConstant nodes

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

18 years agoConstant fold llvm.sqrt
Chris Lattner [Wed, 28 Sep 2005 01:34:32 +0000 (01:34 +0000)]
Constant fold llvm.sqrt

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

18 years agoadd a note about a way to improve this code further, that I won't be getting
Chris Lattner [Tue, 27 Sep 2005 22:44:59 +0000 (22:44 +0000)]
add a note about a way to improve this code further, that I won't be getting
to right now.

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

18 years agoFix a regression in my previous patch, fixing GlobalOpt/2005-09-27-Crash.ll
Chris Lattner [Tue, 27 Sep 2005 22:28:11 +0000 (22:28 +0000)]
Fix a regression in my previous patch, fixing GlobalOpt/2005-09-27-Crash.ll
and PR632.

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

18 years agoTestcase for PR632
Chris Lattner [Tue, 27 Sep 2005 22:27:19 +0000 (22:27 +0000)]
Testcase for PR632

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

18 years agoDarwin, like many BSD systems, has a setjmp/longjmp which saves the signal mask
Chris Lattner [Tue, 27 Sep 2005 22:18:25 +0000 (22:18 +0000)]
Darwin, like many BSD systems, has a setjmp/longjmp which saves the signal mask
on setjmp calls and restores it on longjmp calls (both of which require syscalls).

This makes the calls REALLY slow.  Use _setjmp/_longjmp instead.  This speeds up
hexxagon from 120.31s to 15.68s: from 5.53x slower than GCC to 28% faster than GCC.

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

18 years agoIf the target prefers it, use _setjmp/_longjmp should be used instead of setjmp/longj...
Chris Lattner [Tue, 27 Sep 2005 22:15:53 +0000 (22:15 +0000)]
If the target prefers it, use _setjmp/_longjmp should be used instead of setjmp/longjmp for llvm.setjmp/llvm.longjmp.

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

18 years agoinitialize new flag
Chris Lattner [Tue, 27 Sep 2005 22:13:56 +0000 (22:13 +0000)]
initialize new flag

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

18 years agoAdd a new flag for targets where setjmp/longjmp saves/restores the signal mask,
Chris Lattner [Tue, 27 Sep 2005 22:13:36 +0000 (22:13 +0000)]
Add a new flag for targets where setjmp/longjmp saves/restores the signal mask,
and _setjmp/_longjmp should be used instead (for llvm.setjmp/llvm.longjmp).

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

18 years agoAvoid spilling stack slots... to stack slots.
Chris Lattner [Tue, 27 Sep 2005 21:33:12 +0000 (21:33 +0000)]
Avoid spilling stack slots... to stack slots.

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

18 years agoCompletely rewrite 'correct' eh support. This changes how setjmp insertion
Chris Lattner [Tue, 27 Sep 2005 21:18:17 +0000 (21:18 +0000)]
Completely rewrite 'correct' eh support.  This changes how setjmp insertion
is performed so it is only at most once per function that contains an invoke
instead of once per invoke in the function.  This patch has the following perks:

1. It fixes PR631, which complains about slowness.
2. If fixes PR240, which complains about non-volatile vars being live across
   setjmp/longjmps.
3. It improves (but does not fix) the jmpbuf alignment issue on itanium by not
   forcing the jmpbufs to always be 8-bytes off the alignment of the structure.
4. It speeds up 253.perlbmk from 338s to 13.70s (a 25x improvement!), making us
   now about 4% faster than GCC.

Further improvements are also possible.

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

18 years agoMake the pass name simpler
Chris Lattner [Tue, 27 Sep 2005 21:10:32 +0000 (21:10 +0000)]
Make the pass name simpler

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

18 years agofix CBackend/2005-09-27-VolatileFuncPtr.ll
Chris Lattner [Tue, 27 Sep 2005 20:52:44 +0000 (20:52 +0000)]
fix CBackend/2005-09-27-VolatileFuncPtr.ll

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

18 years agonew testcase the CBE creates invalid C code for
Chris Lattner [Tue, 27 Sep 2005 20:52:30 +0000 (20:52 +0000)]
new testcase the CBE creates invalid C code for

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

18 years agoallow demotion to volatile values, add support for invoke
Chris Lattner [Tue, 27 Sep 2005 19:39:00 +0000 (19:39 +0000)]
allow demotion to volatile values, add support for invoke

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

18 years agoallow demotion to volatile values
Chris Lattner [Tue, 27 Sep 2005 19:38:43 +0000 (19:38 +0000)]
allow demotion to volatile values

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

18 years agoAdd a simple testcase for lowerinvoke
Chris Lattner [Tue, 27 Sep 2005 18:34:31 +0000 (18:34 +0000)]
Add a simple testcase for lowerinvoke

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

18 years agoMake sure to clear the CodeGenMap after each basic block is selected to avoid
Chris Lattner [Tue, 27 Sep 2005 17:45:33 +0000 (17:45 +0000)]
Make sure to clear the CodeGenMap after each basic block is selected to avoid
cross MBB pollution.

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

18 years agoRemove some redundancies.
Jim Laskey [Tue, 27 Sep 2005 17:32:45 +0000 (17:32 +0000)]
Remove some redundancies.

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

18 years agoMake this slightly more efficient by pushing actual type information down
Chris Lattner [Tue, 27 Sep 2005 06:38:05 +0000 (06:38 +0000)]
Make this slightly more efficient by pushing actual type information down
into the evaluator.  This shrinks a release build of instcombine's text
section from 216363 to 215975 bytes (on PPC).

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

18 years agoSplit SimpleConstantVal up into its components, so each Constant subclass getsa diffe...
Chris Lattner [Tue, 27 Sep 2005 06:09:08 +0000 (06:09 +0000)]
Split SimpleConstantVal up into its components, so each Constant subclass getsa different enum value.  This allows 'classof' for these to be really simple,not needing to call getType() anymore.

This speeds up isa/dyncast/etc for constants, and also makes them smaller.
For example, the text section of a release build of InstCombine.cpp shrinks
from 230037 bytes to 216363 bytes, a 6% reduction.

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

18 years agoSplit SimpleConstantVal up into its components, so each Constant subclass gets
Chris Lattner [Tue, 27 Sep 2005 06:08:32 +0000 (06:08 +0000)]
Split SimpleConstantVal up into its components, so each Constant subclass gets
a different enum value.  This allows 'classof' for these to be really simple,
not needing to call getType() anymore.

This speeds up isa/dyncast/etc for constants, and also makes them smaller.
For example, the text section of a release build of InstCombine.cpp shrinks
from 230037 bytes to 216363 bytes, a 6% reduction.

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

18 years agoAdd support for external calls that we know how to constant fold. This implements
Chris Lattner [Tue, 27 Sep 2005 05:02:43 +0000 (05:02 +0000)]
Add support for external calls that we know how to constant fold.  This implements
ctor-list-opt.ll:CTOR8

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

18 years agoadd a new testcase for constant foldable calls
Chris Lattner [Tue, 27 Sep 2005 05:02:03 +0000 (05:02 +0000)]
add a new testcase for constant foldable calls

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

18 years agoFix a bug where we would evaluate stores into linkonce objects which could be
Chris Lattner [Tue, 27 Sep 2005 04:50:03 +0000 (04:50 +0000)]
Fix a bug where we would evaluate stores into linkonce objects which could be
potentially replaced at link-time.

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

18 years agoImplement support for static constructors with calls in them. This is useful
Chris Lattner [Tue, 27 Sep 2005 04:45:34 +0000 (04:45 +0000)]
Implement support for static constructors with calls in them.  This is useful
because gccas runs globalopt before inlining.

This implements ctor-list-opt.ll:CTOR7

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

18 years agoAdd a more difficult testcase which uses a call to a helper function to do
Chris Lattner [Tue, 27 Sep 2005 04:44:04 +0000 (04:44 +0000)]
Add a more difficult testcase which uses a call to a helper function to do
the initialization

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

18 years agoRefactor this code a bit, no functionality changes.
Chris Lattner [Tue, 27 Sep 2005 04:27:01 +0000 (04:27 +0000)]
Refactor this code a bit, no functionality changes.

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

18 years agoMove the post-lsr simplify cfg pass after lowereh, so it can clean up after
Chris Lattner [Tue, 27 Sep 2005 00:14:41 +0000 (00:14 +0000)]
Move the post-lsr simplify cfg pass after lowereh, so it can clean up after
eh lowering as well.

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

18 years agominor pattern shuffling
Chris Lattner [Mon, 26 Sep 2005 22:20:16 +0000 (22:20 +0000)]
minor pattern shuffling

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

18 years agomemoize the assert results
Chris Lattner [Mon, 26 Sep 2005 22:10:24 +0000 (22:10 +0000)]
memoize the assert results

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

18 years agoEmit the switch stmt cases in alphabetical order instead of pointer order,
Chris Lattner [Mon, 26 Sep 2005 21:59:35 +0000 (21:59 +0000)]
Emit the switch stmt cases in alphabetical order instead of pointer order,
which is not stable.

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

18 years agoAddition of a simple two pass scheduler. This version is currently hacked up
Jim Laskey [Mon, 26 Sep 2005 21:57:04 +0000 (21:57 +0000)]
Addition of a simple two pass scheduler.  This version is currently hacked up
for testing and will require target machine info to do a proper scheduling.
The simple scheduler can be turned on using -sched=simple (defaults
to -sched=none)

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

18 years agoimplement a fixme: only select values once, even if used multiple times.
Chris Lattner [Mon, 26 Sep 2005 21:53:26 +0000 (21:53 +0000)]
implement a fixme: only select values once, even if used multiple times.

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

18 years agoRemove some dead code. ctor evaluation subsumes empty ctor elim
Chris Lattner [Mon, 26 Sep 2005 20:38:20 +0000 (20:38 +0000)]
Remove some dead code.  ctor evaluation subsumes empty ctor elim

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

18 years agoAdd support for alloca, implementing ctor-list-opt.ll:CTOR6
Chris Lattner [Mon, 26 Sep 2005 17:07:09 +0000 (17:07 +0000)]
Add support for alloca, implementing ctor-list-opt.ll:CTOR6

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

18 years agoTestcase that uses an alloca
Chris Lattner [Mon, 26 Sep 2005 17:06:32 +0000 (17:06 +0000)]
Testcase that uses an alloca

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