You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jianglk.darker 7ee447c011
v811_spc009_project
4 months ago
..
Android.bp v811_spc009_project 4 months ago
Init.s v811_spc009_project 4 months ago
InitCache.s v811_spc009_project 4 months ago
LICENSE v811_spc009_project 4 months ago
METADATA v811_spc009_project 4 months ago
MODULE_LICENSE_MIT v811_spc009_project 4 months ago
Makefile v811_spc009_project 4 months ago
Makefile.gcc v811_spc009_project 4 months ago
OWNERS v811_spc009_project 4 months ago
README v811_spc009_project 4 months ago
armscript.inc v811_spc009_project 4 months ago
compute_ref.axf v811_spc009_project 4 months ago
compute_ref.c v811_spc009_project 4 months ago
compute_ref.gccarm v811_spc009_project 4 months ago
compute_ref.gccarm-rvct v811_spc009_project 4 months ago
compute_ref_data.c v811_spc009_project 4 months ago
expected_input4gcc-nofp16.txt v811_spc009_project 4 months ago
expected_input4gcc.txt v811_spc009_project 4 months ago
license.html v811_spc009_project 4 months ago
ref-rvct-all.txt v811_spc009_project 4 months ago
ref-rvct-neon-nofp16.txt v811_spc009_project 4 months ago
ref-rvct-neon.txt v811_spc009_project 4 months ago
ref_dsp.c v811_spc009_project 4 months ago
ref_dspfns.c v811_spc009_project 4 months ago
ref_integer.c v811_spc009_project 4 months ago
ref_v_binary_op.c v811_spc009_project 4 months ago
ref_v_binary_sat_op.c v811_spc009_project 4 months ago
ref_v_comp_f_op.c v811_spc009_project 4 months ago
ref_v_comp_op.c v811_spc009_project 4 months ago
ref_v_unary_op.c v811_spc009_project 4 months ago
ref_v_unary_sat_op.c v811_spc009_project 4 months ago
ref_vaba.c v811_spc009_project 4 months ago
ref_vabal.c v811_spc009_project 4 months ago
ref_vabd.c v811_spc009_project 4 months ago
ref_vabdl.c v811_spc009_project 4 months ago
ref_vabs.c v811_spc009_project 4 months ago
ref_vadd.c v811_spc009_project 4 months ago
ref_vaddhn.c v811_spc009_project 4 months ago
ref_vaddl.c v811_spc009_project 4 months ago
ref_vaddw.c v811_spc009_project 4 months ago
ref_vand.c v811_spc009_project 4 months ago
ref_vbic.c v811_spc009_project 4 months ago
ref_vbsl.c v811_spc009_project 4 months ago
ref_vcage.c v811_spc009_project 4 months ago
ref_vcagt.c v811_spc009_project 4 months ago
ref_vcale.c v811_spc009_project 4 months ago
ref_vcalt.c v811_spc009_project 4 months ago
ref_vceq.c v811_spc009_project 4 months ago
ref_vcge.c v811_spc009_project 4 months ago
ref_vcgt.c v811_spc009_project 4 months ago
ref_vcle.c v811_spc009_project 4 months ago
ref_vcls.c v811_spc009_project 4 months ago
ref_vclt.c v811_spc009_project 4 months ago
ref_vclz.c v811_spc009_project 4 months ago
ref_vcnt.c v811_spc009_project 4 months ago
ref_vcombine.c v811_spc009_project 4 months ago
ref_vcreate.c v811_spc009_project 4 months ago
ref_vcvt.c v811_spc009_project 4 months ago
ref_vdup.c v811_spc009_project 4 months ago
ref_vdup_lane.c v811_spc009_project 4 months ago
ref_veor.c v811_spc009_project 4 months ago
ref_vext.c v811_spc009_project 4 months ago
ref_vget_high.c v811_spc009_project 4 months ago
ref_vget_lane.c v811_spc009_project 4 months ago
ref_vget_low.c v811_spc009_project 4 months ago
ref_vhadd.c v811_spc009_project 4 months ago
ref_vhsub.c v811_spc009_project 4 months ago
ref_vld1.c v811_spc009_project 4 months ago
ref_vld1_dup.c v811_spc009_project 4 months ago
ref_vld1_lane.c v811_spc009_project 4 months ago
ref_vldX.c v811_spc009_project 4 months ago
ref_vldX_dup.c v811_spc009_project 4 months ago
ref_vldX_lane.c v811_spc009_project 4 months ago
ref_vmax.c v811_spc009_project 4 months ago
ref_vmin.c v811_spc009_project 4 months ago
ref_vmla.c v811_spc009_project 4 months ago
ref_vmla_lane.c v811_spc009_project 4 months ago
ref_vmla_n.c v811_spc009_project 4 months ago
ref_vmlal.c v811_spc009_project 4 months ago
ref_vmlal_lane.c v811_spc009_project 4 months ago
ref_vmlal_n.c v811_spc009_project 4 months ago
ref_vmls.c v811_spc009_project 4 months ago
ref_vmls_lane.c v811_spc009_project 4 months ago
ref_vmls_n.c v811_spc009_project 4 months ago
ref_vmlsl.c v811_spc009_project 4 months ago
ref_vmlsl_lane.c v811_spc009_project 4 months ago
ref_vmlsl_n.c v811_spc009_project 4 months ago
ref_vmovl.c v811_spc009_project 4 months ago
ref_vmovn.c v811_spc009_project 4 months ago
ref_vmul.c v811_spc009_project 4 months ago
ref_vmul_lane.c v811_spc009_project 4 months ago
ref_vmul_n.c v811_spc009_project 4 months ago
ref_vmull.c v811_spc009_project 4 months ago
ref_vmull_lane.c v811_spc009_project 4 months ago
ref_vmull_n.c v811_spc009_project 4 months ago
ref_vmvn.c v811_spc009_project 4 months ago
ref_vneg.c v811_spc009_project 4 months ago
ref_vorn.c v811_spc009_project 4 months ago
ref_vorr.c v811_spc009_project 4 months ago
ref_vpadal.c v811_spc009_project 4 months ago
ref_vpadd.c v811_spc009_project 4 months ago
ref_vpaddl.c v811_spc009_project 4 months ago
ref_vpmax.c v811_spc009_project 4 months ago
ref_vpmin.c v811_spc009_project 4 months ago
ref_vqabs.c v811_spc009_project 4 months ago
ref_vqadd.c v811_spc009_project 4 months ago
ref_vqdmlal.c v811_spc009_project 4 months ago
ref_vqdmlal_lane.c v811_spc009_project 4 months ago
ref_vqdmlal_n.c v811_spc009_project 4 months ago
ref_vqdmlsl.c v811_spc009_project 4 months ago
ref_vqdmlsl_lane.c v811_spc009_project 4 months ago
ref_vqdmlsl_n.c v811_spc009_project 4 months ago
ref_vqdmulh.c v811_spc009_project 4 months ago
ref_vqdmulh_lane.c v811_spc009_project 4 months ago
ref_vqdmulh_n.c v811_spc009_project 4 months ago
ref_vqdmull.c v811_spc009_project 4 months ago
ref_vqdmull_lane.c v811_spc009_project 4 months ago
ref_vqdmull_n.c v811_spc009_project 4 months ago
ref_vqmovn.c v811_spc009_project 4 months ago
ref_vqmovun.c v811_spc009_project 4 months ago
ref_vqneg.c v811_spc009_project 4 months ago
ref_vqrdmulh.c v811_spc009_project 4 months ago
ref_vqrdmulh_lane.c v811_spc009_project 4 months ago
ref_vqrdmulh_n.c v811_spc009_project 4 months ago
ref_vqrshl.c v811_spc009_project 4 months ago
ref_vqrshrn_n.c v811_spc009_project 4 months ago
ref_vqrshrun_n.c v811_spc009_project 4 months ago
ref_vqshl.c v811_spc009_project 4 months ago
ref_vqshl_n.c v811_spc009_project 4 months ago
ref_vqshlu_n.c v811_spc009_project 4 months ago
ref_vqshrn_n.c v811_spc009_project 4 months ago
ref_vqshrun_n.c v811_spc009_project 4 months ago
ref_vqsub.c v811_spc009_project 4 months ago
ref_vraddhn.c v811_spc009_project 4 months ago
ref_vrecpe.c v811_spc009_project 4 months ago
ref_vrecps.c v811_spc009_project 4 months ago
ref_vreinterpret.c v811_spc009_project 4 months ago
ref_vrev.c v811_spc009_project 4 months ago
ref_vrhadd.c v811_spc009_project 4 months ago
ref_vrshl.c v811_spc009_project 4 months ago
ref_vrshr_n.c v811_spc009_project 4 months ago
ref_vrshrn_n.c v811_spc009_project 4 months ago
ref_vrsqrte.c v811_spc009_project 4 months ago
ref_vrsqrts.c v811_spc009_project 4 months ago
ref_vrsra_n.c v811_spc009_project 4 months ago
ref_vrsubhn.c v811_spc009_project 4 months ago
ref_vsXi_n.c v811_spc009_project 4 months ago
ref_vset_lane.c v811_spc009_project 4 months ago
ref_vshl.c v811_spc009_project 4 months ago
ref_vshl_n.c v811_spc009_project 4 months ago
ref_vshll_n.c v811_spc009_project 4 months ago
ref_vshr_n.c v811_spc009_project 4 months ago
ref_vshrn_n.c v811_spc009_project 4 months ago
ref_vsli_n.c v811_spc009_project 4 months ago
ref_vsra_n.c v811_spc009_project 4 months ago
ref_vsri_n.c v811_spc009_project 4 months ago
ref_vst1_lane.c v811_spc009_project 4 months ago
ref_vstX_lane.c v811_spc009_project 4 months ago
ref_vsub.c v811_spc009_project 4 months ago
ref_vsubhn.c v811_spc009_project 4 months ago
ref_vsubl.c v811_spc009_project 4 months ago
ref_vsubw.c v811_spc009_project 4 months ago
ref_vtbX.c v811_spc009_project 4 months ago
ref_vtrn.c v811_spc009_project 4 months ago
ref_vtst.c v811_spc009_project 4 months ago
ref_vuzp.c v811_spc009_project 4 months ago
ref_vzip.c v811_spc009_project 4 months ago
retarget.c v811_spc009_project 4 months ago
scatter.scat v811_spc009_project 4 months ago
stm-arm-neon-ref.h v811_spc009_project 4 months ago

README

ARM Neon reference tests
========================
This package contains extensive tests for the ARM/Neon instructions.

It works by building a program which uses all of them, and then
executing it on an actual target or a simulator.

It can be used to validate the simulator against an actual HW target,
or to validate C compilers in presence of Neon intrinsics calls.

The supplied Makefile enables to build with both ARM RVCT compiler and
GNU GCC (for the ARM target), and supports execution with ARM RVDEBUG
on an ARM simulator and with QEMU.

For convenience, the ARM ELF binary file (as compiled with RVCT) is
supplied (compute_ref.axf), as well as expected output (ref-rvct.txt).

A second file containing expected output is also supplied:
ref-rvct-neon.txt, which contains only the results of the Neon
instrinsics tests. It is aimed at being used to check GCC's results,
since this compiler does not support the integer & dsp builtins whose
results are also present in ref-rvct.txt.

Typical usage when used to debug QEmu:
$ make all # to build the test program with ARM rvct and execute with QEmu
$ make check # to compare the results with the expected output


Known issues:
-------------
Some tests currently fail to build with GCC/ARM:
- missing include files: dspfns.h, armdsp.h

As GCC/ARM provides no support for the
Neon_Cumulative_Saturation/fpsrc register, auxiliary accessor
functions have been implemented in stm-arm-neon-ref.h.

Engineering:
------------
In order to cover all the Neon instructions extensively, these tests
make intensive use of the C-preprocessor, to save maintenance efforts.

Most tests (the more regular ones) share a common basic structure. In
general, variable names are suffixed by their type name, so as to
differentiate variables with the same purpose but of differente types.
Hence vector1_int8x8, vector1_int16x4 etc...

For instance in ref_vmul.c the layout of the code is as follows:

- declare input and output vectors (named 'vector1', 'vector2' and
  'vector_res') of each possible type (s/u, 8/16/32/64 bits).

- clean the result buffers.

- initialize input vectors 'vector1' and 'vector2'.

- call each variant of the intrinsic and store the result in a buffer
  named 'buffer', whose contents is printed after execution.

One can then compare the actual result with the expected one.