Use inline floor and ceil instructions

This commit is contained in:
Ryan Dwyer
2023-05-09 17:22:15 +10:00
parent 6e8249b8bd
commit ae4687917f
7 changed files with 30 additions and 88 deletions
-2
View File
@@ -82,8 +82,6 @@
build/ROMID/game/acosfasinf.o (section); \
build/ROMID/game/game_096b20.o (section); \
build/ROMID/game/quaternion.o (section); \
build/ROMID/game/floor.o (section); \
build/ROMID/game/ceil.o (section); \
build/ROMID/game/game_097aa0.o (section); \
build/ROMID/game/invitems.o (section); \
build/ROMID/game/bondgun.o (section); \
-39
View File
@@ -1,39 +0,0 @@
#include <ultra64.h>
#include "constants.h"
#include "bss.h"
#include "data.h"
#include "types.h"
f32 ceilf(f32 value)
{
f32 fvalue;
if (value <= 0) {
return (s32)value;
}
fvalue = (s32)value;
if (value == fvalue) {
return fvalue;
}
return fvalue + 1;
}
s32 ceil(f32 value)
{
s32 ivalue;
if (value <= 0) {
return value;
}
ivalue = value;
if (ivalue == value) {
return value;
}
return ivalue + 1;
}
-39
View File
@@ -1,39 +0,0 @@
#include <ultra64.h>
#include "constants.h"
#include "bss.h"
#include "data.h"
#include "types.h"
f32 floorf(f32 value)
{
f32 fvalue;
if (value >= 0) {
return (s32)value;
}
fvalue = (s32)value;
if (value == fvalue) {
return fvalue;
}
return fvalue - 1;
}
s32 floor(f32 value)
{
s32 ivalue;
if (value >= 0) {
return value;
}
ivalue = value;
if (value == ivalue) {
return ivalue;
}
return ivalue - 1;
}
+1 -1
View File
@@ -151,7 +151,7 @@ static f32 skyClamp(f32 value, f32 min, f32 max)
static f32 skyRound(f32 value)
{
f32 ret;
s32 ret;
__asm__ ("round.w.s %0, %1" : "=f"(ret) : "f"(value));
return ret;
}
+3 -3
View File
@@ -311,7 +311,7 @@ static char *frMenuTextTimeTakenValue(struct menuitem *item)
mins++;
}
sprintf(g_StringPointer, "%dm %2ds\n", mins, (s32)ceilf(secs));
sprintf(g_StringPointer, "%dm %2ds\n", mins, ceil(secs));
return g_StringPointer;
} else {
sprintf(g_StringPointer, "%s%s%2.2fs\n", "", "", secs);
@@ -1713,7 +1713,7 @@ static char *dtMenuTextTimeTakenValue(struct menuitem *item)
mins++;
}
sprintf(g_StringPointer, "%dm %2ds\n", mins, (s32)ceilf(secs));
sprintf(g_StringPointer, "%dm %2ds\n", mins, ceil(secs));
return g_StringPointer;
} else {
sprintf(g_StringPointer, "%s%s%2.2fs\n", "", "", secs);
@@ -1831,7 +1831,7 @@ static char *htMenuTextTimeTakenValue(struct menuitem *item)
mins++;
}
sprintf(g_StringPointer, "%dm %2ds\n", mins, (s32)ceilf(secs));
sprintf(g_StringPointer, "%dm %2ds\n", mins, ceil(secs));
return g_StringPointer;
} else {
sprintf(g_StringPointer, "%s%s%2.2fs\n", "", "", secs);
+13 -2
View File
@@ -4,7 +4,18 @@
#include "data.h"
#include "types.h"
f32 ceilf(f32 value);
s32 ceil(f32 value);
static inline f32 ceilf(f32 value)
{
s32 ret;
__asm__ ("ceil.w.s %0, %1" : "=f"(ret) : "f"(value));
return ret;
}
static inline s32 ceil(f32 value)
{
s32 ret;
__asm__ ("ceil.w.s %0, %1" : "=f"(ret) : "f"(value));
return ret;
}
#endif
+13 -2
View File
@@ -4,7 +4,18 @@
#include "data.h"
#include "types.h"
f32 floorf(f32 value);
s32 floor(f32 value);
static inline f32 floorf(f32 value)
{
s32 ret;
__asm__ ("floor.w.s %0, %1" : "=f"(ret) : "f"(value));
return ret;
}
static inline s32 floor(f32 value)
{
s32 ret;
__asm__ ("floor.w.s %0, %1" : "=f"(ret) : "f"(value));
return ret;
}
#endif