97 lines
1.3 KiB
C++
97 lines
1.3 KiB
C++
#include <num/num.h>
|
|
using namespace libnum;
|
|
|
|
extern "C" {
|
|
|
|
// num16_of_num8: %=1 && [extu.b]
|
|
num16 num16_of_num8(num8 x)
|
|
{
|
|
return num16(x);
|
|
}
|
|
|
|
// num16_of_num32: %=1 && [shlr8]
|
|
num16 num16_of_num32(num32 x)
|
|
{
|
|
return num16(x);
|
|
}
|
|
|
|
// num16_of_num64: %=[sh* || or]
|
|
num16 num16_of_num64(num64 x)
|
|
{
|
|
return num16(x);
|
|
}
|
|
|
|
// num16_mul: [shad] && ![jsr]
|
|
num16 num16_mul(num16 x, num16 y)
|
|
{
|
|
return x * y;
|
|
}
|
|
|
|
// num16_dmul: [muls.w]
|
|
num32 num16_dmul(num16 x, num16 y)
|
|
{
|
|
return num16::dmul(x, y);
|
|
}
|
|
|
|
// num16_eq: [bt* || bf*] && [shll8]
|
|
bool num16_eq(num16 x, int i)
|
|
{
|
|
return x == i;
|
|
}
|
|
|
|
// num16_le: ![bt* || bf*]
|
|
bool num16_le(num16 x, int i)
|
|
{
|
|
return x <= i;
|
|
}
|
|
|
|
// num16_gt: ![bt* || bf*]
|
|
bool num16_gt(num16 x, int i)
|
|
{
|
|
return x > i;
|
|
}
|
|
|
|
// num16_le_0: %<=3
|
|
bool num16_le_0(num16 x)
|
|
{
|
|
return x <= num16(0);
|
|
}
|
|
|
|
// num16_ge_0: %<=3 || (%=4 && [mov.l])
|
|
bool num16_ge_0(num16 x)
|
|
{
|
|
return x >= num16(0);
|
|
}
|
|
|
|
// num16_gt_0: %<=3
|
|
bool num16_gt_0(num16 x)
|
|
{
|
|
return x > num16(0);
|
|
}
|
|
|
|
// num16_lt_0: %<=3 || (%=4 && [mov.l])
|
|
bool num16_lt_0(num16 x)
|
|
{
|
|
return x < num16(0);
|
|
}
|
|
|
|
// num16_floor: [and] && %<=3
|
|
num16 num16_floor(num16 x)
|
|
{
|
|
return x.floor();
|
|
}
|
|
|
|
// num16_ceil: %<=4
|
|
num16 num16_ceil(num16 x)
|
|
{
|
|
return x.ceil();
|
|
}
|
|
|
|
// num16_frac: [extu.b] && %=1
|
|
num16 num16_frac(num16 x)
|
|
{
|
|
return x.frac();
|
|
}
|
|
|
|
} /* extern "C" */
|