[flac-dev] [PATCH] cpu.h: add defines for clang

lvqcl
Sun, 12 Feb 2017 11:27:41 -0000

Erik de Castro Lopo wrote:

> How reliable a test is that? I do 99.9% of my dev work on a laptop
> and whenever I need to benchmark something I need to do so on a
> desketop machine because the laptop doesn't give consistent results.

About 1.5 years ago I tested AVX2 speed increase on Haswell (i7-4770)
using -8 encoding preset. The biggest difference between AVX2 enabled
and disabled was 35% (64-bit flac.exe, 24-bit WAV input file).
The smallest difference was 10% (32-bit flac.exe, 16-bit WAV input file).


> Disassembly of the object files (before and after) is here:
>
>     http://mega-nerd.com/tmp/stream_encoder_intrin_avx2-before.txt
>     http://mega-nerd.com/tmp/stream_encoder_intrin_avx2-after.txt
>
> This is with clang version 3.8.1 from Debian testing.

I forgot that all avx2 functions are inside "#ifdef
FLAC__AVX2_SUPPORTED"
conditional, so they simply don't exist if FLAC__AVX2_SUPPORTED is not set.

Anyway, stream_encoder_intrin_avx2-after.txt shows that the code
contains AVX2 instructions such as vpabsd/vpaddd/vphaddd, so
this function was compiled properly.