/usr/local/cs/edag01/labs/lab5
export FILE=$1
rm -rf a.out *.vgi *.qt *.dir &&
gcc $FILE.c -fno-tree-vectorize -O3 -mcpu=power8 -fno-inline &&
/opt/at13.0/bin/valgrind/valgrind --tool=itrace --fn-start=main --binary-outfile=$FILE.vgi --num-insns-to-collect=1k ./a.out &&
/opt/at13.0/bin/valgrind/vgi2qt -f $FILE.vgi -o $FILE.qt &&
/opt/ibm/sim_ppc/sim_p8/bin/run_timer $FILE.qt 1000 100 1 $FILE -inf_all -p 1 -b 1 -e 2000
It can be used to compile a C file, making the trace and running the simulator.
main>:
10000420: 02 10 40 3c lis r2,4098
10000424: 00 7f 42 38 addi r2,r2,32512
10000428: 64 00 c0 38 li r6,100
1000042c: 00 00 00 60 nop
10000430: 78 87 e2 38 addi r7,r2,-30856
10000434: 00 00 00 60 nop
10000438: 38 81 02 39 addi r8,r2,-32456
1000043c: 00 00 00 60 nop
10000440: 58 84 42 39 addi r10,r2,-31656
10000444: 00 00 20 39 li r9,0
10000448: a6 03 c9 7c mtctr r6
1000044c: 14 00 00 48 b 10000460
10000450: 00 00 00 60 nop
10000454: 00 00 00 60 nop
10000458: 00 00 00 60 nop
1000045c: 00 00 42 60 ori r2,r2,0
10000460: ae 4c 08 7c lfdx f0,r8,r9
10000464: ae 4c 8a 7d lfdx f12,r10,r9
10000468: 2a 60 00 fc fadd f0,f0,f12
1000046c: ae 4d 07 7c stfdx f0,r7,r9
10000470: 08 00 29 39 addi r9,r9,8
10000474: ec ff 00 42 bdnz 10000460
10000478: 00 00 60 38 li r3,0
1000047c: 20 00 80 4e blr
The loop starts at 10000460 and ends at 10000474 so six instructions per iteration.