//===---- Mips16HardFloatInfo.cpp for Mips16 Hard Float -----===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file contains the Mips16 implementation of Mips16HardFloatInfo // namespace. // //===----------------------------------------------------------------------===// #include "Mips16HardFloatInfo.h" #include <string.h> namespace llvm { namespace Mips16HardFloatInfo { const FuncNameSignature PredefinedFuncs[] = { { "__floatdidf", { NoSig, DRet } }, { "__floatdisf", { NoSig, FRet } }, { "__floatundidf", { NoSig, DRet } }, { "__fixsfdi", { FSig, NoFPRet } }, { "__fixunsdfsi", { DSig, NoFPRet } }, { "__fixunsdfdi", { DSig, NoFPRet } }, { "__fixdfdi", { DSig, NoFPRet } }, { "__fixunssfsi", { FSig, NoFPRet } }, { "__fixunssfdi", { FSig, NoFPRet } }, { "__floatundisf", { NoSig, FRet } }, { nullptr, { NoSig, NoFPRet } } }; // just do a search for now. there are very few of these special cases. // extern FuncSignature const *findFuncSignature(const char *name) { const char *name_; int i = 0; while (PredefinedFuncs[i].Name) { name_ = PredefinedFuncs[i].Name; if (strcmp(name, name_) == 0) return &PredefinedFuncs[i].Signature; i++; } return nullptr; } } } |