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 18 namespace llvm { 19 20 namespace Mips16HardFloatInfo { 21 22 const 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 // 38 extern 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