Open-Source Projects: Issues
https://forge.ispras.ru/
https://forge.ispras.ru/favicon.ico?1649012669
2020-04-01T07:23:10Z
Open-Source Projects
Redmine
MicroTESK - Task #10193 (New): Cache instances configuration
https://forge.ispras.ru/issues/10193
2020-04-01T07:23:10Z
Alexander Kamkin
askamkin@gmail.com
<p>MMU specifications look like they are written for a single core. That's OK and, I think, it should be so. However, it is unclear how to instantiate the caches and connects them with the cores, the main memory and each other in multi-core settings. There should be a kind of configuration.</p>
<p>The modeling library provides the following mechanisms.</p>
<p><code>CacheUnit</code>'s constructor has the <code>next</code> parameter, which is a reference to the next-level cache instance or the main memory (<code>null</code> if the <code>next</code> attribute is not specified):</p>
<pre><code class="java syntaxhl" data-language="java"><span class="kd">public</span> <span class="nf">CacheUnit</span><span class="o">(...,</span> <span class="kd">final</span> <span class="nc">Buffer</span><span class="o"><?</span> <span class="kd">extends</span> <span class="nc">Struct</span><span class="o"><?>,</span> <span class="no">A</span><span class="o">></span> <span class="n">next</span><span class="o">)</span>
</code></pre>
<p>Also, <code>CacheUnit</code> implements the <code>addNeighbor</code> method that links the cache instance with the same-level ones:</p>
<pre><code class="java syntaxhl" data-language="java"><span class="kd">public</span> <span class="kt">void</span> <span class="nf">addNeighbor</span><span class="o">(</span><span class="kd">final</span> <span class="nc">CacheUnit</span><span class="o"><?,</span> <span class="no">A</span><span class="o">></span> <span class="n">other</span><span class="o">)</span>
</code></pre>
Fortress - Bug #10177 (Feedback): TreeVisitor's SKIP status does not work as expected
https://forge.ispras.ru/issues/10177
2020-03-24T08:49:09Z
Alexander Kamkin
askamkin@gmail.com
<p>When I call <code>setStatus(Status.SKIP)</code> in <code>onOperationBegin(node)</code>, I expect the visitor will not visit the node's children but will visit the node's neighbors.<br />However, the call skips visiting the neighbors.</p>
MicroTESK - Bug #10064 (New): Support FP instructions in MIR
https://forge.ispras.ru/issues/10064
2020-01-24T07:54:30Z
Alexander Protsenko
protsenko@ispras.ru
<pre>
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: ADD in '(ADD (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft<63..0>)'
Warning: missing opcode mapping: ADD in '(ADD (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: ADD in '(ADD (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: ADD in '(ADD (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: DIV in '(DIV fs<31..0> ft<31..0>)'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft)'
Warning: missing opcode mapping: DIV in '(DIV (INT_TO_FLOAT 64 fs) (INT_TO_FLOAT 64 ft))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft<63..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fr<63..0>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>)) (INT_TO_FLOAT 64 fr<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<63..32>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>)) (INT_TO_FLOAT 32 fr<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft<63..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fr<63..0>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>)) (INT_TO_FLOAT 64 fr<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<63..32>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>)) (INT_TO_FLOAT 32 fr<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 64 fs) (INT_TO_FLOAT 64 ft))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft<63..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fr<63..0>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>)) (INT_TO_FLOAT 64 fr<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<63..32>)'
Warning: missing opcode mapping: ADD in '(ADD (MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>)) (INT_TO_FLOAT 32 fr<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft<63..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fr<63..0>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>)) (INT_TO_FLOAT 64 fr<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<31..0>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>)) (INT_TO_FLOAT 32 fr<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: MUL in '(MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fr<63..32>)'
Warning: missing opcode mapping: SUB in '(SUB (MUL (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>)) (INT_TO_FLOAT 32 fr<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 temp)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: DIV in '(DIV (INT_TO_FLOAT 32 temp) (INT_TO_FLOAT 32 fs<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 temp)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: DIV in '(DIV (INT_TO_FLOAT 64 temp) (INT_TO_FLOAT 64 fs<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 temp)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: SQRT in '(SQRT (INT_TO_FLOAT 32 fs<31..0>))'
Warning: missing opcode mapping: DIV in '(DIV (INT_TO_FLOAT 32 temp) (SQRT (INT_TO_FLOAT 32 fs<31..0>)))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 temp)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: SQRT in '(SQRT (INT_TO_FLOAT 64 fs<63..0>))'
Warning: missing opcode mapping: DIV in '(DIV (INT_TO_FLOAT 64 temp) (SQRT (INT_TO_FLOAT 64 fs<63..0>)))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: SQRT in '(SQRT (INT_TO_FLOAT 32 fs<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: SQRT in '(SQRT (INT_TO_FLOAT 64 fs<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: SUB in '(SUB (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 fs<63..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 ft<63..0>)'
Warning: missing opcode mapping: SUB in '(SUB (INT_TO_FLOAT 64 fs<63..0>) (INT_TO_FLOAT 64 ft<63..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<31..0>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<31..0>)'
Warning: missing opcode mapping: SUB in '(SUB (INT_TO_FLOAT 32 fs<31..0>) (INT_TO_FLOAT 32 ft<31..0>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 fs<63..32>)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 ft<63..32>)'
Warning: missing opcode mapping: SUB in '(SUB (INT_TO_FLOAT 32 fs<63..32>) (INT_TO_FLOAT 32 ft<63..32>))'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
Warning: missing opcode mapping: IS_NAN in '(IS_NAN temp_fp_d)'
Warning: missing opcode mapping: IS_NAN in '(IS_NAN temp_fp_d2)'
Warning: missing opcode mapping: IS_SIGN_NAN in '(IS_SIGN_NAN temp_fp_d)'
Warning: missing opcode mapping: IS_SIGN_NAN in '(IS_SIGN_NAN temp_fp_d2)'
Warning: missing opcode mapping: IS_SIGN_NAN in '(IS_SIGN_NAN temp_fp_d)'
Warning: missing opcode mapping: IS_SIGN_NAN in '(IS_SIGN_NAN temp_fp_d2)'
Warning: missing opcode mapping: IS_NAN in '(IS_NAN temp_fp_d)'
Warning: missing opcode mapping: IS_NAN in '(IS_NAN temp_fp_d2)'
Warning: missing opcode mapping: FLOAT_TO_FLOAT in '(FLOAT_TO_FLOAT 64 temp_fp_s)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 tempI)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 64 temp64)'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_s)'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 64 temp_fp_d)'
Warning: missing opcode mapping: FLOAT_TO_FLOAT in '(FLOAT_TO_FLOAT 32 temp_fp_d)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 tempI)'
Warning: missing opcode mapping: INT_TO_FLOAT in '(INT_TO_FLOAT 32 temp64)'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_d)'
Warning: missing opcode mapping: FLOAT_TO_INT in '(FLOAT_TO_INT 32 temp_fp_s)'
</pre>
<p>INT_TO_FLOAT и пр. библиотечные операции, добавленные в проект тут: ru.ispras.microtesk.model.data.floatx<br />Это внутренние операции, у них нет и не должно быть "opcode";</p>
MicroTESK - Bug #10061 (New): Buffers are now shared among all processing elements
https://forge.ispras.ru/issues/10061
2020-01-23T08:22:05Z
Alexander Kamkin
askamkin@gmail.com
<ol>
<li>By default, each buffer (unless it is memory mapped) is local.</li>
<li>To make a buffer global, one should write <code>shared</code> before the buffer declaration.</li>
<li>The memory plugin is not responsible for resetting memory- and register-mapped buffers.</li>
</ol>
<p>Classes to be modified: <code>Model</code>, <code>ProcessingElement</code>, <code>MmuPlugin</code>, etc.</p>
MicroTESK - Bug #10011 (New): Необходима возможность преобразования конструкции if-then-else в mi...
https://forge.ispras.ru/issues/10011
2019-12-24T17:00:39Z
Alexander Protsenko
protsenko@ispras.ru
<p>Пример:<br /><pre>
inline calls
PASS: inline 'general_rev_op_32.action'
PASS: inline call 'REG_32.read'
PASS: inline call 'general_rev.action'
********************************************************************************
ATTENTION! An unexpected error has occurred:
java.lang.IllegalArgumentException: Bit vector sizes do not match: 1 != 6.
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
java.lang.IllegalArgumentException: Bit vector sizes do not match: 1 != 6.
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.checkEqualSize(BitVectorMath.java:926)
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.transform(BitVectorMath.java:902)
at ru.ispras.fortress.data.types.bitvector.BitVectorMath.add(BitVectorMath.java:682)
at ru.ispras.microtesk.translator.mir.BvOpcode$1.evalBitVector(Instruction.java:412)
at ru.ispras.microtesk.translator.mir.BvOpcode.evalConst(Instruction.java:512)
at ru.ispras.microtesk.translator.mir.EvalContext.visit(EvalContext.java:74)
at ru.ispras.microtesk.translator.mir.Instruction$Assignment.accept(Instruction.java:30)
at ru.ispras.microtesk.translator.mir.EvalContext.eval(EvalContext.java:59)
at ru.ispras.microtesk.translator.mir.InlinePass.apply(InlinePass.java:28)
at ru.ispras.microtesk.translator.mir.MirPassDriver.apply(MirPassDriver.java:46)
at ru.ispras.microtesk.translator.mir.MirPassDriver.run(MirPassDriver.java:56)
at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:72)
at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:30)
at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84)
at ru.ispras.microtesk.translator.nml.NmlTranslator.start(NmlTranslator.java:133)
at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:168)
at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:141)
at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:79)
</pre><br /><pre>
var V_var[card(6)]
internal op general_rev (x: DWORD, rev_op: card(2), size: BIT)
action = {
if rev_op == RevOp_REV16 then V_var = 0b001000;
elif rev_op == RevOp_REV32 then V_var = 0b011000;
elif rev_op == RevOp_REV64 then V_var = 0b111000;
elif rev_op == RevOp_RBIT then
---> V_var = if size == 0 then coerce(card(6), 0b111111) else coerce(card(6), 0b011111) endif;
endif;
</pre></p>
MicroTESK - Task #9720 (New): Определение влияния параметров на инструкцию
https://forge.ispras.ru/issues/9720
2019-06-25T13:00:35Z
Alexander Protsenko
protsenko@ispras.ru
<p>Для автогенерации тестов фрагмент подготовленного шаблона на данный момент выглядит следующим образом (представлены несколько фрагментов):</p>
<pre>
la x(5), :data
ld x(_), x(5), 0
la x(5), :data
sd x(5), x(5), 0
</pre><br />Проблема: точно не известно, какой из параметров является адресом чтения/записи для инструкций.
<pre>
beq x(_), x(_), :beq_label
nop
label :beq_label
nop
</pre><br />Проблема: отсутствует знание об взаимодействии параметров и влияния на переход.
MicroTESK - Developer Request #9472 (Open): Неочевидные преобразования типов при вычислении выраж...
https://forge.ispras.ru/issues/9472
2019-02-05T09:25:55Z
Alexander Protsenko
protsenko@ispras.ru
<pre>
trace("store_global: MEM_WORD 1");
tmp_qword = MEM[mem_index + 1]::MEM[mem_index];
trace("store_global: MEM_WORD 2 tmp_bit_offset = 0x%x", tmp_bit_offset);
tmp_qword<tmp_bit_offset + 31..0+tmp_bit_offset> = rs2_op<31..0>;
trace("store_global: MEM_WORD 3");
MEM[mem_index + 1]::MEM[mem_index] = tmp_qword;
trace("store_global: MEM_WORD 4");
</pre>
<pre>
Mmu.PreTranslateAddress: satp.mode=0. No translation or protection.
PreTranslateAddress
PreTranslateAddress: read 2
PreTranslateAddress: read 3
store_global: MEM_WORD 2 tmp_bit_offset = 0x28
********************************************************************************
ATTENTION! An unexpected error has occurred:
java.lang.IllegalArgumentException: Assigning 32-bit data to 34-bit location is not allowed.
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
java.lang.IllegalArgumentException: Assigning 32-bit data to 34-bit location is not allowed.
at ru.ispras.microtesk.model.memory.Location.store(ru/ispras/microtesk/model/memory/Location.java:131)
at ru.ispras.microtesk.model.riscv.op.store_global.action(ru/ispras/microtesk/model/riscv/op/store_global.java:99)
at ru.ispras.microtesk.model.IsaPrimitive.execute(ru/ispras/microtesk/model/IsaPrimitive.java:183)
at ru.ispras.microtesk.model.riscv.op.store_rvi.action(ru/ispras/microtesk/model/riscv/op/store_rvi.java:74)
at ru.ispras.microtesk.model.IsaPrimitive.execute(ru/ispras/microtesk/model/IsaPrimitive.java:183)
at ru.ispras.microtesk.model.riscv.op.sw.action(ru/ispras/microtesk/model/riscv/op/sw.java:118)
at ru.ispras.microtesk.model.IsaPrimitive.execute(ru/ispras/microtesk/model/IsaPrimitive.java:183)
at ru.ispras.microtesk.model.riscv.op.instruction.action(ru/ispras/microtesk/model/riscv/op/instruction.java:77)
at ru.ispras.microtesk.model.IsaPrimitive.execute(ru/ispras/microtesk/model/IsaPrimitive.java:183)
at ru.ispras.microtesk.model.InstructionCall.execute(ru/ispras/microtesk/model/InstructionCall.java:68)
at ru.ispras.microtesk.test.template.ConcreteCall.execute(ru/ispras/microtesk/test/template/ConcreteCall.java:155)
at ru.ispras.microtesk.test.Executor.executeCall(ru/ispras/microtesk/test/Executor.java:455)
at ru.ispras.microtesk.test.Executor.executeToBreak(ru/ispras/microtesk/test/Executor.java:348)
at ru.ispras.microtesk.test.Executor.execute(ru/ispras/microtesk/test/Executor.java:276)
at ru.ispras.microtesk.test.TemplateProcessor.runExecution(ru/ispras/microtesk/test/TemplateProcessor.java:707)
at ru.ispras.microtesk.test.TemplateProcessor.runExecutionFromStart(ru/ispras/microtesk/test/TemplateProcessor.java:723)
at ru.ispras.microtesk.test.TemplateProcessor.finish(ru/ispras/microtesk/test/TemplateProcessor.java:193)
at ru.ispras.microtesk.test.template.Template.endMainSection(ru/ispras/microtesk/test/template/Template.java:213)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at RUBY.generate(C:/!microtesk/MicroTESK-RISC-V/microtesk-riscv/microtesk-riscv/build/target/lib/ruby/template.rb:1066)
at RUBY.main(C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\build\target\lib\ruby\microtesk.rb:33)
at org.jruby.RubyHash.each(org/jruby/RubyHash.java:1342)
at RUBY.main(C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\build\target\lib\ruby\microtesk.rb:29)
at RUBY.(root)(C:\!microtesk\MicroTESK-RISC-V\microtesk-riscv\microtesk-riscv\build\target\lib\ruby\microtesk.rb:52)
at ru.ispras.microtesk.RubyRunner.run(ru/ispras/microtesk/RubyRunner.java:62)
at ru.ispras.microtesk.ScriptRunner.run(ru/ispras/microtesk/ScriptRunner.java:43)
at ru.ispras.microtesk.test.TestEngine.generate(ru/ispras/microtesk/test/TestEngine.java:172)
at ru.ispras.microtesk.MicroTESK.generate(ru/ispras/microtesk/MicroTESK.java:284)
at ru.ispras.microtesk.MicroTESK.runTask(ru/ispras/microtesk/MicroTESK.java:131)
at ru.ispras.microtesk.MicroTESK.main(ru/ispras/microtesk/MicroTESK.java:79)
********************************************************************************
</pre>
<p>Возможно стоит выводить больше информации, например имена переменных.</p>
MicroTESK - Bug #8696 (New): Parsing an mmu-file with empty read and write definitions causes Ill...
https://forge.ispras.ru/issues/8696
2018-01-30T13:22:00Z
Alexander Kamkin
askamkin@gmail.com
<pre>
java.lang.IllegalArgumentException: Failed to determine target buffer for attribute: read
at ru.ispras.fortress.util.InvariantChecks.checkTrue(InvariantChecks.java:53)
at ru.ispras.fortress.util.InvariantChecks.checkNotNull(InvariantChecks.java:109)
at ru.ispras.microtesk.mmu.translator.generation.spec.MemoryControlFlowExplorer.<init>(MemoryControlFlowExplorer.java:49)
at ru.ispras.microtesk.mmu.translator.generation.sim.SimGenerator.processIr(SimGenerator.java:60)
at ru.ispras.microtesk.mmu.translator.generation.sim.SimGenerator.processIr(SimGenerator.java:36)
at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84)
at ru.ispras.microtesk.mmu.translator.MmuTranslator.start(MmuTranslator.java:136)
at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:162)
at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:135)
at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:73)
</pre>
MicroTESK - Task #8186 (New): Full support for 'struct' in nml
https://forge.ispras.ru/issues/8186
2017-05-02T13:23:52Z
Alexander Protsenko
protsenko@ispras.ru
<pre>
struct mod_STR (
r: card(3),
e: card(3),
m: card(2)
)
var mod[mod_STR]
op mov_1(r: R4, r2: R4)
init = {
...
mod = 0;
mod.m = 0b00;
...
}
image = format("%8s", mod)
op mov_2(r: R4, r2: R4)
init = {
...
mod = 0;
mod.m = 0b11;
...
}
image = format("%8s", mod)
</pre>
<p>Result:<br /><pre>
Warning: Group MovOp contains two items mov_1 and mov_2 with the same opcode 00000000
</pre></p>
<p>But:<br />mov_1 -> mod.m = 0b00;<br />mov_2 -> mod.m = 0b11;</p>
MicroTESK - Bug #7401 (New): int_to_float is not supported for constant expressions
https://forge.ispras.ru/issues/7401
2016-07-14T10:20:38Z
Alexander Protsenko
protsenko@ispras.ru
<p>Error:<br /><pre>
641:18 ERROR (SEMANTIC): "int_to_float is not supported for constant expressions."
641:18 ERROR (SEMANTIC): "Failed to recognize the grammar structure. It will be ignored: 'int_to_float(FLOAT32,coerce(WORD,1))'."
</pre></p>
<p>Code:<br /><pre>
temp_fp_s = int_to_float(FLOAT32, coerce(WORD, 1));
</pre></p>
MicroTESK - Task #6065 (New): Handling marks with exported symbols in the coverage extractor
https://forge.ispras.ru/issues/6065
2015-06-19T03:54:09Z
Alexander Kamkin
askamkin@gmail.com
<ol>
<li>External variables should be stored in the internal representation.</li>
<li>There should be a possibility to write constrains over external variables.</li>
</ol>
MicroTESK - Task #6064 (New): Translator support for exporting symbols in marks
https://forge.ispras.ru/issues/6064
2015-06-19T03:51:36Z
Alexander Kamkin
askamkin@gmail.com
<p>The syntax is as follows:</p>
<pre>
mark("MarkIdentifier" {, name=expr}*)
</pre>
TestBase - Task #5725 (New): Meta-information provider required
https://forge.ispras.ru/issues/5725
2015-03-20T03:58:07Z
Alexander Kamkin
askamkin@gmail.com
<p>TestBase should provide information on available test data constraints and generators.</p>
Fortress - Task #5211 (Open): Unit-тесты для трансформеров и калькулятора
https://forge.ispras.ru/issues/5211
2014-08-21T06:38:22Z
Alexander Kamkin
askamkin@gmail.com
<ol>
<li>Необходима база (массив, список) разнообразных выражений (разные константы, разные операции, связывание переменных и т.п.).</li>
<li>Необходимы тесты для всех трансформаторов (хотя бы проверка типа падает/не падает).</li>
</ol>
Fortress - Task #4523 (New): Implementing a solver for simple constraints
https://forge.ispras.ru/issues/4523
2013-10-03T04:32:56Z
Alexander Kamkin
askamkin@gmail.com
<p>Цель - генерация рандомизированных данных, удовлетворяющих несложным ограничениям (constrained random generation).</p>
<ol>
<li>Определить и описать в Wiki класс рассматриваемых ограничений.</li>
<li>Реализовать солвер (постараться добиться равномерного распределение данных, удовлетворяющих ограничениям).</li>
<li>Протестировать солвер (не берется за сложные ограничения, решает простые ограничения, решает их правильно, распределение данных близко к равномерному).</li>
</ol>