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.
sandy 99da0f2c72 pl286 release code 4 years ago
..
Android.mk pl286 release code 4 years ago
Init.s pl286 release code 4 years ago
InitCache.s pl286 release code 4 years ago
LICENSE pl286 release code 4 years ago
Makefile pl286 release code 4 years ago
Makefile.gcc pl286 release code 4 years ago
README pl286 release code 4 years ago
armscript.inc pl286 release code 4 years ago
compute_ref.axf pl286 release code 4 years ago
compute_ref.c pl286 release code 4 years ago
compute_ref.gccarm pl286 release code 4 years ago
compute_ref.gccarm-rvct pl286 release code 4 years ago
compute_ref_data.c pl286 release code 4 years ago
expected_input4gcc-nofp16.txt pl286 release code 4 years ago
expected_input4gcc.txt pl286 release code 4 years ago
license.html pl286 release code 4 years ago
ref-rvct-all.txt pl286 release code 4 years ago
ref-rvct-neon-nofp16.txt pl286 release code 4 years ago
ref-rvct-neon.txt pl286 release code 4 years ago
ref_dsp.c pl286 release code 4 years ago
ref_dspfns.c pl286 release code 4 years ago
ref_integer.c pl286 release code 4 years ago
ref_v_binary_op.c pl286 release code 4 years ago
ref_v_binary_sat_op.c pl286 release code 4 years ago
ref_v_comp_f_op.c pl286 release code 4 years ago
ref_v_comp_op.c pl286 release code 4 years ago
ref_v_unary_op.c pl286 release code 4 years ago
ref_v_unary_sat_op.c pl286 release code 4 years ago
ref_vaba.c pl286 release code 4 years ago
ref_vabal.c pl286 release code 4 years ago
ref_vabd.c pl286 release code 4 years ago
ref_vabdl.c pl286 release code 4 years ago
ref_vabs.c pl286 release code 4 years ago
ref_vadd.c pl286 release code 4 years ago
ref_vaddhn.c pl286 release code 4 years ago
ref_vaddl.c pl286 release code 4 years ago
ref_vaddw.c pl286 release code 4 years ago
ref_vand.c pl286 release code 4 years ago
ref_vbic.c pl286 release code 4 years ago
ref_vbsl.c pl286 release code 4 years ago
ref_vcage.c pl286 release code 4 years ago
ref_vcagt.c pl286 release code 4 years ago
ref_vcale.c pl286 release code 4 years ago
ref_vcalt.c pl286 release code 4 years ago
ref_vceq.c pl286 release code 4 years ago
ref_vcge.c pl286 release code 4 years ago
ref_vcgt.c pl286 release code 4 years ago
ref_vcle.c pl286 release code 4 years ago
ref_vcls.c pl286 release code 4 years ago
ref_vclt.c pl286 release code 4 years ago
ref_vclz.c pl286 release code 4 years ago
ref_vcnt.c pl286 release code 4 years ago
ref_vcombine.c pl286 release code 4 years ago
ref_vcreate.c pl286 release code 4 years ago
ref_vcvt.c pl286 release code 4 years ago
ref_vdup.c pl286 release code 4 years ago
ref_vdup_lane.c pl286 release code 4 years ago
ref_veor.c pl286 release code 4 years ago
ref_vext.c pl286 release code 4 years ago
ref_vget_high.c pl286 release code 4 years ago
ref_vget_lane.c pl286 release code 4 years ago
ref_vget_low.c pl286 release code 4 years ago
ref_vhadd.c pl286 release code 4 years ago
ref_vhsub.c pl286 release code 4 years ago
ref_vld1.c pl286 release code 4 years ago
ref_vld1_dup.c pl286 release code 4 years ago
ref_vld1_lane.c pl286 release code 4 years ago
ref_vldX.c pl286 release code 4 years ago
ref_vldX_dup.c pl286 release code 4 years ago
ref_vldX_lane.c pl286 release code 4 years ago
ref_vmax.c pl286 release code 4 years ago
ref_vmin.c pl286 release code 4 years ago
ref_vmla.c pl286 release code 4 years ago
ref_vmla_lane.c pl286 release code 4 years ago
ref_vmla_n.c pl286 release code 4 years ago
ref_vmlal.c pl286 release code 4 years ago
ref_vmlal_lane.c pl286 release code 4 years ago
ref_vmlal_n.c pl286 release code 4 years ago
ref_vmls.c pl286 release code 4 years ago
ref_vmls_lane.c pl286 release code 4 years ago
ref_vmls_n.c pl286 release code 4 years ago
ref_vmlsl.c pl286 release code 4 years ago
ref_vmlsl_lane.c pl286 release code 4 years ago
ref_vmlsl_n.c pl286 release code 4 years ago
ref_vmovl.c pl286 release code 4 years ago
ref_vmovn.c pl286 release code 4 years ago
ref_vmul.c pl286 release code 4 years ago
ref_vmul_lane.c pl286 release code 4 years ago
ref_vmul_n.c pl286 release code 4 years ago
ref_vmull.c pl286 release code 4 years ago
ref_vmull_lane.c pl286 release code 4 years ago
ref_vmull_n.c pl286 release code 4 years ago
ref_vmvn.c pl286 release code 4 years ago
ref_vneg.c pl286 release code 4 years ago
ref_vorn.c pl286 release code 4 years ago
ref_vorr.c pl286 release code 4 years ago
ref_vpadal.c pl286 release code 4 years ago
ref_vpadd.c pl286 release code 4 years ago
ref_vpaddl.c pl286 release code 4 years ago
ref_vpmax.c pl286 release code 4 years ago
ref_vpmin.c pl286 release code 4 years ago
ref_vqabs.c pl286 release code 4 years ago
ref_vqadd.c pl286 release code 4 years ago
ref_vqdmlal.c pl286 release code 4 years ago
ref_vqdmlal_lane.c pl286 release code 4 years ago
ref_vqdmlal_n.c pl286 release code 4 years ago
ref_vqdmlsl.c pl286 release code 4 years ago
ref_vqdmlsl_lane.c pl286 release code 4 years ago
ref_vqdmlsl_n.c pl286 release code 4 years ago
ref_vqdmulh.c pl286 release code 4 years ago
ref_vqdmulh_lane.c pl286 release code 4 years ago
ref_vqdmulh_n.c pl286 release code 4 years ago
ref_vqdmull.c pl286 release code 4 years ago
ref_vqdmull_lane.c pl286 release code 4 years ago
ref_vqdmull_n.c pl286 release code 4 years ago
ref_vqmovn.c pl286 release code 4 years ago
ref_vqmovun.c pl286 release code 4 years ago
ref_vqneg.c pl286 release code 4 years ago
ref_vqrdmulh.c pl286 release code 4 years ago
ref_vqrdmulh_lane.c pl286 release code 4 years ago
ref_vqrdmulh_n.c pl286 release code 4 years ago
ref_vqrshl.c pl286 release code 4 years ago
ref_vqrshrn_n.c pl286 release code 4 years ago
ref_vqrshrun_n.c pl286 release code 4 years ago
ref_vqshl.c pl286 release code 4 years ago
ref_vqshl_n.c pl286 release code 4 years ago
ref_vqshlu_n.c pl286 release code 4 years ago
ref_vqshrn_n.c pl286 release code 4 years ago
ref_vqshrun_n.c pl286 release code 4 years ago
ref_vqsub.c pl286 release code 4 years ago
ref_vraddhn.c pl286 release code 4 years ago
ref_vrecpe.c pl286 release code 4 years ago
ref_vrecps.c pl286 release code 4 years ago
ref_vreinterpret.c pl286 release code 4 years ago
ref_vrev.c pl286 release code 4 years ago
ref_vrhadd.c pl286 release code 4 years ago
ref_vrshl.c pl286 release code 4 years ago
ref_vrshr_n.c pl286 release code 4 years ago
ref_vrshrn_n.c pl286 release code 4 years ago
ref_vrsqrte.c pl286 release code 4 years ago
ref_vrsqrts.c pl286 release code 4 years ago
ref_vrsra_n.c pl286 release code 4 years ago
ref_vrsubhn.c pl286 release code 4 years ago
ref_vsXi_n.c pl286 release code 4 years ago
ref_vset_lane.c pl286 release code 4 years ago
ref_vshl.c pl286 release code 4 years ago
ref_vshl_n.c pl286 release code 4 years ago
ref_vshll_n.c pl286 release code 4 years ago
ref_vshr_n.c pl286 release code 4 years ago
ref_vshrn_n.c pl286 release code 4 years ago
ref_vsli_n.c pl286 release code 4 years ago
ref_vsra_n.c pl286 release code 4 years ago
ref_vsri_n.c pl286 release code 4 years ago
ref_vst1_lane.c pl286 release code 4 years ago
ref_vstX_lane.c pl286 release code 4 years ago
ref_vsub.c pl286 release code 4 years ago
ref_vsubhn.c pl286 release code 4 years ago
ref_vsubl.c pl286 release code 4 years ago
ref_vsubw.c pl286 release code 4 years ago
ref_vtbX.c pl286 release code 4 years ago
ref_vtrn.c pl286 release code 4 years ago
ref_vtst.c pl286 release code 4 years ago
ref_vuzp.c pl286 release code 4 years ago
ref_vzip.c pl286 release code 4 years ago
retarget.c pl286 release code 4 years ago
scatter.scat pl286 release code 4 years ago
stm-arm-neon-ref.h pl286 release code 4 years 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.