Merge pull request #77 from jasonrandrews/master

use sse2neon for aarch64 performance improvements
This commit is contained in:
mmcclaskey 2021-11-09 11:11:38 -05:00 committed by GitHub
commit 4af59dbdf7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 8797 additions and 3 deletions

View File

@ -210,7 +210,13 @@ endif()
set(HAVE_PAM ${ENABLE_PAM})
# Check for SSE2
check_cxx_compiler_flag(-msse2 COMPILER_SUPPORTS_SSE2)
# Arm is not SSE2 but say it is and use sse2neon.h to convert to neon
check_cxx_compiler_flag("-march=armv8-a" COMPILER_ARM)
if(COMPILER_ARM)
set(COMPILER_SUPPORTS_SSE2 1)
else()
check_cxx_compiler_flag(-msse2 COMPILER_SUPPORTS_SSE2)
endif()
# Generate config.h and make sure the source finds it
configure_file(config.h.in config.h)

View File

@ -135,6 +135,7 @@ These instructions assume KasmVNC has been cloned at $HOME and ```kasm_www.tar.g
cd ~
tar -zxf kasm_www.tar.gz -C KasmVNC/builder/
cd KasmVNC
sed -i 's/^build_www_dir$/#build_www_dir/' builder/build-tarball
sudo builder/build-package ubuntu bionic
```
The resulting deb package can be found under ~/KasmVNC/builder/build/bionic

View File

@ -107,7 +107,12 @@ set(SCALE_DUMMY_SOURCES
scale_dummy.cxx)
if(COMPILER_SUPPORTS_SSE2)
set_source_files_properties(${SSE2_SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS} -msse2)
if(COMPILER_ARM)
# This is for Graviton2, adjust for other CPUs: -march=armv8-a+crc+crypto
set_source_files_properties(${SSE2_SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS} -march=armv8.2-a+fp16+rcpc+dotprod+crypto)
else()
set_source_files_properties(${SSE2_SOURCES} PROPERTIES COMPILE_FLAGS ${COMPILE_FLAGS} -msse2)
endif()
set(RFB_SOURCES
${RFB_SOURCES}
${SSE2_SOURCES}

View File

@ -51,7 +51,9 @@ namespace rfb {
bool supportsSSE2() {
getcpuid();
#if defined(__x86_64__) || defined(__i386__)
#if defined(__aarch64__)
return true;
#elif defined(__x86_64__) || defined(__i386__)
#define bit_SSE2 (1 << 26)
return cpuid[3] & bit_SSE2;
#endif

View File

@ -16,7 +16,11 @@
* USA.
*/
#ifdef __aarch64__
#include "sse2neon.h"
#else
#include <emmintrin.h>
#endif
#include <rfb/scale_sse2.h>

8776
common/rfb/sse2neon.h Normal file

File diff suppressed because it is too large Load Diff