# HG changeset patch # User Michael Pavone # Date 1427258985 25200 # Node ID 4a79311dbd2932ac4a6c52da3949730d51f90039 # Parent 615f23450f8fa63de96f502c152657f3150c5732 Added conversion methods between integer and float types diff -r 615f23450f8f -r 4a79311dbd29 cbackend.js --- a/cbackend.js Mon Mar 23 21:21:43 2015 -0700 +++ b/cbackend.js Tue Mar 24 21:49:45 2015 -0700 @@ -861,6 +861,20 @@ }); } } + if (size > 16) { + var retType = 'obj_float' + size; + var retName = 'retfloat' + size; + var vars = {}; + vars[retName] = retType + ' *'; + intObj.addMessage((size > bits ? 'f' : 'truncF') + size, { + vars: vars, + lines: [ + retName + ' = make_object(&' + retType + '_meta, NULL, 0);', + retName + '->num = self->num;', + 'return &(' + retName + '->header);' + ] + }) + } } return intObj; @@ -900,6 +914,24 @@ 'return &(trans->header);' ] }); + var sizes = [8, 16, 32, 64]; + var prefixes = ['U', '']; + for (var i = 0; i < sizes.length; i++) { + for (var j = 0; j < prefixes.length; j++) { + var ret = 'ret' + i + j; + var vars = {}; + var retType = 'obj_' + prefixes[j].toLowerCase() + 'int' + sizes[i]; + vars[ret] = retType + ' *'; + floatObj.addMessage('trunc' + prefixes[j] + 'Int' + sizes[i], { + vars: vars, + lines: [ + ret + ' = make_object(&' + retType + '_meta, NULL, 0);', + ret + '->num = self->num;', + 'return &(' + ret + '->header);' + ] + }); + } + } return floatObj; }