LLVM API Documentation

Mips16HardFloatInfo.h
Go to the documentation of this file.
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