Sure.
By bytes:
$ ./run.sh -O3 3
thumb2 66 160
i386 65 171
x64 66 215
arm 56 224
thumb 112 224
aarch64 65 260
powerpc 66 264
By instructions:
$ ./run.sh -O3 2
arm 56 224
aarch64 65 260
i386 65 171
powerpc 66 264
thumb2 66 160
x64 66 215
thumb 112 224
In the interests of duplication, my script:
#!/bin/bash
opt=$1
sort=${2:-2}
(for x in powerpc aarch64 arm thumb2 thumb i386 x64;do
thumb=;flags=;isa=$x
case $x in i386|x64) isa=x86;; thumb*) isa=arm; thumb="-mthumb";; esac
case $x in i386) flags="-march=i386 -m32";; arm) v=5;; thumb) v=6;; thumb2) v=7;; esac
case $isa in arm) abi=eabi; flags="-march=armv$v";; esac
case $isa in x86) tc=;; *) tc=${isa}-linux-gnu${abi}-;; esac
echo -n "$x "
${tc}gcc $flags $opt $thumb -c parseval.c -o parseval.o || exit 1
${tc}objdump -d parseval.o | tee parseval.s.$x | perl -ne \
'/^ +([0-9a-f]+):\t([ 0-9a-f]+)/ and ($ins,$adr,$code)=($ins+1,$1,$2);
END{$code=~s/ //g;print $ins," ",hex($adr)+length($code)/2,"\n"}'
done) | sort -n -k$sort
And the PowerPC -O3 code:
00000000 <parseval>:
0: 94 21 ff f0 stwu r1,-16(r1)
4: 39 60 00 01 li r11,1
8: 89 23 00 00 lbz r9,0(r3)
c: 2b 89 00 2d cmplwi cr7,r9,45
10: 41 9e 00 e0 beq cr7,f0 <parseval+0xf0>
14: 2b 89 00 30 cmplwi cr7,r9,48
18: 41 9e 00 78 beq cr7,90 <parseval+0x90>
1c: 39 49 ff d0 addi r10,r9,-48
20: 55 48 06 3e clrlwi r8,r10,24
24: 2b 88 00 09 cmplwi cr7,r8,9
28: 41 9d 00 d8 bgt cr7,100 <parseval+0x100>
2c: 7c 67 1b 78 mr r7,r3
30: 39 00 00 00 li r8,0
34: 60 00 00 00 nop
38: 60 00 00 00 nop
3c: 60 00 00 00 nop
40: 8d 27 00 01 lbzu r9,1(r7)
44: 1d 08 00 0a mulli r8,r8,10
48: 7d 08 52 14 add r8,r8,r10
4c: 39 49 ff d0 addi r10,r9,-48
50: 55 46 06 3e clrlwi r6,r10,24
54: 2b 86 00 09 cmplwi cr7,r6,9
58: 40 9d ff e8 ble cr7,40 <parseval+0x40>
5c: 2b 89 00 4b cmplwi cr7,r9,75
60: 41 9e 00 20 beq cr7,80 <parseval+0x80>
64: 2b 89 00 4d cmplwi cr7,r9,77
68: 40 9e 00 08 bne cr7,70 <parseval+0x70>
6c: 55 08 a0 16 rlwinm r8,r8,20,0,11
70: 7c 68 59 d6 mullw r3,r8,r11
74: 38 21 00 10 addi r1,r1,16
78: 4e 80 00 20 blr
7c: 60 00 00 00 nop
80: 55 08 50 2a rlwinm r8,r8,10,0,21
84: 7c 68 59 d6 mullw r3,r8,r11
88: 38 21 00 10 addi r1,r1,16
8c: 4e 80 00 20 blr
90: 89 23 00 01 lbz r9,1(r3)
94: 39 40 00 00 li r10,0
98: 38 e3 00 01 addi r7,r3,1
9c: 39 00 00 00 li r8,0
a0: 2f 89 00 78 cmpwi cr7,r9,120
a4: 40 9e ff 88 bne cr7,2c <parseval+0x2c>
a8: 60 00 00 00 nop
ac: 60 00 00 00 nop
b0: 8d 27 00 01 lbzu r9,1(r7)
b4: 55 04 20 36 rlwinm r4,r8,4,0,27
b8: 39 49 ff d0 addi r10,r9,-48
bc: 38 c9 ff 9f addi r6,r9,-97
c0: 55 45 06 3e clrlwi r5,r10,24
c4: 2f 8a 00 09 cmpwi cr7,r10,9
c8: 28 85 00 09 cmplwi cr1,r5,9
cc: 2b 06 00 05 cmplwi cr6,r6,5
d0: 40 85 00 08 ble cr1,d8 <parseval+0xd8>
d4: 41 99 ff 88 bgt cr6,5c <parseval+0x5c>
d8: 40 9d 00 08 ble cr7,e0 <parseval+0xe0>
dc: 39 49 ff a9 addi r10,r9,-87
e0: 7d 04 52 14 add r8,r4,r10
e4: 4b ff ff cc b b0 <parseval+0xb0>
e8: 60 00 00 00 nop
ec: 60 00 00 00 nop
f0: 89 23 00 01 lbz r9,1(r3)
f4: 39 60 ff ff li r11,-1
f8: 38 63 00 01 addi r3,r3,1
fc: 4b ff ff 18 b 14 <parseval+0x14>
100: 39 00 00 00 li r8,0
104: 4b ff ff 58 b 5c <parseval+0x5c>