LLVM API Documentation
00001 //===---- Mips16HardFloatInfo.h for Mips16 Hard Float --------===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file defines some data structures relevant to the implementation of 00011 // Mips16 hard float. 00012 // 00013 // 00014 //===----------------------------------------------------------------------===// 00015 00016 #ifndef LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H 00017 #define LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H 00018 00019 namespace llvm { 00020 00021 namespace Mips16HardFloatInfo { 00022 00023 // Return types that matter for hard float are: 00024 // float, double, complex float, and complex double 00025 // 00026 enum FPReturnVariant { FRet, DRet, CFRet, CDRet, NoFPRet }; 00027 00028 // 00029 // Parameter type that matter are float, (float, float), (float, double), 00030 // double, (double, double), (double, float) 00031 // 00032 enum FPParamVariant { FSig, FFSig, FDSig, DSig, DDSig, DFSig, NoSig }; 00033 00034 struct FuncSignature { 00035 FPParamVariant ParamSig; 00036 FPReturnVariant RetSig; 00037 }; 00038 00039 struct FuncNameSignature { 00040 const char *Name; 00041 FuncSignature Signature; 00042 }; 00043 00044 extern const FuncNameSignature PredefinedFuncs[]; 00045 00046 extern FuncSignature const *findFuncSignature(const char *name); 00047 } 00048 } 00049 00050 #endif