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
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ else ifeq "$(ARCH)" "ARM64"
ARCHITECTURE=_ARM64_
USE_OPT_LEVEL=_FAST_
ARM_TARGET=YES
else ifeq "$(ARCH)" "PPC64LE"
ARCHITECTURE=_PPC64LE_
USE_OPT_LEVEL=_GENERIC_
endif

ifeq "$(OPT_LEVEL)" "GENERIC"
Expand Down Expand Up @@ -62,6 +65,9 @@ endif
ifeq "$(ARCHITECTURE)" "_S390X_"
ADDITIONAL_SETTINGS=-march=z10
endif
ifeq "$(ARCHITECTURE)" "_PPC64LE_"
ADDITIONAL_SETTINGS=
endif

VALGRIND_CFLAGS=
ifeq "$(DO_VALGRIND_CHECK)" "TRUE"
Expand Down
2 changes: 1 addition & 1 deletion src/P434/P434_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,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/P503/P503_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,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/P610/P610_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,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/P751/P751_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,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/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,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 @@ -81,6 +82,12 @@
#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
4 changes: 2 additions & 2 deletions tests/test_extras.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#if (OS_TARGET == OS_WIN)
#include <intrin.h>
#endif
#if (OS_TARGET == OS_NIX) && (TARGET == TARGET_ARM || TARGET == TARGET_ARM64)
#if (OS_TARGET == OS_NIX) && (TARGET == TARGET_ARM || TARGET == TARGET_ARM64 || TARGET == TARGET_PPC64LE)
#include <time.h>
#endif
#include <stdlib.h>
Expand Down Expand Up @@ -40,7 +40,7 @@ int64_t cpucycles(void)
uint64_t tod;
__asm__ volatile("stckf %0\n" : "=Q" (tod) : : "cc");
return (tod);
#elif (OS_TARGET == OS_NIX) && (TARGET == TARGET_ARM || TARGET == TARGET_ARM64)
#elif (OS_TARGET == OS_NIX) && (TARGET == TARGET_ARM || TARGET == TARGET_ARM64 || TARGET == TARGET_PPC64LE)
struct timespec time;

clock_gettime(CLOCK_REALTIME, &time);
Expand Down
2 changes: 1 addition & 1 deletion tests/test_extras.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#define FAILED 1


#if (TARGET == TARGET_ARM || TARGET == TARGET_ARM64)
#if (TARGET == TARGET_ARM || TARGET == TARGET_ARM64 || TARGET == TARGET_PPC64LE)
#define print_unit printf("nsec");
#else
#define print_unit printf("cycles");
Expand Down