Intel C Compiler

From MultimediaWiki
Revision as of 12:41, 21 March 2009 by Ce (talk | contribs) (Add a reason to use icc)
Jump to navigation Jump to search

Intel sells a C++ compiler for Windows, Linux and OS X that is freely available for non-commercial usage. The Linux version of the compiler can be used to compile binaries of MPlayer and FFmpeg that are known to be slightly more optimized speed-wise than binaries compiled with gcc.

Note that the Windows version of the compiler probably cannot be used to compile useful binaries of FFmpeg, because the Intel compiler uses Microsoft's assembler that does not understand FFmpeg's asm syntax.

FFmpeg compilation with icc is supported for the following versions:

10.1

10.1 32 bit

Versions prior to 10.1.021 cannot compile the program audiogen, needed for regression tests. A possible workaround is using gcc to compile audiogen:

./configure --cc=icc --host-cc=gcc

10.1.017 is covered by FATE.

10.1 64 bit

All versions should be supported and pass regression tests.

11.0

11.0 32 bit

All versions should be supported and pass regression tests.

11.0 64 bit

At least 11.0.081 is known to badly compile the following files if optimization is used:

  • libavcodec/h263.c
  • libavcodec/wmv2dec.c
The functon wmv2_pred_motion() gets miscompiled: A printf() after the initialization of *C shows that mot_val, A[], B[] and C[] often differ from compilation with -O0 while xy and wrap are unchanged.
Artefacts are clearly visible.
  • libavcodec/snow.c

Possible workarounds are to compile these files with -O0, with icc 10.1 or gcc. With one of these workarounds, regression tests pass.

11.1 Beta

11.1 32 bit

11.1.023 should be supported and pass regression tests.

11.1 64 bit

11.1.023 has the same issues as 11.0.081, earlier beta versions were not able to compile FFmpeg.