| //===---- 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; |
| } |
| } |
| } |