Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .CMake/alg_support.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ endif()
endif()

# BIKE is not supported on Windows and 32-bit ARM
cmake_dependent_option(OQS_ENABLE_KEM_BIKE "Enable BIKE algorithm family" ON "NOT WIN32; NOT ARCH_ARM32v7" OFF)
cmake_dependent_option(OQS_ENABLE_KEM_BIKE "Enable BIKE algorithm family" ON "NOT WIN32; NOT ARCH_ARM32v7; NOT ARCH_X86" OFF)
cmake_dependent_option(OQS_ENABLE_KEM_bike_l1 "" ON "OQS_ENABLE_KEM_BIKE" OFF)
cmake_dependent_option(OQS_ENABLE_KEM_bike_l3 "" ON "OQS_ENABLE_KEM_BIKE" OFF)

Expand Down
12 changes: 12 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64")
if(${OQS_DIST_BUILD})
set(OQS_DIST_X86_64_BUILD ON)
endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i586|i686")
set(ARCH "i586")
set(ARCH_X86 ON)
if(${OQS_DIST_BUILD})
set(OQS_DIST_X86_BUILD ON)
endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|arm64v8")
set(ARCH "arm64v8")
set(ARCH_ARM64v8 ON)
Expand All @@ -47,6 +53,12 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armel|armhf|armv7|arm32v7")
if(${OQS_DIST_BUILD})
set(OQS_DIST_ARM32v7_BUILD ON)
endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc64le")
set(ARCH "ppc64le")
set(ARCH_PPC64LE ON)
if(${OQS_DIST_BUILD})
set(OQS_DIST_PPC64LE_BUILD ON)
endif()
elseif(OQS_PERMIT_UNSUPPORTED_ARCHITECTURE)
message(WARNING "Unknown or unsupported processor: " ${CMAKE_SYSTEM_PROCESSOR})
message(WARNING "Compilation on an unsupported processor should only be used for testing, as it may result an insecure configuration, for example due to variable-time instructions leaking secret information.")
Expand Down
10 changes: 10 additions & 0 deletions src/common/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ static void set_available_cpu_extensions(void) {
cpu_ext_data[OQS_CPU_EXT_VPCLMULQDQ] = is_bit_set(leaf_7.ecx, 10);
}
}
#elif defined(OQS_DIST_X86_BUILD)
static void set_available_cpu_extensions(void) {
/* mark that this function has been called */
cpu_ext_data[OQS_CPU_EXT_INIT] = 1;
}
#elif defined(OQS_DIST_ARM64v8_BUILD)
#include <sys/auxv.h>
#include <asm/hwcap.h>
Expand Down Expand Up @@ -103,6 +108,11 @@ static void set_available_cpu_extensions(void) {
cpu_ext_data[OQS_CPU_EXT_ARM_NEON] = 1;
}
}
#elif defined(OQS_DIST_PPC64LE_BUILD)
static void set_available_cpu_extensions(void) {
/* mark that this function has been called */
cpu_ext_data[OQS_CPU_EXT_INIT] = 1;
}
#elif defined(OQS_DIST_BUILD)
static void set_available_cpu_extensions(void) {
}
Expand Down
4 changes: 4 additions & 0 deletions src/kem/sike/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ if(OQS_ENABLE_KEM_sike_p434 OR
add_library(sike OBJECT ${SRCS})
if(ARCH STREQUAL "x86")
target_compile_definitions(sike PRIVATE _GENERIC_ _X86_)
elseif(ARCH_X86)
target_compile_definitions(sike PRIVATE _GENERIC_ _X86_)
elseif(ARCH_X86_64)
target_compile_definitions(sike PRIVATE _AMD64_)
if(OQS_USE_BMI2_INSTRUCTIONS)
Expand Down Expand Up @@ -124,6 +126,8 @@ if(OQS_ENABLE_KEM_sike_p434 OR
target_compile_definitions(sike PRIVATE USE_SIKEP751_ASM)
endif()
endif()
elseif(ARCH_PPC64LE)
target_compile_definitions(sike PRIVATE _GENERIC_ _PPC64LE_)
endif()

if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
Expand Down
2 changes: 1 addition & 1 deletion src/kem/sike/external/P434/P434_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#include "../config.h"

#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X)
#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X) || (TARGET == TARGET_PPC64LE)
#define NWORDS_FIELD 7 // Number of words of a 434-bit field element
#define p434_ZERO_WORDS 3 // Number of "0" digits in the least significant part of p434 + 1
#elif (TARGET == TARGET_x86) || (TARGET == TARGET_ARM)
Expand Down
2 changes: 1 addition & 1 deletion src/kem/sike/external/P503/P503_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#include "../config.h"

#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X)
#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X) || (TARGET == TARGET_PPC64LE)
#define NWORDS_FIELD 8 // Number of words of a 503-bit field element
#define p503_ZERO_WORDS 3 // Number of "0" digits in the least significant part of p503 + 1
#elif (TARGET == TARGET_x86) || (TARGET == TARGET_ARM)
Expand Down
2 changes: 1 addition & 1 deletion src/kem/sike/external/P610/P610_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#include "../config.h"

#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X)
#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X) || (TARGET == TARGET_PPC64LE)
#define NWORDS_FIELD 10 // Number of words of a 610-bit field element
#define p610_ZERO_WORDS 4 // Number of "0" digits in the least significant part of p610 + 1
#elif (TARGET == TARGET_x86) || (TARGET == TARGET_ARM)
Expand Down
2 changes: 1 addition & 1 deletion src/kem/sike/external/P751/P751_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

#include "../config.h"

#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X)
#if (TARGET == TARGET_AMD64) || (TARGET == TARGET_ARM64) || (TARGET == TARGET_S390X) || (TARGET == TARGET_PPC64LE)
#define NWORDS_FIELD 12 // Number of words of a 751-bit field element
#define p751_ZERO_WORDS 5 // Number of "0" digits in the least significant part of p751 + 1
#elif (TARGET == TARGET_x86) || (TARGET == TARGET_ARM)
Expand Down
7 changes: 7 additions & 0 deletions src/kem/sike/external/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#define TARGET_S390X 3
#define TARGET_ARM 4
#define TARGET_ARM64 5
#define TARGET_PPC64LE 6

#if defined(_AMD64_)
#define TARGET TARGET_AMD64
Expand Down Expand Up @@ -62,6 +63,12 @@ typedef uint16_t hdigit_t; // Unsigned 16-bit digit
#define LOG2RADIX 6
typedef uint64_t digit_t; // Unsigned 64-bit digit
typedef uint32_t hdigit_t; // Unsigned 32-bit digit
#elif defined(_PPC64LE_)
#define TARGET TARGET_PPC64LE
#define RADIX 64
#define LOG2RADIX 6
typedef uint64_t digit_t; // Unsigned 64-bit digit
typedef uint32_t hdigit_t; // Unsigned 32-bit digit
#else
#error-- "Unsupported ARCHITECTURE"
#endif
Expand Down
2 changes: 2 additions & 0 deletions src/oqsconfig.h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
#cmakedefine OQS_COMPILE_BUILD_TARGET "@OQS_COMPILE_BUILD_TARGET@"
#cmakedefine OQS_DIST_BUILD 1
#cmakedefine OQS_DIST_X86_64_BUILD 1
#cmakedefine OQS_DIST_X86_BUILD 1
#cmakedefine OQS_DIST_ARM64v8_BUILD 1
#cmakedefine OQS_DIST_ARM32v7_BUILD 1
#cmakedefine OQS_DIST_PPC64LE_BUILD 1
#cmakedefine OQS_DEBUG_BUILD 1
#cmakedefine ARCH_X86_64 1
#cmakedefine ARCH_ARM64v8 1
Expand Down