Chris Lattner [Fri, 30 Sep 2005 17:49:27 +0000 (17:49 +0000)]
Rename MRegisterDesc -> TargetRegisterDesc for consistency
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23564
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:46:55 +0000 (17:46 +0000)]
Update the discussion of TargetRegisterDesc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23563
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:41:05 +0000 (17:41 +0000)]
remove some more initializers
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23562
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:38:36 +0000 (17:38 +0000)]
trim down the target info structs now that we have a preferred spill register class for each callee save register
Why is V9 maintaining these tables manually? ugh!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23561
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:35:22 +0000 (17:35 +0000)]
trim down the target info structs now that we have a preferred spill register class for each callee save register
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23560
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:19:22 +0000 (17:19 +0000)]
now that we have a reg class to spill with, get this info from the regclass
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23559
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:16:59 +0000 (17:16 +0000)]
constant fold these calls
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23558
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 17:12:38 +0000 (17:12 +0000)]
simplify this code using the new regclass info passed in
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23557
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 16:59:07 +0000 (16:59 +0000)]
Now that we have getCalleeSaveRegClasses() info, use it to pass the register
class into the spill/reload methods. Targets can now rely on that argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23556
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 07:06:37 +0000 (07:06 +0000)]
expose a new virtual method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23555
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:55:18 +0000 (06:55 +0000)]
stub out a virtual method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23554
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:44:45 +0000 (06:44 +0000)]
Compute a preferred spill register class for each callee-save register
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23553
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 30 Sep 2005 06:43:58 +0000 (06:43 +0000)]
CR registers are not used by this "target"
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23552
91177308-0d34-0410-b5e6-
96231b3b80d8
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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