Starting from here:
imcc -P mops.pbc 87 MOps
parrot -P mops.pbc 92 MOps
I tracked this down to an alignment issue of the prederefed code pointer.
So here is a memalign test. It needs possibly more work for other C
librarys, which have a different name for this function.
$ imcc -P mops.pasm
92.162503 M op/s
And finally:
$ imcc -P -O1 -d60 mops.pasm
opt1 sub I4, I4, I3 => sub I4, I3
98.110492 M op/s
leo