llvm-project/llvm/test/CodeGen/SPARC
Daniel Cederman 1c235c3754 [Sparc] Add tail call support
This patch adds tail call support to the 32-bit Sparc backend.

Two new instructions are defined, TAIL_CALL and TAIL_CALLri. They are
encoded the same as CALL and BINDri, but are marked with isReturn so
that the epilogue gets emitted. In contrast to CALL, TAIL_CALL is not
marked with isCall. This makes it possible to use the leaf function
optimization when the only call a function makes is a tail call.

TAIL_CALL modifies the return address in %o7, so for leaf functions
the value in %o7 needs to be restored after the call. For normal
functions which uses the restore instruction this is not necessary.

Reviewed By: koakuma

Differential Revision: https://reviews.llvm.org/D51206
2022-03-08 13:50:54 +01:00
..
32abi.ll
64abi.ll [TargetLowering] Only inspect attributes in the arguments for ArgListEntry 2021-05-18 14:30:22 -07:00
64atomics.ll
64bit.ll
64cond.ll [SPARC] Zero-extend the operands when doing UMULO on 64-bit integers 2021-11-14 19:59:52 +01:00
64spill.ll
2006-01-22-BitConvertLegalize.ll
2007-05-09-JumpTables.ll
2007-07-05-LiveIntervalAssert.ll
2008-10-10-InlineAsmMemoryOperand.ll [Tests] Add elementtype attribute to indirect inline asm operands (NFC) 2022-01-06 14:23:51 +01:00
2008-10-10-InlineAsmRegOperand.ll
2009-08-28-PIC.ll
2009-08-28-WeakLinkage.ll
2011-01-11-CC.ll [Tests] Add elementtype attribute to indirect inline asm operands (NFC) 2022-01-06 14:23:51 +01:00
2011-01-11-Call.ll [Sparc] Add tail call support 2022-03-08 13:50:54 +01:00
2011-01-11-FrameAddr.ll
2011-01-19-DelaySlot.ll [Sparc] Add tail call support 2022-03-08 13:50:54 +01:00
2011-01-21-ByValArgs.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
2011-01-22-SRet.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
2011-12-03-TailDuplication.ll
2012-05-01-LowerArguments.ll
2013-05-17-CallFrame.ll
DbgValueOtherTargets.test
LeonCASAInstructionUT.ll
LeonDetectRoundChangePassUT.ll
LeonFixAllFDIVSQRTPassUT.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
LeonInsertNOPLoadPassUT.ll
LeonItinerariesUT.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
LeonSMACUMACInstructionUT.ll
analyze-branch.ll
atomics.ll
basictest.ll
blockaddr.ll Fix tests defaulting to incorrect triples on AIX 2021-09-27 11:30:45 -04:00
cast-sret-func.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
codemodel.ll
constpool.ll Fix tests defaulting to incorrect triples on AIX 2021-09-27 11:30:45 -04:00
constructor.ll [static initializers] Emit global_ctors and global_dtors in reverse order when .ctors/.dtors are used. 2021-06-10 16:44:47 -07:00
ctpop.ll
disable-fsmuld-fmuls.ll
empty-functions.ll
exception.ll Fix tests defaulting to incorrect triples on AIX 2021-09-27 11:30:45 -04:00
fail-alloca-align.ll
float-constants.ll
float.ll
fp16-promote.ll [SPARC] Legalize truncation and extension between fp128 and half 2021-06-13 20:05:15 +02:00
fp128-split.ll CodeGen: Print/parse LLTs in MachineMemOperands 2021-06-30 16:54:13 -04:00
fp128.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
fshl.ll
func-addr.ll Fix tests defaulting to incorrect triples on AIX 2021-09-27 11:30:45 -04:00
globals.ll Fix tests defaulting to incorrect triples on AIX 2021-09-27 11:30:45 -04:00
imm.ll
inline-asm-i-constraint-i1.ll
inlineasm-bad.ll
inlineasm-output-template.ll
inlineasm-v9.ll [Sparc] Remove cast that truncates immediate operands to 32 bits. 2020-10-02 20:14:55 -04:00
inlineasm.ll [Tests] Add elementtype attribute to indirect inline asm operands (NFC) 2022-01-06 14:23:51 +01:00
leafproc.ll
lit.local.cfg
mature-mc-support.ll
missing-sret.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
missinglabel.ll [BPI] Improve static heuristics for "cold" paths. 2020-12-23 22:47:36 +07:00
mult-alt-generic-sparc.ll [Tests] Add elementtype attribute to indirect inline asm operands (NFC) 2022-01-06 14:23:51 +01:00
multiple-div.ll
obj-relocs.ll Fix tests defaulting to incorrect triples on AIX 2021-09-27 11:30:45 -04:00
overflow-intrinsic-optimizations.ll [SparcISelLowering] avoid emitting libcalls to __muloti4 and __mulodi4 2021-10-29 13:14:09 -07:00
parts.ll
pic.ll
private.ll
readcycle.ll
reg64.ll
register-clobber.ll
rem.ll
reserved-regs.ll
select-mask.ll
sethiandn.ll
setjmp.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
smulo-128-legalisation-lowering.ll [SPARC] Zero-extend the operands when doing UMULO on 64-bit integers 2021-11-14 19:59:52 +01:00
soft-float.ll
soft-mul-div.ll
spill.ll
spillsize.ll
sret-secondary.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
stack-align.ll
stack-protector.ll
tailcall.ll [Sparc] Add tail call support 2022-03-08 13:50:54 +01:00
thread-pointer.ll
tls.ll
trap.ll
umulo-128-legalisation-lowering.ll [SPARC] Zero-extend the operands when doing UMULO on 64-bit integers 2021-11-14 19:59:52 +01:00
varargs-v8.ll
varargs.ll
vector-call.ll
vector-extract-elt.ll
zerostructcall.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00