Commit graph

27 commits

Author SHA1 Message Date
Tanu Kaskinen
e8f1cfd9a5 tests: Fix function argument wrapping style in cpu-test.c. 2013-02-01 09:06:18 +02:00
Peter Meerwald
01a7c6b4e6 tests: Add remap test code to cpu-test
v2 (comments by Paul Menzel):
* generate test samples from -1..1, -0x8000..0x7fff
* check all output samples (not just half of them)

the idea is to compare the output of the C (reference) implementation
against the output of the optimized code path; currently, there are MMX
and SSE implementation for the mono-to-stereo remapper for s16 and float
sample formats

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
Cc: Paul Menzel <paulepanter@users.sourceforge.net>
2013-02-01 08:30:28 +02:00
Peter Meerwald
60aeb3dd23 tests: Test both, SSE and SSE2, sconv in cpu-test
SSE sconv was not tested before, only SSE2 was (on CPUs supporting both
instruction sets)

now both code path are tested on CPUs supporting both

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2013-02-01 07:30:06 +02:00
Peter Meerwald
2dc51f3371 tests: Fix potential out-of-bound access violation in svolume cpu-test
nsamples should be forced to be a multiple of channels; do so correctly
and don't make nsamples larger than it actually is

Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2013-02-01 07:23:16 +02:00
Peter Meerwald
3a942fc191 tests: Fix conversion typo in cpu-test
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2013-02-01 07:23:00 +02:00
Arun Raghavan
96fa87086d tests: Minor alignment adjustment fix for cpu-test 2012-10-30 20:34:20 +05:30
Arun Raghavan
03e9d3d0d7 tests: Fix a cpu-test debug message
We align at sample granularity and not byte granularity (which might
violate arch alignment requirements).
2012-10-30 15:00:45 +05:30
Arun Raghavan
f10e663d04 tests: Run svolume on different channel counts
This adds checks to run svolume tests with 1, 2 and 3 channels (we don't
run Orc with 3 channels since only 1/2-ch are implemented there).
2012-10-30 15:00:45 +05:30
Arun Raghavan
58b61a9d16 tests: Make cpu-test less verbose
Drops the correctness debug output since we want to run this several
times, and the output becomes much more verbose than required.
2012-10-30 11:27:19 +05:30
Arun Raghavan
a172db5c0d tests: Run svolume test for various sample alignments
Allows us to make sure that svolume works independently of sample
alignment, and that performance doesn't degrade based on this.
2012-10-30 11:18:08 +05:30
Arun Raghavan
654444eda9 tests: Minor cpu-test fixes for non-NEON builds
The s16->float test is only run on ARM with NEOn at the moment, so we
don't define that code in other cases.
2012-10-29 14:42:42 +05:30
Arun Raghavan
2ec891d892 tests: Print average outer-loop iteration time in cpu-test 2012-10-29 14:37:18 +05:30
Arun Raghavan
17b5a36130 tests: Increase sconv cpu-test timeout
This takes longer on ARM CPUs, especially older ones.
2012-10-29 14:37:18 +05:30
Arun Raghavan
32b4e848ae tests: Allow off-by-one error in sconv test
With some optimised sconv implementations (read NEON), rounding
inaccuracy might lead to a difference of 1 with the reference
implementation. The inaccuracy is worth the performance gain.

Also increases floating-point accuracy while printing errors to make
errors easier to analyse.
2012-10-29 14:36:33 +05:30
Peter Meerwald
f558327cca tests: Implement test code for ARM NEON sconv s16_to_float
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2012-10-29 13:13:38 +05:30
Peter Meerwald
bd7229b38a tests: Fix test description in cpu-test
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
2012-10-29 13:13:38 +05:30
Peter Meerwald
1319c4533a core: Add ARM NEON optimized sample conversion code
final:
* includes some minor style fixes and build-time changes to allow
  building a single binary for neon and non-neon systems
v4:
* fix for sample length < 4
v3:
* convert from intrinsics to inline assembly
v2:
* load and store data with vld1/vld1q and vst1/vst1q, resp., to work
  around alignment issues of compiler-generated vldmia instruction
* remove redundant check for NEON flags

Ubuntu/Linaro gcc 4.6.3
arm-linux-gnueabi-gcc -O2 -mcpu=cortex-a8 -mfloat-abi=softfp -mfpu=neon

runtime on beagle-xm:

D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_from_float
I: [pulseaudio] sconv_neon.c: NEON: 3754 usec.
I: [pulseaudio] sconv_neon.c: ref: 58594 usec.
D: [pulseaudio] sconv_neon.c: checking NEON sconv_s16le_to_float
I: [pulseaudio] sconv_neon.c: NEON: 1831 usec.
I: [pulseaudio] sconv_neon.c: ref: 10528 usec.
I: [pulseaudio] sconv_neon.c: Initialising ARM NEON optimized conversions.

conversion may be off by one for some samples due to rounding issues
2012-10-29 12:49:37 +05:30
Arun Raghavan
fe0ba245e5 tests: Run sconv tests with multiple alignments
This allows us to test the sconv code with the incoming samples at
various byte alignments. The test is also now split into correctness and
performance checks.
2012-10-25 10:11:24 +05:30
Arun Raghavan
7914e1286b tests: Add a basic sanity test to sconv cpu-test
This seems redundant with the previous check in that function, but it
makes sure that the result of the speed comparison is what we think it
is.
2012-10-24 10:12:06 +05:30
Arun Raghavan
472fe05297 tests: Reorganise cpu-test to reuse code
This factors out the basic measurement code for each test into a
separate block so that each test can be broken down into a basic
correctness test, and a performance comparison with minimum effort.
2012-10-24 10:12:06 +05:30
Arun Raghavan
3f44eb0559 tests: Factor out core sconv test code in cpu-test
This will let us add tests for non-SSE sconv tests.
2012-10-24 10:12:06 +05:30
Arun Raghavan
0d2bef6c78 tests: Add a copyright header to cpu-test 2012-10-24 10:12:05 +05:30
Arun Raghavan
b87067a007 tests: Minor cpu-test reorganisation
Make volume and conversion tests separate test cases.
2012-10-19 19:44:10 +05:30
Arun Raghavan
f8017bb19d tests: Factor out ARM svolume test into cpu-test
This allows us to run the testing code separately from the PulseAudio
daemon, which makes developing / regression testing this code a lot
easier.
2012-10-19 19:43:30 +05:30
Arun Raghavan
d53f16b6a2 tests: Make cpu-test less verbose 2012-08-04 08:23:35 +02:00
Arun Raghavan
b6f2ccf194 tests: Factor out Orc test code into cpu-test
Reorganises all the svolume core test code in cpu-test since it's the
same across MMX/SSE/etc.
2012-08-04 08:23:35 +02:00
Deng Zhengrong
c8cd89a7cb tests: add cpu test
It tests only x86 architecture right now.
2012-08-04 08:23:34 +02:00