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