This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch ARM/testsuite 00/22] Neon intrinsics executable tests


This is patch series is a more complete version of the patch I sent
some time ago:
https://gcc.gnu.org/ml/gcc-patches/2013-10/msg00624.html

I have created a series of patches to help review.  The 1st one adds
some documentation, the common .h files defining helpers used in the
actual tests, and two real tests (vaba and vld1) to show how the
various macros are used.

The next patches add other tests (grouped when they use a common
framework).

Looking at the .exp file, you'll notice that the tests are performed twice:
* once using c-torture-execute to make sure they execute correctly
  under various levels of optimization. In this case dejagnu
  directives embedded in each .c test file are ignored.

* once using gcc-dg-runtest, which enables compiling with various
  optimization levels and scanning the generated assembly for some
  code sequences. Currently, only the vadd test contains some
  scan-assembler-times directives, as an example. We can add such
  directives to other tests later.

Regarding the results of these tests on target
arm-none-linux-gnueabihf, note that:
* vclz tests currently fail at optimization levels starting with -O1
* vqadd test fails when compiled with -Os
* vadd scan-assembler fails for vadd.i64 (because the compiler uses
  core registers instead of Neon ones. Not sure if this should be
  considered as a bug or if the test should be changed)
* this gives 1164 PASS and 18 FAIL

I have not looked at the results in detail on other arm* and aarch64*
targets, but there are some other failures.

I have many more tests to convert (currently 40 done, 96 remain), and
my plan is to work on the rest once this set has been accepted.

As of the ChangeLog entry, this patch only adds new files in
testsuite/gcc.target/arm/neon-intrinsics (which is new too).

OK for trunk?

Thanks,

Christophe.

Christophe Lyon (22):
  Neon intrinsics execution tests initial framework.
  Add unary operators: vabs and vneg.
  Add binary operators: vadd, vand, vbic, veor, vorn, vorr, vsub.
  Add comparison operators: vceq, vcge, vcgt, vcle and vclt.
  Add comparison operators with floating-point operands: vcage, vcagt,  
      vcale and cvalt.
  Add unary saturating operators: vqabs and vqneg.
  Add binary saturating operators: vqadd, vqsub.
  Add vabal tests.
  Add vabd tests.
  Add vabdl tests.
  Add vaddhn tests.
  Add vaddl tests.
  Add vaddw tests.
  Add vbsl tests.
  Add vclz tests.
  Add vdup and vmov tests.
  Add vld1_dup tests.
  Add vld2/vld3/vld4 tests.
  Add vld2_lane, vld3_lane and vld4_lane tests.
  Add vmul tests.
  Add vshl tests.
  Add vuzp and vzip tests.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]