Bug#781083: compiles fail with arm_neon.h

2015-03-24 Thread Riku Voipio

Package: gcc-4.9-aarch64-linux-gnu
Version: 4.9.2-10
Severity: normal

The command: aarch64-linux-gnu-gcc -static -o test arm_neon_sample.c

Works native aarch64-linux-gnu-gcc in sid, as well with cross-gcc provided 
by linaro (9-2014.09). Cross-compiler in this package fails:


aarch64-linux-gnu-gcc -o test arm_neon_sample.c 
In file included from arm_neon_sample.c:2:0:
/usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h: In function 
'vqadd_u8':
/usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h:2116:3: error: 
incompatible types when returning type 'int' but 'uint8x8_t' was expected

  return __builtin_aarch64_uqaddv8qi_uuu (__a, __b);
  ^
/usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h: In function 
'vqadd_u16':
/usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h:2122:3: error: 
incompatible types when returning type 'int' but 'uint16x4_t' was expected

  return __builtin_aarch64_uqaddv4hi_uuu (__a, __b);
  ^
...

Actual arm_neon.h comes from libgcc-4.9-dev:arm64 so I think this is 
something that got misconfigured while compiling the cross-compiker

Riku
#include stdio.h
#include arm_neon.h //need to include this ifyou want to use intrinsics
int main(){
//vector addition 8x8 example.
uint8x8_t vec_a, vec_b, vec_dest; //a vector of 8 8bit ints
vec_a = vdup_n_u8(9);
vec_b = vdup_n_u8(10);
vec_dest = vec_a * vec_b; //90
vec_a = vec_dest * vec_b; //90*10 = 900
vec_dest = vec_a * vec_b; //900*10 = 9000
int i = 0;
int result;
result = vget_lane_u8( vec_dest, 0 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 1 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 2 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 3 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 4 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 5 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 6 );
printf( Lane %d: %d\n, i, result );
i++;
result = vget_lane_u8( vec_dest, 7 );
printf( Lane %d: %d\n, i, result );
}


Bug#781083: compiles fail with arm_neon.h

2015-03-24 Thread Wookey
+++ Riku Voipio [2015-03-24 11:20 +0200]:
 Package: gcc-4.9-aarch64-linux-gnu
 Version: 4.9.2-10
 Severity: normal
 
 The command: aarch64-linux-gnu-gcc -static -o test arm_neon_sample.c
 
 Works native aarch64-linux-gnu-gcc in sid, as well with cross-gcc
 provided by linaro (9-2014.09). Cross-compiler in this package
 fails:
 
 aarch64-linux-gnu-gcc -o test arm_neon_sample.c In file included
 from arm_neon_sample.c:2:0:
 /usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h: In function
 'vqadd_u8':
 /usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h:2116:3: error:
 incompatible types when returning type 'int' but 'uint8x8_t' was
 expected
   return __builtin_aarch64_uqaddv8qi_uuu (__a, __b);
   ^
 /usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h: In function
 'vqadd_u16':
 /usr/lib/gcc/aarch64-linux-gnu/4.9/include/arm_neon.h:2122:3: error:
 incompatible types when returning type 'int' but 'uint16x4_t' was
 expected
   return __builtin_aarch64_uqaddv4hi_uuu (__a, __b);
   ^
 ...

Yep, confirmed.

 Actual arm_neon.h comes from libgcc-4.9-dev:arm64 so I think this is
 something that got misconfigured while compiling the cross-compiker

Something is clearly up. Might take a little while to work out exactly
what.

Cheers for the report.

Wookey
-- 
Principal hats:  Linaro, Debian, Wookware, ARM
http://wookware.org/


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org