Fix an overflow bug with f32 to s32 conversion.

This commit is contained in:
David Reid
2017-11-04 21:30:32 +10:00
parent ccd9e736cc
commit b9fcacdbfd
2 changed files with 5 additions and 1 deletions
+2 -1
View File
@@ -15,6 +15,7 @@
# clip [output] [a] -> output = clamp(a, -1, 1)
#
# int [name] -> Declare an uninitialized 32-bit integer
# lng [name] -> Declare an uninitialized 64-bit integer
# flt [name] -> Declare an uninitialized 32-bit float
# r = (x - 128) << 8
@@ -159,7 +160,7 @@ f32->s24 {
# r = clip(x) * (0x7FFFFFFF + sign(x))
f32->s32 {
flt c;
int s;
lng s;
clip c x;
sig s x;
add s s 2147483647;
+3
View File
@@ -455,6 +455,9 @@ std::string malgen_generate_code__conversion_func_inst(malgen_context* pContext,
if (strcmp(pInst->name, "int") == 0) {
code += "int "; code += pInst->params[0];
}
if (strcmp(pInst->name, "lng") == 0) {
code += "long long "; code += pInst->params[0];
}
if (strcmp(pInst->name, "flt") == 0) {
code += "float "; code += pInst->params[0];
}