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