136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===---- Mips16HardFloatInfo.cpp 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 contains the Mips16 implementation of Mips16HardFloatInfo 1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// namespace. 1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "Mips16HardFloatInfo.h" 1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include <string.h> 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace llvm { 1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace Mips16HardFloatInfo { 2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesconst FuncNameSignature PredefinedFuncs[] = { 2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__floatdidf", { NoSig, DRet } }, 2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__floatdisf", { NoSig, FRet } }, 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__floatundidf", { NoSig, DRet } }, 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__fixsfdi", { FSig, NoFPRet } }, 2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__fixunsdfsi", { DSig, NoFPRet } }, 2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__fixunsdfdi", { DSig, NoFPRet } }, 2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__fixdfdi", { DSig, NoFPRet } }, 3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__fixunssfsi", { FSig, NoFPRet } }, 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__fixunssfdi", { FSig, NoFPRet } }, 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines { "__floatundisf", { NoSig, FRet } }, 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines { nullptr, { NoSig, NoFPRet } } 3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}; 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// just do a search for now. there are very few of these special cases. 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesextern FuncSignature const *findFuncSignature(const char *name) { 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const char *name_; 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines int i = 0; 4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines while (PredefinedFuncs[i].Name) { 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines name_ = PredefinedFuncs[i].Name; 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines if (strcmp(name, name_) == 0) 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines return &PredefinedFuncs[i].Signature; 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines i++; 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines } 47dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines return nullptr; 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 51