136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===---- Mips16HardFloatInfo.cpp for Mips16 Hard Float              -----===//
236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//                     The LLVM Compiler Infrastructure
436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file is distributed under the University of Illinois Open Source
636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// License. See LICENSE.TXT for details.
736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file contains the Mips16 implementation of Mips16HardFloatInfo
1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// namespace.
1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===//
1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "Mips16HardFloatInfo.h"
1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include <string.h>
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace llvm {
1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace Mips16HardFloatInfo {
2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesconst FuncNameSignature PredefinedFuncs[] = {
2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__floatdidf", { NoSig, DRet } },
2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__floatdisf", { NoSig, FRet } },
2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__floatundidf", { NoSig, DRet } },
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__fixsfdi", { FSig, NoFPRet } },
2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__fixunsdfsi", { DSig, NoFPRet } },
2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__fixunsdfdi", { DSig, NoFPRet } },
2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__fixdfdi", { DSig, NoFPRet } },
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__fixunssfsi", { FSig, NoFPRet } },
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__fixunssfdi", { FSig, NoFPRet } },
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  { "__floatundisf", { NoSig, FRet } },
33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  { nullptr, { NoSig, NoFPRet } }
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines};
3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines
3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// just do a search for now. there are very few of these special cases.
3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//
3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesextern FuncSignature const *findFuncSignature(const char *name) {
3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  const char *name_;
4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  int i = 0;
4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  while (PredefinedFuncs[i].Name) {
4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    name_ = PredefinedFuncs[i].Name;
4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    if (strcmp(name, name_) == 0)
4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      return &PredefinedFuncs[i].Signature;
4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    i++;
4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  }
47dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  return nullptr;
4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines}
51