This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
How to interpret the automaton output during gcc bootstrap and -mcpu=arm926ej-s or --with-cpu=arm926ejs
- From: Martin MOKREJÅ <mmokrejs at ribosome dot natur dot cuni dot cz>
- To: gcc at gcc dot gnu dot org
- Date: Sat, 15 Dec 2007 11:45:50 +0100
- Subject: How to interpret the automaton output during gcc bootstrap and -mcpu=arm926ej-s or --with-cpu=arm926ejs
Hi,
I am trying to build gcc-4.2.2 for this CPU and am surprised or badly
*interpreting* that `arm1026ejs' code is maybe faster than `arm926ejs'?
I tried to find this in the Documentation and by Google but no luck.
$ cat /proc/cpuinfo
Processor : ARM926EJ-Sid(wb) rev 5 (v5l)
BogoMIPS : 99.73
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
Cache type : write-back
Cache clean : cp15 c7 ops
Cache lockdown : format C
Cache format : Harvard
I size : 32768
I assoc : 4
I line length : 32
I sets : 256
D size : 32768
D assoc : 4
D line length : 32
D sets : 256
Hardware : Oxsemi NAS
Revision : 0000
Serial : 0000000000000000
$ CFLAGS="-mcpu=arm926ejs -msoft-float -fomit-frame-pointer -pipe -O2" \
../configure --with-cpu=arm926ej-s --with-float=soft \
--enable-languages=c,c++,objc --disable-nls --with-newlib
$ make bootstrap-lean
...
build/genautomata ../../gcc/config/arm/arm.md \
insn-conditions.md > tmp-automata.c
Automaton `arm'
444 NDFA states, 1168 NDFA arcs
444 DFA states, 1168 DFA arcs
116 minimal DFA states, 482 minimal DFA arcs
123 all insns 16 insn equivalence classes
0 locked states
468 transition comb vector els, 1856 trans table els: use comb vect
1856 min delay table els, compression factor 1
Automaton `arm926ejs'
17 NDFA states, 47 NDFA arcs
17 DFA states, 47 DFA arcs
11 minimal DFA states, 35 minimal DFA arcs
123 all insns 9 insn equivalence classes
0 locked states
39 transition comb vector els, 99 trans table els: use comb vect
99 min delay table els, compression factor 2
Automaton `arm1020e'
3185 NDFA states, 9075 NDFA arcs
3185 DFA states, 9075 DFA arcs
451 minimal DFA states, 2740 minimal DFA arcs
123 all insns 17 insn equivalence classes
0 locked states
2771 transition comb vector els, 7667 trans table els: use comb vect
7667 min delay table els, compression factor 1
Automaton `arm1026ejs'
10 NDFA states, 27 NDFA arcs
10 DFA states, 27 DFA arcs
6 minimal DFA states, 19 minimal DFA arcs
123 all insns 7 insn equivalence classes
0 locked states
18 transition comb vector els, 42 trans table els: use simple vect
42 min delay table els, compression factor 2
Automaton `arm1136jfs'
19 NDFA states, 53 NDFA arcs
19 DFA states, 53 DFA arcs
9 minimal DFA states, 33 minimal DFA arcs
123 all insns 8 insn equivalence classes
0 locked states
35 transition comb vector els, 72 trans table els: use simple vect
72 min delay table els, compression factor 2
Automaton `armfp'
70 NDFA states, 147 NDFA arcs
70 DFA states, 147 DFA arcs
70 minimal DFA states, 147 minimal DFA arcs
123 all insns 9 insn equivalence classes
0 locked states
150 transition comb vector els, 630 trans table els: use comb vect
630 min delay table els, compression factor 1
Automaton `vfp11'
198 NDFA states, 631 NDFA arcs
198 DFA states, 631 DFA arcs
198 minimal DFA states, 631 minimal DFA arcs
123 all insns 8 insn equivalence classes
0 locked states
749 transition comb vector els, 1584 trans table els: use simple vect
1584 min delay table els, compression factor 1
4331 all allocated states, 9599 all allocated arcs
4316 all allocated alternative states
4230 all transition comb vector els, 11950 all trans table els
11950 all min delay table els
0 all locked states
transformation: 0.010000, building DFA: 5.850000
DFA minimization: 0.830000, making insn equivalence: 0.040000
all automaton generation: 7.650000, output: 1.990000
...
objext='.o' \
LIB1ASMFUNCS='_udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx' \
LIB2FUNCS_ST='_eprintf __gcc_bcmp' \
LIB2FUNCS_EXCLUDE='' \
LIBGCOV='_gcov _gcov_merge_add _gcov_merge_single _gcov_merge_delta _gcov_fork _gcov_execl _gcov_execlp _gcov_execle _gcov_execv _gcov_execvp _gcov_execve _gcov_interval_profiler _gcov_pow2_profiler _gcov_one_value_profiler' \
LIB2ADD='' \
LIB2ADD_ST='' \
LIB2ADDEH='../../gcc/unwind-dw2.c ../../gcc/unwind-dw2-fde-glibc.c ../../gcc/unwind-sjlj.c ../../gcc/gthr-gnat.c ../../gcc/unwind-c.c' \
LIB2ADDEHSTATIC='../../gcc/unwind-dw2.c ../../gcc/unwind-dw2-fde-glibc.c ../../gcc/unwind-sjlj.c ../../gcc/gthr-gnat.c ../../gcc/unwind-c.c' \
LIB2ADDEHSHARED='../../gcc/unwind-dw2.c ../../gcc/unwind-dw2-fde-glibc.c ../../gcc/unwind-sjlj.c ../../gcc/gthr-gnat.c ../../gcc/unwind-c.c' \
LIB2ADDEHDEP='unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c' \
LIB2_SIDITI_CONV_FUNCS='' \
LIBUNWIND='' \
LIBUNWINDDEP='' \
SHLIBUNWIND_LINK='' \
SHLIBUNWIND_INSTALL='' \
FPBIT='' \
FPBIT_FUNCS='_pack_sf _unpack_sf _addsub_sf _mul_sf _div_sf _fpcmp_parts_sf _compare_sf _eq_sf _ne_sf _gt_sf _ge_sf _lt_sf _le_sf _unord_sf _si_to_sf _sf_to_si _negate_sf _make_sf _sf_to_df _sf_to_tf _thenan_sf _sf_to_usi _usi_to_sf' \
LIB2_DIVMOD_FUNCS='_divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4' \
DPBIT='' \
DPBIT_FUNCS='_pack_df _unpack_df _addsub_df _mul_df _div_df _fpcmp_parts_df _compare_df _eq_df _ne_df _gt_df _ge_df _lt_df _le_df _unord_df _si_to_df _df_to_si _negate_df _make_df _df_to_sf _df_to_tf _thenan_df _df_to_usi _usi_to_df' \
TPBIT='' \
TPBIT_FUNCS='_pack_tf _unpack_tf _addsub_tf _mul_tf _div_tf _fpcmp_parts_tf _compare_tf _eq_tf _ne_tf _gt_tf _ge_tf _lt_tf _le_tf _unord_tf _si_to_tf _tf_to_si _negate_tf _make_tf _tf_to_df _tf_to_sf _thenan_tf _tf_to_usi _usi_to_tf' \
DFP_ENABLE='' \
DFP_CFLAGS='' \
D32PBIT='' \
D32PBIT_FUNCS='_addsub_sd _div_sd _mul_sd _plus_sd _minus_sd _eq_sd _ne_sd _lt_sd _gt_sd _le_sd _ge_sd _sd_to_si _sd_to_di _sd_to_usi _sd_to_udi _si_to_sd _di_to_sd _usi_to_sd _udi_to_sd _sd_to_sf _sd_to_df _sd_to_xf _sf_to_sd _df_to_sd _xf_to_sd _sd_to_dd _sd_to_td _unord_sd _conv_sd' \
D64PBIT='' \
D64PBIT_FUNCS='_addsub_dd _div_dd _mul_dd _plus_dd _minus_dd _eq_dd _ne_dd _lt_dd _gt_dd _le_dd _ge_dd _dd_to_si _dd_to_di _dd_to_usi _dd_to_udi _si_to_dd _di_to_dd _usi_to_dd _udi_to_dd _dd_to_sf _dd_to_df _dd_to_xf _sf_to_dd _df_to_dd _xf_to_dd _dd_to_sd _dd_to_td _unord_dd _conv_dd' \
D128PBIT='' \
D128PBIT_FUNCS='_addsub_td _div_td _mul_td _plus_td _minus_td _eq_td _ne_td _lt_td _gt_td _le_td _ge_td _td_to_si _td_to_di _td_to_usi _td_to_udi _si_to_td _di_to_td _usi_to_td _udi_to_td _td_to_sf _td_to_df _td_to_xf _sf_to_td _df_to_td _xf_to_td _td_to_sd _td_to_dd _unord_td _conv_td' \
MULTILIBS=`/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include --print-multi-lib` \
EXTRA_MULTILIB_PARTS='' \
SHLIB_LINK='/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include -O2 -O2 -mcpu=arm926ejs -msoft-float -fomit-frame-pointer -pipe -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fomit-frame-pointer -fPIC -g0 -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -shared -nodefaultlibs -Wl,--soname=@shlib_base_name@.so.1 -Wl,--version-script=@shlib_map_file@ -o @multilib_dir@/@shlib_base_name@.so.1.tmp @multilib_flags@ @shlib_objs@ -lc && rm -f @multilib_dir@/@shlib_base_name@.so && if [ -f @multilib_dir@/@shlib_base_name@.so.1 ]; then mv -f @multilib_dir@/@shlib_base_name@.so.1 @multilib_dir@/@shlib_base_name@.so.1.backup; else true; fi && mv @multi
lib_dir@/@shlib_base_name@.so.1.tmp @multilib_dir@/@shlib_base_name@.so.1 && ln -s @shlib_base_name@.so.1 @multilib_dir@/@shlib_base_name@.so' \
SHLIB_INSTALL='$(mkinstalldirs) $(DESTDIR)$(slibdir)@shlib_slibdir_qual@; /usr/bin/install -c -m 644 @multilib_dir@/@shlib_base_name@.so.1 $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so.1; rm -f $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; ln -s @shlib_base_name@.so.1 $(DESTDIR)$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so' \
SHLIB_EXT='.so' \
SHLIB_MULTILIB='' \
SHLIB_MKMAP='../../gcc/mkmap-symver.awk' \
SHLIB_MKMAP_OPTS='' \
SHLIB_MAPFILES='../../gcc/libgcc-std.ver ../../gcc/config/libgcc-glibc.ver ../../gcc/config/libgcc-glibc.ver' \
SHLIB_NM_FLAGS='-pg' \
MULTILIB_OSDIRNAMES='' \
ASM_HIDDEN_OP='' \
GCC_FOR_TARGET='/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include' \
mkinstalldirs='/bin/sh ../../gcc/../mkinstalldirs' \
/bin/sh mklibgcc > tmp-libgcc.mk
mv tmp-libgcc.mk libgcc.mk
TARGET_CPU_DEFAULT="" \
HEADERS="auto-host.h ansidecl.h" DEFINES="USED_FOR_TARGET " \
/bin/sh ../../gcc/mkconfig.sh tconfig.h
/scratch/gcc-4.2.2/objdir/./gcc/xgcc -B/scratch/gcc-4.2.2/objdir/./gcc/ -B/usr/local/armv5tejl-unknown-linux-gnu/bin/ -B/usr/local/armv5tejl-unknown-linux-gnu/lib/ -isystem /usr/local/armv5tejl-unknown-linux-gnu/include -isystem /usr/local/armv5tejl-unknown-linux-gnu/sys-include -O2 -O2 -mcpu=arm926ejs -msoft-float -fomit-frame-pointer -pipe -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I../../gcc/../libdecnumber -I../libdecnumber -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder -Dinhibit_libc \
-c ../../gcc/crtstuff.c -DCRT_BEGIN \
-o crtbegin.o
../../gcc/crtstuff.c:1: error: bad value (arm926ejs) for -mcpu= switch
make[3]: *** [crtbegin.o] Error 1
make[3]: Leaving directory `/scratch/gcc-4.2.2/objdir/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/scratch/gcc-4.2.2/objdir'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/scratch/gcc-4.2.2/objdir'
make: *** [bootstrap-lean] Error 2
$ # gcc -v
Using built-in specs.
Configured with: /data/releases/v1.18/buildroot/toolchain_build_arm_nofpu/gcc-3.4.2/configure --prefix=/usr --build=i386-pc-linux-gnu --host=arm-linux-uclibc --target=arm-linux-uclibc --enable-languages=c,c++ --enable-shared --with-gxx-include-dir=/usr/include/c++ --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls --enable-threads --enable-multilib --with-float=soft
Thread model: posix
gcc version 3.4.2
$ /scratch/gcc-4.2.2/objdir/./gcc/xgcc -v
Using built-in specs.
Target: armv5tejl-unknown-linux-gnu
Configured with: ../configure --with-cpu=arm926ej-s --with-float=soft --enable-languages=c,c++,objc --disable-nls --with-newlib
Thread model: posix
gcc version 4.2.2
$
So which -mcpu values should I pass to configure and as C*FLAGS to bootstrap
to yield a compiler optimized and running only at this processor? It seems
gcc 3.4.2 and 4.2.2 accept either 'arm926ejs' or 'arm926ej-s', and configure
again just one of these?
Thanks for your help
Martin