Open-Source Projects: Issueshttps://forge.ispras.ru/https://forge.ispras.ru/favicon.ico?16490126692015-09-22T10:41:12ZOpen-Source Projects
Redmine MicroTESK - Bug #6287 (Closed): Variable dependencies causes false positives in path feasibility ...https://forge.ispras.ru/issues/62872015-09-22T10:41:12ZArtem Kotsynyak
<p>For attached code six (6) code paths are produced: <br />1: L1.Event=MISS, L2.Event=MISS, pmem.condition=0, pmem.dependent!=1, pmem.STOP<br /><ins>2: L1.Event=MISS, L2.Event=MISS, pmem.condition=0, pmem.dependent=1, pmem.STOP</ins><br /><ins>3: L1.Event=MISS, L2.Event=MISS, pmem.condition!=0, pmem.dependent!=1, pmem.STOP</ins><br />4: L1.Event=MISS, L2.Event=MISS, pmem.condition!=0, pmem.dependent=1, pmem.STOP<br />5: L1.Event=MISS, L2.Event=HIT, pmem.STOP<br />6: L1.Event=HIT, pmem.STOP</p>
<p>None of them being pruned with isFeasible() check while paths 2 and 3 are infeasible.</p>
<pre>
read = {
l1Tag = va.vaddress<47..12>;
l2Tag = va.vaddress<47..17>;
if L1(va).hit then
l1Entry = L1(va);
line = l1Entry.DATA;
else
if L2(va).hit then
l2Entry = L2(va);
line = l2Entry.DATA;
// Fill L1.
l1Entry.TAG = l1Tag;
l1Entry.DATA = line;
L1(va) = l1Entry;
else
pa.addrdesc.paddress.physicaladdress<1..0> = 0b00;
tempValue = MEM(pa);
line<(64 * 0 + 63)..(64 * 0)> = tempValue;
pa.addrdesc.paddress.physicaladdress<1..0> = 0b01;
tempValue = MEM(pa);
line<(64 * 1 + 63)..(64 * 1)> = tempValue;
pa.addrdesc.paddress.physicaladdress<1..0> = 0b10;
tempValue = MEM(pa);
line<(64 * 2 + 63)..(64 * 2)> = tempValue;
pa.addrdesc.paddress.physicaladdress<1..0> = 0b11;
tempValue = MEM(pa);
line<(64 * 3 + 63)..(64 * 3)> = tempValue;
// Fill L2.
l2Entry.TAG = l2Tag;
l2Entry.DATA = line;
L2(va) = l2Entry;
// Fill L1.
l1Entry.TAG = l1Tag;
l1Entry.DATA = line;
L1(va) = l1Entry;
if condition != 0 then
dependent = 1;
else
dependent = 0;
endif;
if dependent == 1 then
temp.value = 0;
endif;
endif;
endif;
data = line<(64 * va.vaddress<4..3> + 63)..(64 * va.vaddress<4..3>)>;
}
</pre> MicroTESK - Task #6110 (Closed): Explicit calls to 'init' attribute in IRhttps://forge.ispras.ru/issues/61102015-06-24T10:36:27ZArtem Kotsynyak
<p>'init' attribute should be called on every attribute invokation. Currently it is being handled separately in simulator and coverage extractor. It is better to insert explicit calls to 'init' into IR during translation.</p> Fortress - Task #5529 (New): Использовать префиксы для указания основания в строковом представлен...https://forge.ispras.ru/issues/55292014-12-25T12:09:59ZArtem Kotsynyak
<p>Текущий подход чтения данных из строкового представления основан на передаче единственного основания вручную, при этом требуется следить за правильным значением основания при чтении и записи. Более того, такой подход невозможен для составных типов как массивы или структуры, так как в строковом представлении терминальных типов могут использоваться различные основания. Видится два решения: передавать основания для каждого терминального типа, или, предпочтительно, использовать привычные префиксы для оснований (0b, 0, 0x).</p> Fortress - Task #5470 (Closed): [data] DataMap JavaDochttps://forge.ispras.ru/issues/54702014-12-05T09:24:16ZArtem KotsynyakFortress - Feature #5451 (New): Support external rules in TransformerRule interfacehttps://forge.ispras.ru/issues/54512014-11-26T12:58:41ZArtem Kotsynyak
<p>TransformerRules are dedicated for use in NodeTransformer with other rules, but interface implementations has no information about other rules, therefore it may introduce inconsistencies in transformed expressions accordingly to entire set as a whole. Since given transforms are considered local, i.e. should match and replace only limited (and small) subgraph, it is reasonable to support external rules in interface instead of multiple transformation runs. Consider using abstract class in place of interface to enforce respecting external rules.</p> Fortress - Task #5450 (Closed): Support multiple rules per node in NodeTransformerhttps://forge.ispras.ru/issues/54502014-11-26T12:45:40ZArtem Kotsynyak
<p>Transformer should allow to add multiple rules per enumeration instance. Only single applicable rule may be used during transformation. Selection of applicable rule should be deterministic and is a part of API contract.</p> Fortress - Task #5421 (Open): Utility methods on expression nodeshttps://forge.ispras.ru/issues/54212014-11-12T11:14:20ZArtem Kotsynyak
<ul>
<li>Shortcuts for standard operations, e.g. AND (...) to replace new NodeOperation(StandardOperation.AND, ...) etc.</li>
<li>Default TRUE and FALSE nodes w/o user data.</li>
<li>Node hierarchy checks: check if Node is a specific operation (Node x opId -> boolean), check if Node is a specific DataType value (Node x DataType -> boolean).</li>
<li>Complementary to NodeValue.newXXX: isXXX and getXXX.</li>
<li>Operands extraction.</li>
</ul>
<p>Some of these can be found implemented or even duplicated in the codebase. This list is a subject to updates.</p> Fortress - Feature #4689 (Closed): [expression] Отсечение поддеревьев выражения в обходчикеhttps://forge.ispras.ru/issues/46892014-02-05T07:02:21ZArtem Kotsynyak
<p>Добавить возможность неполного обхода дерева выражения. Отсечение следует проводить для подвыражений (onExprBegin()) и, взможно, для операндов (onOperandBegin()).</p> Fortress - Task #4578 (Closed): [transformer] Оптимизация/преобразование дерева выраженияhttps://forge.ispras.ru/issues/45782013-11-06T07:54:12ZArtem Kotsynyak
<p>Предлагается добавить интерфейс для преобразования дерева выражения заданным образом в дополнение к вычислению константных выражений. Целью является возможность приведения выражения к "нормальному" в зависимости от задачи виду.</p> Fortress - Task #4297 (Closed): Allow core.syntax.Formula construction from ISyntaxElement or sim...https://forge.ispras.ru/issues/42972013-07-03T07:06:22ZArtem Kotsynyak
<p>Formula can be a const literal (true/false), boolean(?) variable literal or expression.</p>