Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-22 Thread Mario *LigH* Rohkrämer

Just as side note:

Quite recent MSYS packages contain quite recent NASM versions as well, I  
see no similar concerns for Windows builds.



The MSYS/MinGW packages provided by XhmikosR (+ nevcairiel) are rather  
famous, the last package with GCC 7.1.0 (June 2017) already contained NASM  
2.13.01.


http://xhmikosr.1f0.de/tools/msys/ + https://files.1f0.de/mingw/


And the MSYS2 environment of jb-alvarado's media-autobuild_suite with  
MinGW32 and MinGW64 is kept up-to-date at every launch, using pacman.


https://github.com/jb-alvarado/media-autobuild_suite/


Based on such environments, compiling GCC 7.x MinGW Windows EXE builds is  
easy enough and reliable enough.


MABS does a full-automatic build of both bitnesses, if desired;  
additionally, for a slightly customized result, I don't use the  
cross-compilation toolchain provided by Multicoreware, instead I compile  
natively in a sequence, once under MinGW32, then under MinGW64 (and if I  
ever discover how MABS manages to switch between them, I may do so as  
well).



Am 22.11.2017, 10:59 Uhr, schrieb Vignesh Vijayakumar  
:



nasm 2.13 was released in April 2017 and 2.13.01 is the latest stable
version.
Is there is any problem updating to 2.13?

Thanks
Vignesh


On Tue, Nov 21, 2017 at 5:55 PM, Sean McGovern   
wrote:



Hi,

Is this really necessary?

Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.

-- Sean McG.

  Original Message
From: vign...@multicorewareinc.com
Sent: November 21, 2017 12:07 AM
To: x265-devel@videolan.org
Reply-to: x265-devel@videolan.org
Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

# HG changeset patch
# User Vignesh Vijayakumar
# Date 1509595841 -19800
#  Thu Nov 02 09:40:41 2017 +0530
# Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
# Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
x86: Change assembler from YASM to NASM

Supports NASM versions 2.13 and greater

diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
--- a/source/CMakeLists.txt Thu Nov 02 09:39:58 2017 +0530
+++ b/source/CMakeLists.txt Thu Nov 02 09:40:41 2017 +0530
@@ -323,15 +323,15 @@
 execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
OUTPUT_VARIABLE CC_VERSION)
endif(GCC)

-find_package(Yasm)
+find_package(Nasm)
if(ARM OR CROSS_COMPILE_ARM)
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives"  
ON)

-elseif(YASM_FOUND AND X86)
-if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
-message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old.
1.2.0 or later required")
+elseif(NASM_FOUND AND X86)
+if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
+message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old.
2.13.0 or later required")
 option(ENABLE_ASSEMBLY "Enable use of assembly coded  
primitives"

OFF)
 else()
-message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build
assembly primitives")
+message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build
assembly primitives")
 option(ENABLE_ASSEMBLY "Enable use of assembly coded  
primitives"

ON)
 endif()
else()
@@ -517,18 +517,18 @@
 list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
 add_custom_command(
 OUTPUT ${ASM}.${SUFFIX}
-COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS}  
${ASM_SRC}

-o ${ASM}.${SUFFIX}
+COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS}  
${ASM_SRC}

-o ${ASM}.${SUFFIX}
 DEPENDS ${ASM_SRC})
 endforeach()
 endif()
endif()
source_group(ASM FILES ${ASM_SRCS})
if(ENABLE_HDR10_PLUS)
-add_library(x265-static STATIC $
$ $ ${ASM_OBJS}
${ASM_SRCS})
+add_library(x265-static STATIC $
$ $ ${ASM_OBJS})
 add_library(hdr10plus-static STATIC $)
 set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME
hdr10plus)
else()
-add_library(x265-static STATIC $
$ ${ASM_OBJS} ${ASM_SRCS})
+add_library(x265-static STATIC $
$ ${ASM_OBJS})
endif()
if(NOT MSVC)
 set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
@@ -686,11 +686,11 @@
 if(ENABLE_HDR10_PLUS)
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
${GETOPT}
 x265.cpp x265.h x265cli.h
-$
$ $ ${ASM_OBJS}
${ASM_SRCS})
+$
$ $ ${ASM_OBJS})
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
${GETOPT}
 x265.cpp x265.h x265cli.h
-$
$ ${ASM_OBJS} ${ASM_SRCS})
+$
$ ${ASM_OBJS})
 endif()
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
${GETOPT} ${X265_RC_FILE}
diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_
NASMInformation.cmake
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/source/cmake/CMakeASM_NASMInformation.cmake   T

Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-22 Thread Michael Lackner
It might not be provided by the package management system of the Linux 
distribution
mentioned by Sean.

However, I found it quite easy to compile nasm 2.13 from source on a wide 
variety of
systems and compilers (Multiple Linux distros, even older ones like CentOS 6, 
multiple
UNIX systems like Solaris 11, FreeBSD UNIX 10 & 11, OpenBSD UNIX, etc., GCC 4, 
6 & 7 and
clang 3.8 & 4.0).

Honestly, the only system were I failed to compile version 2.13 (yet where yasm 
builds
fine) was the Haiku OS in x64.

On Ubuntu 16.04, compiling nasm 2.13 from source should be trivial.

On 11/22/2017 10:59 AM, Vignesh Vijayakumar wrote:
> nasm 2.13 was released in April 2017 and 2.13.01 is the latest stable
> version.
> Is there is any problem updating to 2.13?
> 
> Thanks
> Vignesh
> 
> 
> On Tue, Nov 21, 2017 at 5:55 PM, Sean McGovern  wrote:
> 
>> Hi,
>>
>> Is this really necessary?
>>
>> Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.
>>
>> -- Sean McG.
>>
>>   Original Message
>> From: vign...@multicorewareinc.com
>> Sent: November 21, 2017 12:07 AM
>> To: x265-devel@videolan.org
>> Reply-to: x265-devel@videolan.org
>> Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM
>>
>> # HG changeset patch
>> # User Vignesh Vijayakumar
>> # Date 1509595841 -19800
>> #  Thu Nov 02 09:40:41 2017 +0530
>> # Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
>> # Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
>> x86: Change assembler from YASM to NASM
>>
>> Supports NASM versions 2.13 and greater
>>
>> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
>> --- a/source/CMakeLists.txt Thu Nov 02 09:39:58 2017 +0530
>> +++ b/source/CMakeLists.txt Thu Nov 02 09:40:41 2017 +0530
>> @@ -323,15 +323,15 @@
>>  execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
>> OUTPUT_VARIABLE CC_VERSION)
>> endif(GCC)
>>
>> -find_package(Yasm)
>> +find_package(Nasm)
>> if(ARM OR CROSS_COMPILE_ARM)
>>  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
>> -elseif(YASM_FOUND AND X86)
>> -if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
>> -message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old.
>> 1.2.0 or later required")
>> +elseif(NASM_FOUND AND X86)
>> +if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
>> +message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old.
>> 2.13.0 or later required")
>>  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives"
>> OFF)
>>  else()
>> -message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build
>> assembly primitives")
>> +message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build
>> assembly primitives")
>>  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives"
>> ON)
>>  endif()
>> else()
>> @@ -517,18 +517,18 @@
>>  list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
>>  add_custom_command(
>>  OUTPUT ${ASM}.${SUFFIX}
>> -COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC}
>> -o ${ASM}.${SUFFIX}
>> +COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC}
>> -o ${ASM}.${SUFFIX}
>>  DEPENDS ${ASM_SRC})
>>  endforeach()
>>  endif()
>> endif()
>> source_group(ASM FILES ${ASM_SRCS})
>> if(ENABLE_HDR10_PLUS)
>> -add_library(x265-static STATIC $
>> $ $ ${ASM_OBJS}
>> ${ASM_SRCS})
>> +add_library(x265-static STATIC $
>> $ $ ${ASM_OBJS})
>>  add_library(hdr10plus-static STATIC $)
>>  set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME
>> hdr10plus)
>> else()
>> -add_library(x265-static STATIC $
>> $ ${ASM_OBJS} ${ASM_SRCS})
>> +add_library(x265-static STATIC $
>> $ ${ASM_OBJS})
>> endif()
>> if(NOT MSVC)
>>  set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
>> @@ -686,11 +686,11 @@
>>  if(ENABLE_HDR10_PLUS)
>>  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
>> ${GETOPT}
>>  x265.cpp x265.h x265cli.h
>> -$
>> $ $ ${ASM_OBJS}
>> ${ASM_SRCS})
>> +$
>> $ $ ${ASM_OBJS})
>>  else()
>>  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
>> ${GETOPT}
>> 

Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-22 Thread Vignesh Vijayakumar
nasm 2.13 was released in April 2017 and 2.13.01 is the latest stable
version.
Is there is any problem updating to 2.13?

Thanks
Vignesh


On Tue, Nov 21, 2017 at 5:55 PM, Sean McGovern  wrote:

> Hi,
>
> Is this really necessary?
>
> Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.
>
> -- Sean McG.
>
>   Original Message
> From: vign...@multicorewareinc.com
> Sent: November 21, 2017 12:07 AM
> To: x265-devel@videolan.org
> Reply-to: x265-devel@videolan.org
> Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM
>
> # HG changeset patch
> # User Vignesh Vijayakumar
> # Date 1509595841 -19800
> #  Thu Nov 02 09:40:41 2017 +0530
> # Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
> # Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
> x86: Change assembler from YASM to NASM
>
> Supports NASM versions 2.13 and greater
>
> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
> --- a/source/CMakeLists.txt Thu Nov 02 09:39:58 2017 +0530
> +++ b/source/CMakeLists.txt Thu Nov 02 09:40:41 2017 +0530
> @@ -323,15 +323,15 @@
>  execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
> OUTPUT_VARIABLE CC_VERSION)
> endif(GCC)
>
> -find_package(Yasm)
> +find_package(Nasm)
> if(ARM OR CROSS_COMPILE_ARM)
>  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
> -elseif(YASM_FOUND AND X86)
> -if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
> -message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old.
> 1.2.0 or later required")
> +elseif(NASM_FOUND AND X86)
> +if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
> +message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old.
> 2.13.0 or later required")
>  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives"
> OFF)
>  else()
> -message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build
> assembly primitives")
> +message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build
> assembly primitives")
>  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives"
> ON)
>  endif()
> else()
> @@ -517,18 +517,18 @@
>  list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
>  add_custom_command(
>  OUTPUT ${ASM}.${SUFFIX}
> -COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC}
> -o ${ASM}.${SUFFIX}
> +COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC}
> -o ${ASM}.${SUFFIX}
>  DEPENDS ${ASM_SRC})
>  endforeach()
>  endif()
> endif()
> source_group(ASM FILES ${ASM_SRCS})
> if(ENABLE_HDR10_PLUS)
> -add_library(x265-static STATIC $
> $ $ ${ASM_OBJS}
> ${ASM_SRCS})
> +add_library(x265-static STATIC $
> $ $ ${ASM_OBJS})
>  add_library(hdr10plus-static STATIC $)
>  set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME
> hdr10plus)
> else()
> -add_library(x265-static STATIC $
> $ ${ASM_OBJS} ${ASM_SRCS})
> +add_library(x265-static STATIC $
> $ ${ASM_OBJS})
> endif()
> if(NOT MSVC)
>  set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
> @@ -686,11 +686,11 @@
>  if(ENABLE_HDR10_PLUS)
>  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
> ${GETOPT}
>  x265.cpp x265.h x265cli.h
> -$
> $ $ ${ASM_OBJS}
> ${ASM_SRCS})
> +$
> $ $ ${ASM_OBJS})
>  else()
>  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
> ${GETOPT}
>  x265.cpp x265.h x265cli.h
> -$
> $ ${ASM_OBJS} ${ASM_SRCS})
> +$
> $ ${ASM_OBJS})
>  endif()
>  else()
>  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles}
> ${GETOPT} ${X265_RC_FILE}
> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_
> NASMInformation.cmake
> --- /dev/null   Thu Jan 01 00:00:00 1970 +
> +++ b/source/cmake/CMakeASM_NASMInformation.cmake   Thu Nov 02
> 09:40:41 2017 +0530
> @@ -0,0 +1,68 @@
> +set(ASM_DIALECT "_NASM")
> +set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)
> +
> +if(X64)
> +list(APPEND ASM_FLAGS -DARCH_X86_64=1 -I
> ${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
> +if(ENABLE_PIC)
> +list(APPEND ASM_FLAGS -DPIC)
> +endif()
> +if(APPLE)
> +set(ARGS -f macho64 -DPREFIX)
> +elseif(UNIX AND NOT CYGWIN)
> +set(ARGS -f elf64)
> +else()
> +set(ARGS -f win64)
> +endif()
> +else()
>

Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-22 Thread Pradeep Ramachandran
On Tue, Nov 21, 2017 at 6:39 PM, Praveen Tiwari <
prav...@multicorewareinc.com> wrote:

> Yes, that's true looking at the future prospect we have decided to move
> the support to NASM. It comes with additional advantages as Andrey
> mentioned above,  but we understand the concern to change assembler
> support,  we will make it a smooth transition as much as possible. Thanks.
>
> Regards,
> Praveen Tiwari
>

If ubuntu 16.04 only ships with nasm 2.11, we can reduce the nasm
requirement to 2.11. But moving to nasm seems like a future-proof move for
us.
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel


Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-21 Thread chekib nouira
 speaking about AVX512, what's the speed up it is offering as compared to AVX2?
thx--Chekib
Le mardi 21 novembre 2017 à 04:49:30 UTC−8, Andrey Semashev 
 a écrit :  
 
 On 11/21/17 15:25, Sean McGovern wrote:
> Hi,
> 
> Is this really necessary?
> 
> Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.

yasm does not support AVX-512 and has very low activity recently[1]. 
nasm supports AVX-512 since 2.13[2]. Even if x265 does not use AVX-512 
currently, this is the right way forward in the long run. It may be 
possible to reduce the minimum required nasm version though, until 
AVX-512 support is added.

BTW, x264 and ffmpeg made a similar move recently.

[1]: https://github.com/yasm/yasm/commits/master
[2]: http://www.nasm.us/doc/nasmdocc.html

>    Original Message
> From: vign...@multicorewareinc.com
> Sent: November 21, 2017 12:07 AM
> To: x265-devel@videolan.org
> Reply-to: x265-devel@videolan.org
> Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM
> 
> # HG changeset patch
> # User Vignesh Vijayakumar
> # Date 1509595841 -19800
> #  Thu Nov 02 09:40:41 2017 +0530
> # Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
> # Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
> x86: Change assembler from YASM to NASM
> 
> Supports NASM versions 2.13 and greater
> 
> diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
> --- a/source/CMakeLists.txt    Thu Nov 02 09:39:58 2017 +0530
> +++ b/source/CMakeLists.txt    Thu Nov 02 09:40:41 2017 +0530
> @@ -323,15 +323,15 @@
>   execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion 
>OUTPUT_VARIABLE CC_VERSION)
> endif(GCC)
> 
> -find_package(Yasm)
> +find_package(Nasm)
> if(ARM OR CROSS_COMPILE_ARM)
>   option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
> -elseif(YASM_FOUND AND X86)
> -    if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
> -    message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old. 
> 1.2.0 or later required")
> +elseif(NASM_FOUND AND X86)
> +    if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
> +    message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old. 
> 2.13.0 or later required")
>   option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" 
>OFF)
>   else()
> -    message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build assembly 
> primitives")
> +    message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build assembly 
> primitives")
>   option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
>   endif()
> else()
> @@ -517,18 +517,18 @@
>   list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
>   add_custom_command(
>   OUTPUT ${ASM}.${SUFFIX}
> -    COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC} -o 
> ${ASM}.${SUFFIX}
> +    COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC} -o 
> ${ASM}.${SUFFIX}
>   DEPENDS ${ASM_SRC})
>   endforeach()
>   endif()
> endif()
> source_group(ASM FILES ${ASM_SRCS})
> if(ENABLE_HDR10_PLUS)
> -    add_library(x265-static STATIC $ 
> $ $ ${ASM_OBJS} 
> ${ASM_SRCS})
> +    add_library(x265-static STATIC $ 
> $ $ ${ASM_OBJS})
>   add_library(hdr10plus-static STATIC $)
>   set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME hdr10plus)
> else()
> -    add_library(x265-static STATIC $ 
> $ ${ASM_OBJS} ${ASM_SRCS})
> +    add_library(x265-static STATIC $ 
> $ ${ASM_OBJS})
> endif()
> if(NOT MSVC)
>   set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
> @@ -686,11 +686,11 @@
>   if(ENABLE_HDR10_PLUS)
>   add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT}
>   x265.cpp x265.h x265cli.h
> -    $ $ 
> $ ${ASM_OBJS} ${ASM_SRCS})
> +    $ $ 
> $ ${ASM_OBJS})
>   else()
>   add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} 
>${GETOPT}
>   x265.cpp x265.h x265cli.h
> -    $ $ 
> ${ASM_OBJS} ${ASM_SRCS})
> +    $ $ 
> ${ASM_OBJS})
>   endif()
>   else()
>   add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} 
>${GETOPT} ${X265_RC_FILE}
> diff -r 182bfd0d5af9 -r 16ea92bf3627 
> source/cmake/CMakeASM_NASMInformation.cmake
> --- /dev/null    Thu Jan 01 00:00:00 1970 +
> +++ b/source/cmake/CMakeASM_NASMInformation.cmake    Thu Nov 02 09:40:41 2017 
> +0530
> @@ -0,0 +1,68 @@
> +set(ASM_DIALECT "_NASM")
> +set(CMAKE_ASM$

Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-21 Thread Praveen Tiwari
Yes, that's true looking at the future prospect we have decided to move the
support to NASM. It comes with additional advantages as Andrey mentioned
above,  but we understand the concern to change assembler support,  we will
make it a smooth transition as much as possible. Thanks.

Regards,
Praveen Tiwari
___
x265-devel mailing list
x265-devel@videolan.org
https://mailman.videolan.org/listinfo/x265-devel


Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-21 Thread Andrey Semashev

On 11/21/17 15:25, Sean McGovern wrote:

Hi,

Is this really necessary?

Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.


yasm does not support AVX-512 and has very low activity recently[1]. 
nasm supports AVX-512 since 2.13[2]. Even if x265 does not use AVX-512 
currently, this is the right way forward in the long run. It may be 
possible to reduce the minimum required nasm version though, until 
AVX-512 support is added.


BTW, x264 and ffmpeg made a similar move recently.

[1]: https://github.com/yasm/yasm/commits/master
[2]: http://www.nasm.us/doc/nasmdocc.html


   Original Message
From: vign...@multicorewareinc.com
Sent: November 21, 2017 12:07 AM
To: x265-devel@videolan.org
Reply-to: x265-devel@videolan.org
Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

# HG changeset patch
# User Vignesh Vijayakumar
# Date 1509595841 -19800
#  Thu Nov 02 09:40:41 2017 +0530
# Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
# Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
x86: Change assembler from YASM to NASM

Supports NASM versions 2.13 and greater

diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
--- a/source/CMakeLists.txt Thu Nov 02 09:39:58 2017 +0530
+++ b/source/CMakeLists.txt Thu Nov 02 09:40:41 2017 +0530
@@ -323,15 +323,15 @@
  execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion 
OUTPUT_VARIABLE CC_VERSION)
endif(GCC)

-find_package(Yasm)
+find_package(Nasm)
if(ARM OR CROSS_COMPILE_ARM)
  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
-elseif(YASM_FOUND AND X86)
-    if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
-    message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old. 1.2.0 or 
later required")
+elseif(NASM_FOUND AND X86)
+    if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
+    message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old. 2.13.0 or 
later required")
  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" OFF)
  else()
-    message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build assembly 
primitives")
+    message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build assembly 
primitives")
  option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
  endif()
else()
@@ -517,18 +517,18 @@
  list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
  add_custom_command(
  OUTPUT ${ASM}.${SUFFIX}
-    COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC} -o 
${ASM}.${SUFFIX}
+    COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC} -o 
${ASM}.${SUFFIX}
  DEPENDS ${ASM_SRC})
  endforeach()
  endif()
endif()
source_group(ASM FILES ${ASM_SRCS})
if(ENABLE_HDR10_PLUS)
-    add_library(x265-static STATIC $ 
$ $ ${ASM_OBJS} ${ASM_SRCS})
+    add_library(x265-static STATIC $ 
$ $ ${ASM_OBJS})
  add_library(hdr10plus-static STATIC $)
  set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME hdr10plus)
else()
-    add_library(x265-static STATIC $ 
$ ${ASM_OBJS} ${ASM_SRCS})
+    add_library(x265-static STATIC $ 
$ ${ASM_OBJS})
endif()
if(NOT MSVC)
  set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
@@ -686,11 +686,11 @@
  if(ENABLE_HDR10_PLUS)
  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT}
  x265.cpp x265.h x265cli.h
-    $ $ 
$ ${ASM_OBJS} ${ASM_SRCS})
+    $ $ 
$ ${ASM_OBJS})
  else()
  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} 
${GETOPT}
  x265.cpp x265.h x265cli.h
-    $ $ 
${ASM_OBJS} ${ASM_SRCS})
+    $ $ 
${ASM_OBJS})
  endif()
  else()
  add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT} 
${X265_RC_FILE}
diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_NASMInformation.cmake
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/source/cmake/CMakeASM_NASMInformation.cmake   Thu Nov 02 09:40:41 
2017 +0530
@@ -0,0 +1,68 @@
+set(ASM_DIALECT "_NASM")
+set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)
+
+if(X64)
+    list(APPEND ASM_FLAGS -DARCH_X86_64=1 -I 
${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
+    if(ENABLE_PIC)
+    list(APPEND ASM_FLAGS -DPIC)
+    endif()
+    if(APPLE)
+    set(ARGS -f macho64 -DPREFIX)
+    elseif(UNIX AND NOT CYGWIN)
+    set(ARGS -f elf64)
+    else()
+    set(ARGS -f win64)
+    endif()
+else()
+    list(APPEND ASM_FLAGS -DARCH_X86_64=0 -I 
${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
+    if(APPLE)
+    set(ARGS -f macho32 -DPREFIX)
+    elseif(UNIX AND NOT CYGWIN)
+    set(ARGS -f elf32)
+    else()
+    set(ARGS -f win32 -DPREFIX)
+    endif()
+endif()
+
+if(GCC)
+    list(APPEND ASM_FLAGS -DHAVE_ALIGN

Re: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-21 Thread Sean McGovern
Hi,

Is this really necessary?

Ubuntu 16.04 Xenial Xerus only ships with nasm 2.11.08.

-- Sean McG.

  Original Message  
From: vign...@multicorewareinc.com
Sent: November 21, 2017 12:07 AM
To: x265-devel@videolan.org
Reply-to: x265-devel@videolan.org
Subject: [x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

# HG changeset patch
# User Vignesh Vijayakumar
# Date 1509595841 -19800
#  Thu Nov 02 09:40:41 2017 +0530
# Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
# Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
x86: Change assembler from YASM to NASM

Supports NASM versions 2.13 and greater

diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
--- a/source/CMakeLists.txt Thu Nov 02 09:39:58 2017 +0530
+++ b/source/CMakeLists.txt Thu Nov 02 09:40:41 2017 +0530
@@ -323,15 +323,15 @@
 execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE 
CC_VERSION)
endif(GCC)

-find_package(Yasm)
+find_package(Nasm)
if(ARM OR CROSS_COMPILE_ARM)
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
-elseif(YASM_FOUND AND X86)
-    if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
-    message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old. 1.2.0 
or later required")
+elseif(NASM_FOUND AND X86)
+    if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
+    message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old. 2.13.0 
or later required")
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" OFF)
 else()
-    message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build assembly 
primitives")
+    message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build assembly 
primitives")
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
 endif()
else()
@@ -517,18 +517,18 @@
 list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
 add_custom_command(
 OUTPUT ${ASM}.${SUFFIX}
-    COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC} -o 
${ASM}.${SUFFIX}
+    COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC} -o 
${ASM}.${SUFFIX}
 DEPENDS ${ASM_SRC})
 endforeach()
 endif()
endif()
source_group(ASM FILES ${ASM_SRCS})
if(ENABLE_HDR10_PLUS)
-    add_library(x265-static STATIC $ 
$ $ ${ASM_OBJS} ${ASM_SRCS})
+    add_library(x265-static STATIC $ 
$ $ ${ASM_OBJS})
 add_library(hdr10plus-static STATIC $)
 set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME hdr10plus)
else()
-    add_library(x265-static STATIC $ 
$ ${ASM_OBJS} ${ASM_SRCS})
+    add_library(x265-static STATIC $ 
$ ${ASM_OBJS})
endif()
if(NOT MSVC)
 set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
@@ -686,11 +686,11 @@
 if(ENABLE_HDR10_PLUS)
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT}
 x265.cpp x265.h x265cli.h
-    $ $ 
$ ${ASM_OBJS} ${ASM_SRCS})
+    $ $ 
$ ${ASM_OBJS})
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} 
${GETOPT}
 x265.cpp x265.h x265cli.h
-    $ $ 
${ASM_OBJS} ${ASM_SRCS})
+    $ $ 
${ASM_OBJS})
 endif()
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT} 
${X265_RC_FILE}
diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_NASMInformation.cmake
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/source/cmake/CMakeASM_NASMInformation.cmake   Thu Nov 02 09:40:41 
2017 +0530
@@ -0,0 +1,68 @@
+set(ASM_DIALECT "_NASM")
+set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)
+
+if(X64)
+    list(APPEND ASM_FLAGS -DARCH_X86_64=1 -I 
${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
+    if(ENABLE_PIC)
+    list(APPEND ASM_FLAGS -DPIC)
+    endif()
+    if(APPLE)
+    set(ARGS -f macho64 -DPREFIX)
+    elseif(UNIX AND NOT CYGWIN)
+    set(ARGS -f elf64)
+    else()
+    set(ARGS -f win64)
+    endif()
+else()
+    list(APPEND ASM_FLAGS -DARCH_X86_64=0 -I 
${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
+    if(APPLE)
+    set(ARGS -f macho32 -DPREFIX)
+    elseif(UNIX AND NOT CYGWIN)
+    set(ARGS -f elf32)
+    else()
+    set(ARGS -f win32 -DPREFIX)
+    endif()
+endif()
+
+if(GCC)
+    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=1)
+else()
+    list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=0)
+endif()
+
+if(HIGH_BIT_DEPTH)
+    if(MAIN12)
+    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=12 
-DX265_NS=${X265_NS})
+    else()
+    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10 
-DX265_NS=${X265_NS})
+    endif()
+else()
+    list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 
-DX265_NS=${X265_NS})
+endif()
+
+list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS}")
+
+if(CMAKE_BUILD_TYPE M

[x265] [PATCH 2 of 2] x86: Change assembler from YASM to NASM

2017-11-20 Thread vignesh
# HG changeset patch
# User Vignesh Vijayakumar
# Date 1509595841 -19800
#  Thu Nov 02 09:40:41 2017 +0530
# Node ID 16ea92bf3627c6de43d583554df294dbbfd8fa8a
# Parent  182bfd0d5af929a801a08b35ee863d79eadb2833
x86: Change assembler from YASM to NASM

Supports NASM versions 2.13 and greater

diff -r 182bfd0d5af9 -r 16ea92bf3627 source/CMakeLists.txt
--- a/source/CMakeLists.txt Thu Nov 02 09:39:58 2017 +0530
+++ b/source/CMakeLists.txt Thu Nov 02 09:40:41 2017 +0530
@@ -323,15 +323,15 @@
 execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE 
CC_VERSION)
 endif(GCC)
 
-find_package(Yasm)
+find_package(Nasm)
 if(ARM OR CROSS_COMPILE_ARM)
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
-elseif(YASM_FOUND AND X86)
-if (YASM_VERSION_STRING VERSION_LESS "1.2.0")
-message(STATUS "Yasm version ${YASM_VERSION_STRING} is too old. 1.2.0 
or later required")
+elseif(NASM_FOUND AND X86)
+if (NASM_VERSION_STRING VERSION_LESS "2.13.0")
+message(STATUS "Nasm version ${NASM_VERSION_STRING} is too old. 2.13.0 
or later required")
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" OFF)
 else()
-message(STATUS "Found Yasm ${YASM_VERSION_STRING} to build assembly 
primitives")
+message(STATUS "Found Nasm ${NASM_VERSION_STRING} to build assembly 
primitives")
 option(ENABLE_ASSEMBLY "Enable use of assembly coded primitives" ON)
 endif()
 else()
@@ -517,18 +517,18 @@
 list(APPEND ASM_OBJS ${ASM}.${SUFFIX})
 add_custom_command(
 OUTPUT ${ASM}.${SUFFIX}
-COMMAND ${YASM_EXECUTABLE} ARGS ${YASM_FLAGS} ${ASM_SRC} -o 
${ASM}.${SUFFIX}
+COMMAND ${NASM_EXECUTABLE} ARGS ${NASM_FLAGS} ${ASM_SRC} -o 
${ASM}.${SUFFIX}
 DEPENDS ${ASM_SRC})
 endforeach()
 endif()
 endif()
 source_group(ASM FILES ${ASM_SRCS})
 if(ENABLE_HDR10_PLUS)
-add_library(x265-static STATIC $ 
$ $ ${ASM_OBJS} ${ASM_SRCS})
+add_library(x265-static STATIC $ 
$ $ ${ASM_OBJS})
 add_library(hdr10plus-static STATIC $)
 set_target_properties(hdr10plus-static PROPERTIES OUTPUT_NAME hdr10plus)
 else()
-add_library(x265-static STATIC $ 
$ ${ASM_OBJS} ${ASM_SRCS})
+add_library(x265-static STATIC $ 
$ ${ASM_OBJS})
 endif()
 if(NOT MSVC)
 set_target_properties(x265-static PROPERTIES OUTPUT_NAME x265)
@@ -686,11 +686,11 @@
 if(ENABLE_HDR10_PLUS)
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT}
 x265.cpp x265.h x265cli.h
-$ $ 
$ ${ASM_OBJS} ${ASM_SRCS})
+$ $ 
$ ${ASM_OBJS})
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} 
${GETOPT}
 x265.cpp x265.h x265cli.h
-$ $ 
${ASM_OBJS} ${ASM_SRCS})
+$ $ 
${ASM_OBJS})
 endif()
 else()
 add_executable(cli ../COPYING ${InputFiles} ${OutputFiles} ${GETOPT} 
${X265_RC_FILE}
diff -r 182bfd0d5af9 -r 16ea92bf3627 source/cmake/CMakeASM_NASMInformation.cmake
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/source/cmake/CMakeASM_NASMInformation.cmake   Thu Nov 02 09:40:41 
2017 +0530
@@ -0,0 +1,68 @@
+set(ASM_DIALECT "_NASM")
+set(CMAKE_ASM${ASM_DIALECT}_SOURCE_FILE_EXTENSIONS asm)
+
+if(X64)
+list(APPEND ASM_FLAGS -DARCH_X86_64=1 -I 
${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
+if(ENABLE_PIC)
+list(APPEND ASM_FLAGS -DPIC)
+endif()
+if(APPLE)
+set(ARGS -f macho64 -DPREFIX)
+elseif(UNIX AND NOT CYGWIN)
+set(ARGS -f elf64)
+else()
+set(ARGS -f win64)
+endif()
+else()
+list(APPEND ASM_FLAGS -DARCH_X86_64=0 -I 
${CMAKE_CURRENT_SOURCE_DIR}/../common/x86/)
+if(APPLE)
+set(ARGS -f macho32 -DPREFIX)
+elseif(UNIX AND NOT CYGWIN)
+set(ARGS -f elf32)
+else()
+set(ARGS -f win32 -DPREFIX)
+endif()
+endif()
+
+if(GCC)
+list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=1)
+else()
+list(APPEND ASM_FLAGS -DHAVE_ALIGNED_STACK=0)
+endif()
+
+if(HIGH_BIT_DEPTH)
+if(MAIN12)
+list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=12 
-DX265_NS=${X265_NS})
+else()
+list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=1 -DBIT_DEPTH=10 
-DX265_NS=${X265_NS})
+endif()
+else()
+list(APPEND ASM_FLAGS -DHIGH_BIT_DEPTH=0 -DBIT_DEPTH=8 
-DX265_NS=${X265_NS})
+endif()
+
+list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS}")
+
+if(CMAKE_BUILD_TYPE MATCHES Release)
+list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_RELEASE}")
+elseif(CMAKE_BUILD_TYPE MATCHES Debug)
+list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_DEBUG}")
+elseif(CMAKE_BUILD_TYPE MATCHES MinSizeRel)
+list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_MINSIZEREL}")
+elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo)
+list(APPEND ASM_FLAGS "${CMAKE_ASM_NASM_FLAGS_RELWITHDEBINFO}")
+endif()
+
+set(NASM_