# Two questions re VOLK armv7

**URL:** <https://www.ruby-forum.com/t/two-questions-re-volk-armv7/242578>\
**Category:** GNU Radio\
**Created:** [July 4, 2015, 5:33am UTC](https://www.ruby-forum.com/t/two-questions-re-volk-armv7/242578 "2015-07-04T05:33:58Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![musicdenotation](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/ea666f/32.png) [@musicdenotation](https://www.ruby-forum.com/u/musicdenotation)\
**Post date:** [July 4, 2015, 5:33am UTC](https://www.ruby-forum.com/t/two-questions-re-volk-armv7/242578/1 "2015-07-04T05:33:58Z")

</div>

1: To get VOLK to compile correctly under gnuradio, I need to include  
-march=armv7 in CFLAGS (volk/lib/CMakeLists.txt) which I do with a tool  
chain file with volk git’d outside gnuradio.

```
    root@cubieboard4:/mnt/volk# rm CMakeCache.txt; cmake
    -DCMAKE_USER_MAKE_RULES_OVERRIDE=cmake/Toolchains/armv7.cmake .

```

What is the best way to ensure -march=armv7 gets passed to cmake when  
building gnuradio? Specify CFLAGS on the command line or the  
environment?

GCC says:

root@cubieboard4:/mnt/volk# gcc -v  
Using built-in specs.  
COLLECT\_GCC=gcc  
COLLECT\_LTO\_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/4.9/lto-wrapper  
Target: arm-linux-gnueabihf  
Configured with: …/src/configure -v --with-pkgversion=‘Debian 4.9.2-10’  
–with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs  
–enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr  
–program-suffix=-4.9 --enable-shared --enable-linker-build-id  
–libexecdir=/usr/lib --without-included-gettext --enable-threads=posix  
–with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib  
–enable-nls --with-sysroot=/ --enable-clocale=gnu  
–enable-libstdcxx-debug --enable-libstdcxx-time=yes  
–enable-gnu-unique-object --disable-libitm --disable-libquadmath  
–enable-plugin --with-system-zlib --disable-browser-plugin  
–enable-java-awt=gtk --enable-gtk-cairo  
–with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf/jre  
–enable-java-home  
–with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-armhf  
–with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-armhf  
–with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar  
–enable-objc-gc --enable-multiarch --disable-sjlj-exceptions  
–with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard  
–with-mode=thumb --enable-checking=release --build=arm-linux-gnueabihf  
–host=arm-linux-gnueabihf --target=arm-linux-gnueabihf  
Thread model: posix  
gcc version 4.9.2 (Debian 4.9.2-10)

2: Three QA tests fail:

The following kernels failed QA:

```
volk_32fc_magnitude_32f
volk_32f_sqrt_32f
volk_32fc_s32fc_multiply_32fc

```

How do I go about fixing that? I included test output below.

root@cubieboard4:/mnt/volk# ./lib/test\_all  
Using Volk machine: neon\_hardfp  
RUN\_VOLK\_TESTS: volk\_64u\_popcntpuppet\_64u(131071,1)  
generic completed in 0.993ms  
neon completed in 1.402ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16u\_byteswappuppet\_16u(131071,1)  
generic completed in 0.478ms  
neon completed in 0.266ms  
neon\_table completed in 0.271ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32u\_byteswappuppet\_32u(131071,1)  
generic completed in 0.762ms  
neon completed in 0.659ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32u\_popcntpuppet\_32u(131071,1)  
generic completed in 0.661ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_64u\_byteswappuppet\_64u(131071,1)  
generic completed in 1.621ms  
neon completed in 1.136ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32fc\_s32fc\_rotatorpuppet\_32fc(131071,1)  
generic completed in 11.884ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8u\_conv\_k7\_r2puppet\_8u(131071,0)  
generic completed in 0.002ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_fm\_detectpuppet\_32f(131071,1)  
generic completed in 2.371ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16ic\_s32f\_deinterleave\_real\_32f(131071,1)  
generic completed in 0.741ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16ic\_deinterleave\_real\_8i(131071,1)  
generic completed in 0.509ms  
neon completed in 0.404ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_16ic\_deinterleave\_16i\_x2(131071,1)  
generic completed in 0.56ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16ic\_s32f\_deinterleave\_32f\_x2(131071,1)  
generic completed in 1.199ms  
neon completed in 1.11ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_16ic\_deinterleave\_real\_16i(131071,1)  
generic completed in 0.34ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16ic\_magnitude\_16i(131071,1)  
generic completed in 2.14ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16ic\_s32f\_magnitude\_32f(131071,1)  
generic completed in 1.413ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16i\_s32f\_convert\_32f(131071,1)  
generic completed in 0.32ms  
neon completed in 0.267ms  
a\_generic completed in 0.25ms  
Best aligned arch: a\_generic  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_16i\_convert\_8i(131071,1)  
generic completed in 0.218ms  
neon completed in 0.23ms  
a\_generic completed in 0.21ms  
Best aligned arch: a\_generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_16i\_32fc\_dot\_prod\_32fc(131071,1)  
generic completed in 0.916ms  
neon completed in 0.773ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32f\_accumulator\_s32f(131071,1)  
generic completed in 0.292ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_add\_32f(131071,1)  
generic completed in 0.652ms  
u\_neon completed in 0.607ms  
a\_generic completed in 0.601ms  
Best aligned arch: a\_generic  
Best unaligned arch: u\_neon  
RUN\_VOLK\_TESTS: volk\_32fc\_32f\_multiply\_32fc(131071,1)  
generic completed in 1.002ms  
neon completed in 0.926ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32f\_log2\_32f(131071,1)  
generic completed in 7.741ms  
neon completed in 0.888ms  
u\_generic completed in 7.684ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32f\_expfast\_32f(131071,1)  
generic completed in 27.81ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_pow\_32f(131071,1)  
generic completed in 33.018ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_sin\_32f(131071,1)  
generic completed in 4.454ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_cos\_32f(131071,1)  
generic completed in 5.466ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_tan\_32f(131071,1)  
generic completed in 8.962ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_atan\_32f(131071,1)  
generic completed in 7.27ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_asin\_32f(131071,1)  
u\_generic completed in 12.883ms  
Best aligned arch: u\_generic  
Best unaligned arch: u\_generic  
RUN\_VOLK\_TESTS: volk\_32f\_acos\_32f(131071,1)  
generic completed in 13.695ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_s32f\_power\_32fc(131071,1)  
generic completed in 163.532ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_calc\_spectral\_noise\_floor\_32f(131071,1)  
generic completed in 1.123ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_s32f\_atan2\_32f(131071,1)  
generic completed in 14.414ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_x2\_conjugate\_dot\_prod\_32fc(131071,1)  
generic completed in 1.273ms  
neon completed in 1.033ms  
a\_generic completed in 1.175ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32fc\_deinterleave\_32f\_x2(131071,1)  
neon completed in 1.234ms  
generic completed in 1.372ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32fc\_deinterleave\_64f\_x2(131071,1)  
generic completed in 1.932ms  
a\_generic completed in 2.05ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_s32f\_deinterleave\_real\_16i(131071,1)  
generic completed in 0.653ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_deinterleave\_imag\_32f(131071,1)  
neon completed in 0.787ms  
generic completed in 0.664ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_deinterleave\_real\_32f(131071,1)  
generic completed in 0.809ms  
neon completed in 0.669ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32fc\_deinterleave\_real\_64f(131071,1)  
generic completed in 0.918ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_x2\_dot\_prod\_32fc(131071,1)  
generic completed in 1.251ms  
a\_generic completed in 1.258ms  
neon completed in 1.102ms  
neon\_opttests completed in 1.176ms  
neon\_optfma completed in 0.995ms  
neon\_optfmaunroll completed in 1.212ms  
Best aligned arch: neon\_optfma  
Best unaligned arch: neon\_optfma  
RUN\_VOLK\_TESTS: volk\_32fc\_32f\_dot\_prod\_32fc(131071,1)  
generic completed in 0.934ms  
neon\_unroll completed in 0.862ms  
a\_neon completed in 0.868ms  
a\_neonasm completed in 0.837ms  
a\_neonpipeline completed in 0.687ms  
Best aligned arch: a\_neonpipeline  
Best unaligned arch: neon\_unroll  
RUN\_VOLK\_TESTS: volk\_32fc\_index\_max\_16u(131071,1)  
generic completed in 0.875ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_s32f\_magnitude\_16i(131071,1)  
generic completed in 1.588ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_magnitude\_32f(131071,1)  
generic completed in 1.335ms  
a\_generic completed in 1.295ms  
neon completed in 0.673ms  
neon\_fancy\_sweet completed in 0.924ms  
offset 0 in1: 0.705791 in2: 0.707031  
offset 1 in1: 1.21055 in2: 1.20703  
offset 2 in1: 0.453742 in2: 0.453125  
offset 3 in1: 0.970181 in2: 0.96875  
offset 4 in1: 1.05658 in2: 1.05469  
offset 5 in1: 0.821474 in2: 0.818359  
offset 6 in1: 0.862105 in2: 0.861328  
offset 7 in1: 0.897716 in2: 0.896484  
offset 8 in1: 0.796805 in2: 0.796875  
offset 9 in1: 0.889502 in2: 0.886719  
volk\_32fc\_magnitude\_32f: fail on arch neon  
offset 0 in1: 0.705791 in2: 0.710017  
offset 1 in1: 1.21055 in2: 1.2123  
offset 2 in1: 0.453742 in2: 0.451831  
offset 3 in1: 0.970181 in2: 0.967088  
offset 4 in1: 1.05658 in2: 1.04841  
offset 5 in1: 0.821474 in2: 0.826919  
offset 6 in1: 0.862105 in2: 0.868165  
offset 7 in1: 0.897716 in2: 0.898518  
offset 8 in1: 0.796805 in2: 0.804625  
offset 9 in1: 0.889502 in2: 0.897857  
volk\_32fc\_magnitude\_32f: fail on arch neon\_fancy\_sweet  
Best aligned arch: neon  
Best unaligned arch: neon  
Failure on volk\_32fc\_magnitude\_32f  
RUN\_VOLK\_TESTS: volk\_32fc\_magnitude\_squared\_32f(131071,1)  
generic completed in 0.672ms  
neon completed in 0.641ms  
a\_generic completed in 0.669ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32fc\_x2\_multiply\_32fc(131071,1)  
generic completed in 1.774ms  
a\_generic completed in 1.738ms  
neon completed in 1.218ms  
neon\_opttests completed in 1.189ms  
neonasm completed in 1.173ms  
Best aligned arch: neonasm  
Best unaligned arch: neonasm  
RUN\_VOLK\_TESTS: volk\_32fc\_x2\_multiply\_conjugate\_32fc(131071,1)  
generic completed in 1.82ms  
neon completed in 1.253ms  
a\_generic completed in 1.794ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32fc\_conjugate\_32fc(131071,1)  
generic completed in 0.736ms  
a\_neon completed in 0.749ms  
a\_generic completed in 0.653ms  
Best aligned arch: a\_generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_convert\_16i(131071,1)  
generic completed in 3.872ms  
a\_generic completed in 3.926ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_convert\_32i(131071,1)  
generic completed in 0.782ms  
a\_generic completed in 0.782ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_convert\_64f(131071,1)  
generic completed in 0.645ms  
a\_generic completed in 0.477ms  
Best aligned arch: a\_generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_convert\_8i(131071,1)  
generic completed in 2.2ms  
a\_generic completed in 2.111ms  
Best aligned arch: a\_generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_s32f\_power\_spectrum\_32f(131071,1)  
generic completed in 13.009ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_x2\_square\_dist\_32f(131071,1)  
neon completed in 0.738ms  
generic completed in 0.686ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_x2\_s32f\_square\_dist\_scalar\_mult\_32f(131071,1)  
generic completed in 0.724ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_divide\_32f(131071,1)  
generic completed in 1.434ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_dot\_prod\_32f(131071,1)  
generic completed in 0.592ms  
a\_generic completed in 0.575ms  
neonopts completed in 0.553ms  
neon completed in 0.574ms  
neonasm completed in 0.433ms  
neonasm\_opts completed in 0.507ms  
Best aligned arch: neonasm  
Best unaligned arch: neonasm  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_s32f\_interleave\_16ic(131071,1)  
generic completed in 0.7ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_interleave\_32fc(131071,1)  
neon completed in 0.767ms  
generic completed in 0.748ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_max\_32f(131071,1)  
neon completed in 0.631ms  
generic completed in 0.596ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_min\_32f(131071,1)  
neon completed in 0.721ms  
generic completed in 0.625ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_multiply\_32f(131071,1)  
generic completed in 0.737ms  
neon completed in 0.625ms  
a\_generic completed in 0.611ms  
Best aligned arch: a\_generic  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_normalize(131071,1)  
generic completed in 0.632ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_power\_32f(131071,1)  
generic completed in 35.731ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_sqrt\_32f(131071,1)  
neon completed in 0.534ms  
generic completed in 4.204ms  
offset 0 in1: 0.68207 in2: 0.681641  
offset 2 in1: 0.892081 in2: 0.890625  
offset 3 in1: 0.61199 in2: 0.609375  
offset 6 in1: 0.406933 in2: 0.405273  
offset 7 in1: 0.771893 in2: 0.769531  
offset 9 in1: 0.839927 in2: 0.837891  
offset 10 in1: 0.833134 in2: 0.832031  
offset 11 in1: 0.844083 in2: 0.84375  
offset 13 in1: 0.990661 in2: 0.990234  
offset 14 in1: 0.879374 in2: 0.878906  
volk\_32f\_sqrt\_32f: fail on arch neon  
Best aligned arch: neon  
Best unaligned arch: neon  
Failure on volk\_32f\_sqrt\_32f  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_stddev\_32f(131071,1)  
generic completed in 0.419ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_stddev\_and\_mean\_32f\_x2(131071,1)  
generic completed in 0.441ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_subtract\_32f(131071,1)  
generic completed in 0.645ms  
neon completed in 0.613ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32f\_x3\_sum\_of\_poly\_32f(131071,1)  
generic completed in 1.544ms  
a\_neon completed in 1.059ms  
neonvert completed in 0.54ms  
Best aligned arch: neonvert  
Best unaligned arch: neonvert  
RUN\_VOLK\_TESTS: volk\_32i\_x2\_and\_32i(131071,1)  
neon completed in 0.62ms  
generic completed in 0.588ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32i\_s32f\_convert\_32f(131071,1)  
generic completed in 0.432ms  
a\_generic completed in 0.445ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32i\_x2\_or\_32i(131071,1)  
neon completed in 0.728ms  
generic completed in 0.7ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32f\_x2\_dot\_prod\_16i(131071,1)  
generic completed in 0.54ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_64f\_convert\_32f(131071,1)  
generic completed in 0.829ms  
a\_generic completed in 0.695ms  
Best aligned arch: a\_generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_64f\_x2\_max\_64f(131071,1)  
generic completed in 1.368ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_64f\_x2\_min\_64f(131071,1)  
generic completed in 1.371ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8ic\_deinterleave\_16i\_x2(131071,1)  
generic completed in 0.419ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8ic\_s32f\_deinterleave\_32f\_x2(131071,1)  
generic completed in 0.686ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8ic\_deinterleave\_real\_16i(131071,1)  
generic completed in 0.31ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8ic\_s32f\_deinterleave\_real\_32f(131071,1)  
generic completed in 0.409ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8ic\_deinterleave\_real\_8i(131071,1)  
generic completed in 0.173ms  
neon completed in 0.157ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_8ic\_x2\_multiply\_conjugate\_16ic(131071,1)  
generic completed in 2.468ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8ic\_x2\_s32f\_multiply\_conjugate\_32fc(131071,1)  
generic completed in 2.21ms  
Best aligned arch: generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_8i\_convert\_16i(131071,1)  
generic completed in 0.137ms  
a\_generic completed in 0.112ms  
neon completed in 0.115ms  
Best aligned arch: a\_generic  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_8i\_s32f\_convert\_32f(131071,1)  
generic completed in 0.187ms  
a\_generic completed in 0.179ms  
Best aligned arch: a\_generic  
Best unaligned arch: generic  
RUN\_VOLK\_TESTS: volk\_32fc\_s32fc\_multiply\_32fc(131071,1)  
generic completed in 1.461ms  
neon completed in 0.747ms  
a\_generic completed in 1.447ms  
offset 0 in1: 182.179 + 36.3883j in2: 146.351 + -160.164j  
offset 1 in1: -60.14 + -277.288j in2: -195.427 + -81.677j  
offset 2 in1: 268.287 + 258.704j in2: 205.207 + 82.4777j  
offset 3 in1: 254.856 + 307.423j in2: 0 + 0j  
offset 5 in1: -277.526 + -318.87j in2: -596.396 + -596.396j  
offset 6 in1: -5.68741 + 178.404j in2: -1.73927e-08 + 5.45578e-07j  
offset 7 in1: -279.86 + 44.2968j in2: 0 + 0j  
offset 9 in1: -262.193 + -123.933j in2: -386.127 + -386.127j  
offset 10 in1: 57.8619 + -289.394j in2: 1.76948e-07 + -8.84997e-07j  
offset 11 in1: -23.4022 + 307.941j in2: 0 + 0j  
volk\_32fc\_s32fc\_multiply\_32fc: fail on arch neon  
Best aligned arch: neon  
Best unaligned arch: neon  
Failure on volk\_32fc\_s32fc\_multiply\_32fc  
RUN\_VOLK\_TESTS: volk\_32f\_s32f\_multiply\_32f(131071,1)  
generic completed in 0.444ms  
u\_neon completed in 0.361ms  
a\_generic completed in 0.349ms  
Best aligned arch: a\_generic  
Best unaligned arch: u\_neon  
RUN\_VOLK\_TESTS: volk\_32f\_binary\_slicer\_32i(131071,1)  
generic completed in 0.538ms  
generic\_branchless completed in 0.532ms  
Best aligned arch: generic\_branchless  
Best unaligned arch: generic\_branchless  
RUN\_VOLK\_TESTS: volk\_32f\_binary\_slicer\_8i(131071,1)  
generic completed in 0.531ms  
generic\_branchless completed in 0.519ms  
neon completed in 0.324ms  
Best aligned arch: neon  
Best unaligned arch: neon  
RUN\_VOLK\_TESTS: volk\_32f\_tanh\_32f(131071,1)  
generic completed in 12.998ms  
series completed in 1.83ms  
Best aligned arch: series  
Best unaligned arch: series  
Kernel QA finished: 3 failures out of 91 tests.  
The following kernels failed QA:  
volk\_32fc\_magnitude\_32f  
volk\_32f\_sqrt\_32f  
volk\_32fc\_s32fc\_multiply\_32fc

---

<div class="post-metadata">

**Author:** ![Dennis\_G](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/838e76/32.png) [@Dennis\_G](https://www.ruby-forum.com/u/Dennis_G)\
**Post date:** [July 4, 2015, 10:33pm UTC](https://www.ruby-forum.com/t/two-questions-re-volk-armv7/242578/2 "2015-07-04T22:33:56Z")

</div>

Hi Dennis,

The 32fc\_s32fc\_multiply\_32fc should be fixed as of about 12 hours ago.  
Try  
updating your repo.

The other two have nothing ‘wrong’ with them. We use a QA tolerance to  
check results and it just happens that the tolerance is a bit too low on  
ARM. Those operations are hard to get accurate and fast because they  
involve a square root. NEON happens to have an inverse square root  
estimate  
which we use because it’s the fastest way to get a result. Unfortunately  
whenever we have to use the inverse square root estimate from NEON the  
accuracy drops a bit. In these cases since we actually care about the  
sqiare root we use the NEON inverse estimate which is also not  
particularly  
accurate. The two together make any square root-like operations in VOLK  
not  
particularly accurate in NEON. On the plus side it’s probably accurate  
enough for radio.

Nathan

---

<div class="post-metadata">

**Author:** ![Dennis\_G](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/838e76/32.png) [@Dennis\_G](https://www.ruby-forum.com/u/Dennis_G)\
**Post date:** [July 5, 2015, 3:09am UTC](https://www.ruby-forum.com/t/two-questions-re-volk-armv7/242578/3 "2015-07-05T03:09:04Z")

</div>

On Sat, 2015-07-04 at 16:32 -0400, West, Nathan wrote:

> Hi Dennis,
> 
> The 32fc\_s32fc\_multiply\_32fc should be fixed as of about 12 hours ago.  
> Try updating your repo.

Thanks. I did a pull and recompiled. Works better. The test now says:

…  
Kernel QA finished: 2 failures out of 91 tests.  
The following kernels failed QA:  
volk\_32fc\_magnitude\_32f  
volk\_32f\_sqrt\_32f

This is my ToolChain file, BTW:

root@cubieboard4:/mnt/volk# cat cmake/Toolchains/armv7.cmake  
########################################################################

# Toolchain file for building native on a ARM Cortex A8 w/ NEON

# Usage: cmake -DCMAKE\_TOOLCHAIN\_FILE=

########################################################################

# 

# Dennis G., July 2015

SET(CMAKE\_CXX\_FLAGS\_INIT “-march=armv7 -mfpu=neon -mfloat-abi=hard”)  
SET(CMAKE\_C\_FLAGS\_INIT “-march=armv7 -mfpu=neon -mfloat-abi=hard”)

I am native compiling on a CubieBoard4:

root@cubieboard4:/mnt/volk# uname -a  
Linux cubieboard4 3.4.39 #18 SMP PREEMPT Tue Apr 21 15:01:22 CST 2015  
armv7l GNU/Linux
