diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-08-19 14:56:33 -0400 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2015-09-15 23:01:32 -0400 |
commit | 2c6f6b4b2dbdd94a10a01124ac61724c412fe587 (patch) | |
tree | 44660864f45566ae6812924c0389129de92ce842 /lisc/isel.c | |
parent | 3c3175ca73914e299589b2e38692cd01b349d3d5 (diff) | |
download | roux-2c6f6b4b2dbdd94a10a01124ac61724c412fe587.tar.gz |
add truncation operation
It would be nicer to have some kind of subtyping where a l variable can be used in place of a w variable but it is more complications than a truncation insutruction. In some cases, it might be less efficient than the above solution by requiring two registers instead of one. (I.e when both the truncated variable and the long variable live together.) We have to see what are the usage patterns.
Diffstat (limited to 'lisc/isel.c')
-rw-r--r-- | lisc/isel.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lisc/isel.c b/lisc/isel.c index bace637..91df7dc 100644 --- a/lisc/isel.c +++ b/lisc/isel.c @@ -181,6 +181,9 @@ sel(Ins i, Fn *fn) case OZext: n = 0; goto Emit; + case OTrunc: + n = 1; + goto Emit; case OAdd: case OSub: case OMul: @@ -285,6 +288,7 @@ flagi(Ins *i0, Ins *i) case OCopy: /* flag-transparent */ case OSext: case OZext: + case OTrunc: case OStorel: case OStorew: case OStoreb: |