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