Assembly code fails on x32

Issue #198 resolved
Bertrand Jacquin created an issue

x32 is a somewhat new ABI for x86_64 as described here: https://sites.google.com/site/x32abi

ENABLE_ASSEMBLY is enabled by default if yasm is available and arch x86 according to source/CMakeLists.txt

However, today assembly code does not support x32 ABI as the following build error can be observed:

[ 36%] Building ASM_YASM object common/CMakeFiles/common.dir/x86/sad16-a.asm.o
cd /var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source-abi_x86_x32.x32/common && /usr/bin/yasm -f elf32 -DARCH_X86_64=0 -DHAVE_ALIGNED_STACK=1 -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10  -o CMakeFiles/common.dir/x86/sad16-a.asm.o /var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source/common/x86/sad16-a.asm
/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source/common/x86/sad16-a.asm:380: error: undefined symbol `m8' (first use)
/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source/common/x86/sad16-a.asm:380: error:  (Each undefined symbol is reported only once.)
/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source/common/x86/sad16-a.asm:380: error: (HADDUWD:1) undefined symbol `sizeofm8' in preprocessor
/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source/common/x86/sad16-a.asm:380: error: (HADDD:1) undefined symbol `sizeofm8' in preprocessor
/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source/common/x86/sad16-a.asm:380: error: (HADDD:8) undefined symbol `sizeofm8' in preprocessor
common/CMakeFiles/common.dir/build.make:222: recipe for target 'common/CMakeFiles/common.dir/x86/sad16-a.asm.o' failed
make[2]: *** [common/CMakeFiles/common.dir/x86/sad16-a.asm.o] Error 1
make[2]: Leaving directory '/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source-abi_x86_x32.x32'
CMakeFiles/Makefile2:317: recipe for target 'common/CMakeFiles/common.dir/all' failed
make[1]: *** [common/CMakeFiles/common.dir/all] Error 2
make[1]: Leaving directory '/var/tmp/portage/media-libs/x265-1.7/work/x265_1.7/source-abi_x86_x32.x32'
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Is there any plan to support x32 ABI and/or to disable assembly code for it by default ?

Comments (3)

  1. Log in to comment