The listing below shows an spu-timing static timing analysis for the inner loop of the SPE code.
.L19: 0D 78 a $49,$8,$10 1D 012 789 lqx $51,$6,$9 0D 89 ila $47,66051 1D 0123 89 lqx $52,$6,$11 0 0 9 ai $7,$7,-1 0 ----456789 fma $50,$51,$12,$52 1 -----012345 stqx $50,$6,$11 1 123456 lqx $48,$8,$10 0D 23 ai $8,$8,4 1D 234567 lqa $44,ctx+16 1 345678 lqx $43,$6,$9 1 ---7890 rotqby $46,$48,$49 1 ---1234 shufb $45,$46,$46,$47 0 ---567890 fm $42,$12,$45 0d -----123456 fma $41,$42,$44,$43 1d ------789012 stqx $41,$6,$9 0D 89 ai $6,$6,16 .L39: 1D 8901 brnz $7,.L19
Static-analysis timing files can be quickly interpreted by:
This information can be used to understand what areas of code are scheduled well and which are poorly scheduled.
About SPU_TIMING:
SPU_TIMING=1 make foo.s
This creates the timing file for file foo.c . It sets the SPU_TIMING variable only in the sub-shell of the makefile. It generates foo.s and then invokes spu-timing on foo.s to produce a foo.s.timing file.
SPU_TIMING=1 make foo.s