I could find some useful information using the debugger but did not have time to nail the primary cause.
I did find that the interval construction for t_53 in fib is producing an incorrect result. For some context, I am talking about the statement:
26: box $t_53 = phi [false cond_false], [true log_and_sec]
The interval constructed comprises the ranges [2,16[ and [26,30[ although only the second one should be present. I guess an error during the interval construction is made by the function 'allocator.liveIntervals' in codegen/linearscan.js. It causes the register allocation to wrongly consider an interval that should not be live at this point, forcing the allocator to use another register than 'EAX' as should be the case.
I hope it helps.
Erick
Le 10-10-06 20:35 , chevalma@iro.umontreal.ca a écrit :
Good work. I tentatively implemented the corresponding primitives I could add without imul. I did run into some kind of error, however. When I uncomment the implementation of the "lt" primitive that uses boxIsInt (see runtime/primitives.js, lines 346-356), I seem to get a register allocation error:
fib.main FAILED with exception: ir_arg: dest register 'EBX' unexpected for argument index '2'
- Maxime
I've added support for
sal, sar, shl, shr, rol, ror, mul, div, idiv, not
I've noticed the signed multiply instruction has some peculiarities but didn't have time to implement it. It will be for next week.
Erick
Le 10-10-06 16:37 , chevalma@iro.umontreal.ca a écrit :
lsft rsft not mul div mod
Tachyon-list mailing list Tachyon-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/tachyon-list
Tachyon-list mailing list Tachyon-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/tachyon-list