Evan Cheng [Wed, 28 Feb 2007 00:17:36 +0000 (00:17 +0000)]
MRegisterInfo disowns RegScavenger. It's immutable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34706
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 23:49:07 +0000 (23:49 +0000)]
Join two lines that can be joined.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34705
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 23:47:33 +0000 (23:47 +0000)]
Add some syntactic sugar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34704
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 23:33:03 +0000 (23:33 +0000)]
Pull out the stops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34703
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 23:27:26 +0000 (23:27 +0000)]
Remove some redundancy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34702
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 23:03:55 +0000 (23:03 +0000)]
Minor tweak. Allocate r0 to r3 in reverse order, r3 is least likely to be livein to a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34701
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 22:58:43 +0000 (22:58 +0000)]
Some more code clean up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34700
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 22:12:19 +0000 (22:12 +0000)]
reenable generation of CC info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34699
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 22:10:52 +0000 (22:10 +0000)]
Oops.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34698
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 22:08:27 +0000 (22:08 +0000)]
reapply
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34697
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 22:05:51 +0000 (22:05 +0000)]
*** empty log message ***
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34696
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 21:59:26 +0000 (21:59 +0000)]
Implement countLeadingOnes() and getMinSignedBits(). This helps to minimize
the bit width of negative numbers by computing the minimum bit width for a
negative value. E.g. 0x1800000000000000 could be just 0x8000000000000000
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34695
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:47:22 +0000 (21:47 +0000)]
Back out previous commit temporarily.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34694
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:44:08 +0000 (21:44 +0000)]
Backing out
CodeGenTarget.cpp updated: 1.82 -> 1.83
Record.cpp updated: 1.55 -> 1.56
Record.h updated: 1.59 -> 1.60
TableGen.cpp updated: 1.47 -> 1.48
It's missing CallingConvEmitter.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34693
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:12:35 +0000 (21:12 +0000)]
Let MRegisterInfo now owns RegScavenger; eliminateFrameIndex must preserve register kill info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34692
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:10:33 +0000 (21:10 +0000)]
Let MRegisterInfo now owns RegScavenger.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34691
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:09:48 +0000 (21:09 +0000)]
RegScavenger interface change to make it more flexible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34690
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:08:07 +0000 (21:08 +0000)]
Let MRegisterInfo owns RegScavenger.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34689
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 21:06:57 +0000 (21:06 +0000)]
Pass IsImp, IsKill, and IsDead to ChangeToRegister.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34688
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 20:46:44 +0000 (20:46 +0000)]
This test passes on x86/Linux now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34686
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 20:45:02 +0000 (20:45 +0000)]
implement CCMatchIfCC in terms of CCMatchIf
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34685
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 20:44:31 +0000 (20:44 +0000)]
build cc info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34684
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 20:44:12 +0000 (20:44 +0000)]
target for generating CC info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34683
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 20:43:37 +0000 (20:43 +0000)]
initial support for calling convention generation, still unfinished.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34682
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 20:25:25 +0000 (20:25 +0000)]
Adjust to changes in the APInt interface.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34681
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 20:24:31 +0000 (20:24 +0000)]
Improve APInt interface:
1. Add unsigned and signed versions of methods so a "bool" argument doesn't
need to be passed in.
2. Make the various getMin/getMax functions all be inline since they are
so simple.
3. Simplify sdiv and srem code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34680
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 19:31:09 +0000 (19:31 +0000)]
Conform to single person attribution in file comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34678
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 19:29:54 +0000 (19:29 +0000)]
For PR1205:
Implement review feedback:
1. Use new APInt::RoundDoubleToAPInt interface to specify the bit width so
that we don't have to truncate or extend in constant folding.
2. Fix a pasteo in SDiv that prevented a check for overflow.
3. Fix the shift operators: undef happens when the shift amount is equal
to the bitwidth.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34677
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 19:26:40 +0000 (19:26 +0000)]
Update for constant folding now generating undef and overflow correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34676
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 19:22:36 +0000 (19:22 +0000)]
Shifting by the bit width now produces undef, not 0.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34675
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 18:23:40 +0000 (18:23 +0000)]
1. Fix three serious bugs in the comparison code.
2. Change RoundDoubleToAPInt to take a bit width parameter. Use that
parameter to limit the bit width of the result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34673
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 18:22:31 +0000 (18:22 +0000)]
Allow the RoundDoubleToAPInt function to specify a width to use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34672
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 17:21:09 +0000 (17:21 +0000)]
a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34670
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 27 Feb 2007 15:00:39 +0000 (15:00 +0000)]
Make getPassManagerType() const.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34669
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Tue, 27 Feb 2007 13:10:41 +0000 (13:10 +0000)]
Fix parenthesis for BCTRL_{ELF|Macho} test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34668
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Tue, 27 Feb 2007 13:01:19 +0000 (13:01 +0000)]
Differentiate between the MachO and the ELF ABI the CALL instruction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34667
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Tue, 27 Feb 2007 11:55:45 +0000 (11:55 +0000)]
Duplicate use of LR, take 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34666
91177308-0d34-0410-b5e6-
96231b3b80d8
Nicolas Geoffray [Tue, 27 Feb 2007 10:44:42 +0000 (10:44 +0000)]
Added myself
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34665
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 08:34:09 +0000 (08:34 +0000)]
Allow the AsmWriter to print out arbitrary precision integers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34664
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 07:57:53 +0000 (07:57 +0000)]
Correct the implelmentation of ConstantInt::getAllOnesValue() for bit
widths > 64 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34663
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 07:35:18 +0000 (07:35 +0000)]
Get rid of extraneous // in file comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34662
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 06:59:52 +0000 (06:59 +0000)]
Add calling convention info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34661
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 06:23:51 +0000 (06:23 +0000)]
For PR1205:
Implement constant folding via APInt instead of uint64_t.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34660
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 05:57:32 +0000 (05:57 +0000)]
move target independent calling convention stuff to TargetCallingConv.td
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34659
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 05:51:05 +0000 (05:51 +0000)]
fill in some holes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34658
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 05:28:59 +0000 (05:28 +0000)]
switch x86-64 return value lowering over to using same mechanism as argument
lowering uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34657
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 05:13:54 +0000 (05:13 +0000)]
Minor refactoring of CC Lowering interfaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34656
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 04:43:02 +0000 (04:43 +0000)]
move CC Lowering stuff to its own public interface
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34655
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 04:18:15 +0000 (04:18 +0000)]
refactor x86-64 argument lowering yet again, this time eliminating templates,
'clients', etc, and adding CCValAssign instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34654
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 27 Feb 2007 03:05:06 +0000 (03:05 +0000)]
ConstantFolding.cpp/h -> ConstantFold.cpp/h to avoid confusion with
lib/Analysis/ConstantFolding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34653
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 02:55:29 +0000 (02:55 +0000)]
Backing out Jim's LR spill changes. This was causing llvm-gcc bootstrapping
to infinite loop:
PPCMachineFunctionInfo.h updated: 1.2 -> 1.3
PPCRegisterInfo.cpp updated: 1.110 -> 1.111
PPCRegisterInfo.h updated: 1.28 -> 1.29
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34652
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 02:45:12 +0000 (02:45 +0000)]
XFAIL this on x86-Linux until its fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34651
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 02:34:02 +0000 (02:34 +0000)]
Remove test cases that produce undefined results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34650
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 27 Feb 2007 01:58:48 +0000 (01:58 +0000)]
forward() should not increment internal iterator. Its client may insert instruction between now and next forward() call.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34649
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 27 Feb 2007 01:28:10 +0000 (01:28 +0000)]
Simplify and document RoundDoubleToAPInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34648
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 23:54:03 +0000 (23:54 +0000)]
For PR1205:
Implement the first step towards arbitrary precision integer support in
LLVM. The APInt class provides arbitrary precision arithmetic and value
representation. This patch changes ConstantInt to use APInt as its value
representation without supporting bit widths > 64 yet. That change will
come after ConstantFolding handles bit widths > 64 bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34647
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 23:38:21 +0000 (23:38 +0000)]
1. Make sure all delete operators of arrays use the array form of delete.
2. Rewrite operator=(const APInt& RHS) to allow the RHS to be a different
bit width than the LHS. This makes it possible to use APInt as the key
of a DenseMap, as needed for the IntConstants map in Constants.cpp
3. Fix operator=(uint64_t) to clear unused bits in case the client assigns
a value that has more bits than the APInt allows.
4. Assert that bit widths are equal in operator==
5. Revise getHashValue() to put the bit width in the low order six bits.
This should help to make i1 0, i2 0, ... i64 0 all distinct in the
IntConstants DenseMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34646
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 26 Feb 2007 21:37:37 +0000 (21:37 +0000)]
Joining an interval with a dead copy instruction. Shorten the live range to the last use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34645
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 21:06:05 +0000 (21:06 +0000)]
Fix indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34643
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 21:02:27 +0000 (21:02 +0000)]
Implement the getHashValue method.
Fix toString use of getValue to use getZExtValue()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34642
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 20:57:12 +0000 (20:57 +0000)]
1. Split getValue() into getSExtValue() and getZExtValue() to match
ConstantInt better.
2. Add a getHashValue() method.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34641
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 26 Feb 2007 20:22:50 +0000 (20:22 +0000)]
Use efficient container SmallPtrSet
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34640
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 19:44:02 +0000 (19:44 +0000)]
always lower to RETFLAG, never leave it as just ret.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34639
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 26 Feb 2007 19:31:58 +0000 (19:31 +0000)]
Do not unswitch loop on same value again and again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34638
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 18:56:07 +0000 (18:56 +0000)]
fix attribution
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34637
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 18:17:14 +0000 (18:17 +0000)]
Add a description of the X86-64 calling convention and the return
conventions. This doesn't do anything yet, but may in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34636
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 17:50:32 +0000 (17:50 +0000)]
Implement inline methods that make transition of ConstantInt to use APInt
easier to comprehend and might be useful elsewhere.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34635
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 08:10:54 +0000 (08:10 +0000)]
Re-enable this. The header was committed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34634
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 07:59:53 +0000 (07:59 +0000)]
switch to smallvector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34633
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 07:51:00 +0000 (07:51 +0000)]
another missing header :( :( :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34632
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 07:50:02 +0000 (07:50 +0000)]
initial hack at splitting the x86-64 calling convention info out from the
mechanics that process it. I'm still not happy with this, but it's a step
in the right direction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34631
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 07:45:40 +0000 (07:45 +0000)]
Make isNegative() a const function since it doesn't modify the APInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34630
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 07:44:38 +0000 (07:44 +0000)]
1. Remove redundant calls to clearUsedBits().
2. Fix countTrailingZeros to use a faster algorithm.
3. Simplify sext() slightly by using isNegative().
4. Implement ashr using word-at-a-time logic instead of bit-at-a-time
5. Rename locals named isNegative so they don't clash with method name.
6. Fix fromString to compute negated value correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34629
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 05:21:05 +0000 (05:21 +0000)]
the truncate must always be done, it's only the assert that is conditional.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34628
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 05:02:39 +0000 (05:02 +0000)]
reapply my previous patch with a bugfix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34627
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 04:43:19 +0000 (04:43 +0000)]
revert my previous change, something strange is happening.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34626
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 04:01:25 +0000 (04:01 +0000)]
add an accessor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34625
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 03:34:38 +0000 (03:34 +0000)]
emit an enum value for the # of target registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34624
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 03:18:56 +0000 (03:18 +0000)]
in X86-64 CCC, i8/i16 arguments are already properly zext/sext'd on input.
Capture this so that downstream zext/sext's are optimized out. This
compiles:
int test(short X) { return (int)X; }
to:
_test:
movl %edi, %eax
ret
instead of:
_test:
movswl %di, %eax
ret
GCC produces this bizarre code:
_test:
movw %di, -12(%rsp)
movswl -12(%rsp),%eax
ret
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34623
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 03:16:20 +0000 (03:16 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34622
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 03:13:59 +0000 (03:13 +0000)]
Fold (sext (truncate x)) more aggressively, by avoiding creation of a
sextinreg if not needed. This is useful in two cases: before legalize,
it avoids creating a sextinreg that will be trivially removed. After legalize
if the target doesn't support sextinreg, the trunc/sext would not have been
removed before.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34621
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 26 Feb 2007 02:56:58 +0000 (02:56 +0000)]
track signedness of formal argument, though we have a fixme here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34620
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 01:20:59 +0000 (01:20 +0000)]
Add an isNegative method to determine if the APInt's value is negative.
This is much less expensive than a test against zero.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34619
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 26 Feb 2007 01:19:48 +0000 (01:19 +0000)]
Rewrite lshr to not do bit by bit copy but to copy and shift whole words.
This makes it much more efficient.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34618
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 25 Feb 2007 23:54:00 +0000 (23:54 +0000)]
Fix sext operation. Shifting by zero would leave an incorrect mask.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34617
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 25 Feb 2007 23:44:53 +0000 (23:44 +0000)]
1. Fix the flip() method to correctly flip all words of the APInt.
2. Implement the trunc, sext, and zext operations.
3. Improve fromString to accept negative values as input.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34616
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 23:10:46 +0000 (23:10 +0000)]
Fix an X86-64 abi bug. We now compile:
void foo(short);
void bar(unsigned short A) {
foo(A);
}
into:
_bar:
subq $8, %rsp
movswl %di, %edi
call _foo
addq $8, %rsp
ret
instead of:
_bar:
subq $8, %rsp
call _foo
addq $8, %rsp
ret
Testcase here: test/CodeGen/X86/x86-64-shortint.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34615
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 23:08:29 +0000 (23:08 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34614
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 22:23:46 +0000 (22:23 +0000)]
fix CodeGen/X86/2007-02-25-FastCCStack.ll, a regression from my patch last
night: fastcc returns should only go in XMM0 if we have SSE2 or above.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34613
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 22:23:15 +0000 (22:23 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34612
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 22:02:01 +0000 (22:02 +0000)]
new testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34611
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Sun, 25 Feb 2007 21:43:59 +0000 (21:43 +0000)]
Fix for PR1224.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34610
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Laskey [Sun, 25 Feb 2007 21:43:21 +0000 (21:43 +0000)]
Test for PR1224.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34609
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 21:06:13 +0000 (21:06 +0000)]
Rework GlobalValue::removeDeadConstantUsers to always remove dead constant
exprs hanging off a global, even if the global is not otherwise dead. This
requires some tricky iterator gymnastics.
This implements Transforms/GlobalOpt/constantexpr-dangle.ll by deleting a
constantexpr that made it appear that the address of the function was taken.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34608
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 21:04:39 +0000 (21:04 +0000)]
new testcase. @foo should be marked fastcc by globalopt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34607
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 20:42:59 +0000 (20:42 +0000)]
disable some noisy debug output
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34606
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 20:01:40 +0000 (20:01 +0000)]
no really, this is the right patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34605
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 25 Feb 2007 19:59:18 +0000 (19:59 +0000)]
always promote float varargs to double.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34604
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 25 Feb 2007 19:32:03 +0000 (19:32 +0000)]
1. Provide more detail in file comment.
2. Move comments for methods to .h file, delete them in .cpp file.
3. All places that were doing manual clear of high order bits now call the
clearUnusedBits() method in order to not depend on undefined behavior
of the >> operator when the number of bits shifted equals the word size.
4. Reduced # of loc by using the new result of clearUnusedBits() method.
5. Simplified logic (decreased indentation) in a few places.
6. Added code comments to larger functions that needed them.
7. Added FIXME notes about weak implementations of things (e.g. bit-by-bit
shift right is sub-optimal).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34603
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sun, 25 Feb 2007 19:26:01 +0000 (19:26 +0000)]
Fix clearUnusedBits to not depend on "undefined behavior" of >> operator
when the bit size is equal to the word size. This happens to work out okay
on x86, but might not on other platforms. The change just detects when
there are no bits to clear (because BitWidth is a multiple of the word size)
and returns early.
Also, move some comments from .cpp file into header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34602
91177308-0d34-0410-b5e6-
96231b3b80d8