14cdaa7d7SReed Kotler //===---- Mips16HardFloatInfo.cpp for Mips16 Hard Float -----===//
24cdaa7d7SReed Kotler //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
64cdaa7d7SReed Kotler //
74cdaa7d7SReed Kotler //===----------------------------------------------------------------------===//
84cdaa7d7SReed Kotler //
94cdaa7d7SReed Kotler // This file contains the Mips16 implementation of Mips16HardFloatInfo
104cdaa7d7SReed Kotler // namespace.
114cdaa7d7SReed Kotler //
124cdaa7d7SReed Kotler //===----------------------------------------------------------------------===//
134cdaa7d7SReed Kotler
144cdaa7d7SReed Kotler #include "Mips16HardFloatInfo.h"
15442f7848SChandler Carruth #include <string.h>
164cdaa7d7SReed Kotler
174cdaa7d7SReed Kotler namespace llvm {
184cdaa7d7SReed Kotler
194cdaa7d7SReed Kotler namespace Mips16HardFloatInfo {
204cdaa7d7SReed Kotler
214cdaa7d7SReed Kotler const FuncNameSignature PredefinedFuncs[] = {
224cdaa7d7SReed Kotler { "__floatdidf", { NoSig, DRet } },
234cdaa7d7SReed Kotler { "__floatdisf", { NoSig, FRet } },
244cdaa7d7SReed Kotler { "__floatundidf", { NoSig, DRet } },
254cdaa7d7SReed Kotler { "__fixsfdi", { FSig, NoFPRet } },
264cdaa7d7SReed Kotler { "__fixunsdfsi", { DSig, NoFPRet } },
274cdaa7d7SReed Kotler { "__fixunsdfdi", { DSig, NoFPRet } },
284cdaa7d7SReed Kotler { "__fixdfdi", { DSig, NoFPRet } },
294cdaa7d7SReed Kotler { "__fixunssfsi", { FSig, NoFPRet } },
304cdaa7d7SReed Kotler { "__fixunssfdi", { FSig, NoFPRet } },
314cdaa7d7SReed Kotler { "__floatundisf", { NoSig, FRet } },
32062a2baeSCraig Topper { nullptr, { NoSig, NoFPRet } }
334cdaa7d7SReed Kotler };
344cdaa7d7SReed Kotler
354cdaa7d7SReed Kotler // just do a search for now. there are very few of these special cases.
364cdaa7d7SReed Kotler //
findFuncSignature(const char * name)374cdaa7d7SReed Kotler extern FuncSignature const *findFuncSignature(const char *name) {
384cdaa7d7SReed Kotler const char *name_;
394cdaa7d7SReed Kotler int i = 0;
404cdaa7d7SReed Kotler while (PredefinedFuncs[i].Name) {
414cdaa7d7SReed Kotler name_ = PredefinedFuncs[i].Name;
424cdaa7d7SReed Kotler if (strcmp(name, name_) == 0)
434cdaa7d7SReed Kotler return &PredefinedFuncs[i].Signature;
444cdaa7d7SReed Kotler i++;
454cdaa7d7SReed Kotler }
46062a2baeSCraig Topper return nullptr;
474cdaa7d7SReed Kotler }
48f00654e3SAlexander Kornienko }
49f00654e3SAlexander Kornienko }
50