[ANNOUNCE] Linaro GCC 6 2017.01 snapshot

2017-01-12 Thread Yvan Roux
The Linaro Toolchain Working Group (TCWG) is pleased to announce the
2017.01 snapshot of the Linaro GCC 6 source package.

This monthly snapshot[1] is based on FSF GCC 6.3+svn244220 and
includes performance improvements and bug fixes backported from
mainline GCC. This snapshot contents will be part of the 2017.02
stable[2] quarterly release.

This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.3-2017.01/

Interesting changes in this GCC source package snapshot include:

* Updates to GCC 6.3+svn244220
* Backport of [Bugfix] Fix PR77673: bswap loads passed end of object
* Backport of [ARMv8-M] [AArch32] 1/7 Move memory model declarations
in memmodel.h
* Backport of [ARMv8-M] [AArch32] 2/7 Adapt atomic and exclusive load
and store to ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 3/7 Refactor atomic compare_and_swap
to make it fit for ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 4/7 Adapt atomic compare and swap to
ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 5/7 Adapt other atomic operations to
ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] 7/7 Enable ARMv8-M atomic and
synchronization support for ARMv8-M Baseline
* Backport of [ARMv8-M] [AArch32] Added support for ARMV8-M Security
Extension cmse_nonsecure_caller intrinsic
* Backport of [ARMv8-M] [AArch32] Add multilib mapping for Cortex-M23
& Cortex-M33
* Backport of [ARMv8-M] [AArch32] Add support for ARM Cortex-M23 processor
* Backport of [ARMv8-M] [AArch32] Add support for ARM Cortex-M33 processor
* Backport of [ARMv8-M] [AArch32] Add support for ARMv8-M's Secure
Extensions flag and intrinsics
* Backport of [ARMv8-M] [AArch32] ARMv8-M Security Extension's
cmse_nonsecure_call: use __gnu_cmse_nonsecure_call
* Backport of [ARMv8-M] [AArch32] ARMv8-M Security Extension's
cmse_nonsecure_entry: __acle_se label and bxns return
* Backport of [ARMv8-M] [AArch32] ARMv8-M Security Extension's
cmse_nonsecure_entry: clear registers
* Backport of [ARMv8-M] [AArch32] Fix various arm failures with config-list.mk
* Backport of [ARMv8-M] [AArch32] Force soft float in ARMv6-M and
ARMv8-M Baseline options
* Backport of [ARMv8-M] [AArch32] Handling ARMv8-M Security
Extension's cmse_nonsecure_call attribute
* Backport of [ARMv8-M] [AArch32] Handling ARMv8-M Security
Extension's cmse_nonsecure_entry attribute
* Backport of [ARMv8-M] [AArch32] Make arm_feature_set agree with type
of FL_* macros
* Backport of [ARMv8-M] [AArch32] Optional -mthumb for Thumb only targets
* Backport of [AArch64] 1/3 Add missing Poly64_t intrinsics to GCC
* Backport of [AArch64] 2/3 Add missing Poly64_t intrinsics to GCC
* Backport of [AArch64] 3/3 Add tests for missing Poly64_t intrinsics to GCC
* Backport of [AArch64] Add more Poly64_t intrinsics to GCC
* Backport of [AArch64] more poly64 intrinsics
* Backport of [Testsuite] [AArch64] Fix failing poly64 tests on ARM
* Backport of [Testsuite] [AArch64] Lower iterator count on
gcc.dg/atomic/c11-atomic-exec-5.c for AARCH64
* Backport of [Cleanup] Improve comment for struct symbolic_number in bswap pass

Subscribe to the important Linaro mailing lists and join our IRC
channels to stay on top of Linaro development.

** Linaro Toolchain Development "mailing list":
http://lists.linaro.org/mailman/listinfo/linaro-toolchain
** Linaro Toolchain IRC channel on irc.freenode.net at @#linaro-tcwg@

* Bug reports should be filed in bugzilla against GCC product:
   http://bugs.linaro.org/enter_bug.cgi?product=GCC
* Interested in commercial support? inquire at "Linaro support":
   mailto:supp...@linaro.org

[1]. Source package snapshots are defined when the compiler is only
put through unit-testing and full validation is not performed.

[2]. Stable source package releases are defined as releases where the
full Linaro Toolchain validation plan is executed.
___
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain


Does Linaro's GCC 4.9 include Crypto extensions and intrinsics?

2017-01-12 Thread Jeffrey Walton
Please forgive my ignorance. I'm working on a Pine64 dev-board Pine64
supplies Linaro's GCC 4.9.2 toolchain.

I am catching a compile error, and I am trying to determine why.

Does Linaro's GCC 4.9 provide AES and SHA intrinsics?

**

$ uname -a
Linux pine64 3.10.102-2-pine64-longsleep #66 SMP PREEMPT Sat Jul 16
10:53:13 CEST 2016 aarch64 GNU/Linux

$ gcc --version
gcc (Debian/Linaro 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.

**

$ CFLAGS="-DMBEDTLS_HAVE_ARMV8A_CE=1" make DEBUG=1 V=1
  CCaes_armv8a_ce.c
aes_armv8a_ce.c: In function 'mbedtls_armv8a_ce_aes_crypt_ecb':
aes_armv8a_ce.c:65:4: warning: implicit declaration of function
'vaeseq_u8' [-Wimplicit-function-declaration]
state_vec = vaeseq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:65:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaeseq_u8( state_vec, roundkey_vec );
  ^
aes_armv8a_ce.c:67:4: warning: implicit declaration of function
'vaesmcq_u8' [-Wimplicit-function-declaration]
state_vec = vaesmcq_u8( state_vec );
^
aes_armv8a_ce.c:67:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesmcq_u8( state_vec );
  ^
aes_armv8a_ce.c:74:13: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
   state_vec = vaeseq_u8( state_vec, roundkey_vec );
 ^
aes_armv8a_ce.c:84:4: warning: implicit declaration of function
'vaesdq_u8' [-Wimplicit-function-declaration]
state_vec = vaesdq_u8( state_vec, roundkey_vec );
^
aes_armv8a_ce.c:84:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesdq_u8( state_vec, roundkey_vec );
  ^
aes_armv8a_ce.c:86:4: warning: implicit declaration of function
'vaesimcq_u8' [-Wimplicit-function-declaration]
state_vec = vaesimcq_u8( state_vec );
^
aes_armv8a_ce.c:86:14: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
state_vec = vaesimcq_u8( state_vec );
  ^
aes_armv8a_ce.c:93:13: error: incompatible types when assigning to
type 'uint8x16_t' from type 'int'
   state_vec = vaesdq_u8( state_vec, roundkey_vec );
 ^
aes_armv8a_ce.c: In function 'mbedtls_armv8a_ce_gcm_mult':
aes_armv8a_ce.c:138:2: warning: implicit declaration of function
'vmull_high_p64' [-Wimplicit-function-declaration]
  r1 = (uint8x16_t)vmull_high_p64( (poly64x2_t)a_p, (poly64x2_t)b_p );
  ^
aes_armv8a_ce.c:138:2: error: can't convert between vector values of
different size
aes_armv8a_ce.c:141:2: error: can't convert between vector values of
different size
  t0 = (uint8x16_t)vmull_high_p64( (poly64x2_t)a_p, (poly64x2_t)t0 );
  ^
aes_armv8a_ce.c:150:2: error: can't convert between vector values of
different size
  t0 = (uint8x16_t)vmull_high_p64( (poly64x2_t)r1, (poly64x2_t)p );
  ^
Makefile:170: recipe for target 'aes_armv8a_ce.o' failed
make[1]: *** [aes_armv8a_ce.o] Error 1
Makefile:17: recipe for target 'lib' failed
make: *** [lib] Error 2

**

  CCsha1_armv8a_ce.c
sha1_armv8a_ce.c: In function 'mbedtls_armv8a_ce_sha1_process':
sha1_armv8a_ce.c:99:2: warning: implicit declaration of function
'vsha1h_u32' [-Wimplicit-function-declaration]
  e1 = vsha1h_u32( a );
  ^
sha1_armv8a_ce.c:100:2: warning: implicit declaration of function
'vsha1cq_u32' [-Wimplicit-function-declaration]
  abcd = vsha1cq_u32( abcd, e, wk0 ); /* 0 */
  ^
sha1_armv8a_ce.c:100:7: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
  abcd = vsha1cq_u32( abcd, e, wk0 ); /* 0 */
   ^
sha1_armv8a_ce.c:102:2: warning: implicit declaration of function
'vsha1su0q_u32' [-Wimplicit-function-declaration]
  w0 = vsha1su0q_u32( w0, w1, w2 );
  ^
sha1_armv8a_ce.c:102:5: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
  w0 = vsha1su0q_u32( w0, w1, w2 );
 ^
sha1_armv8a_ce.c:106:7: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
  abcd = vsha1cq_u32( abcd, e1, wk1 ); /* 1 */
   ^
sha1_armv8a_ce.c:108:2: warning: implicit declaration of function
'vsha1su1q_u32' [-Wimplicit-function-declaration]
  w0 = vsha1su1q_u32( w0, w3 );
  ^
sha1_armv8a_ce.c:108:5: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
  w0 = vsha1su1q_u32( w0, w3 );
 ^
sha1_armv8a_ce.c:109:5: error: incompatible types when assigning to
type 'uint32x4_t' from type 'int'
  w1 = vsha1su0q_u32( w1, w2, w3 );
 ^
...

**

$ grep -IR vaeseq_u8 /usr/include
/usr/include/clang/3.5.0/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
/usr/include/clang/3.5.0/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
/usr/include/clang/3.5/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
/usr/include/clang/3.5/include/arm_neon.h:__ai uint8x16_t
vaeseq_u8(uint8x16_t __p0, uin

Re: Does Linaro's GCC 4.9 include Crypto extensions and intrinsics?

2017-01-12 Thread Jim Wilson
On Thu, Jan 12, 2017 at 10:55 PM, Jeffrey Walton  wrote:
> Does Linaro's GCC 4.9 provide AES and SHA intrinsics?

Crypto is an optional feature that is not enabled by default when
selecting the armv8-a architecture.  You either need to specify a
processor that implements the crypto extension, or else you need to
specify the crypto extension when specifying the architecture.  The
latter is probably easier.  For instance, you can do
-march=armv8-a+crypto to enable the crypto support.  You can also
enable crc support by adding "+crc", separately, or in combination
with +crypto.

> $ grep -IR vaeseq_u8 /usr/include
> /usr/include/clang/3.5.0/include/arm_neon.h:__ai uint8x16_t
> vaeseq_u8(uint8x16_t __p0, uint8x16_t __p1) {
> ...

GCC specific header files are normally not in /usr/include.  On my
Ubuntu 14.04 system, it is
/usr/lib/gcc/aarch64-linux-gnu/4.8/include/arm_neon.h
and vaeseq_u8 is in there, but only enabled when crypto support is enabled.

Jim
___
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/linaro-toolchain