Merge branch 'master' of github.com:ucb-bar/riscv-tests
[riscv-tests.git] / benchmarks / vec-fft / fft_const.h
1 #ifndef __FFT_CONST_H
2 #define __FFT_CONST_H
3
4 #ifndef FFT_SIZE
5 #define FFT_SIZE 1024
6 #endif /* FFT_SIZE */
7
8 #if 0
9 #define FFT_FIXED
10 #define DATA_IN_PERMUTED
11 #else
12 // #define DATA_IN_UNPERMUTED
13 #define FFT_FLOATING
14 #define FFT_FLOATING_PREC 64
15 #endif
16
17 #if defined(FFT_FIXED)
18 #define FIX_PT 20
19 #define DATA_WIDTH 32
20 #elif defined(FFT_FLOATING)
21 #if FFT_FLOATING_PREC == 16
22 #define FP_HALF
23 #elif FFT_FLOATING_PREC == 32
24 #define FP_SINGLE
25 #elif FFT_FLOATING_PREC == 64
26 #define FP_DOUBLE
27 #else
28 #error "Unsupported floating-point configuration"
29 #endif
30 #define DATA_WIDTH FFT_FLOATING_PREC
31 #else
32 #error "Define fixed or floating point in fft_const.h"
33 #endif
34
35 #if !defined(__ASSEMBLY__)
36
37 #include <stdint.h>
38 #include <inttypes.h>
39
40 #if defined(FFT_FIXED)
41 typedef int fftval_t;
42 typedef int fftbit_t;
43 #define FFT_PRI "%08x"
44 #elif defined(FFT_FLOATING)
45 #if defined(FP_HALF)
46 typedef uint16_t fftval_t;
47 typedef uint16_t fftbit_t;
48 #define FFT_PRI "%04" PRIx16
49 #elif defined(FP_SINGLE)
50 typedef float fftval_t;
51 typedef uint32_t fftbit_t;
52 #define FFT_PRI "%08" PRIx32
53 #elif defined(FP_DOUBLE)
54 typedef double fftval_t;
55 typedef uint64_t fftbit_t;
56 #define FFT_PRI "%016" PRIx64
57 #endif
58 #endif
59
60 extern fftval_t input_data_real[FFT_SIZE];
61 extern fftval_t input_data_imag[FFT_SIZE];
62 extern fftval_t output_data_real[FFT_SIZE];
63 extern fftval_t output_data_imag[FFT_SIZE];
64 extern fftval_t tf_real[FFT_SIZE];
65 extern fftval_t tf_imag[FFT_SIZE];
66
67 #endif /* __ASSEMBLY__ */
68
69 #endif /* __FFT_CONST_H */