- /// MipsCC - This class provides methods used to analyze formal and call
- /// arguments and inquire about calling convention information.
- class MipsCC {
- public:
- enum SpecialCallingConvType {
- Mips16RetHelperConv, NoSpecialCallingConv
- };
-
- MipsCC(CallingConv::ID CallConv, const MipsSubtarget &Subtarget,
- CCState &Info);
-
- void analyzeCallOperands(const SmallVectorImpl<ISD::OutputArg> &Outs,
- const SDNode *CallNode,
- std::vector<ArgListEntry> &FuncArgs,
- CCState &State);
-
- /// reservedArgArea - The size of the area the caller reserves for
- /// register arguments. This is 16-byte if ABI is O32.
- unsigned reservedArgArea() const;
-
- /// Return pointer to array of integer argument registers.
- const ArrayRef<MCPhysReg> intArgRegs() const;
-
- private:
- /// Return the type of the register which is used to pass an argument or
- /// return a value. This function returns f64 if the argument is an i64
- /// value which has been generated as a result of softening an f128 value.
- /// Otherwise, it just returns VT.
- MVT getRegVT(MVT VT, const Type *OrigTy, const SDNode *CallNode,
- bool IsSoftFloat) const;
-
- SpecialCallingConvType getSpecialCallingConv(const SDNode *Callee) const;
-
- CallingConv::ID CallConv;
- const MipsSubtarget &Subtarget;
- };