1//===---- Mips16HardFloatInfo.h for Mips16 Hard Float --------===// 2// 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 6// 7//===----------------------------------------------------------------------===// 8// 9// This file defines some data structures relevant to the implementation of 10// Mips16 hard float. 11// 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H 16#define LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H 17 18namespace llvm { 19 20namespace Mips16HardFloatInfo { 21 22// Return types that matter for hard float are: 23// float, double, complex float, and complex double 24// 25enum FPReturnVariant { FRet, DRet, CFRet, CDRet, NoFPRet }; 26 27// 28// Parameter type that matter are float, (float, float), (float, double), 29// double, (double, double), (double, float) 30// 31enum FPParamVariant { FSig, FFSig, FDSig, DSig, DDSig, DFSig, NoSig }; 32 33struct FuncSignature { 34 FPParamVariant ParamSig; 35 FPReturnVariant RetSig; 36}; 37 38struct FuncNameSignature { 39 const char *Name; 40 FuncSignature Signature; 41}; 42 43extern const FuncNameSignature PredefinedFuncs[]; 44 45extern FuncSignature const *findFuncSignature(const char *name); 46} 47} 48 49#endif 50