mirror of
https://github.com/zeldaret/tp
synced 2026-06-26 02:14:43 -04:00
901b222eb8
* 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 <>
49 lines
1.0 KiB
C
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 */
|