11541Srgrimes//===---- Mips16HardFloatInfo.h for Mips16 Hard Float --------===// 21541Srgrimes// 31541Srgrimes// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 41541Srgrimes// See https://llvm.org/LICENSE.txt for license information. 51541Srgrimes// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 61541Srgrimes// 71541Srgrimes//===----------------------------------------------------------------------===// 81541Srgrimes// 91541Srgrimes// This file defines some data structures relevant to the implementation of 101541Srgrimes// Mips16 hard float. 111541Srgrimes// 121541Srgrimes// 131541Srgrimes//===----------------------------------------------------------------------===// 141541Srgrimes 151541Srgrimes#ifndef LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H 161541Srgrimes#define LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOATINFO_H 171541Srgrimes 181541Srgrimesnamespace llvm { 191541Srgrimes 201541Srgrimesnamespace Mips16HardFloatInfo { 211541Srgrimes 221541Srgrimes// Return types that matter for hard float are: 231541Srgrimes// float, double, complex float, and complex double 241541Srgrimes// 251541Srgrimesenum FPReturnVariant { FRet, DRet, CFRet, CDRet, NoFPRet }; 261541Srgrimes 271541Srgrimes// 281541Srgrimes// Parameter type that matter are float, (float, float), (float, double), 291541Srgrimes// double, (double, double), (double, float) 301541Srgrimes// 311541Srgrimesenum FPParamVariant { FSig, FFSig, FDSig, DSig, DDSig, DFSig, NoSig }; 321541Srgrimes 331541Srgrimesstruct FuncSignature { 341541Srgrimes FPParamVariant ParamSig; 351541Srgrimes FPReturnVariant RetSig; 361541Srgrimes}; 373305Sphk 381541Srgrimesstruct FuncNameSignature { 391541Srgrimes const char *Name; 401541Srgrimes FuncSignature Signature; 411541Srgrimes}; 421541Srgrimes 431541Srgrimesextern const FuncNameSignature PredefinedFuncs[]; 441541Srgrimes 451541Srgrimesextern FuncSignature const *findFuncSignature(const char *name); 461541Srgrimes} 471541Srgrimes} 481541Srgrimes 491541Srgrimes#endif 501541Srgrimes