OSDN Git Service

[mips] Remove custom versions of CCState::AnalyzeReturn() and CCState::AnalyzeCallRet...
authorDaniel Sanders <daniel.sanders@imgtec.com>
Thu, 18 Sep 2014 08:28:39 +0000 (08:28 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Thu, 18 Sep 2014 08:28:39 +0000 (08:28 +0000)
commitb2f2aa93298ef569f2cb9132fb3c7891fd0df303
tree2be5cb7015a81fd2f236276f0a5b076665809e0b
parentf789dac2dd423c65b2ac38f23fb9f407ebe8a0cc
[mips] Remove custom versions of CCState::AnalyzeReturn() and CCState::AnalyzeCallReturn().

Summary:
The N32/N64 ABI's return f128 values in $f0 and $f2 for hard-float and $v0 and
$a0 for soft-float. The registers used in the soft-float case differ from the
usual $v0, and $v1 specified for return values.

Both cases were previously handled by duplicating the CCState::AnalyzeReturn()
and CCState::AnalyzeCallReturn() functions and modifying them to delegate to
a different assignment function for f128 and further replace the register type
for the hard-float case. There is a simpler way to do both of these.

We now use the common functions and select an initial assignment function based
on whether the original type is f128 or not. We then handle the hard-float case
using CCBitConvertToType<>.

No functional change.

Reviewers: vmedic

Reviewed By: vmedic

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D5269

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218036 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/Mips/MipsCallingConv.td
lib/Target/Mips/MipsISelLowering.cpp
lib/Target/Mips/MipsISelLowering.h