1*9880d681SAndroid Build Coastguard Worker //===---- Mips16HardFloatInfo.cpp for Mips16 Hard Float -----===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker // This file contains the Mips16 implementation of Mips16HardFloatInfo
11*9880d681SAndroid Build Coastguard Worker // namespace.
12*9880d681SAndroid Build Coastguard Worker //
13*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker #include "Mips16HardFloatInfo.h"
16*9880d681SAndroid Build Coastguard Worker #include <string.h>
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker namespace llvm {
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker namespace Mips16HardFloatInfo {
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker const FuncNameSignature PredefinedFuncs[] = {
23*9880d681SAndroid Build Coastguard Worker { "__floatdidf", { NoSig, DRet } },
24*9880d681SAndroid Build Coastguard Worker { "__floatdisf", { NoSig, FRet } },
25*9880d681SAndroid Build Coastguard Worker { "__floatundidf", { NoSig, DRet } },
26*9880d681SAndroid Build Coastguard Worker { "__fixsfdi", { FSig, NoFPRet } },
27*9880d681SAndroid Build Coastguard Worker { "__fixunsdfsi", { DSig, NoFPRet } },
28*9880d681SAndroid Build Coastguard Worker { "__fixunsdfdi", { DSig, NoFPRet } },
29*9880d681SAndroid Build Coastguard Worker { "__fixdfdi", { DSig, NoFPRet } },
30*9880d681SAndroid Build Coastguard Worker { "__fixunssfsi", { FSig, NoFPRet } },
31*9880d681SAndroid Build Coastguard Worker { "__fixunssfdi", { FSig, NoFPRet } },
32*9880d681SAndroid Build Coastguard Worker { "__floatundisf", { NoSig, FRet } },
33*9880d681SAndroid Build Coastguard Worker { nullptr, { NoSig, NoFPRet } }
34*9880d681SAndroid Build Coastguard Worker };
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker // just do a search for now. there are very few of these special cases.
37*9880d681SAndroid Build Coastguard Worker //
findFuncSignature(const char * name)38*9880d681SAndroid Build Coastguard Worker extern FuncSignature const *findFuncSignature(const char *name) {
39*9880d681SAndroid Build Coastguard Worker const char *name_;
40*9880d681SAndroid Build Coastguard Worker int i = 0;
41*9880d681SAndroid Build Coastguard Worker while (PredefinedFuncs[i].Name) {
42*9880d681SAndroid Build Coastguard Worker name_ = PredefinedFuncs[i].Name;
43*9880d681SAndroid Build Coastguard Worker if (strcmp(name, name_) == 0)
44*9880d681SAndroid Build Coastguard Worker return &PredefinedFuncs[i].Signature;
45*9880d681SAndroid Build Coastguard Worker i++;
46*9880d681SAndroid Build Coastguard Worker }
47*9880d681SAndroid Build Coastguard Worker return nullptr;
48*9880d681SAndroid Build Coastguard Worker }
49*9880d681SAndroid Build Coastguard Worker }
50*9880d681SAndroid Build Coastguard Worker }
51