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