Open-Source Projects: Issues
https://forge.ispras.ru/
https://forge.ispras.ru/favicon.ico?1649012669
2023-03-06T15:03:36Z
Open-Source Projects
Redmine
MicroTESK - Bug #12223 (New): Конфликт инструкций с разными модификаторами (op, internal op) и с ...
https://forge.ispras.ru/issues/12223
2023-03-06T15:03:36Z
Alexander Protsenko
protsenko@ispras.ru
<p>Пример:<br /><pre>
op ands_bitmask (rd: REG, rn: REG, N: BIT, imms: card(6), immr: card(6))
internal op ands_bitmask_32n (rd: REG_32, rn: REG_32, N: BIT, imms: card(6), immr: card(6))
init = {}
syntax = format("ands %s, %s, %s", rd.syntax, rn.syntax, lsx(sf_53, wmask).syntax)
image = format("%22s%5s%5s", lix(sf_53, N, imms, immr, opc_53).image, rn.image, rd.image)
action = {}
</pre><br />Спецификация собирается, но инструкция ands_bitmask не доступна в шаблонах.</p>
MicroTESK - Bug #11695 (New): error: cannot find symbol (зависимость mode от op)
https://forge.ispras.ru/issues/11695
2022-06-28T10:27:08Z
Alexander Protsenko
protsenko@ispras.ru
<p>Описание ошибки:<br /><pre>
internal op imm4_syntax_i32(imm: imm4)
init = {}
syntax = format("0x%x", sign_extend(i32, imm))
mode BRANCH_IMM4(imm: int(4)) = imm
init = {
jump_imm4 = imm;
}
syntax = format("%s", imm4_syntax_i32(imm).syntax)
image = format("%s", imm)
</pre></p>
<p>Ошибка:<br /><pre>
mode\BRANCH_IMM4.java:72: error: cannot find symbol
return String.format("%s", new imm4_syntax_i32(imm).text(vars__));
^
symbol: class imm4_syntax_i32
location: class BRANCH_IMM4
</pre></p>
<p>В BRANCH_IMM4.java отсутствует импорт imm4_syntax_i32.</p>
MicroTESK - Bug #11654 (New): Или правило для регистров может вызывать ошибку "error: incompatibl...
https://forge.ispras.ru/issues/11654
2022-06-14T14:03:59Z
Alexander Protsenko
protsenko@ispras.ru
<p>Ниже приведен код для модели minimips для воссоздания ошибки:<br />Регистр:<br /><pre>
mode REG (i: INDEX) = GPR[i]
init = { tmp = i; }
// This is just to demonstrate the decode attribute
decode = { i = tmp; }
syntax = format("$%d", tmp)
image = format("%s", tmp)
mode REG_SHIFT (i: INDEX, shift: BIT) = GPR[i]
init = { tmp = i; }
// This is just to demonstrate the decode attribute
decode = { i = tmp; }
syntax = format("%s", if shift == 0
then "shift0"
else "shift1" endif)
image = format("%s", tmp)
mode REGA = REG_SHIFT | REG
</pre></p>
<p>Инструкция:<br /><pre>
internal op op_rega_rega_rega(rd: REGA, rs: REGA, rt: REGA)
image = format("%s%s%s", rs.image, rt.image, rd.image)
op addB (rd: REG, rs: REGA, rt: REGA)
syntax = format("add %s, %s, %s", rd.syntax, rs.syntax, rt.syntax)
image = format("000000%s00000100000", op_rega_rega_rega(rd, rs, rt).image)
action = {
temp = rs<31>::rs + rt<31>::rt;
if temp<32> != temp<31> then
mark("overflow");
COP0_R[14] = CIA;
exception("IntegerOverflow");
else
mark("normal");
rd = temp<31..0>;
endif;
}
</pre></p>
<p>Ошибка:<br /><pre>
D:\WorkProjects\MicroTESK\microtesk\build\generated-src\models\src\java\ru\ispras\microtesk\model\minimips\decoder\DecoderAddB.java:75: error: incompatible types: IsaPrimitive cannot be converted to REG
rd = op_rega_rega_rega_instance.rd;
</pre></p>
MicroTESK - Bug #10832 (New): Parser allows bit vector extraction of array types
https://forge.ispras.ru/issues/10832
2021-05-06T19:07:40Z
Alexander Protsenko
protsenko@ispras.ru
<p>Ошибка:<br /><pre>
Translating to MIR...
********************************************************************************
ATTENTION! An unexpected error has occurred:
java.lang.UnsupportedOperationException: null
The program will be terminated. Please contact us at:
microtesk-support@ispras.ru
We are sorry for the inconvenience.
Exception stack:
java.lang.UnsupportedOperationException
at ru.ispras.microtesk.translator.mir.MirArray.getSize(MirTy.java:213)
at ru.ispras.microtesk.translator.mir.NmlIrTrans$WriteAccess.shiftLeft(NmlIrTrans.java:902)
at ru.ispras.microtesk.translator.mir.NmlIrTrans$WriteAccess.write(NmlIrTrans.java:887)
at ru.ispras.microtesk.translator.mir.NmlIrTrans$WriteAccess.accessMemory(NmlIrTrans.java:873)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translateAccess(NmlIrTrans.java:696)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translateWrite(NmlIrTrans.java:666)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translateAssignment(NmlIrTrans.java:321)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:314)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:194)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:117)
at ru.ispras.microtesk.translator.mir.NmlIrTrans.translate(NmlIrTrans.java:74)
at ru.ispras.microtesk.translator.mir.MirTransHandler.translateIr(MirTransHandler.java:106)
at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:69)
at ru.ispras.microtesk.translator.mir.MirTransHandler.processIr(MirTransHandler.java:52)
at ru.ispras.microtesk.translator.Translator.processIr(Translator.java:84)
at ru.ispras.microtesk.translator.nml.NmlTranslator.start(NmlTranslator.java:131)
at ru.ispras.microtesk.translator.Translator.translate(Translator.java:201)
at ru.ispras.microtesk.MicroTESK.translate(MicroTESK.java:150)
at ru.ispras.microtesk.MicroTESK.runTask(MicroTESK.java:142)
at ru.ispras.microtesk.MicroTESK.main(MicroTESK.java:80)
********************************************************************************
</pre></p>
<p>Ошибка возникает на спецификации ВМ от 2021.05.06.</p>
MicroTESK - Bug #10566 (New): Отсутствует поддержка тернарного оператора в mir
https://forge.ispras.ru/issues/10566
2020-11-10T09:06:12Z
Pavel Putro
pavel.putro@ispras.ru
<p>Наличие тернарного оператора в NML модели приводит к падению при выполнении команды symexecute.</p>
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 - 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 - Feature #8587 (New): ISA subsets
https://forge.ispras.ru/issues/8587
2017-11-22T10:08:29Z
Sergey Smolov
smolov@ispras.ru
<p>Several ISA have subsets for instructions. Each subset is marked by the string name.</p>
<p>For example, in RISC-V architecture they are the following: A (atomic memory operation instructions), M (multiply\divide instructions), F (floating-point instructions), etc.</p>
<p>The ISA subset name can be associated with instruction somehow and can be printed in MicroTESK trace when the instruction is simulated.<br />The MicroTESK trace format even has the appropriate field for this information.</p>
MicroTESK - Bug #8060 (New): Attributes image and syntax and static instances
https://forge.ispras.ru/issues/8060
2017-04-13T10:48:57Z
Andrei Tatarnikov
andrewt@ispras.ru
<p>The following construct is illegal:<br /><pre>image = slt(rd, X(0), rs).image</pre><br />nML translator forces to write it like this:<br /><pre>image = format("%s", slt(rd, X(0), rs).image)</pre><br />This is inconvenient and redundant.</p>
<p>Constructs like in the first example must be supported.</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 - Bug #6380 (New): Possibility to specify initial values for registers
https://forge.ispras.ru/issues/6380
2015-10-29T12:24:31Z
Andrei Tatarnikov
andrewt@ispras.ru
<p>Possibility to specify initial values for registers must be provided in nML:</p>
<pre>reg R[1, card(32)] initial = 100</pre>
Fortress - Feature #5451 (New): Support external rules in TransformerRule interface
https://forge.ispras.ru/issues/5451
2014-11-26T12:58:41Z
Artem 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>