[Mono-devel-list] poor PPC JIT output

Allan Hsu allan at counterpop.net
Thu Jul 14 22:02:28 EDT 2005

Code generated by the PPC code emitter performs very poorly in  
comparison to the same code emitted for other platforms (most  
notably, x86). I had a brief conversation about this with Miguel in  
#mono today and he suggested that I post some examples.

Preliminary profiling with Shark (a profiling tool that is part of  
the Apple CHUD tools) shows some heinously inefficient JIT output on  
both G4 and G5 machines. Here's some sample Shark analysis on the  
code emitted by mono from  
System.Security.Cryptography.RijndaelTransform.ECB(byte[], byte[])  
and System.Security.Cryptography.RijndaelTransform.ShiftRow(bool):


Information on how to read Shark analysis comes with Shark (available  
for free from the Apple Developer Connection website). (A summary:  
numerous and frequent pipeline stalls, unoptimized loops).

Is there any active effort to optimize the PPC code emitter? The  
above two methods account for the majority of CPU time on a pegged  
2Ghz G5 while decrypting AES blocks coming off the wire. The x86  
machine encrypting the data (also running mono) doesn't even break a  

Allan Hsu <allan at counterpop dot net>
1E64 E20F 34D9 CBA7 1300  1457 AC37 CBBB 0E92 C779

More information about the Mono-devel-list mailing list