326d0de0b9da9299a70cbd621fb49f797d82fedc
[riscv-tests.git] / benchmarks / sort / sort.h
1 #include <string.h>
2 #include <stdint.h>
3 #include <stdbool.h>
4
5 #define FAKE_MALLOC_INIT(words, name) \
6 uint32_t heap_##name[words]; \
7 const size_t max_alloc_##name = (words) * sizeof(uint32_t); \
8 size_t cur_pos_##name; \
9 void* fake_malloc_##name( size_t size ) \
10 { \
11 static bool init = false; \
12 if(!init) { \
13 cur_pos_##name = 0; \
14 init = true; \
15 } \
16 if(cur_pos_##name < (words)) { \
17 void *ptr = (void*) &heap_##name[cur_pos_##name]; \
18 cur_pos_##name += size & ~((uint32_t)3) + 1; \
19 return ptr; \
20 } else { \
21 return NULL; \
22 } \
23 }
24
25
26
27 #ifndef _TAV_SORT_H_
28 #define _TAV_SORT_H_
29
30
31 int
32 n_squared_sort (float * value, int * index, int len);
33
34 int
35 radix_sort_tuples (int * value, int * index, int len, int radix_bits);
36
37 int
38 insertion_sort (float * value, int * index, int len);
39
40 int
41 quicksort (float * array, int * index, int len);
42
43 /* This defines the length at quicksort switches to insertion sort */
44 #ifndef MAX_THRESH
45 #define MAX_THRESH 10
46 #endif
47
48 #ifndef RADIX_BITS
49 #define RADIX_BITS (8)
50 #endif
51
52
53 #endif /* _TAV_SORT_H_ */