First-level of support for new aarch64 machines
Testing on Neoverse N1 (Ampere 3GHz). Tested only on a subset of phy-simulators. - Changes: - use SIMDE consistently - adaptations of LDPC decoder generator for ARMv8 performance - SIMDe modifications of Intel CRC to allow for aarch64 build. optimizations for 128-bit to improve performance of LDPC encode/decode on aarch64 (Neoverse 1) - added BG2 files for 128-bit ldpc encoder (aarch64) - testing on Xeon - testing on x86 - minor changes to build/run on x86 - change in crc.h after returning to aarch64 - removed some warning in ldpc decoder generator for x86_64 - char - Delete irrelevant constants - Correctly declare variables - Define stdbool for all architectures - Remove definition of _MM_SHUFFLE and use SIMDE_MM_SHUFFLE - Remove commented code - Fix CMakeLists.txt - Include SIMDE avx2 functions in tools_defs.h
This commit is contained in:
committed by
Robert Schmidt
parent
79fd37b489
commit
a7bc282302
@@ -52,7 +52,11 @@
|
||||
|
||||
// Fixme: a better place to be shure it is called
|
||||
void read_cpu_hardware (void) __attribute__ ((constructor));
|
||||
void read_cpu_hardware (void) {__builtin_cpu_init(); }
|
||||
#if !defined(__arm__) && !defined(__aarch64__)
|
||||
void read_cpu_hardware (void) {__builtin_cpu_init(); }
|
||||
#else
|
||||
void read_cpu_hardware (void) {}
|
||||
#endif
|
||||
|
||||
log_mem_cnt_t log_mem_d[2];
|
||||
int log_mem_flag = 0;
|
||||
|
||||
@@ -38,7 +38,7 @@ static time_stats_t **measur_table;
|
||||
notifiedFIFO_t measur_fifo;
|
||||
double get_cpu_freq_GHz(void)
|
||||
{
|
||||
if (cpu_freq_GHz <1 ) {
|
||||
if (cpu_freq_GHz <0.01 ) {
|
||||
time_stats_t ts = {0};
|
||||
reset_meas(&ts);
|
||||
ts.trials++;
|
||||
@@ -46,8 +46,7 @@ double get_cpu_freq_GHz(void)
|
||||
sleep(1);
|
||||
ts.diff = (rdtsc_oai()-ts.in);
|
||||
cpu_freq_GHz = (double)ts.diff/1000000000;
|
||||
printf("CPU Freq is %f \n", cpu_freq_GHz);
|
||||
}
|
||||
}
|
||||
return cpu_freq_GHz;
|
||||
}
|
||||
|
||||
|
||||
@@ -106,8 +106,16 @@ static inline unsigned long long rdtsc_oai(void) {
|
||||
__asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
|
||||
return (d<<32) | a;
|
||||
}
|
||||
#elif defined(__aarch64__)
|
||||
static inline uint64_t rdtsc_oai(void) __attribute__((always_inline));
|
||||
static inline uint64_t rdtsc_oai(void)
|
||||
{
|
||||
uint64_t r = 0;
|
||||
asm volatile("mrs %0, cntvct_el0" : "=r"(r));
|
||||
return r;
|
||||
}
|
||||
|
||||
#elif defined(__arm__) || defined(__aarch64__)
|
||||
#elif defined(__arm__)
|
||||
static inline uint32_t rdtsc_oai(void) __attribute__((always_inline));
|
||||
static inline uint32_t rdtsc_oai(void) {
|
||||
uint32_t r = 0;
|
||||
|
||||
@@ -118,12 +118,6 @@ char *itoa(int i) {
|
||||
return strdup(buffer);
|
||||
}
|
||||
|
||||
void *memcpy1(void *dst,const void *src,size_t n) {
|
||||
|
||||
void *ret=dst;
|
||||
asm volatile("rep movsb" : "+D" (dst) : "c"(n), "S"(src) : "cc","memory");
|
||||
return(ret);
|
||||
}
|
||||
|
||||
void set_priority(int priority)
|
||||
{
|
||||
|
||||
@@ -102,8 +102,6 @@ int hex_char_to_hex_value (char c);
|
||||
// Converts an hexadecimal ASCII coded string into its value.**
|
||||
int hex_string_to_hex_value (uint8_t *hex_value, const char *hex_string, int size);
|
||||
|
||||
void *memcpy1(void *dst,const void *src,size_t n);
|
||||
|
||||
void set_priority(int priority);
|
||||
|
||||
char *itoa(int i);
|
||||
|
||||
Reference in New Issue
Block a user