Wuerfel_21 hat geschrieben: ↑Mo 19. Okt 2020, 08:28
Wär mir jetzt nicht bekannt. Für die ALU-Instruktionen könnte man die Tabellen aus dem Propeller Manual durchtesten, da sind meistens all die komischen Fälle drin.
Hm, ich dachte da eher an zusammenhängenden Code, der nicht nur die ALU sondern auch die ganze interne Statemachine und Counter/Video/Hub testet.
Zumindest habe ich jetzt mal mit dem JIT angefangen. Als ersten Test habe ich mal nur die quasi statischen Register (VCFG,CTRA/CTRB, COG_RUNNING) dynamisch heraus optimieren lassen. Da ich das gcc Backend (libgccjit) zur Assemblercodegenerierung nutze, dauert so ein Aufruf leider schon ca. 100msec, dafür scheint der Code sehr gut optimiert zu werden.
Sobald der Init Code der Matrix Demo abgeschlossen ist, läuft sie mit 2,7 MHz statt 1,7 MHz vorher ohne JIT, scheint also schon etwas zu bringen.
Als nächstes möchte ich dann häufiger ausgeführte COG Speicherstellen, bei denen sich die Instruktion über einige Zyklen nicht geändert hat, individuell auf die jeweilige Instruktion hin optimieren lassen. Hier verspreche ich mir einen höheren Geschwindigkeitszuwachs.