Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions FSS/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,12 @@ target_include_directories(fss

target_include_directories(fss PRIVATE deps/cryptoTools)

target_compile_options(fss PRIVATE -std=c++17 -march=native -Wno-parentheses-equality -Wno-ignored-attributes -maes -msse2 -msse4.1 -mpclmul -fPIC -no-pie)
target_compile_features(fss PRIVATE cxx_std_17)
target_compile_options(fss PRIVATE -Wno-parentheses-equality -Wno-ignored-attributes -fPIC)

if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64|i[3-6]86")
target_compile_options(fss PRIVATE -march=native -maes -msse2 -msse4.1 -mpclmul)
endif()

install(
TARGETS fss
Expand Down Expand Up @@ -91,5 +96,3 @@ install(FILES
install(DIRECTORY
"deps/cryptoTools/cryptoTools"
DESTINATION include)


30 changes: 29 additions & 1 deletion FSS/src/deps/cryptoTools/cryptoTools/Common/Defines.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,36 @@
#include <iostream>
#include <memory>

#if defined(__aarch64__) || defined(_M_ARM64)
#include <cryptoTools/Common/sse2neon.h>

#if defined(__ARM_FEATURE_CRYPTO) && !defined(EZPC_ARM_AES_DECRYPT_INTRINSICS)
#define EZPC_ARM_AES_DECRYPT_INTRINSICS
static inline __m128i _mm_aesimc_si128(__m128i a)
{
return vreinterpretq_m128i_u8(vaesimcq_u8(vreinterpretq_u8_m128i(a)));
}

static inline __m128i _mm_aesdec_si128(__m128i a, __m128i roundKey)
{
uint8x16_t zero = vdupq_n_u8(0);
return vreinterpretq_m128i_u8(
vaesimcq_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), zero)) ^
vreinterpretq_u8_m128i(roundKey));
}

static inline __m128i _mm_aesdeclast_si128(__m128i a, __m128i roundKey)
{
uint8x16_t zero = vdupq_n_u8(0);
return _mm_xor_si128(
vreinterpretq_m128i_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), zero)),
roundKey);
}
#endif
#else
#include <emmintrin.h>
#include <smmintrin.h>
#endif

#include <cryptoTools/Common/config.h>

Expand Down Expand Up @@ -37,7 +65,7 @@
#endif

// add instrinsics names that intel knows but clang doesn't…
#ifdef __clang__
#if defined(__clang__) && !defined(_mm_cvtsi128_si64x)
#define _mm_cvtsi128_si64x _mm_cvtsi128_si64
#endif

Expand Down
Loading