Add wasm tacle-bench targets
This commit is contained in:
@ -0,0 +1,56 @@
|
||||
#include "wccmalloc.h"
|
||||
|
||||
// This must be redefined for each new benchmark
|
||||
|
||||
// Wasm loop bounds
|
||||
|
||||
__attribute__((import_module("__pragma"), import_name("loopbound"))) extern void
|
||||
__pragma_loopbound(unsigned int min_bound, unsigned int max_bound);
|
||||
|
||||
#define HEAP_SIZE 30000
|
||||
|
||||
char susan_simulated_heap[HEAP_SIZE];
|
||||
unsigned int susan_freeHeapPos;
|
||||
|
||||
void *
|
||||
susan_wccmalloc(unsigned int numberOfBytes) {
|
||||
// Get a 4-byte adress for alignment purposes
|
||||
unsigned int offset =
|
||||
((unsigned long) susan_simulated_heap + susan_freeHeapPos) % 4;
|
||||
if (offset)
|
||||
susan_freeHeapPos += 4 - offset;
|
||||
void *currentPos = (void *) &susan_simulated_heap[susan_freeHeapPos];
|
||||
susan_freeHeapPos += numberOfBytes;
|
||||
return currentPos;
|
||||
}
|
||||
void
|
||||
susan_wccfreeall(void) {
|
||||
susan_freeHeapPos = 0;
|
||||
}
|
||||
|
||||
void *
|
||||
susan_wccmemcpy(void *dstpp, const void *srcpp, unsigned int len) {
|
||||
unsigned long int dstp = (long int) dstpp;
|
||||
unsigned long int srcp = (long int) srcpp;
|
||||
|
||||
__pragma_loopbound(76, 76);
|
||||
while (len > 0) {
|
||||
char __x = ((char *) srcp)[0];
|
||||
srcp += 1;
|
||||
len -= 1;
|
||||
((char *) dstp)[0] = __x;
|
||||
dstp += 1;
|
||||
}
|
||||
|
||||
return dstpp;
|
||||
}
|
||||
|
||||
void
|
||||
susan_wccmemset(void *p, int value, unsigned int num) {
|
||||
unsigned long i;
|
||||
char *char_ptr = (char *) p;
|
||||
|
||||
__pragma_loopbound(7220, 7220);
|
||||
for (i = 0; i < num; ++i)
|
||||
*char_ptr++ = (unsigned char) value;
|
||||
}
|
||||
Reference in New Issue
Block a user