annotate gcc/config/i386/gcc-auto-profile @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 #!/bin/sh
kono
parents:
diff changeset
2 # profile workload for gcc profile feedback (autofdo) using Linux perf
kono
parents:
diff changeset
3 # auto generated. to regenerate for new CPUs run
kono
parents:
diff changeset
4 # contrib/gen_autofdo_event.py --shell --all in gcc source
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 # usages:
kono
parents:
diff changeset
7 # gcc-auto-profile program (profile program and children)
kono
parents:
diff changeset
8 # gcc-auto-profile -a sleep X (profile all for X secs, may need root)
kono
parents:
diff changeset
9 # gcc-auto-profile -p PID sleep X (profile PID)
kono
parents:
diff changeset
10 # gcc-auto-profile --kernel -a sleep X (profile kernel)
kono
parents:
diff changeset
11 # gcc-auto-profile --all -a sleep X (profile kernel and user space)
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 # identify branches taken event for CPU
kono
parents:
diff changeset
14 #
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 FLAGS=u
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 if [ "$1" = "--kernel" ] ; then
kono
parents:
diff changeset
19 FLAGS=k
kono
parents:
diff changeset
20 shift
kono
parents:
diff changeset
21 fi
kono
parents:
diff changeset
22 if [ "$1" = "--all" ] ; then
kono
parents:
diff changeset
23 FLAGS=uk
kono
parents:
diff changeset
24 shift
kono
parents:
diff changeset
25 fi
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 if ! grep -q Intel /proc/cpuinfo ; then
kono
parents:
diff changeset
28 echo >&2 "Only Intel CPUs supported"
kono
parents:
diff changeset
29 exit 1
kono
parents:
diff changeset
30 fi
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 if grep -q hypervisor /proc/cpuinfo ; then
kono
parents:
diff changeset
33 echo >&2 "Warning: branch profiling may not be functional in VMs"
kono
parents:
diff changeset
34 fi
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 case `egrep -q "^cpu family\s*: 6" /proc/cpuinfo &&
kono
parents:
diff changeset
37 egrep "^model\s*:" /proc/cpuinfo | head -n1` in
kono
parents:
diff changeset
38 model*:\ 55|\
kono
parents:
diff changeset
39 model*:\ 77|\
kono
parents:
diff changeset
40 model*:\ 76) E="cpu/event=0xC4,umask=0xFE/p$FLAGS" ;;
kono
parents:
diff changeset
41 model*:\ 42|\
kono
parents:
diff changeset
42 model*:\ 45|\
kono
parents:
diff changeset
43 model*:\ 58|\
kono
parents:
diff changeset
44 model*:\ 62|\
kono
parents:
diff changeset
45 model*:\ 60|\
kono
parents:
diff changeset
46 model*:\ 69|\
kono
parents:
diff changeset
47 model*:\ 70|\
kono
parents:
diff changeset
48 model*:\ 63|\
kono
parents:
diff changeset
49 model*:\ 61|\
kono
parents:
diff changeset
50 model*:\ 71|\
kono
parents:
diff changeset
51 model*:\ 86|\
kono
parents:
diff changeset
52 model*:\ 78|\
kono
parents:
diff changeset
53 model*:\ 94) E="cpu/event=0xC4,umask=0x20/p$FLAGS" ;;
kono
parents:
diff changeset
54 model*:\ 46|\
kono
parents:
diff changeset
55 model*:\ 30|\
kono
parents:
diff changeset
56 model*:\ 31|\
kono
parents:
diff changeset
57 model*:\ 26|\
kono
parents:
diff changeset
58 model*:\ 47|\
kono
parents:
diff changeset
59 model*:\ 37|\
kono
parents:
diff changeset
60 model*:\ 44) E="cpu/event=0x88,umask=0x40/p$FLAGS" ;;
kono
parents:
diff changeset
61 model*:\ 28|\
kono
parents:
diff changeset
62 model*:\ 38|\
kono
parents:
diff changeset
63 model*:\ 39|\
kono
parents:
diff changeset
64 model*:\ 54|\
kono
parents:
diff changeset
65 model*:\ 53) E="cpu/event=0x88,umask=0x41/p$FLAGS" ;;
kono
parents:
diff changeset
66 *)
kono
parents:
diff changeset
67 echo >&2 "Unknown CPU. Run contrib/gen_autofdo_event.py --all --script to update script."
kono
parents:
diff changeset
68 exit 1 ;;
kono
parents:
diff changeset
69 esac
kono
parents:
diff changeset
70 exec perf record -e $E -b "$@"