Home | History | Annotate | Download | only in Mips
      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