1//===---- Mips16HardFloatInfo.cpp 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 contains the Mips16 implementation of Mips16HardFloatInfo 11// namespace. 12// 13//===----------------------------------------------------------------------===// 14 15#include "Mips16HardFloatInfo.h" 16#include <string.h> 17 18namespace llvm { 19 20namespace Mips16HardFloatInfo { 21 22const FuncNameSignature PredefinedFuncs[] = { 23 { "__floatdidf", { NoSig, DRet } }, 24 { "__floatdisf", { NoSig, FRet } }, 25 { "__floatundidf", { NoSig, DRet } }, 26 { "__fixsfdi", { FSig, NoFPRet } }, 27 { "__fixunsdfsi", { DSig, NoFPRet } }, 28 { "__fixunsdfdi", { DSig, NoFPRet } }, 29 { "__fixdfdi", { DSig, NoFPRet } }, 30 { "__fixunssfsi", { FSig, NoFPRet } }, 31 { "__fixunssfdi", { FSig, NoFPRet } }, 32 { "__floatundisf", { NoSig, FRet } }, 33 { nullptr, { NoSig, NoFPRet } } 34}; 35 36// just do a search for now. there are very few of these special cases. 37// 38extern FuncSignature const *findFuncSignature(const char *name) { 39 const char *name_; 40 int i = 0; 41 while (PredefinedFuncs[i].Name) { 42 name_ = PredefinedFuncs[i].Name; 43 if (strcmp(name, name_) == 0) 44 return &PredefinedFuncs[i].Signature; 45 i++; 46 } 47 return nullptr; 48} 49} 50} 51