50 lines · cpp
1//===---- Mips16HardFloatInfo.cpp for Mips16 Hard Float -----===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the Mips16 implementation of Mips16HardFloatInfo10// namespace.11//12//===----------------------------------------------------------------------===//13 14#include "Mips16HardFloatInfo.h"15#include <string.h>16 17namespace llvm {18 19namespace Mips16HardFloatInfo {20 21const FuncNameSignature PredefinedFuncs[] = {22 { "__floatdidf", { NoSig, DRet } },23 { "__floatdisf", { NoSig, FRet } },24 { "__floatundidf", { NoSig, DRet } },25 { "__fixsfdi", { FSig, NoFPRet } },26 { "__fixunsdfsi", { DSig, NoFPRet } },27 { "__fixunsdfdi", { DSig, NoFPRet } },28 { "__fixdfdi", { DSig, NoFPRet } },29 { "__fixunssfsi", { FSig, NoFPRet } },30 { "__fixunssfdi", { FSig, NoFPRet } },31 { "__floatundisf", { NoSig, FRet } },32 { nullptr, { NoSig, NoFPRet } }33};34 35// just do a search for now. there are very few of these special cases.36//37extern FuncSignature const *findFuncSignature(const char *name) {38 const char *name_;39 int i = 0;40 while (PredefinedFuncs[i].Name) {41 name_ = PredefinedFuncs[i].Name;42 if (strcmp(name, name_) == 0)43 return &PredefinedFuncs[i].Signature;44 i++;45 }46 return nullptr;47}48}49}50