1 //===---- Mips16HardFloatInfo.h for Mips16 Hard Float --------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 // This file defines some data structures relevant to the implementation of
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H
16 #define LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H
20 namespace Mips16HardFloatInfo
{
22 // Return types that matter for hard float are:
23 // float, double, complex float, and complex double
25 enum FPReturnVariant
{ FRet
, DRet
, CFRet
, CDRet
, NoFPRet
};
28 // Parameter type that matter are float, (float, float), (float, double),
29 // double, (double, double), (double, float)
31 enum FPParamVariant
{ FSig
, FFSig
, FDSig
, DSig
, DDSig
, DFSig
, NoSig
};
33 struct FuncSignature
{
34 FPParamVariant ParamSig
;
35 FPReturnVariant RetSig
;
38 struct FuncNameSignature
{
40 FuncSignature Signature
;
43 extern const FuncNameSignature PredefinedFuncs
[];
45 extern FuncSignature
const *findFuncSignature(const char *name
);