Dan Gohman
4ebf6b3b53
Codegen support for i128 UINT_TO_FP. This just fixes a
...
bug in r47928 (Int64Ty is the correct type for the constant
pool entry here) and removes the asserts, now that the code
is capable of handling i128.
llvm-svn: 47932
2008-03-05 02:07:31 +00:00
Evan Cheng
e0b3c221ab
Add a target lowering hook to control whether it's worthwhile to compress fp constant.
...
For x86, if sse2 is available, it's not a good idea since cvtss2sd is slower than a movsd load and it prevents load folding. On x87, it's important to shrink fp constant since fldt is very expensive.
llvm-svn: 47931
2008-03-05 01:30:59 +00:00
Andrew Lenharth
95c88272c6
64bit CAS on 32bit x86.
...
llvm-svn: 47929
2008-03-05 01:15:49 +00:00
Dan Gohman
b987fe16e4
Codegen support for i128 SINT_TO_FP.
...
llvm-svn: 47928
2008-03-05 01:08:17 +00:00
Evan Cheng
18064ddb5b
Refactor code. Remove duplicated functions that basically do the same thing as
...
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927
2008-03-05 00:59:57 +00:00
Devang Patel
4ca594a2d7
Skip functions that return multiple values.
...
llvm-svn: 47924
2008-03-05 00:36:59 +00:00
Devang Patel
a97b000dcc
Check struct return type first.
...
llvm-svn: 47922
2008-03-05 00:27:05 +00:00
Bill Wendling
37f5b4586a
Removed spurious EnablePPCRS check.
...
llvm-svn: 47918
2008-03-04 23:27:33 +00:00
Dale Johannesen
86867d323e
Move PPC lowering functions into PPCTargetLowering
...
class (cosmetic). First piece of byval implementation;
this doesn't work yet. No functional change.
llvm-svn: 47917
2008-03-04 23:17:14 +00:00
Bill Wendling
cf70f2c2a0
Use -enable-ppc-regscavenger flag for these checks
...
llvm-svn: 47916
2008-03-04 23:16:26 +00:00
Bill Wendling
dc9de245cb
Use a command-line option to turn register scavenging on/off for PPC.
...
llvm-svn: 47915
2008-03-04 23:13:51 +00:00
Devang Patel
a33f4b4cc7
Print types for all ret operands.
...
llvm-svn: 47911
2008-03-04 22:05:14 +00:00
Devang Patel
844c248410
Use while loop.
...
llvm-svn: 47909
2008-03-04 21:59:49 +00:00
Devang Patel
26d0fac377
Revert SmallVector ctor variants.
...
llvm-svn: 47908
2008-03-04 21:54:56 +00:00
Devang Patel
84e9abbb60
Use cast instead of dyn_cast.
...
Update test to use multiple return value directly, instead of relying on -sretpromotion.
llvm-svn: 47907
2008-03-04 21:45:28 +00:00
Devang Patel
219be17d65
Filter nested structs
...
llvm-svn: 47906
2008-03-04 21:32:09 +00:00
Devang Patel
a14b91d6a3
Handle multiple return values.
...
llvm-svn: 47904
2008-03-04 21:15:15 +00:00
Andrew Lenharth
f5674915c5
x86-64 atomics
...
llvm-svn: 47903
2008-03-04 21:13:33 +00:00
Anton Korobeynikov
f9d4370f22
Properly populate lists of defined/undefined symbols in presence of aliases
...
llvm-svn: 47900
2008-03-04 20:16:11 +00:00
Anton Korobeynikov
86514cffba
Add alias with non-external aliasee to the list of exported symbols of the library.
...
llvm-svn: 47899
2008-03-04 20:15:35 +00:00
Devang Patel
1e76b493c7
Use appropriate index to get the result value.
...
llvm-svn: 47897
2008-03-04 19:22:54 +00:00
Devang Patel
9eb2e291fb
Skip sret attribute while preparing attribute list for
...
new function and new call sites.
llvm-svn: 47896
2008-03-04 19:12:58 +00:00
Devang Patel
27426dedc0
Add FunctionType ctor variant that takes SmallVector params.
...
llvm-svn: 47895
2008-03-04 18:57:05 +00:00
Devang Patel
a880f004e8
Increment counter that keeps track of total number of sret promoted.
...
llvm-svn: 47892
2008-03-04 17:48:11 +00:00
Devang Patel
aef77854f9
Skip declarations.
...
llvm-svn: 47890
2008-03-04 17:47:06 +00:00
Devang Patel
e33efc5c23
Process externally visible functions also. Later on code generator will do the right thing.
...
llvm-svn: 47889
2008-03-04 17:46:26 +00:00
Devang Patel
10d720e1ba
Collect statistics.
...
llvm-svn: 47888
2008-03-04 17:44:37 +00:00
Gordon Henriksen
1850fc4fa2
Fix a typo noticed by Erick Tryzelaar,
...
llvm-svn: 47886
2008-03-04 14:52:05 +00:00
Roman Levenstein
6979ffe3c2
Some improvements related to the computation of heights, depths of SUnits.
...
The basic idea is that all these algorithms are computing the longest paths from the root node or to the exit node. Therefore the existing implementation that uses and iterative and potentially
exponential algorithm was changed to a well-known graph algorithm based on dynamic programming. It has a linear run-time.
llvm-svn: 47884
2008-03-04 11:19:43 +00:00
Evan Cheng
02f86c6890
Refactor ExpandConstantFP so it can optimize load from constpool of types larger than f64 into extload from smaller types.
...
llvm-svn: 47883
2008-03-04 08:05:30 +00:00
Evan Cheng
14f556a6d7
Really fix the test.
...
llvm-svn: 47882
2008-03-04 08:01:56 +00:00
Evan Cheng
7a67175fcc
Fix broken test.
...
llvm-svn: 47881
2008-03-04 07:59:13 +00:00
Evan Cheng
ae414db8d2
80 column violations.
...
llvm-svn: 47878
2008-03-04 03:20:06 +00:00
Evan Cheng
acb7d77409
Fix 80 column violations.
...
llvm-svn: 47877
2008-03-04 03:19:19 +00:00
Bill Wendling
c1b2e17a2c
Did I say 'e = getNumOperands()'? I meant --e, of course.
...
llvm-svn: 47875
2008-03-04 00:48:15 +00:00
Evan Cheng
3123d6ced3
Add PR1501 test case.
...
llvm-svn: 47874
2008-03-04 00:47:45 +00:00
Evan Cheng
b5b16810ac
Rename isOperand() to isOperandOf() (and other similar methods). It always confuses me.
...
llvm-svn: 47872
2008-03-04 00:41:45 +00:00
Evan Cheng
139517b682
Remove -always-fold-and-in-test.
...
llvm-svn: 47871
2008-03-04 00:40:35 +00:00
Bill Wendling
aa5ca3b98d
Miscellaneous clean-ups based on Evan's feedback:
...
- Cleaned up how the prologue-epilogue inserter loops over the instructions.
- Instead of restarting the processing of an instruction if we remove an
implicit kill, just update the end iterator and make sure that the iterator
isn't incremented.
llvm-svn: 47870
2008-03-03 23:57:28 +00:00
Dan Gohman
ef264d521d
Misc. APInt-ification in the DAGCombiner.
...
llvm-svn: 47869
2008-03-03 23:51:38 +00:00
Dan Gohman
5792bdb74e
More APInt-ification.
...
llvm-svn: 47868
2008-03-03 23:35:36 +00:00
Dan Gohman
48e3b966fe
Yet more APInt-ification.
...
llvm-svn: 47867
2008-03-03 22:37:52 +00:00
Dan Gohman
f372d4d982
More APInt-ification.
...
llvm-svn: 47866
2008-03-03 22:22:56 +00:00
Dan Gohman
ccc0bc5878
Add support for lowering i64 SRA_PARTS and friends on x86-64.
...
llvm-svn: 47865
2008-03-03 22:22:09 +00:00
Dan Gohman
d8d1ad659a
More APInt-ification.
...
llvm-svn: 47864
2008-03-03 22:20:46 +00:00
Bill Wendling
8d64999daf
This is the initial check-in for adding register scavenging to PPC. (Currently,
...
PPC-64 doesn't work.) This also lowers the spilling of the CR registers so that
it uses a register other than the default R0 register (the scavenger scrounges
for one). A significant part of this patch fixes how kill information is
handled.
llvm-svn: 47863
2008-03-03 22:19:16 +00:00
Bill Wendling
0f7bd2c0e5
Go through the machine instruction's operands to make sure that we're not
...
marking both a super- and sub-register as "killed". This removes implicit uses
that are marked as "killed".
llvm-svn: 47862
2008-03-03 22:14:33 +00:00
Bill Wendling
b3761b1a39
Make the register scavenger update the bookkeeping values for sub/super
...
registers.
llvm-svn: 47861
2008-03-03 22:12:25 +00:00
Bill Wendling
f6b0fc44fe
Multiple instructions can be inserted when eliminating frame indexes. We need
...
the register scavenger to process all of those new instructions instead of just
the last one inserted.
llvm-svn: 47860
2008-03-03 22:11:16 +00:00
Chris Lattner
52004c47cb
new testcase
...
llvm-svn: 47858
2008-03-03 21:59:00 +00:00