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 18 namespace llvm { 19 20 namespace Mips16HardFloatInfo { 21 22 // Return types that matter for hard float are: 23 // float, double, complex float, and complex double 24 // 25 enum 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 // 31 enum FPParamVariant { FSig, FFSig, FDSig, DSig, DDSig, DFSig, NoSig }; 32 33 struct FuncSignature { 34 FPParamVariant ParamSig; 35 FPReturnVariant RetSig; 36 }; 37 38 struct FuncNameSignature { 39 const char *Name; 40 FuncSignature Signature; 41 }; 42 43 extern const FuncNameSignature PredefinedFuncs[]; 44 45 extern FuncSignature const *findFuncSignature(const char *name); 46 } 47 } 48 49 #endif 50