[opus] Test failed!!

Jean-Marc Valin jmvalin at jmvalin.ca
Thu Nov 26 16:24:27 PST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Indeed, the reason that -msse* are there is because it's needed for
actually compiling the tests (because of the #include of the
intrinsics). But of course, -msse* has the side effect of (sometimes)
producing illegal instructions. We'll definitely need to fix this, but
I don't know how yet. In the mean time, you can either trust that the
library itself is correct, or compile without --enable-intrinsics

	Jean-Marc

On 11/26/2015 07:20 PM, Jesus Cea wrote:
> On 26/11/15 20:00, Jean-Marc Valin wrote:
>> Hi Jesus,
>> 
>> Thanks for the report. As far as I can tell, what's happening is
>> that when intrinsics are enabled, we compile all tests with
>> -msse4.1, even when it's only run-time detected. In most cases,
>> that doesn't cause any issue, but sometimes the compiler will
>> take the C code and generate an SSEx instruction on its own. I
>> think this is what's happening for you. The actual encoder and
>> decoder should work fine since they are compiled without -msse
>> except for the files that are behind auto-detect.
> 
> Good guess. I have tried this:
> 
> 1. Compile everything as is. 2. "make check" -> Illegal
> Instruction. Good. 3. Delete file
> "celt/tests/test_unit_mathopsi.o". 4. Edit "Makefile" and delete
> all "-msse*" directives. 5. "make". It should rebuild file
> "celt/tests/test_unit_mathops". 6. Error:
> 
> """ # make make  all-recursive make[1]: Entering directory
> `/tmp/opus-1.1.1' make[2]: Entering directory `/tmp/opus-1.1.1' CC
> celt/tests/test_unit_mathops.o In file included from
> ./celt/x86/celt_lpc_sse.c:34:0, from
> celt/tests/test_unit_mathops.c:63: 
> /usr/lib/gcc/x86_64-linux-gnu/4.8/include/smmintrin.h:31:3: error: 
> #error "SSE4.1 instruction set not enabled" # error "SSE4.1
> instruction set not enabled" ^ make[2]: ***
> [celt/tests/test_unit_mathops.o] Error 1 make[2]: Leaving directory
> `/tmp/opus-1.1.1' make[1]: *** [all-recursive] Error 1 make[1]:
> Leaving directory `/tmp/opus-1.1.1' make: *** [all] Error 2 """
> 
> I didn't check if the resulting library is working correctly. This
> is a production machine :-(.
> 
> 
> 
> _______________________________________________ opus mailing list 
> opus at xiph.org http://lists.xiph.org/mailman/listinfo/opus
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJWV6K3AAoJEJ6/8sItn9q9bikIALCjl3JoSE6WzQBeocHhHA5s
hMni6ehX0e5rmDly+jtFSABB4AEkKophiHHYAblVWV+VMuexY6URGiADS1XtfMk8
KujHncHp/KpOsRhBhr07qgUzsTzCmBStVrkgEb8gIhy4aYWgaS1ZrRC/CHwyAMlJ
Iz1NEDEVvWVQYy6nb9R/B699j39YF0+n7n1rQTJDR5OgabD4bZ//Q67lWmNf6C5v
fSwUmydfOzcAy1EJzf8Bsx8lmNDsC/LWRKsTpDXzVnIoyx0N4C5S1Ab8GFiQcafR
OxRFELfOI/jPiisc4JlpDHw+TYOskY6D8rEuGbDvswHvw/I4gQSMS4tpQPwVnV0=
=6cGh
-----END PGP SIGNATURE-----


More information about the opus mailing list