136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===---- Mips16HardFloatInfo.h for Mips16 Hard Float              --------===//
236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//                     The LLVM Compiler Infrastructure
436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file is distributed under the University of Illinois Open Source
636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// License. See LICENSE.TXT for details.
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file defines some data structures relevant to the implementation of
1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Mips16 hard float.
1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#ifndef LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H
1737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#define LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace llvm {
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace Mips16HardFloatInfo {
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Return types that matter for hard float are:
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// float, double, complex float, and complex double
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesenum FPReturnVariant { FRet, DRet, CFRet, CDRet, NoFPRet };
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// Parameter type that matter are float, (float, float), (float, double),
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// double, (double, double), (double, float)
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesenum FPParamVariant { FSig, FFSig, FDSig, DSig, DDSig, DFSig, NoSig };
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesstruct FuncSignature {
3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  FPParamVariant ParamSig;
3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  FPReturnVariant RetSig;
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesstruct FuncNameSignature {
4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  const char *Name;
4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  FuncSignature Signature;
4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesextern const FuncNameSignature PredefinedFuncs[];
4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesextern FuncSignature const *findFuncSignature(const char *name);
4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#endif
51