InsightToolkit fails to build on rawhide due to missing SSE instructions

Orion Poplawski orion at cora.nwra.com
Fri May 22 03:39:18 UTC 2015


On 05/21/2015 10:49 AM, Dominik 'Rathann' Mierzejewski wrote:
> On Thursday, 21 May 2015 at 17:06, Bruno Wolff III wrote:
>> On Thu, May 21, 2015 at 13:21:19 +0200,
>>   Sebastian Pölsterl <sebp at k-d-w.org> wrote:
>>>
>>> I'm currently struggling to get InsightToolkit to build again for
>>> rawhide. Currently, the problem is that it cannot detect SSE
>>> instructions when using koji [1]. It worked for a previous build [2] and
>>> still works when doing mockbuild locally.
>>
>> Aren't you supposed to test for SSE at runtime? Just because the
>> machine doing the build has or doesn't have SSE, doesn't mean the
>> machine that eventually runs the code will.
>
> Exactly. You cannot rely on SSE being present at build time for i686 builds.
> x86_64.
>
> Also, I can see in the log from the successful build that the same tests
> failed there as well, so the issue must be somewhere else:
>
> https://kojipkgs.fedoraproject.org//packages/InsightToolkit/4.7.1/4.fc23/data/logs/i686/build.log
> [...]
> -- Performing Test ITK_COMPILER_SUPPORTS_SSE2_64
> -- Performing Test ITK_COMPILER_SUPPORTS_SSE2_64 - Failed
> -- Performing Test ITK_COMPILER_SUPPORTS_SSE2_32
> -- Performing Test ITK_COMPILER_SUPPORTS_SSE2_32 - Failed
> -- Performing Test ITK_COMPILER_DOES_NOT_NEED_MSSE2_FLAG
> -- Performing Test ITK_COMPILER_DOES_NOT_NEED_MSSE2_FLAG - Failed
> [...]
>
> Regards,
> Dominik
>

Well, the errors are possibly related to that type of code:

In file included from 
/usr/lib/gcc/i686-redhat-linux/5.1.1/include/xmmintrin.h:31:0,
                  from 
/usr/lib/gcc/i686-redhat-linux/5.1.1/include/emmintrin.h:31,
                  from 
/builddir/build/BUILD/InsightToolkit-4.7.2/Modules/Core/Common/include/itkMathDetail.h:43,
                  from 
/builddir/build/BUILD/InsightToolkit-4.7.2/Modules/Core/Common/include/itkMath.h:32,
                  from 
/builddir/build/BUILD/InsightToolkit-4.7.2/Modules/Core/Transform/include/itkMatrixOffsetTransformBase.hxx:24,
                  from 
/builddir/build/BUILD/InsightToolkit-4.7.2/Modules/Core/Transform/include/itkMatrixOffsetTransformBase.h:533,
                  from 
/builddir/build/BUILD/InsightToolkit-4.7.2/Modules/Core/Transform/include/itkAffineTransform.h:21,
                  from 
/builddir/build/BUILD/InsightToolkit-4.7.2/Modules/IO/TransformHDF5/test/itkIOTransformHDF5Test.cxx:23:
/usr/lib/gcc/i686-redhat-linux/5.1.1/include/mmintrin.h: In function 
'__m64 _mm_cvtsi32_si64(int)':
/usr/lib/gcc/i686-redhat-linux/5.1.1/include/mmintrin.h:64:54: error: 
can't convert between vector values of different size
    return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
                                                       ^
/usr/lib/gcc/i686-redhat-linux/5.1.1/include/mmintrin.h: In function 
'int _mm_cvtsi64_si32(__m64)':
/usr/lib/gcc/i686-redhat-linux/5.1.1/include/mmintrin.h:107:53: error: 
cannot convert '__m64 {aka int}' to '__vector(2) int' for argument '1' 
to 'int __builtin_ia32_vec_ext_v2si(__vector(2) int, int)'
    return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);
                                                      ^

In InsightToolkit-4.7.2/Modules/Core/Common/include/itkMathDetail.h

#if defined( ITK_HAVE_EMMINTRIN_H ) && !defined( __GCCXML__ )
#include <emmintrin.h> // sse 2 intrinsics
#endif /* ITK_HAVE_EMMINTRIN_H && ! __GCCXML__ */

we are pulling in sse2 intrinsics.  But why is simply including the 
header failing?

-- 
Orion Poplawski
Technical Manager                     303-415-9701 x222
NWRA/CoRA Division                    FAX: 303-415-9702
3380 Mitchell Lane                  orion at cora.nwra.com
Boulder, CO 80301              http://www.cora.nwra.com


More information about the devel mailing list