Skip to content

_mm512_broadcast_i64x4 conversion error/_mm_cvtsi128_si64 missing on x86 #610

Description

@SunBlack

Tried to update the vcpkg port from 4.4.0 to 4.4.1 (see microsoft/vcpkg#52797). All CI jobs are fine there, except the x86-windows job:

[189/281] C:\PROGRA~2\MICROS~2\18\BUILDT~1\VC\Tools\MSVC\1451~1.362\bin\Hostx64\x86\cl.exe   /TP -DEMBREE_TARGET_AVX -DEMBREE_TARGET_AVX2 -DEMBREE_TARGET_AVX512 -DEMBREE_TARGET_SSE2 -DEMBREE_TARGET_SSE42 -DTASKING_INTERNAL -ID:\b\embree\x86-windows-dbg /nologo /DWIN32 /D_WINDOWS /utf-8 /GR /EHsc /MP  /MDd /Z7 /Ob0 /Od    /EHsc /MP /GR /Gy /GS- /DDEBUG /DTBB_USE_DEBUG /Ox /Oi /D__SSE__ /D__SSE2__ /D__SSE3__ /D__SSSE3__ /D__SSE4_1__ /D__SSE4_2__ /arch:AVX2 /arch:AVX512 /showIncludes /Fokernels\CMakeFiles\embree_avx512.dir\__\geometry\instance_array_intersector.cpp.avx512.cpp.obj /Fdkernels\CMakeFiles\embree_avx512.dir\embree_avx512.pdb /FS -c D:\b\embree\x86-windows-dbg\geometry\instance_array_intersector.cpp.avx512.cpp
FAILED: [code=2] kernels/CMakeFiles/embree_avx512.dir/__/geometry/instance_array_intersector.cpp.avx512.cpp.obj 
C:\PROGRA~2\MICROS~2\18\BUILDT~1\VC\Tools\MSVC\1451~1.362\bin\Hostx64\x86\cl.exe   /TP -DEMBREE_TARGET_AVX -DEMBREE_TARGET_AVX2 -DEMBREE_TARGET_AVX512 -DEMBREE_TARGET_SSE2 -DEMBREE_TARGET_SSE42 -DTASKING_INTERNAL -ID:\b\embree\x86-windows-dbg /nologo /DWIN32 /D_WINDOWS /utf-8 /GR /EHsc /MP  /MDd /Z7 /Ob0 /Od    /EHsc /MP /GR /Gy /GS- /DDEBUG /DTBB_USE_DEBUG /Ox /Oi /D__SSE__ /D__SSE2__ /D__SSE3__ /D__SSSE3__ /D__SSE4_1__ /D__SSE4_2__ /arch:AVX2 /arch:AVX512 /showIncludes /Fokernels\CMakeFiles\embree_avx512.dir\__\geometry\instance_array_intersector.cpp.avx512.cpp.obj /Fdkernels\CMakeFiles\embree_avx512.dir\embree_avx512.pdb /FS -c D:\b\embree\x86-windows-dbg\geometry\instance_array_intersector.cpp.avx512.cpp
cl : Command line warning D9025 : overriding '/Od' with '/Ox'
cl : Command line warning D9025 : overriding '/arch:AVX2' with '/arch:AVX512'
D:\b\embree\src\v4.4.1-f00ea9db0c.clean\common\simd\vllong8_avx512.h(57): error C2664: '__m512i _mm512_broadcast_i64x4(__m256i)': cannot convert argument 1 from 'const embree::vllong_impl<4>' to '__m256i'
D:\b\embree\src\v4.4.1-f00ea9db0c.clean\common\simd\vllong8_avx512.h(57): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.51.36231\include\zmmintrin.h(791): note: see declaration of '_mm512_broadcast_i64x4'
D:\b\embree\src\v4.4.1-f00ea9db0c.clean\common\simd\vllong8_avx512.h(57): note: while trying to match the argument list '(const embree::vllong_impl<4>)'
D:\b\embree\src\v4.4.1-f00ea9db0c.clean\common\simd\vllong8_avx512.h(294): error C3861: '_mm_cvtsi128_si64': identifier not found

Since there were so many changes from 4.4.0 to 4.4.1 that I can't quite figure out whether AVX512 was simply disabled on x86 before and isn't anymore, or whether the instructions used have changed and x86 doesn't support them, I think it would be better if someone here could tell me the best way to patch this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions