1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
Commit Graph

37566 Commits

Author SHA1 Message Date
Dan Gohman
8e3c88c4e9 Use PassManagerBase instead of FunctionPassManager for functions
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.

llvm-svn: 48256
2008-03-11 22:29:46 +00:00
Anton Korobeynikov
38bc6e43f7 Add helper for ultimate aliasee resoltion
llvm-svn: 48255
2008-03-11 22:28:56 +00:00
Devang Patel
54b2c77a4e Handle multiple ret values.
llvm-svn: 48254
2008-03-11 22:24:29 +00:00
Devang Patel
0fbeba7276 Initialize.
llvm-svn: 48253
2008-03-11 22:08:21 +00:00
Dan Gohman
34ea45f10d Check to see if a two-entry PHI block can be simplified
before trying to merge the block into its predecessors.
This allows two-entry-phi-return.ll to be simplified
into a single basic block.

llvm-svn: 48252
2008-03-11 21:53:06 +00:00
Dan Gohman
05907c9f06 Make this test more challenging to help it avoid being
optimized away before it tests what it is intended to test.

llvm-svn: 48251
2008-03-11 21:47:57 +00:00
Anton Korobeynikov
efa9405b94 Update testcase for recent aliases change
llvm-svn: 48250
2008-03-11 21:42:20 +00:00
Anton Korobeynikov
aa1433ab47 Honour aliases visibility during asm emission
llvm-svn: 48249
2008-03-11 21:41:14 +00:00
Anton Korobeynikov
9b16a36886 Honour aliases visibility when reading from/writing to bitcode
llvm-svn: 48248
2008-03-11 21:40:17 +00:00
Dan Gohman
f9f25bd41b Add a test to ensure that all-ones vectors are materialized with pcmpeqd.
llvm-svn: 48247
2008-03-11 21:37:00 +00:00
Evan Cheng
665363494f Transfer physical register spill info when load / store folding happens.
llvm-svn: 48246
2008-03-11 21:34:46 +00:00
Dan Gohman
1fece90de9 Use the correct value for InSignBit.
llvm-svn: 48245
2008-03-11 21:29:43 +00:00
Dan Gohman
55a443d612 Initial codegen support for functions and calls with multiple return values.
llvm-svn: 48244
2008-03-11 21:11:25 +00:00
Chris Lattner
fd2c24af72 Implement basic support for the 'f' register class constraint. This basically
works, but probably won't if you mix it with 't' or 'u' yet.

llvm-svn: 48243
2008-03-11 19:50:13 +00:00
Chris Lattner
4458eecb7a coalesce away 80-bit floating point copies.
llvm-svn: 48241
2008-03-11 19:30:09 +00:00
Chris Lattner
aa2287714e convert a massive if statement to a switch.
llvm-svn: 48240
2008-03-11 19:28:17 +00:00
Chris Lattner
b3fefb1e5c start handling the 'f' x87 constraint.
llvm-svn: 48239
2008-03-11 19:06:29 +00:00
Devang Patel
0c7fb89803 Skip functions that return multiple values.
llvm-svn: 48233
2008-03-11 18:04:06 +00:00
Dale Johannesen
c03216ac3e The feature this is testing did not work in the general case,
and has been removed.

llvm-svn: 48232
2008-03-11 17:48:26 +00:00
Devang Patel
5f5912ba27 Fix getOperand() for ReturnInst.
llvm-svn: 48229
2008-03-11 17:35:03 +00:00
Devang Patel
cb8f342ea8 Become multiple return value aware.
Right now, the pass does not optimize tail recursions 
involving multiple return values.

llvm-svn: 48228
2008-03-11 17:33:32 +00:00
Devang Patel
e163bda565 Add TODO reminder.
llvm-svn: 48227
2008-03-11 17:32:05 +00:00
Dan Gohman
2b0112a65a Give PassManager and FunctionPassManager a common base class, with
add(Pass *) as a pure virtual member function. This will allow all
the various addPassesTo* functions in LLVM to avoid hard-coding what
type of PassManager is used. 

llvm-svn: 48226
2008-03-11 16:41:42 +00:00
Dan Gohman
54b152cbbf Fix typos in comments.
llvm-svn: 48225
2008-03-11 16:18:48 +00:00
Christopher Lamb
4d5034cf91 Missed part of recommit.
llvm-svn: 48224
2008-03-11 10:27:36 +00:00
Christopher Lamb
74f4d837df Recommitting parts of r48130. These do not appear to cause the observed failures.
llvm-svn: 48223
2008-03-11 10:09:17 +00:00
Christopher Lamb
97376d2df6 Recommitting changes after more testing. These appear to cause no problems.
llvm-svn: 48222
2008-03-11 09:33:47 +00:00
Evan Cheng
794f4ee703 Use TargetRegisterInfo::getPhysicalRegisterRegClass. Remove duplicated code.
llvm-svn: 48221
2008-03-11 07:55:13 +00:00
Evan Cheng
318a01e5fb If there are multiple register classes that a register belongs to, return the super-class (e.g. on x86, returns GR32, not GR32_).
llvm-svn: 48220
2008-03-11 07:54:14 +00:00
Evan Cheng
6a30fc4e94 Learn how to xfail a test.
llvm-svn: 48219
2008-03-11 07:51:31 +00:00
Evan Cheng
af1c76846d When the register allocator runs out of registers, spill a physical register around the def's and use's of the interval being allocated to make it possible for the interval to target a register and spill it right away and restore a register for uses. This likely generates terrible code but is before than aborting.
llvm-svn: 48218
2008-03-11 07:19:34 +00:00
Evan Cheng
53213ba056 In 32-bit mode, mark 64-bit GPR's as unallocatable.
llvm-svn: 48217
2008-03-11 07:16:00 +00:00
Evan Cheng
9ae65a13c3 XFAIL due to Dale's change.
llvm-svn: 48216
2008-03-11 07:15:44 +00:00
Duncan Sands
1b059ad5d5 Some LegalizeTypes code factorization and minor
enhancements.

llvm-svn: 48215
2008-03-11 06:41:14 +00:00
Chris Lattner
3241d0df37 compile: double test() {}
into:

_test:
	fldz
	ret

instead of:

_test:
	subl	$12, %esp
	#IMPLICIT_DEF %xmm0
	movsd	%xmm0, (%esp)
	fldl	(%esp)
	addl	$12, %esp
	ret

llvm-svn: 48213
2008-03-11 06:21:08 +00:00
Nick Lewycky
02e4d6f2dd Fix the build on gcc 4.2.
llvm-svn: 48212
2008-03-11 05:56:09 +00:00
Devang Patel
0d234e20a5 fix grammer
llvm-svn: 48211
2008-03-11 05:51:59 +00:00
Devang Patel
6c189c16b5 Initial multiple return values support.
llvm-svn: 48210
2008-03-11 05:46:42 +00:00
Chris Lattner
9826c9365e Change the model for FP Stack return to use fp operands on the
RET instruction instead of using FpSET_ST0_32.  This also generalizes
the code to handling returning of multiple FP results.

llvm-svn: 48209
2008-03-11 03:23:40 +00:00
Chris Lattner
e58af59475 variadic instructions don't have operand info for variadic arguments.
llvm-svn: 48208
2008-03-11 03:14:42 +00:00
Dan Gohman
2674ad5bed Upgrade this test.
llvm-svn: 48207
2008-03-11 02:19:59 +00:00
Dan Gohman
85bfbe2293 Generalize ExpandIntToFP to handle the case where the operand is legal
and it's the result that requires expansion. This code is a little confusing
because the TargetLoweringInfo tables for [US]INT_TO_FP use the operand type
(the integer type) rather than the result type. 

llvm-svn: 48206
2008-03-11 01:59:03 +00:00
Chris Lattner
98af9eac5f If a register operand comes from the variadic part of a node, don't
verify the register constraint matches what the instruction expects.

llvm-svn: 48205
2008-03-11 00:59:28 +00:00
Evan Cheng
77df19cb8c Temporarily revert 48175.
llvm-svn: 48204
2008-03-11 00:27:34 +00:00
Anton Korobeynikov
da7746cf43 Fix thinko: alias always defines new symbol. Even is aliasee itself is undefined.
llvm-svn: 48203
2008-03-11 00:24:53 +00:00
Dan Gohman
1a65335a9b More APInt-ification.
llvm-svn: 48201
2008-03-11 00:11:06 +00:00
Chris Lattner
edd8cdcddb emit an ID # for each regclass ID. Chris doesn't like to have to count.
llvm-svn: 48200
2008-03-11 00:00:23 +00:00
Chris Lattner
d1a014af4e abort with an assert instead of a cerr to get line#
llvm-svn: 48199
2008-03-10 23:56:08 +00:00
Dan Gohman
13e8dd3b34 Use utostr instead of a stringstream.
llvm-svn: 48198
2008-03-10 23:55:07 +00:00
Scott Michel
599ff689d0 - Style cleanup in IA64ISelLowering.h: add 'virtual' keyword for consistency.
- Add test pattern matching in CellSPU's icmp32.ll test harness
- Fix CellSPU fcmp.ll-generated assert.

llvm-svn: 48197
2008-03-10 23:49:09 +00:00