<html><head></head><body><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"><div></div>
            <div>speaking about AVX512, what's the speed up it is offering as compared to AVX2?</div><div><br></div><div>thx</div><div>--Chekib</div><div><br></div>
            
            <div id="ydpb047803yahoo_quoted_1569157963" class="ydpb047803yahoo_quoted">
                <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                    
                    <div>
                        Le mardi 21 novembre 2017 à 04:49:30 UTC−8, Andrey Semashev <andrey.semashev@gmail.com> a écrit :
                    </div>
                    <div><br></div>
                    <div><br></div>
                    <div><div dir="ltr">On 11/21/17 15:25, Sean McGovern wrote:<br></div><div dir="ltr">> Hi,<br></div><div dir="ltr">> <br></div><div dir="ltr">> Is this really necessary?<br></div><div dir="ltr">> <br></div><div dir="ltr">> Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.<br></div><div dir="ltr"><br></div><div dir="ltr">yasm does not support AVX-512 and has very low activity recently[1]. <br></div><div dir="ltr">nasm supports AVX-512 since 2.13[2]. Even if x265 does not use AVX-512 <br></div><div dir="ltr">currently, this is the right way forward in the long run. It may be <br></div><div dir="ltr">possible to reduce the minimum required nasm version though, until <br></div><div dir="ltr">AVX-512 support is added.<br></div><div dir="ltr"><br></div><div dir="ltr">BTW, x264 and ffmpeg made a similar move recently.<br></div><div dir="ltr"><br></div><div dir="ltr">[1]: <a href="https://github.com/yasm/yasm/commits/master" rel="nofollow" target="_blank">https://github.com/yasm/yasm/commits/master</a><br></div><div dir="ltr">[2]: <a href="http://www.nasm.us/doc/nasmdocc.html" rel="nofollow" target="_blank">http://www.nasm.us/doc/nasmdocc.html</a><br></div><div dir="ltr"><br></div><div dir="ltr">>    Original Message<br></div><div dir="ltr">> From: <a href="mailto:vignesh@multicorewareinc.com" rel="nofollow" target="_blank">vignesh@multicorewareinc.com</a><br></div><div dir="ltr">> Sent: November 21, 2017 12:07 AM<br></div><div dir="ltr">> To: <a href="mailto:x265-devel@videolan.org" rel="nofollow" target="_blank">x265-devel@videolan.org</a><br></div><div dir="ltr">> Reply-to: <a href="mailto:x265-devel@videolan.org" rel="nofollow" target="_blank">x265-devel@videolan.org</a><br></div><div dir="ltr">> Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM<br></div><div dir="ltr">> <br></div><div dir="ltr">> # HG changeset patch<br></div><div dir="ltr">> # User Vignesh Vijayakumar<<a href="mailto:vignesh@multicorewareinc.com" rel="nofollow" target="_blank">vignesh@multicorewareinc.com</a>><br></div><div dir="ltr">> # Date 1509595841 -19800<br></div><div dir="ltr">> #      Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> # Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a<br></div><div dir="ltr">> # Parent  182bfd0d5af929a801a08b35ee863d79eadb2833<br></div><div dir="ltr">> x86: Change assembler from YASM to NASM<br></div><div dir="ltr">> <br></div><div dir="ltr">> Supports NASM versions 2.13 and greater<br></div><div dir="ltr">> <br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt<br></div><div dir="ltr">> --- a/source/CMakeLists.txt    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ b/source/CMakeLists.txt    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -323,15 +323,15 @@<br></div><div dir="ltr">>       execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CC_VERSION)<br></div><div dir="ltr">> endif(GCC)<br></div><div dir="ltr">> <br></div><div dir="ltr">> -find_package(Yasm)<br></div><div dir="ltr">> +find_package(Nasm)<br></div><div dir="ltr">> if(ARM OR CROSS_COMPILE_ARM)<br></div><div dir="ltr">>       option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)<br></div><div dir="ltr">> -elseif(YASM_FOUND AND X86)<br></div><div dir="ltr">> -    if (YASM_VERSION_STRING VERSION_LESS "1.2.0")<br></div><div dir="ltr">> -        message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old. 1.2.0 or later required")<br></div><div dir="ltr">> +elseif(NASM_FOUND AND X86)<br></div><div dir="ltr">> +    if (NASM_VERSION_STRING VERSION_LESS "2.13.0")<br></div><div dir="ltr">> +        message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old. 2.13.0 or later required")<br></div><div dir="ltr">>           option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" OFF)<br></div><div dir="ltr">>       else()<br></div><div dir="ltr">> -        message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build assembly primitives")<br></div><div dir="ltr">> +        message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build assembly primitives")<br></div><div dir="ltr">>           option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)<br></div><div dir="ltr">>       endif()<br></div><div dir="ltr">> else()<br></div><div dir="ltr">> @@ -517,18 +517,18 @@<br></div><div dir="ltr">>               list(APPEND ASM_OBJS ${ASM}.${SUFFIX})<br></div><div dir="ltr">>               add_custom_command(<br></div><div dir="ltr">>                   OUTPUT ${ASM}.${SUFFIX}<br></div><div dir="ltr">> -                COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC} -o ${ASM}.${SUFFIX}<br></div><div dir="ltr">> +                COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC} -o ${ASM}.${SUFFIX}<br></div><div dir="ltr">>                   DEPENDS ${ASM_SRC})<br></div><div dir="ltr">>           endforeach()<br></div><div dir="ltr">>       endif()<br></div><div dir="ltr">> endif()<br></div><div dir="ltr">> source_group(ASM FILES ${ASM_SRCS})<br></div><div dir="ltr">> if(ENABLE_HDR10_PLUS)<br></div><div dir="ltr">> -    add_library(x265-static STATIC $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:dynamicHDR10> ${ASM_OBJS} ${ASM_SRCS})<br></div><div dir="ltr">> +    add_library(x265-static STATIC $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:dynamicHDR10> ${ASM_OBJS})<br></div><div dir="ltr">>       add_library(hdr10plus-static STATIC $<TARGET_OBJECTS:dynamicHDR10>)<br></div><div dir="ltr">>       set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME hdr10plus)<br></div><div dir="ltr">> else()<br></div><div dir="ltr">> -    add_library(x265-static STATIC $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> ${ASM_OBJS} ${ASM_SRCS})<br></div><div dir="ltr">> +    add_library(x265-static STATIC $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> ${ASM_OBJS})<br></div><div dir="ltr">> endif()<br></div><div dir="ltr">> if(NOT MSVC)<br></div><div dir="ltr">>       set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)<br></div><div dir="ltr">> @@ -686,11 +686,11 @@<br></div><div dir="ltr">>           if(ENABLE_HDR10_PLUS)<br></div><div dir="ltr">>           add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT}<br></div><div dir="ltr">>                           x265.cpp x265.h x265cli.h<br></div><div dir="ltr">> -                        $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:dynamicHDR10> ${ASM_OBJS} ${ASM_SRCS})<br></div><div dir="ltr">> +                        $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> $<TARGET_OBJECTS:dynamicHDR10> ${ASM_OBJS})<br></div><div dir="ltr">>           else()<br></div><div dir="ltr">>               add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT}<br></div><div dir="ltr">>                           x265.cpp x265.h x265cli.h<br></div><div dir="ltr">> -                        $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> ${ASM_OBJS} ${ASM_SRCS})<br></div><div dir="ltr">> +                        $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common> ${ASM_OBJS})<br></div><div dir="ltr">>           endif()<br></div><div dir="ltr">>       else()<br></div><div dir="ltr">>           add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT} ${X265_RC_FILE}<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_NASMInformation.cmake<br></div><div dir="ltr">> --- /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> +++ b/source/cmake/CMakeASM_NASMInformation.cmake    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -0,0 +1,68 @@<br></div><div dir="ltr">> +set(ASM_DIALECT "_NASM")<br></div><div dir="ltr">> +set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +if(X64)<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS -DARCH_X86_64=1 -I ${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)<br></div><div dir="ltr">> +    if(ENABLE_PIC)<br></div><div dir="ltr">> +        list(APPEND ASM_FLAGS -DPIC)<br></div><div dir="ltr">> +    endif()<br></div><div dir="ltr">> +    if(APPLE)<br></div><div dir="ltr">> +        set(ARGS -f macho64 -DPREFIX)<br></div><div dir="ltr">> +    elseif(UNIX AND NOT CYGWIN)<br></div><div dir="ltr">> +        set(ARGS -f elf64)<br></div><div dir="ltr">> +    else()<br></div><div dir="ltr">> +        set(ARGS -f win64)<br></div><div dir="ltr">> +    endif()<br></div><div dir="ltr">> +else()<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS -DARCH_X86_64=0 -I ${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)<br></div><div dir="ltr">> +    if(APPLE)<br></div><div dir="ltr">> +        set(ARGS -f macho32 -DPREFIX)<br></div><div dir="ltr">> +    elseif(UNIX AND NOT CYGWIN)<br></div><div dir="ltr">> +        set(ARGS -f elf32)<br></div><div dir="ltr">> +    else()<br></div><div dir="ltr">> +        set(ARGS -f win32 -DPREFIX)<br></div><div dir="ltr">> +    endif()<br></div><div dir="ltr">> +endif()<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +if(GCC)<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=1)<br></div><div dir="ltr">> +else()<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=0)<br></div><div dir="ltr">> +endif()<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +if(HIGH_BIT_DEPTH)<br></div><div dir="ltr">> +    if(MAIN12)<br></div><div dir="ltr">> +        list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=12 -DX265_NS=${X265_NS})<br></div><div dir="ltr">> +    else()<br></div><div dir="ltr">> +        list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10 -DX265_NS=${X265_NS})<br></div><div dir="ltr">> +    endif()<br></div><div dir="ltr">> +else()<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -DX265_NS=${X265_NS})<br></div><div dir="ltr">> +endif()<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS}")<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +if(CMAKE_BUILD_TYPE MATCHES Release)<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_RELEASE}")<br></div><div dir="ltr">> +elseif(CMAKE_BUILD_TYPE MATCHES Debug)<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_DEBUG}")<br></div><div dir="ltr">> +elseif(CMAKE_BUILD_TYPE MATCHES MinSizeRel)<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_MINSIZEREL}")<br></div><div dir="ltr">> +elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)<br></div><div dir="ltr">> +    list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_RELWITHDEBINFO}")<br></div><div dir="ltr">> +endif()<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +set(NASM_FLAGS ${ARGS} ${ASM_FLAGS} PARENT_SCOPE)<br></div><div dir="ltr">> +string(REPLACE ";" " " CMAKE_ASM_NASM_COMPILER_ARG1 "${ARGS}")<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +# This section exists to override the one in CMakeASMInformation.cmake<br></div><div dir="ltr">> +# (the default Information file). This removes the <FLAGS><br></div><div dir="ltr">> +# thing so that your C compiler flags that have been set via<br></div><div dir="ltr">> +# set_target_properties don't get passed to nasm and confuse it.<br></div><div dir="ltr">> +if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT)<br></div><div dir="ltr">> +    string(REPLACE ";" " " STR_ASM_FLAGS "${ASM_FLAGS}")<br></div><div dir="ltr">> +    set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> ${STR_ASM_FLAGS} -o <OBJECT> <SOURCE>")<br></div><div dir="ltr">> +endif()<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +include(CMakeASMInformation)<br></div><div dir="ltr">> +set(ASM_DIALECT)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_YASMInformation.cmake<br></div><div dir="ltr">> --- a/source/cmake/CMakeASM_YASMInformation.cmake    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> @@ -1,68 +0,0 @@<br></div><div dir="ltr">> -set(ASM_DIALECT "_YASM")<br></div><div dir="ltr">> -set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -if(X64)<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS -DARCH_X86_64=1)<br></div><div dir="ltr">> -    if(ENABLE_PIC)<br></div><div dir="ltr">> -        list(APPEND ASM_FLAGS -DPIC)<br></div><div dir="ltr">> -    endif()<br></div><div dir="ltr">> -    if(APPLE)<br></div><div dir="ltr">> -        set(ARGS -f macho64 -m amd64 -DPREFIX)<br></div><div dir="ltr">> -    elseif(UNIX AND NOT CYGWIN)<br></div><div dir="ltr">> -        set(ARGS -f elf64 -m amd64)<br></div><div dir="ltr">> -    else()<br></div><div dir="ltr">> -        set(ARGS -f win64 -m amd64)<br></div><div dir="ltr">> -    endif()<br></div><div dir="ltr">> -else()<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS -DARCH_X86_64=0)<br></div><div dir="ltr">> -    if(APPLE)<br></div><div dir="ltr">> -        set(ARGS -f macho -DPREFIX)<br></div><div dir="ltr">> -    elseif(UNIX AND NOT CYGWIN)<br></div><div dir="ltr">> -        set(ARGS -f elf32)<br></div><div dir="ltr">> -    else()<br></div><div dir="ltr">> -        set(ARGS -f win32 -DPREFIX)<br></div><div dir="ltr">> -    endif()<br></div><div dir="ltr">> -endif()<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -if(GCC)<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=1)<br></div><div dir="ltr">> -else()<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=0)<br></div><div dir="ltr">> -endif()<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -if(HIGH_BIT_DEPTH)<br></div><div dir="ltr">> -    if(MAIN12)<br></div><div dir="ltr">> -        list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=12 -DX265_NS=${X265_NS})<br></div><div dir="ltr">> -    else()<br></div><div dir="ltr">> -        list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10 -DX265_NS=${X265_NS})<br></div><div dir="ltr">> -    endif()<br></div><div dir="ltr">> -else()<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 -DX265_NS=${X265_NS})<br></div><div dir="ltr">> -endif()<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -list(APPEND ASM_FLAGS "${CMAKE_ASM_YASM_FLAGS}")<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -if(CMAKE_BUILD_TYPE MATCHES Release)<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS "${CMAKE_ASM_YASM_FLAGS_RELEASE}")<br></div><div dir="ltr">> -elseif(CMAKE_BUILD_TYPE MATCHES Debug)<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS "${CMAKE_ASM_YASM_FLAGS_DEBUG}")<br></div><div dir="ltr">> -elseif(CMAKE_BUILD_TYPE MATCHES MinSizeRel)<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS "${CMAKE_ASM_YASM_FLAGS_MINSIZEREL}")<br></div><div dir="ltr">> -elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)<br></div><div dir="ltr">> -    list(APPEND ASM_FLAGS "${CMAKE_ASM_YASM_FLAGS_RELWITHDEBINFO}")<br></div><div dir="ltr">> -endif()<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -set(YASM_FLAGS ${ARGS} ${ASM_FLAGS} PARENT_SCOPE)<br></div><div dir="ltr">> -string(REPLACE ";" " " CMAKE_ASM_YASM_COMPILER_ARG1 "${ARGS}")<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -# This section exists to override the one in CMakeASMInformation.cmake<br></div><div dir="ltr">> -# (the default Information file). This removes the <FLAGS><br></div><div dir="ltr">> -# thing so that your C compiler flags that have been set via<br></div><div dir="ltr">> -# set_target_properties don't get passed to yasm and confuse it.<br></div><div dir="ltr">> -if(NOT CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT)<br></div><div dir="ltr">> -    string(REPLACE ";" " " STR_ASM_FLAGS "${ASM_FLAGS}")<br></div><div dir="ltr">> -    set(CMAKE_ASM${ASM_DIALECT}_COMPILE_OBJECT "<CMAKE_ASM${ASM_DIALECT}_COMPILER> ${STR_ASM_FLAGS} -o <OBJECT> <SOURCE>")<br></div><div dir="ltr">> -endif()<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -include(CMakeASMInformation)<br></div><div dir="ltr">> -set(ASM_DIALECT)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeDetermineASM_NASMCompiler.cmake<br></div><div dir="ltr">> --- /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> +++ b/source/cmake/CMakeDetermineASM_NASMCompiler.cmake    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -0,0 +1,5 @@<br></div><div dir="ltr">> +set(ASM_DIALECT "_NASM")<br></div><div dir="ltr">> +set(CMAKE_ASM${ASM_DIALECT}_COMPILER ${NASM_EXECUTABLE})<br></div><div dir="ltr">> +set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ${_CMAKE_TOOLCHAIN_PREFIX}nasm)<br></div><div dir="ltr">> +include(CMakeDetermineASMCompiler)<br></div><div dir="ltr">> +set(ASM_DIALECT)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeDetermineASM_YASMCompiler.cmake<br></div><div dir="ltr">> --- a/source/cmake/CMakeDetermineASM_YASMCompiler.cmake    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> @@ -1,5 +0,0 @@<br></div><div dir="ltr">> -set(ASM_DIALECT "_YASM")<br></div><div dir="ltr">> -set(CMAKE_ASM${ASM_DIALECT}_COMPILER ${YASM_EXECUTABLE})<br></div><div dir="ltr">> -set(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT ${_CMAKE_TOOLCHAIN_PREFIX}yasm)<br></div><div dir="ltr">> -include(CMakeDetermineASMCompiler)<br></div><div dir="ltr">> -set(ASM_DIALECT)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeTestASM_NASMCompiler.cmake<br></div><div dir="ltr">> --- /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> +++ b/source/cmake/CMakeTestASM_NASMCompiler.cmake    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -0,0 +1,3 @@<br></div><div dir="ltr">> +set(ASM_DIALECT "_NASM")<br></div><div dir="ltr">> +include(CMakeTestASMCompiler)<br></div><div dir="ltr">> +set(ASM_DIALECT)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeTestASM_YASMCompiler.cmake<br></div><div dir="ltr">> --- a/source/cmake/CMakeTestASM_YASMCompiler.cmake    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> @@ -1,3 +0,0 @@<br></div><div dir="ltr">> -set(ASM_DIALECT "_YASM")<br></div><div dir="ltr">> -include(CMakeTestASMCompiler)<br></div><div dir="ltr">> -set(ASM_DIALECT)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/FindNasm.cmake<br></div><div dir="ltr">> --- /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> +++ b/source/cmake/FindNasm.cmake    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -0,0 +1,25 @@<br></div><div dir="ltr">> +include(FindPackageHandleStandardArgs)<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +# Simple path search with YASM_ROOT environment variable override<br></div><div dir="ltr">> +find_program(NASM_EXECUTABLE<br></div><div dir="ltr">> + NAMES nasm nasm-2.13.0-win32 nasm-2.13.0-win64 nasm nasm-2.13.0-win32 nasm-2.13.0-win64<br></div><div dir="ltr">> + HINTS $ENV{NASM_ROOT} ${NASM_ROOT}<br></div><div dir="ltr">> + PATH_SUFFIXES bin<br></div><div dir="ltr">> +)<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +if(NASM_EXECUTABLE)<br></div><div dir="ltr">> +        execute_process(COMMAND ${NASM_EXECUTABLE} -version<br></div><div dir="ltr">> +            OUTPUT_VARIABLE nasm_version<br></div><div dir="ltr">> +            ERROR_QUIET<br></div><div dir="ltr">> +            OUTPUT_STRIP_TRAILING_WHITESPACE<br></div><div dir="ltr">> +            )<br></div><div dir="ltr">> +    if(nasm_version MATCHES "^NASM version ([0-9\\.]*)")<br></div><div dir="ltr">> +        set(NASM_VERSION_STRING "${CMAKE_MATCH_1}")<br></div><div dir="ltr">> +    endif()<br></div><div dir="ltr">> +    unset(nasm_version)<br></div><div dir="ltr">> +endif()<br></div><div dir="ltr">> +<br></div><div dir="ltr">> +# Provide standardized success/failure messages<br></div><div dir="ltr">> +find_package_handle_standard_args(nasm<br></div><div dir="ltr">> +    REQUIRED_VARS NASM_EXECUTABLE<br></div><div dir="ltr">> +    VERSION_VAR NASM_VERSION_STRING)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/FindYasm.cmake<br></div><div dir="ltr">> --- a/source/cmake/FindYasm.cmake    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ /dev/null    Thu Jan 01 00:00:00 1970 +0000<br></div><div dir="ltr">> @@ -1,25 +0,0 @@<br></div><div dir="ltr">> -include(FindPackageHandleStandardArgs)<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -# Simple path search with YASM_ROOT environment variable override<br></div><div dir="ltr">> -find_program(YASM_EXECUTABLE<br></div><div dir="ltr">> - NAMES yasm yasm-1.2.0-win32 yasm-1.2.0-win64 yasm yasm-1.3.0-win32 yasm-1.3.0-win64<br></div><div dir="ltr">> - HINTS $ENV{YASM_ROOT} ${YASM_ROOT}<br></div><div dir="ltr">> - PATH_SUFFIXES bin<br></div><div dir="ltr">> -)<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -if(YASM_EXECUTABLE)<br></div><div dir="ltr">> -    execute_process(COMMAND ${YASM_EXECUTABLE} --version<br></div><div dir="ltr">> -        OUTPUT_VARIABLE yasm_version<br></div><div dir="ltr">> -        ERROR_QUIET<br></div><div dir="ltr">> -        OUTPUT_STRIP_TRAILING_WHITESPACE<br></div><div dir="ltr">> -        )<br></div><div dir="ltr">> -    if(yasm_version MATCHES "^yasm ([0-9\\.]*)")<br></div><div dir="ltr">> -        set(YASM_VERSION_STRING "${CMAKE_MATCH_1}")<br></div><div dir="ltr">> -    endif()<br></div><div dir="ltr">> -    unset(yasm_version)<br></div><div dir="ltr">> -endif()<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -# Provide standardized success/failure messages<br></div><div dir="ltr">> -find_package_handle_standard_args(yasm<br></div><div dir="ltr">> -    REQUIRED_VARS YASM_EXECUTABLE<br></div><div dir="ltr">> -    VERSION_VAR YASM_VERSION_STRING)<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/common/CMakeLists.txt<br></div><div dir="ltr">> --- a/source/common/CMakeLists.txt    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ b/source/common/CMakeLists.txt    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -72,12 +72,12 @@<br></div><div dir="ltr">>       endif()<br></div><div dir="ltr">> <br></div><div dir="ltr">>       if(MSVC_IDE OR XCODE)<br></div><div dir="ltr">> -        # MSVC requires custom build rules in the main cmake script for yasm<br></div><div dir="ltr">> -        set(MSVC_ASMS "${A_SRCS}" CACHE INTERNAL "yasm sources")<br></div><div dir="ltr">> +        # MSVC requires custom build rules in the main cmake script for nasm<br></div><div dir="ltr">> +        set(MSVC_ASMS "${A_SRCS}" CACHE INTERNAL "nasm sources")<br></div><div dir="ltr">>           set(A_SRCS)<br></div><div dir="ltr">>       endif()<br></div><div dir="ltr">> <br></div><div dir="ltr">> -    enable_language(ASM_YASM)<br></div><div dir="ltr">> +    enable_language(ASM_NASM)<br></div><div dir="ltr">> <br></div><div dir="ltr">>       foreach(SRC ${A_SRCS} ${C_SRCS})<br></div><div dir="ltr">>           set(ASM_PRIMITIVES ${ASM_PRIMITIVES} x86/${SRC})<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/common/x86/x86inc.asm<br></div><div dir="ltr">> --- a/source/common/x86/x86inc.asm    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ b/source/common/x86/x86inc.asm    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -66,6 +66,15 @@<br></div><div dir="ltr">>       %endif<br></div><div dir="ltr">> %endif<br></div><div dir="ltr">> <br></div><div dir="ltr">> +%define FORMAT_ELF 0<br></div><div dir="ltr">> +%ifidn __OUTPUT_FORMAT__,elf<br></div><div dir="ltr">> +    %define FORMAT_ELF 1<br></div><div dir="ltr">> +%elifidn __OUTPUT_FORMAT__,elf32<br></div><div dir="ltr">> +    %define FORMAT_ELF 1<br></div><div dir="ltr">> +%elifidn __OUTPUT_FORMAT__,elf64<br></div><div dir="ltr">> +    %define FORMAT_ELF 1<br></div><div dir="ltr">> +%endif<br></div><div dir="ltr">> +<br></div><div dir="ltr">> %ifdef PREFIX<br></div><div dir="ltr">>       %define mangle(x) _ %+ x<br></div><div dir="ltr">> %else<br></div><div dir="ltr">> @@ -88,6 +97,10 @@<br></div><div dir="ltr">>       default rel<br></div><div dir="ltr">> %endif<br></div><div dir="ltr">> <br></div><div dir="ltr">> +%ifdef __NASM_VER__<br></div><div dir="ltr">> +    %use smartalign<br></div><div dir="ltr">> +%endif<br></div><div dir="ltr">> +<br></div><div dir="ltr">> ; Macros to eliminate most code duplication between x86_32 and x86_64:<br></div><div dir="ltr">> ; Currently this works only for leaf functions which load all their arguments<br></div><div dir="ltr">> ; into registers at the start, and make no other use of the stack. Luckily that<br></div><div dir="ltr">> @@ -685,7 +698,7 @@<br></div><div dir="ltr">>           CAT_XDEFINE cglobaled_, %2, 1<br></div><div dir="ltr">>       %endif<br></div><div dir="ltr">>       %xdefine current_function %2<br></div><div dir="ltr">> -    %ifidn __OUTPUT_FORMAT__,elf<br></div><div dir="ltr">> +    %if FORMAT_ELF<br></div><div dir="ltr">>           global %2:function %%VISIBILITY<br></div><div dir="ltr">>       %else<br></div><div dir="ltr">>           global %2<br></div><div dir="ltr">> @@ -711,14 +724,16 @@<br></div><div dir="ltr">> <br></div><div dir="ltr">> ; like cextern, but without the prefix<br></div><div dir="ltr">> %macro cextern_naked 1<br></div><div dir="ltr">> -    %xdefine %1 mangle(%1)<br></div><div dir="ltr">> +    %ifdef PREFIX<br></div><div dir="ltr">> +        %xdefine %1 mangle(%1)<br></div><div dir="ltr">> +    %endif<br></div><div dir="ltr">>       CAT_XDEFINE cglobaled_, %1, 1<br></div><div dir="ltr">>       extern %1<br></div><div dir="ltr">> %endmacro<br></div><div dir="ltr">> <br></div><div dir="ltr">> %macro const 1-2+<br></div><div dir="ltr">>       %xdefine %1 mangle(private_prefix %+ _ %+ %1)<br></div><div dir="ltr">> -    %ifidn __OUTPUT_FORMAT__,elf<br></div><div dir="ltr">> +    %if FORMAT_ELF<br></div><div dir="ltr">>           global %1:data hidden<br></div><div dir="ltr">>       %else<br></div><div dir="ltr">>           global %1<br></div><div dir="ltr">> @@ -727,9 +742,8 @@<br></div><div dir="ltr">>       %1: %2<br></div><div dir="ltr">> %endmacro<br></div><div dir="ltr">> <br></div><div dir="ltr">> -; This is needed for ELF, otherwise the GNU linker assumes the stack is<br></div><div dir="ltr">> -; executable by default.<br></div><div dir="ltr">> -%ifidn __OUTPUT_FORMAT__,elf<br></div><div dir="ltr">> +; This is needed for ELF, otherwise the GNU linker assumes the stack is executable by default.<br></div><div dir="ltr">> +%if FORMAT_ELF<br></div><div dir="ltr">>       [SECTION .note.GNU-stack noalloc noexec nowrite progbits]<br></div><div dir="ltr">> %endif<br></div><div dir="ltr">> <br></div><div dir="ltr">> @@ -801,9 +815,17 @@<br></div><div dir="ltr">>       %endif<br></div><div dir="ltr">> <br></div><div dir="ltr">>       %if ARCH_X86_64 || cpuflag(sse2)<br></div><div dir="ltr">> -        CPU amdnop<br></div><div dir="ltr">> +        %ifdef __NASM_VER__<br></div><div dir="ltr">> +            ALIGNMODE p6<br></div><div dir="ltr">> +        %else<br></div><div dir="ltr">> +            CPU amdnop<br></div><div dir="ltr">> +        %endif<br></div><div dir="ltr">>       %else<br></div><div dir="ltr">> -        CPU basicnop<br></div><div dir="ltr">> +        %ifdef __NASM_VER__<br></div><div dir="ltr">> +            ALIGNMODE nop<br></div><div dir="ltr">> +        %else<br></div><div dir="ltr">> +            CPU basicnop<br></div><div dir="ltr">> +        %endif<br></div><div dir="ltr">>       %endif<br></div><div dir="ltr">> %endmacro<br></div><div dir="ltr">> <br></div><div dir="ltr">> @@ -1467,7 +1489,7 @@<br></div><div dir="ltr">>                   v%5%6 %1, %2, %3, %4<br></div><div dir="ltr">>               %elifidn %1, %2<br></div><div dir="ltr">>                   ; If %3 or %4 is a memory operand it needs to be encoded as the last operand.<br></div><div dir="ltr">> -                %ifid %3<br></div><div dir="ltr">> +                %ifnum sizeof%3<br></div><div dir="ltr">>                       v%{5}213%6 %2, %3, %4<br></div><div dir="ltr">>                   %else<br></div><div dir="ltr">>                       v%{5}132%6 %2, %4, %3<br></div><div dir="ltr">> @@ -1491,14 +1513,3 @@<br></div><div dir="ltr">> FMA4_INSTR fmsubadd, pd, ps<br></div><div dir="ltr">> FMA4_INSTR fnmadd,   pd, ps, sd, ss<br></div><div dir="ltr">> FMA4_INSTR fnmsub,   pd, ps, sd, ss<br></div><div dir="ltr">> -<br></div><div dir="ltr">> -; workaround: vpbroadcastq is broken in x86_32 due to a yasm bug (fixed in 1.3.0)<br></div><div dir="ltr">> -%if __YASM_VERSION_ID__ < 0x01030000 && ARCH_X86_64 == 0<br></div><div dir="ltr">> -    %macro vpbroadcastq 2<br></div><div dir="ltr">> -        %if sizeof%1 == 16<br></div><div dir="ltr">> -            movddup %1, %2<br></div><div dir="ltr">> -        %else<br></div><div dir="ltr">> -            vbroadcastsd %1, %2<br></div><div dir="ltr">> -        %endif<br></div><div dir="ltr">> -    %endmacro<br></div><div dir="ltr">> -%endif<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/test/CMakeLists.txt<br></div><div dir="ltr">> --- a/source/test/CMakeLists.txt    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ b/source/test/CMakeLists.txt    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -7,37 +7,37 @@<br></div><div dir="ltr">> <br></div><div dir="ltr">> # add X86 assembly files<br></div><div dir="ltr">> if(X86)<br></div><div dir="ltr">> -enable_language(ASM_YASM)<br></div><div dir="ltr">> +enable_language(ASM_NASM)<br></div><div dir="ltr">> <br></div><div dir="ltr">> if(MSVC_IDE)<br></div><div dir="ltr">> -    set(YASM_SRC checkasm-a.obj)<br></div><div dir="ltr">> +    set(NASM_SRC checkasm-a.obj)<br></div><div dir="ltr">>       add_custom_command(<br></div><div dir="ltr">>           OUTPUT checkasm-a.obj<br></div><div dir="ltr">> -        COMMAND ${YASM_EXECUTABLE}<br></div><div dir="ltr">> -        ARGS ${YASM_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/checkasm-a.asm -o checkasm-a.obj<br></div><div dir="ltr">> +        COMMAND ${NASM_EXECUTABLE}<br></div><div dir="ltr">> +        ARGS ${NASM_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/checkasm-a.asm -o checkasm-a.obj<br></div><div dir="ltr">>           DEPENDS checkasm-a.asm)<br></div><div dir="ltr">> else()<br></div><div dir="ltr">> -    set(YASM_SRC checkasm-a.asm)<br></div><div dir="ltr">> +    set(NASM_SRC checkasm-a.asm)<br></div><div dir="ltr">> endif()<br></div><div dir="ltr">> endif(X86)<br></div><div dir="ltr">> <br></div><div dir="ltr">> # add ARM assembly files<br></div><div dir="ltr">> if(ARM OR CROSS_COMPILE_ARM)<br></div><div dir="ltr">>       enable_language(ASM)<br></div><div dir="ltr">> -    set(YASM_SRC checkasm-arm.S)<br></div><div dir="ltr">> +    set(NASM_SRC checkasm-arm.S)<br></div><div dir="ltr">>       add_custom_command(<br></div><div dir="ltr">>           OUTPUT checkasm-arm.obj<br></div><div dir="ltr">>           COMMAND ${CMAKE_CXX_COMPILER}<br></div><div dir="ltr">> -        ARGS ${YASM_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/checkasm-arm.S -o checkasm-arm.obj<br></div><div dir="ltr">> +        ARGS ${NASM_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/checkasm-arm.S -o checkasm-arm.obj<br></div><div dir="ltr">>           DEPENDS checkasm-arm.S)<br></div><div dir="ltr">> endif(ARM OR CROSS_COMPILE_ARM)<br></div><div dir="ltr">> <br></div><div dir="ltr">> # add PowerPC assembly files<br></div><div dir="ltr">> if(POWER)<br></div><div dir="ltr">> -    set(YASM_SRC)<br></div><div dir="ltr">> +    set(NASM_SRC)<br></div><div dir="ltr">> endif(POWER)<br></div><div dir="ltr">> <br></div><div dir="ltr">> -add_executable(TestBench ${YASM_SRC}<br></div><div dir="ltr">> +add_executable(TestBench ${NASM_SRC}<br></div><div dir="ltr">>       testbench.cpp testharness.h<br></div><div dir="ltr">>       pixelharness.cpp pixelharness.h<br></div><div dir="ltr">>       mbdstharness.cpp mbdstharness.h<br></div><div dir="ltr">> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/test/checkasm-a.asm<br></div><div dir="ltr">> --- a/source/test/checkasm-a.asm    Thu Nov 02 09:39:58 2017 +0530<br></div><div dir="ltr">> +++ b/source/test/checkasm-a.asm    Thu Nov 02 09:40:41 2017 +0530<br></div><div dir="ltr">> @@ -26,7 +26,7 @@<br></div><div dir="ltr">> ;* For more information, contact us at license @ x265.com.<br></div><div dir="ltr">> ;*****************************************************************************<br></div><div dir="ltr">> <br></div><div dir="ltr">> -%include "../common/x86/x86inc.asm"<br></div><div dir="ltr">> +%include "x86inc.asm"<br></div><div dir="ltr">> <br></div><div dir="ltr">> SECTION_RODATA<br></div><div dir="ltr">> <br></div><div dir="ltr">> @@ -35,24 +35,24 @@<br></div><div dir="ltr">> %if ARCH_X86_64<br></div><div dir="ltr">> ; just random numbers to reduce the chance of incidental match<br></div><div dir="ltr">> ALIGN 16<br></div><div dir="ltr">> -x6:  ddq 0x79445c159ce790641a1b2550a612b48c<br></div><div dir="ltr">> -x7:  ddq 0x86b2536fcd8cf6362eed899d5a28ddcd<br></div><div dir="ltr">> -x8:  ddq 0x3f2bf84fc0fcca4eb0856806085e7943<br></div><div dir="ltr">> -x9:  ddq 0xd229e1f5b281303facbd382dcf5b8de2<br></div><div dir="ltr">> -x10: ddq 0xab63e2e11fa38ed971aeaff20b095fd9<br></div><div dir="ltr">> -x11: ddq 0x77d410d5c42c882d89b0c0765892729a<br></div><div dir="ltr">> -x12: ddq 0x24b3c1d2a024048bc45ea11a955d8dd5<br></div><div dir="ltr">> -x13: ddq 0xdd7b8919edd427862e8ec680de14b47c<br></div><div dir="ltr">> -x14: ddq 0x11e53e2b2ac655ef135ce6888fa02cbf<br></div><div dir="ltr">> -x15: ddq 0x6de8f4c914c334d5011ff554472a7a10<br></div><div dir="ltr">> -n7:   dq 0x21f86d66c8ca00ce<br></div><div dir="ltr">> -n8:   dq 0x75b6ba21077c48ad<br></div><div dir="ltr">> -n9:   dq 0xed56bb2dcb3c7736<br></div><div dir="ltr">> -n10:  dq 0x8bda43d3fd1a7e06<br></div><div dir="ltr">> -n11:  dq 0xb64a9c9e5d318408<br></div><div dir="ltr">> -n12:  dq 0xdf9a54b303f1d3a3<br></div><div dir="ltr">> -n13:  dq 0x4a75479abd64e097<br></div><div dir="ltr">> -n14:  dq 0x249214109d5d1c88<br></div><div dir="ltr">> +x6:  dq 0x1a1b2550a612b48c,0x79445c159ce79064<br></div><div dir="ltr">> +x7:  dq 0x2eed899d5a28ddcd,0x86b2536fcd8cf636<br></div><div dir="ltr">> +x8:  dq 0xb0856806085e7943,0x3f2bf84fc0fcca4e<br></div><div dir="ltr">> +x9:  dq 0xacbd382dcf5b8de2,0xd229e1f5b281303f<br></div><div dir="ltr">> +x10: dq 0x71aeaff20b095fd9,0xab63e2e11fa38ed9<br></div><div dir="ltr">> +x11: dq 0x89b0c0765892729a,0x77d410d5c42c882d<br></div><div dir="ltr">> +x12: dq 0xc45ea11a955d8dd5,0x24b3c1d2a024048b<br></div><div dir="ltr">> +x13: dq 0x2e8ec680de14b47c,0xdd7b8919edd42786<br></div><div dir="ltr">> +x14: dq 0x135ce6888fa02cbf,0x11e53e2b2ac655ef<br></div><div dir="ltr">> +x15: dq 0x011ff554472a7a10,0x6de8f4c914c334d5<br></div><div dir="ltr">> +n7:  dq 0x21f86d66c8ca00ce<br></div><div dir="ltr">> +n8:  dq 0x75b6ba21077c48ad<br></div><div dir="ltr">> +n9:  dq 0xed56bb2dcb3c7736<br></div><div dir="ltr">> +n10: dq 0x8bda43d3fd1a7e06<br></div><div dir="ltr">> +n11: dq 0xb64a9c9e5d318408<br></div><div dir="ltr">> +n12: dq 0xdf9a54b303f1d3a3<br></div><div dir="ltr">> +n13: dq 0x4a75479abd64e097<br></div><div dir="ltr">> +n14: dq 0x249214109d5d1c88<br></div><div dir="ltr">> %endif<br></div><div dir="ltr">> <br></div><div dir="ltr">> SECTION .text<br></div><div dir="ltr">> @@ -70,14 +70,14 @@<br></div><div dir="ltr">> ;-----------------------------------------------------------------------------<br></div><div dir="ltr">> cglobal checkasm_stack_clobber, 1,2<br></div><div dir="ltr">>       ; Clobber the stack with junk below the stack pointer<br></div><div dir="ltr">> -    %define size (max_args+6)*8<br></div><div dir="ltr">> -    SUB  rsp, size<br></div><div dir="ltr">> -    mov   r1, size-8<br></div><div dir="ltr">> +    %define argsize (max_args+6)*8<br></div><div dir="ltr">> +    SUB  rsp, argsize<br></div><div dir="ltr">> +    mov   r1, argsize-8<br></div><div dir="ltr">> .loop:<br></div><div dir="ltr">>       mov [rsp+r1], r0<br></div><div dir="ltr">>       sub   r1, 8<br></div><div dir="ltr">>       jge .loop<br></div><div dir="ltr">> -    ADD  rsp, size<br></div><div dir="ltr">> +    ADD  rsp, argsize<br></div><div dir="ltr">>       RET<br></div><div dir="ltr">> <br></div><div dir="ltr">> %if WIN64<br></div><div dir="ltr">> @@ -156,7 +156,11 @@<br></div><div dir="ltr">>       mov  r9, rax<br></div><div dir="ltr">>       mov r10, rdx<br></div><div dir="ltr">>       lea  r0, [error_message]<br></div><div dir="ltr">> +%if FORMAT_ELF<br></div><div dir="ltr">> +    call puts wrt ..plt<br></div><div dir="ltr">> +%else<br></div><div dir="ltr">>       call puts<br></div><div dir="ltr">> +%endif<br></div><div dir="ltr">>       mov  r1, [rsp+max_args*8]<br></div><div dir="ltr">>       mov  dword [r1], 0<br></div><div dir="ltr">>       mov  rdx, r10<br></div><div dir="ltr">> _______________________________________________<br></div><div dir="ltr">> x265-devel mailing list<br></div><div dir="ltr">> <a href="mailto:x265-devel@videolan.org" rel="nofollow" target="_blank">x265-devel@videolan.org</a><br></div><div dir="ltr">> <a href="https://mailman.videolan.org/listinfo/x265-devel" rel="nofollow" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br></div><div dir="ltr">> _______________________________________________<br></div><div dir="ltr">> x265-devel mailing list<br></div><div dir="ltr">> <a href="mailto:x265-devel@videolan.org" rel="nofollow" target="_blank">x265-devel@videolan.org</a><br></div><div dir="ltr">> <a href="https://mailman.videolan.org/listinfo/x265-devel" rel="nofollow" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br></div><div dir="ltr">> <br></div><div dir="ltr"><br></div><div dir="ltr">_______________________________________________<br></div><div dir="ltr">x265-devel mailing list<br></div><div dir="ltr"><a href="mailto:x265-devel@videolan.org" rel="nofollow" target="_blank">x265-devel@videolan.org</a><br></div><div dir="ltr"><a href="https://mailman.videolan.org/listinfo/x265-devel" rel="nofollow" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br></div></div>
                </div>
            </div></div></body></html>