llvm-6502/test/CodeGen/PowerPC
Arnold Schwaighofer 30e62c098b Tail call optimization improvements:
Move platform independent code (lowering of possibly overwritten
arguments, check for tail call optimization eligibility) from
target X86ISelectionLowering.cpp to TargetLowering.h and
SelectionDAGISel.cpp.

Initial PowerPC tail call implementation:

Support ppc32 implemented and tested (passes my tests and
test-suite llvm-test).  
Support ppc64 implemented and half tested (passes my tests).
On ppc tail call optimization is performed if 
  caller and callee are fastcc
  call is a tail call (in tail call position, call followed by ret)
  no variable argument lists or byval arguments
  option -tailcallopt is enabled
Supported:
 * non pic tail calls on linux/darwin
 * module-local tail calls on linux(PIC/GOT)/darwin(PIC)
 * inter-module tail calls on darwin(PIC)
If constraints are not met a normal call will be emitted.

A test checking the argument lowering behaviour on x86-64 was added.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50477 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-30 09:16:33 +00:00
..
2004-11-29-ShrCrash.ll upgrade this test 2008-03-09 00:32:10 +00:00
2004-11-30-shift-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2004-11-30-shr-var-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2004-12-12-ZeroSizeCommon.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-01-14-SetSelectCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-01-14-UndefLong.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-08-12-rlwimi-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-09-02-LegalizeDuplicatesCalls.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-10-08-ArithmeticRotate.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2005-11-30-vastart-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-01-11-darwin-fp-argument.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-01-20-ShiftPartsCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-04-01-FloatDoubleExtend.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-04-05-splat-ish.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-04-19-vmaddfp-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-05-12-rlwimi-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-07-07-ComputeMaskedBits.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-07-19-stwbrx-crash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-08-11-RetVector.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-08-15-SelectionCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-09-28-shift_64.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-11-combiner-aa-regression.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-13-Miscompile.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-17-brcc-miscompile.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-10-17-ppc64-alloca.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-11-10-DAGCombineMiscompile.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-11-29-AltivecFPSplat.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-12-07-LargeAlloca.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2006-12-07-SelectCrash.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
2007-01-04-ArgExtension.ll For PR1319: 2007-04-16 17:36:08 +00:00
2007-01-15-AsmDialect.ll For PR411: 2007-01-30 16:16:01 +00:00
2007-01-29-lbrx-asm.ll For PR1319: 2007-04-16 17:36:08 +00:00
2007-01-31-InlineAsmAddrMode.ll For PR1319: 2007-04-16 17:36:08 +00:00
2007-02-16-AlignPacked.ll For PR1319: Upgrade to new test harness. 2007-04-15 21:17:45 +00:00
2007-02-16-InlineAsmNConstraint.ll Remove use of implementation keyword. 2007-03-28 02:38:26 +00:00
2007-02-23-lr-saved-twice.ll Convert tests using "| wc -l | grep ..." to use the count script. 2007-08-15 13:36:28 +00:00
2007-03-24-cntlzd.ll This is the patch to provide clean intrinsic function overloading support in LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future. 2007-08-04 01:51:18 +00:00
2007-03-30-SpillerCrash.ll New test case. 2007-03-30 20:41:18 +00:00
2007-04-24-InlineAsm-I-Modifier.ll Implement a signficant optimization for inline asm: 2008-04-27 00:37:18 +00:00
2007-04-30-InlineAsmEarlyClobber.ll testcase for PR1357 2007-04-30 21:10:13 +00:00
2007-05-03-InlineAsm-S-Constraint.ll new testcase 2007-05-03 16:54:08 +00:00
2007-05-14-InlineAsmSelectCrash.ll new testcase that crashes llc 2007-05-15 01:33:12 +00:00
2007-05-22-tailmerge-3.ll Convert tests using "| wc -l | grep ..." to use the count script. 2007-08-15 13:36:28 +00:00
2007-05-30-dagcombine-miscomp.ll For PR1553: 2007-07-19 23:13:04 +00:00
2007-06-28-BCCISelBug.ll Fix test. 2007-07-05 23:00:50 +00:00
2007-08-04-CoalescerAssert.ll Test case for PR1596. 2007-08-14 23:21:10 +00:00
2007-09-04-AltivecDST.ll Add the 64-bit versions of the DS* Altivec instructions. 2007-09-05 04:05:20 +00:00
2007-09-07-LoadStoreIdxForms.ll Add missing index versions of instructions to the map. 2007-09-07 22:01:02 +00:00
2007-09-08-unaligned.ll Implement misaligned FP loads and stores. 2007-09-08 19:29:23 +00:00
2007-09-11-RegCoalescerAssert.ll Sometimes a MI can define a register as well as defining a super-register at the 2007-09-11 22:34:47 +00:00
2007-09-12-LiveIntervalsAssert.ll Fixed a typo that's causing a missing kill marker. 2007-09-12 23:02:04 +00:00
2007-10-16-InlineAsmFrameOffset.ll Fix a bug handling frame references in ppc inline asm when the frame offset 2007-10-16 18:00:18 +00:00
2007-10-18-PtrArithmetic.ll Pointer arithmetic should be done with the index the same size as the pointer. 2007-10-18 08:32:37 +00:00
2007-10-21-LocalRegAllocAssert2.ll Temporary solution: added a different set of BCTRL_Macho / BCTRL_ELF with right callee-saved defs set for ppc64. 2007-10-23 06:42:42 +00:00
2007-10-21-LocalRegAllocAssert.ll Use ptr type in the immediate field of a BxA instruction so we don't end up selecting 32-bit call instruction for ppc64. 2007-10-22 19:46:19 +00:00
2007-11-04-CoalescerCrash.ll Skip over deleted val#'s. 2007-11-05 06:46:45 +00:00
2007-11-16-landingpad-split.ll Testcase from PR 1508 (although its's somewhat 2007-11-16 23:16:35 +00:00
2007-11-19-VectorSplitting.ll Testcase for PR1811 2007-11-19 21:43:22 +00:00
2008-01-25-EmptyFunction.ll Add target triples to these so they don't fail on linux. 2008-01-29 06:26:07 +00:00
2008-02-05-LiveIntervalsAssert.ll If a vr is already marked alive in a bb, then it has PHI uses that are visited earlier, then it is not killed in the def block (i.e. not dead). 2008-02-05 20:04:18 +00:00
2008-02-09-LocalRegAllocAssert.ll Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards. 2008-02-11 08:30:52 +00:00
2008-03-05-RegScavengerAssert.ll Update llc flags for PPC register scavenger. 2008-03-10 22:59:08 +00:00
2008-03-06-KillInfo.ll Update llc flags for PPC register scavenger. 2008-03-10 22:59:08 +00:00
2008-03-17-RegScavengerCrash.ll Rewrite code that propagate isDead information after a dead copy is coalesced. This remove some ugly spaghetti code and fixed a number of subtle bugs. 2008-03-18 08:26:47 +00:00
2008-03-18-RegScavengerAssert.ll Fix live variables issues: 2008-03-19 00:52:20 +00:00
2008-03-24-AddressRegImm.ll Use the bit size of the operand instead of the hard-coded 32 to generate the 2008-03-24 23:16:37 +00:00
2008-03-24-CoalescerBug.ll lastRegisterUse() should ignore identity copies. Those will be erased. 2008-03-25 02:02:19 +00:00
2008-03-26-CoalescerBug.ll One more coalescer fix wrt deadness propagation. 2008-03-26 20:15:49 +00:00
2008-04-10-LiveIntervalCrash.ll A copy instruction may use a register multiple times on some targets. Change them all. 2008-04-10 18:38:47 +00:00
2008-04-16-CoalescerBug.ll After reading memory that's already freed. 2008-04-16 20:24:25 +00:00
2008-04-23-CoalescerCrash.ll New test. 2008-04-24 20:01:58 +00:00
addc.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
addi-reassoc.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
align.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and_add.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and_sext.ll For PR1553: 2007-07-19 23:13:04 +00:00
and_sra.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and-branch.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
and-elim.ll For PR1553: 2007-07-19 23:13:04 +00:00
and-imm.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
atomic-1.ll 64-bit atomic operations. 2008-04-19 02:30:38 +00:00
atomic-2.ll 64-bit atomic operations. 2008-04-19 02:30:38 +00:00
big-endian-actual-args.ll Add an explicit triple to the big-endian tests so that the assembly 2007-07-06 13:15:51 +00:00
big-endian-call-result.ll Remove the trailing semicolon from function declarations in LLVM, 2007-07-16 13:37:30 +00:00
big-endian-formal-args.ll Add an explicit triple to the big-endian tests so that the assembly 2007-07-06 13:15:51 +00:00
branch-opt.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
bswap-load-store.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
buildvec_canonicalize.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
calls.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
cmp-cmp.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
compare-duplicate.ll add target triple to fix PR1546 2007-07-09 17:14:58 +00:00
compare-fcmp-ord.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
compare-simm.ll For PR1319: Upgrade to new test harness. 2007-04-15 21:17:45 +00:00
constants.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
cttz.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
darwin-labels.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
dg.exp Use the llvm_supports_target function to prevent running of tests for 2007-04-21 20:41:27 +00:00
div-2.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
eqv-andc-orc-nor.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
extsh.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fabs.ll Add explicit triples to avoid default behavior that varies by host. 2007-09-14 20:37:18 +00:00
fma.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fnabs.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fneg.ll new testcase 2007-05-14 22:04:16 +00:00
fnegsel.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fold-li.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
fp_to_uint.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fp-branch.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fp-int-fp.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
fpcopy.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
Frames-alloca.ll Update llc flags for PPC register scavenger. 2008-03-10 22:59:08 +00:00
Frames-large.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
Frames-leaf.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
Frames-small.ll Byebye llvm-upgrade! 2008-03-25 04:26:08 +00:00
frounds.ll Really feed llvm-as with the testcase, do not let it read from stdin. This fixes the hangs seen on solaris10. 2008-02-26 13:37:13 +00:00
fsqrt.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
hello.ll PR1399 test case. 2007-05-09 19:20:37 +00:00
i64_fp.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
iabs.ll For PR1319: 2007-04-16 15:15:52 +00:00
illegal-element-type.ll Fix a bug in getCopyFromParts turned up in the testcase for PR1132. 2007-07-30 19:09:17 +00:00
inlineasm-copy.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
int-fp-conv-0.ll Generalize ExpandIntToFP to handle the case where the operand is legal 2008-03-11 01:59:03 +00:00
int-fp-conv-1.ll Generalize ExpandIntToFP to handle the case where the operand is legal 2008-03-11 01:59:03 +00:00
invalid-memcpy.ll Fix a crash on invalid code due to memcpy lowering. 2007-11-27 22:14:42 +00:00
inverted-bool-compares.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
ispositive.ll For PR1370: 2007-04-30 05:11:58 +00:00
itofp128.ll Implement more support for fp-to-i128 and i128-to-fp conversions. 2008-03-10 23:03:31 +00:00
LargeAbsoluteAddr.ll For PR1319: Upgrade to new test harness. 2007-04-15 21:17:45 +00:00
lha.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
load-constant-addr.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
long-compare.ll For PR1319: Upgrade to new test harness. 2007-04-15 21:17:45 +00:00
longdbl-truncate.ll add testcase for regression 2008-01-16 18:03:52 +00:00
mask64.ll Don't hard-code the mask size to be 32, which is incorrect on ppc64 2008-02-27 21:12:32 +00:00
mem_update.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
mem-rr-addr-mode.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
mul-neg-power-2.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
mulhs.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
multiple-return-values.ll Add support for multiple return values for the PPC target by 2008-03-19 21:39:28 +00:00
neg.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
no-dead-strip.ll update test to check that codegen works with llvm.used in llvm.metadata section 2007-08-22 19:36:31 +00:00
or-addressing-mode.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
ppcf128-1-opt.ll First round of ppc long double. call/return and 2007-10-05 20:04:43 +00:00
ppcf128-1.ll First round of ppc long double. call/return and 2007-10-05 20:04:43 +00:00
ppcf128-2.ll More APInt-ification. 2008-03-13 22:13:53 +00:00
ppcf128-3.ll Make conversions of i8/i16 to ppcf128 work. 2008-03-18 17:28:38 +00:00
ppcf128-4.ll New testcase. 2008-03-22 22:27:01 +00:00
reg-coalesce-simple.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
retaddr.ll Fix a significant code quality regression I introduced on PPC64 quite 2007-12-08 07:04:58 +00:00
return-val-i128.ll Add support for calls with i128 return values on ppc64. 2008-03-08 00:19:12 +00:00
rlwimi2.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rlwimi3.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rlwimi-commute.ll Evan implemented this. 2008-03-02 17:56:29 +00:00
rlwimi.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rlwinm2.ll Convert tests using "| wc -l | grep ..." to use the count script. 2007-08-15 13:36:28 +00:00
rlwinm.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
rotl-2.ll Remove -unwind-tables-optional everywhere, since 2008-04-14 17:56:54 +00:00
rotl-64.ll Fix for PR1613: added 64-bit rotate left PPC instructions and patterns. 2007-09-04 20:20:29 +00:00
rotl.ll Convert tests using "| wc -l | grep ..." to use the count script. 2007-08-15 13:36:28 +00:00
select_lt0.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
setcc_no_zext.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
seteq-0.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
shift128.ll Add support for lowering 128-bit shifts on ppc64. 2008-03-07 20:36:53 +00:00
shl_elim.ll new testcase 2007-04-17 21:12:26 +00:00
shl_sext.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
sign_ext_inreg1.ll new testcase 2007-04-17 19:03:02 +00:00
small-arguments.ll For PR1553: 2007-07-19 23:13:04 +00:00
stfiwx-2.ll Fix a latent bug exposed by my truncstore patch. We compiled stfiwx-2.ll to: 2008-01-18 16:54:56 +00:00
stfiwx.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
store-load-fwd.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
subc.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
tailcall1-64.ll Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
tailcall1.ll Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
tailcallpic1.ll Tail call optimization improvements: 2008-04-30 09:16:33 +00:00
unsafe-math.ll Convert tests using "| wc -l | grep ..." to use the count script. 2007-08-15 13:36:28 +00:00
vcmp-fold.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_br_cmp.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_call.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_constants.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_fneg.ll New test case. 2007-07-30 07:52:03 +00:00
vec_insert.ll Add testcase for recent legalizer change 2008-02-13 06:48:40 +00:00
vec_misaligned.ll New test for misaligned Altivec laod/store. 2008-02-27 23:14:50 +00:00
vec_mul.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_perf_shuffle.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_shuffle.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_spat.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_vrsave.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vec_zero.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vector-identity-shuffle.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00
vector.ll Remove llvm-upgrade and update tests. 2008-02-19 08:07:33 +00:00