Files
tp/include/MSL_C.PPCEABI.bare.H/MSL_Common/Src/float.h
T
Jonathan Wase 901b222eb8 JUTException (#154)
* JUTException inherit JKRThread

* OK __ct__12JUTExceptionFP14JUTDirectPrint

* OK create__12JUTExceptionFP14JUTDirectPrint

* OK setFPException__12JUTExceptionFUl

* OK showFloatSub__12JUTExceptionFif

* OK showFloat__12JUTExceptionFP9OSContext

* OK searchPartialModule__12JUTExceptionFUlPUlPUlPUlPUl

* OK search_name_part__FPUcPUci

* OK showStack__12JUTExceptionFP9OSContext

* OK showMainInfo__12JUTExceptionFUsP9OSContextUlUl

* OK showGPR__12JUTExceptionFP9OSContext

* OK __sinit_JUTException_cpp

* OK showMapInfo_subroutine__12JUTExceptionFUlb

* OK showGPRMap__12JUTExceptionFP9OSContext

* OK showSRR0Map__12JUTExceptionFP9OSContext

* OK printDebugInfo__12JUTExceptionFQ212JUTException9EInfoPageUsP9OSContextUlUl

* OK isEnablePad__12JUTExceptionCFv

* OK readPad__12JUTExceptionFPUlPUl

* NONMATCHING printContext__12JUTExceptionFUsP9OSContextUlUl

* OK printContext__12JUTExceptionFUsP9OSContextUlUl

* OK __dt__12JUTExceptionFv

* OK waitTime__12JUTExceptionFl

* OK createFB__12JUTExceptionFv

* OK setPreUserCallback__12JUTExceptionFPFUsP9OSContextUlUl_v

* OK __ct__13JUTExternalFBFP16_GXRenderModeObj8_GXGammaPvUl

* OK createConsole__12JUTExceptionFPvUl

* NONMATCHING queryMapAddress_single__12JUTExceptionFPcUllPUlPUlPcUlbb

* OK queryMapAddress__12JUTExceptionFPcUllPUlPUlPcUlbb

* OK appendMapFile__12JUTExceptionFPCc

* clean up

* OK panic_f__12JUTExceptionFPCciPCce

* OK panic_f_va__12JUTExceptionFPCciPCcP16__va_list_struct

* OK errorHandler__12JUTExceptionFUsP9OSContextUlUl

* format

* format

* fixed requested changes

* merged with master and removed *.s files

Co-authored-by: Julgodis <>
2021-11-09 23:09:38 +01:00

49 lines
1.0 KiB
C

#ifndef MSL_COMMON_SRC_FLOAT_H
#define MSL_COMMON_SRC_FLOAT_H
#include "dolphin/types.h"
#define FP_SNAN 0
#define FP_QNAN 1
#define FP_INFINITE 2
#define FP_ZERO 3
#define FP_NORMAL 4
#define FP_SUBNORMAL 5
#define FP_NAN FP_QNAN
#define fpclassify(x) ((sizeof(x) == sizeof(float)) ? __fpclassifyf(x) : __fpclassifyd(x))
#define signbit(x) ((sizeof(x) == sizeof(float)) ? __signbitf(x) : __signbitd(x))
#define __signbitf(x) ((*(u8*)&(x)) & 0x80)
// TODO: OK?
#define __signbitd(x) ((*(u8*)&(x)) & 0x80)
inline int __fpclassifyf(float __value) {
u32 integer = *(u32*)&__value;
switch (integer & 0x7f800000) {
case 0x7f800000:
if ((integer & 0x7fffff) != 0) {
return FP_QNAN;
}
return FP_INFINITE;
case 0:
if ((integer & 0x7fffff) != 0) {
return FP_SUBNORMAL;
}
return FP_ZERO;
}
return FP_NORMAL;
}
inline int __fpclassifyd(double __value) {
// TODO:
return FP_INFINITE;
}
#endif /* MSL_COMMON_SRC_FLOAT_H */