Mercurial > repos > tabletprog
changeset 325:4a79311dbd29
Added conversion methods between integer and float types
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 24 Mar 2015 21:49:45 -0700 |
parents | 615f23450f8f |
children | 50760ba52b11 |
files | cbackend.js |
diffstat | 1 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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; }