llvm-6502/test/CodeGen/SPARC
Jakob Stoklund Olesen 53d4bcf35e Implement LowerReturn_64 for SPARC v9.
Integer return values are sign or zero extended by the callee, and
structs up to 32 bytes in size can be returned in registers.

The CC_Sparc64 CallingConv definition is shared between
LowerFormalArguments_64 and LowerReturn_64. Function arguments and
return values are passed in the same registers.

The inreg flag is also used for return values. This is required to handle
C functions returning structs containing floats and ints:

  struct ifp {
    int i;
    float f;
  };

  struct ifp f(void);

LLVM IR:

  define inreg { i32, float } @f() {
     ...
     ret { i32, float } %retval
  }

The ABI requires that %retval.i is returned in the high bits of %i0
while %retval.f goes in %f1.

Without the inreg return value attribute, %retval.i would go in %i0 and
%retval.f would go in %f3 which is a more efficient way of returning
%multiple values, but it is not ABI compliant for returning C structs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178966 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-06 23:57:33 +00:00
..
64abi.ll Implement LowerReturn_64 for SPARC v9. 2013-04-06 23:57:33 +00:00
64bit.ll Add 64-bit load and store instructions. 2013-04-02 04:09:28 +00:00
64cond.ll Add SPARC v9 support for select on 64-bit compares. 2013-04-04 03:08:00 +00:00
2006-01-22-BitConvertLegalize.ll
2007-05-09-JumpTables.ll
2007-07-05-LiveIntervalAssert.ll
2008-10-10-InlineAsmMemoryOperand.ll
2008-10-10-InlineAsmRegOperand.ll
2009-08-28-PIC.ll
2009-08-28-WeakLinkage.ll
2011-01-11-Call.ll Fix SPARC backend call instruction so that arguments passed through registers 2011-01-12 03:18:21 +00:00
2011-01-11-CC.ll Fix broken tests. 2012-10-02 15:49:34 +00:00
2011-01-11-FrameAddr.ll These tests no longer require linear scan because reserved register coalescing is now universal. 2011-04-05 21:40:41 +00:00
2011-01-19-DelaySlot.ll Generate correct Sparc32 ABI compliant code for functions that return a struct. 2011-02-21 03:42:44 +00:00
2011-01-21-ByValArgs.ll Implement support for byval arguments in Sparc backend. 2011-01-21 14:00:01 +00:00
2011-01-22-SRet.ll Fix more register and coalescing dependencies. 2011-05-04 19:02:11 +00:00
2011-12-03-TailDuplication.ll Sparc CodeGen: Fix AnalyzeBranch for PR 10282. Removing addSuccessor() since 2011-12-03 21:24:48 +00:00
2012-05-01-LowerArguments.ll Regression test for PR2960. 2012-05-01 11:11:34 +00:00
basictest.ll
ctpop.ll Add support for 64-bit calling convention. 2013-04-02 04:09:02 +00:00
DbgValueOtherTargets.test Remove unnecessary leading comment characters in lit-only file 2013-03-18 22:08:16 +00:00
lit.local.cfg Include '.test' suffix in target specific lit configs that need it 2013-03-18 20:31:44 +00:00
mult-alt-generic-sparc.ll
private.ll test/CodeGen/SPARC/private.ll: Fixup. Forgot to prune old RUN lines. 2012-07-03 04:29:20 +00:00