TODO Erick: - Instructions shift - Compiler getPropVal, putPropVal, voir si instructions manquantes - Optimizer les jumps pour destination immédiatement après - Conditional move au lieu de jump - Tester 0 dans le if (test reg,reg) - FP instructions - Nombre d'arguments dans reg context
TODO Maxime: - Inlining de lt dans fib, wtf! - hasPropVal should return unboxed bool - getGlobal - check if present - throws exception - getGlobalFunc - check if present - can check is function - throw exceptions - Look at fib IR in detail
Afficher les réponses par date
Je viens d'introduire le type bool dans l'IR, de changer les primitives de comparaison pour utiliser le conditional move et d'ajouter quelques instructions manquantes au translator du backend. J'ai aussi fait un listing des instructions manquantes pour getPropVal/putPropVal/newObject. Il n'y en a pas beaucoup:
lsft rsft not mul div mod load_* store_*
Je ne peux pas implanter les 6 premières tout de suite parce que les instructions x86 correspondantes ne sont pas encore supportées par le back-end. Il manque aussi l'instruction x86 test pour le if statement. Elle ne supporte pas deux registres commes arguments pour l'instant. Si Erick peut implanter les instructions x86 manquantes d'ici la semaine prochaine, ou me montrer comment le faire moi-même, on devrait être en mesure de compiler toutes nos primitives bientôt.
- 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
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
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