J805 provides no optimization for armv64. If you build from J806 and define C_CRC32C=1 then it will make similar improvement with that of avx. see Android.mk.
Ср, 02 авг 2017, Edward Clinton Harold Deveaux написал(а): > The pinebook is a $100.00 laptop from China, 2GB Ram and a quad core Arm64 > cortex-a53 processor. > > I upgraded my pinebook with a 64GB eMMC chip, $31, to make room for software > development files. > > The environment is Ubuntu Mate 16.04 Linux, running in ArmV8-a, aarch64. > > See: http:www.pine64.org/pinebook/ for more about this laptop. > > 1. Downloaded, jsource-j805-release-final from the gpl repositories. > > 2. Compiled 47k lines of code on the pinebook in 6 minutes. > > 3. Ran all the jconsole engine test scripts successfully. > > 4. Successfully ran my own j programs from my x86-64, iMac and Linux > machines. > > 5. To update run, install all in jconsole, then copy jconsole, libj.so and > libtsdll.so to bin. > > 6. Also copy jqtide binary files. > > NB. install 'all' downloads x86-64 binaries. > > NB. -j5 added to make options. > > NB. -march=armv8-a+crc -mtune=cortex-a53 and -DC_NA=1 added to COMPILE > > A patch for the j805-source-final is attached. > > > Note: Information on porting the jqtide appears in another e-mail. > > Ed Deveaux > > e...@rawbw.com > > 470-330-0655 > > diff -crBN jsource-j805-release-final/jsrc/jversion.h > jsource-j805-release-finalPinebook/jsrc/jversion.h > *** jsource-j805-release-final/jsrc/jversion.h 1969-12-31 > 19:00:00.000000000 -0500 > --- jsource-j805-release-finalPinebook/jsrc/jversion.h 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 0 **** > --- 1,5 ---- > + #define jversion "805" > + #define jplatform "linuxA64" // AArch64-Arm64 > windows/linux/darwin/raspberry/android/... > + #define jtype "release-final" // release,beta,... may include > bug level such as beta-3 > + #define jlicense "GPL3" > + #define jbuilder "e...@rawbw.com" // website or email > diff -crBN jsource-j805-release-final/make/build_all.sh > jsource-j805-release-finalPinebook/make/build_all.sh > *** jsource-j805-release-final/make/build_all.sh 2016-12-10 > 22:06:13.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/build_all.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 1,13 **** > #!/bin/bash > ! # build all binaries > cd ~ > ! . jvars.sh > > $jmake/install.sh > > ! $jmake/build_jconsole.sh j32 > ! $jmake/build_libj.sh j32 > ! $jmake/build_tsdll.sh j32 > > if [ $jplatform = "raspberry" ]; then > exit 0 > --- 1,13 ---- > #!/bin/bash > ! # build all binaries bypass j32 binaries > cd ~ > ! . ./jvars.sh > > $jmake/install.sh > > ! #$jmake/build_jconsole.sh j32 > ! #$jmake/build_libj.sh j32 > ! #$jmake/build_tsdll.sh j32 > > if [ $jplatform = "raspberry" ]; then > exit 0 > diff -crBN jsource-j805-release-final/make/build_jconsole.sh > jsource-j805-release-finalPinebook/make/build_jconsole.sh > *** jsource-j805-release-final/make/build_jconsole.sh 2016-12-10 > 22:06:13.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/build_jconsole.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 1,12 **** > #!/bin/bash > # $1 is j32 or j64 > cd ~ > ! . jvars.sh > > common=" -fPIC -O1 -Wextra " > > case $jplatform\_$1 in > > linux_j32) > COMPILE="$common -m32 -DREADLINE" > LINK=" $jgit/unix/libedit.a -m32 -ldl -l:libncursesw.so.5.9 > -l:libtinfo.so.5.9 -o jconsole " > --- 1,17 ---- > #!/bin/bash > # $1 is j32 or j64 > cd ~ > ! . ./jvars.sh > > common=" -fPIC -O1 -Wextra " > > case $jplatform\_$1 in > > + linuxA64_j64) > + COMPILE="-fpic -march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe -DC_NA=1 > -DREADLINE" > + LINK=" -ledit -ldl -lncursesw -o jconsole " > + ;; > + > linux_j32) > COMPILE="$common -m32 -DREADLINE" > LINK=" $jgit/unix/libedit.a -m32 -ldl -l:libncursesw.so.5.9 > -l:libtinfo.so.5.9 -o jconsole " > diff -crBN jsource-j805-release-final/make/build_libj.sh > jsource-j805-release-finalPinebook/make/build_libj.sh > *** jsource-j805-release-final/make/build_libj.sh 2016-12-10 > 22:06:13.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/build_libj.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 1,7 **** > #!/bin/bash > # $1 is j32 or j64 > cd ~ > ! . jvars.sh > > # gcc 5 vs 4 - killing off linux asm routines (overflow detection) > # new fast code uses builtins not available in gcc 4 > --- 1,7 ---- > #!/bin/bash > # $1 is j32 or j64 > cd ~ > ! . ./jvars.sh > > # gcc 5 vs 4 - killing off linux asm routines (overflow detection) > # new fast code uses builtins not available in gcc 4 > *************** > *** 18,23 **** > --- 18,28 ---- > > case $jplatform\_$1 in > > + linuxA64_j64) # linux Arm64 aarch64 Little Endian > + TARGET=libj.so > + COMPILE="-fpic -march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe -DC_NA=1 > -DREADLINE" > + LINK=" -shared -Wl,-soname,libj.so -lm -ldl -o libj.so " > + ;; > > linux_j32) # linux x86 > TARGET=libj.so > diff -crBN jsource-j805-release-final/make/build_tsdll.sh > jsource-j805-release-finalPinebook/make/build_tsdll.sh > *** jsource-j805-release-final/make/build_tsdll.sh 2016-12-10 > 22:06:13.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/build_tsdll.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 1,12 **** > #!/bin/bash > # $1 is j32 or j64 > cd ~ > ! . jvars.sh > > common=" -fPIC -O1 -Werror -Wextra -Wno-unused-parameter" > > case $jplatform\_$1 in > > linux_j32) > TARGET=libtsdll.so > COMPILE="$common -m32 " > --- 1,18 ---- > #!/bin/bash > # $1 is j32 or j64 > cd ~ > ! . ./jvars.sh > > common=" -fPIC -O1 -Werror -Wextra -Wno-unused-parameter" > > case $jplatform\_$1 in > > + linuxA64_j64) > + TARGET=libtsdll.so > + COMPILE="-fpic -march=armv8-a+crc -mtune=cortex-a53 -O2 -pipe -DC_NA=1" > + LINK=" -shared -Wl,-soname,libtsdll.so -o libtsdll.so " > + ;; > + > linux_j32) > TARGET=libtsdll.so > COMPILE="$common -m32 " > diff -crBN jsource-j805-release-final/make/domake.sh > jsource-j805-release-finalPinebook/make/domake.sh > *** jsource-j805-release-final/make/domake.sh 2016-12-10 22:06:13.000000000 > -0500 > --- jsource-j805-release-finalPinebook/make/domake.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 4,10 **** > # $1 is j32 or j64 > > cd ~ > ! . jvars.sh > > echo $TARGET > echo $COMPILE > --- 4,10 ---- > # $1 is j32 or j64 > > cd ~ > ! . ./jvars.sh > > echo $TARGET > echo $COMPILE > *************** > *** 12,16 **** > mkdir -p $jbld/jout/$TARGET/$1 > cd $jbld/jout/$TARGET/$1 > > ! make -f $jmake/makefile > cp $TARGET $jbld/$1/bin > --- 12,16 ---- > mkdir -p $jbld/jout/$TARGET/$1 > cd $jbld/jout/$TARGET/$1 > > ! make -j5 -f $jmake/makefile > cp $TARGET $jbld/$1/bin > diff -crBN jsource-j805-release-final/make/install.sh > jsource-j805-release-finalPinebook/make/install.sh > *** jsource-j805-release-final/make/install.sh 2016-12-10 > 22:06:13.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/install.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 8,21 **** > fi > > cd ~ > ! . jvars.sh > > rm -f -r $jbld > mkdir $jbld > ! mkdir $jbld/j32 > mkdir $jbld/j64 > mkdir $jbld/jout > ! cp -r $jgit/jlibrary/* $jbld/j32 > cp -r $jgit/jlibrary/* $jbld/j64 > > echo "install complete" > --- 8,21 ---- > fi > > cd ~ > ! . ./jvars.sh > > rm -f -r $jbld > mkdir $jbld > ! #mkdir $jbld/j32 > mkdir $jbld/j64 > mkdir $jbld/jout > ! #cp -r $jgit/jlibrary/* $jbld/j32 > cp -r $jgit/jlibrary/* $jbld/j64 > > echo "install complete" > diff -crBN jsource-j805-release-final/make/jvars.sh > jsource-j805-release-finalPinebook/make/jvars.sh > *** jsource-j805-release-final/make/jvars.sh 2016-12-10 22:06:13.000000000 > -0500 > --- jsource-j805-release-finalPinebook/make/jvars.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 1,16 **** > ! # source shell script (read with . jvars.sh) so stuff is easy to find > > # edit following if your install is not standard > jgit=~/gitdev/jsource # git jsource folder > jbld=~/jbld # test libraries and binaries will be put here > > # edit platform to build - linux darwin raspberry > ! jplatform=linux > > # should not be necessary to edit after here > ! j32=$jbld/j32/bin/jconsole > j64=$jbld/j64/bin/jconsole > jmake=$jgit/make > > ! export jgit jbld j32 j64 jmake > > --- 1,19 ---- > ! # source shell script (read with . ./jvars.sh) so stuff is easy to find > > # edit following if your install is not standard > jgit=~/gitdev/jsource # git jsource folder > jbld=~/jbld # test libraries and binaries will be put here > > # edit platform to build - linux darwin raspberry > ! #jplatform=linux > ! # aarch64 Arm V8 a 64 bit > ! jplatform=linuxA64 > > # should not be necessary to edit after here > ! #j32=$jbld/j32/bin/jconsole > j64=$jbld/j64/bin/jconsole > jmake=$jgit/make > > ! export jgit jbld j64 jmake > ! #export jgit jbld j32 j64 jmake > > diff -crBN jsource-j805-release-final/make/jversion.h > jsource-j805-release-finalPinebook/make/jversion.h > *** jsource-j805-release-final/make/jversion.h 1969-12-31 > 19:00:00.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/jversion.h 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 0 **** > --- 1,5 ---- > + #define jversion "805" > + #define jplatform "linuxA64" // AArch64-Arm64 > windows/linux/darwin/raspberry/android/... > + #define jtype "release-final" // release,beta,... may include > bug level such as beta-3 > + #define jlicense "GPL3" > + #define jbuilder "e...@rawbw.com" // website or email > diff -crBN jsource-j805-release-final/make/make.txt > jsource-j805-release-finalPinebook/make/make.txt > *** jsource-j805-release-final/make/make.txt 2016-12-10 22:06:13.000000000 > -0500 > --- jsource-j805-release-finalPinebook/make/make.txt 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 4,9 **** > --- 4,11 ---- > > $jplatform is a simple name that implies OS and hardware > > + linuxA64 implies Arm64 aarch64 Cortex A53 little-endian > + > linux implies intel > darwin implies intel > raspberry implies linux/arm/little-endian > *************** > *** 26,32 **** > # valid platforms are: linux darwin raspberry > > # create clean build folders > ! . jvars.sh > $jmake/install.sh > > # ensure proper jsrc/jversion.h (jversion-x.h template) > --- 28,34 ---- > # valid platforms are: linux darwin raspberry > > # create clean build folders > ! . ./jvars.sh > $jmake/install.sh > > # ensure proper jsrc/jversion.h (jversion-x.h template) > *************** > *** 52,57 **** > $jmake/build_all.sh > > # release clean builds to the repo release folder > ! . jvars.sh > $jmake/release.sh > > --- 54,59 ---- > $jmake/build_all.sh > > # release clean builds to the repo release folder > ! . ./jvars.sh > $jmake/release.sh > > diff -crBN jsource-j805-release-final/make/release.sh > jsource-j805-release-finalPinebook/make/release.sh > *** jsource-j805-release-final/make/release.sh 2016-12-10 > 22:06:13.000000000 -0500 > --- jsource-j805-release-finalPinebook/make/release.sh 2017-08-02 > 19:17:34.000000000 -0400 > *************** > *** 1,15 **** > #!/bin/bash > # copy binaries to release folder > cd ~ > ! . jvars.sh > > ! mkdir -p $jgit/release/$jplatform/j32 > ! rm -f $jgit/release/$jplatform/j32/* > ! cp $jbld/j32/bin/jconsole $jgit/release/$jplatform/j32/jconsole > ! cp $jbld/j32/bin/libj.so $jgit/release/$jplatform/j32/libj.so > ! cp $jbld/j32/bin/libj.dylib $jgit/release/$jplatform/j32/libj.dylib > ! cp $jbld/j32/bin/libtsdll.so $jgit/release/$jplatform/j32/libtsdll.so > ! cp $jbld/j32/bin/libtsdll.dylib $jgit/release/$jplatform/j32/libtsdll.dylib > > > if [ $jplatform = "raspberry" ]; then > --- 1,15 ---- > #!/bin/bash > # copy binaries to release folder > cd ~ > ! . ./jvars.sh > > ! #mkdir -p $jgit/release/$jplatform/j32 > ! #rm -f $jgit/release/$jplatform/j32/* > ! #cp $jbld/j32/bin/jconsole $jgit/release/$jplatform/j32/jconsole > ! #cp $jbld/j32/bin/libj.so $jgit/release/$jplatform/j32/libj.so > ! #cp $jbld/j32/bin/libj.dylib $jgit/release/$jplatform/j32/libj.dylib > ! #cp $jbld/j32/bin/libtsdll.so $jgit/release/$jplatform/j32/libtsdll.so > ! #cp $jbld/j32/bin/libtsdll.dylib $jgit/release/$jplatform/j32/libtsdll.dylib > > > if [ $jplatform = "raspberry" ]; then > *************** > *** 20,26 **** > rm -f $jgit/release/$jplatform/j64/* > cp $jbld/j64/bin/jconsole $jgit/release/$jplatform/j64/jconsole > cp $jbld/j64/bin/libj.so $jgit/release/$jplatform/j64/libj.so > ! cp $jbld/j64/bin/libj.dylib $jgit/release/$jplatform/j64/libj.dylib > cp $jbld/j64/bin/libtsdll.so $jgit/release/$jplatform/j64/libtsdll.so > ! cp $jbld/j64/bin/libtsdll.dylib $jgit/release/$jplatform/j64/libtsdll.dylib > > --- 20,26 ---- > rm -f $jgit/release/$jplatform/j64/* > cp $jbld/j64/bin/jconsole $jgit/release/$jplatform/j64/jconsole > cp $jbld/j64/bin/libj.so $jgit/release/$jplatform/j64/libj.so > ! #cp $jbld/j64/bin/libj.dylib $jgit/release/$jplatform/j64/libj.dylib > cp $jbld/j64/bin/libtsdll.so $jgit/release/$jplatform/j64/libtsdll.so > ! #cp $jbld/j64/bin/libtsdll.dylib $jgit/release/$jplatform/j64/libtsdll.dylib > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm