Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sav08:bitwidth_analysis [2008/05/20 18:58] vkuncak |
sav08:bitwidth_analysis [2015/04/21 17:30] (current) |
||
---|---|---|---|
Line 3: | Line 3: | ||
Given a language with signed 64 bit integers, determine as small as possible set of bits needed to store values of variables. | Given a language with signed 64 bit integers, determine as small as possible set of bits needed to store values of variables. | ||
* e.g. if analysis derives that a subset of $\{0,1,2,\ldots,7\}$ is sufficient, then we can use //byte// type to store the value | * e.g. if analysis derives that a subset of $\{0,1,2,\ldots,7\}$ is sufficient, then we can use //byte// type to store the value | ||
+ | * instead of having multiple integer types, we can have analysis infer the right 'subtypes' (ranges) | ||
* the analysis becomes even more important if we generate hardware from C code: analysis would enable us to save circuits and power | * the analysis becomes even more important if we generate hardware from C code: analysis would enable us to save circuits and power | ||
Line 16: | Line 17: | ||
One simple rule: $g(x)=$ | One simple rule: $g(x)=$ | ||
++++| | ++++| | ||
- | \[\begin{array}{l} | + | \begin{equation*}\begin{array}{l} |
let\ L = \min(g(y)) + \min(g(z))-1 \\ | let\ L = \min(g(y)) + \min(g(z))-1 \\ | ||
let\ U = \max(g(y)) + \max(g(z))+1 \\ | let\ U = \max(g(y)) + \max(g(z))+1 \\ | ||
Line 22: | Line 23: | ||
else\ [L,U] | else\ [L,U] | ||
\end{array} | \end{array} | ||
- | \] | + | \end{equation*} |
++++ | ++++ | ||