projects
/
matthijs
/
projects
/
montium-fft.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Change loops back to do while, MontiumCC can't handle while loops.
[matthijs/projects/montium-fft.git]
/
FFT.mc
diff --git
a/FFT.mc
b/FFT.mc
index 626b0dc51508f41d2eff5804bed7b8ac8f2537a7..5969315c8a174d1cadc4b8e49e60bee63f813f1c 100644
(file)
--- a/
FFT.mc
+++ b/
FFT.mc
@@
-52,7
+52,7
@@
INLINE void write_output_regular(struct mems m, struct bf_out res, bool second_h
add_offset(m.output_b_re, 2);
\r
add_offset(m.output_b_im, 2);
\r
\r
add_offset(m.output_b_re, 2);
\r
add_offset(m.output_b_im, 2);
\r
\r
- if (second_half) {
\r
+ if (
!
second_half) {
\r
write_mem(m.output_a_re, res.a_re);
\r
write_mem(m.output_a_im, res.a_im);
\r
write_mem(m.output_b_re, res.b_re);
\r
write_mem(m.output_a_re, res.a_re);
\r
write_mem(m.output_a_im, res.a_im);
\r
write_mem(m.output_b_re, res.b_re);
\r
@@
-187,8
+187,8
@@
INLINE void do_half_regular_stage(struct mems m, bool stage_odd, bool second_hal
\r
/* Now, do half a single stage. That means N_t / 4 cycles. Since we do 2
\r
* cycles on every iteration, plus one before and after the loop,
\r
\r
/* Now, do half a single stage. That means N_t / 4 cycles. Since we do 2
\r
* cycles on every iteration, plus one before and after the loop,
\r
- * we will loop N_t / 8 - 1 times. */
\r
- init_loop(LC2, (PARAM_N_t / 8) - 1);
\r
+ * we will loop N_t / 8 - 1 times.
We add an extra - 1 because this is a do while loop...
*/
\r
+ init_loop(LC2, (PARAM_N_t / 8) - 1
- 1
);
\r
do {
\r
/* Write outputs of previous cycle */
\r
write_output_regular(m, out, second_half);
\r
do {
\r
/* Write outputs of previous cycle */
\r
write_output_regular(m, out, second_half);
\r
@@
-254,8
+254,8
@@
void run() {
struct mems m;
\r
\r
/* We need to do n_t regular stages. Since we do two stages each
\r
struct mems m;
\r
\r
/* We need to do n_t regular stages. Since we do two stages each
\r
- * iteration, we'll do n_t / 2 iterations
.
*/
\r
- init_loop(LC1, (PARAM_n_t / 2));
\r
+ * iteration, we'll do n_t / 2 iterations
(and a -1 because we check after looping)
*/
\r
+ init_loop(LC1, (PARAM_n_t / 2)
- 1
);
\r
do {
\r
m = init_mem_mapping(EVEN_STAGE);
\r
init_input_addresses_regular(m, EVEN_STAGE);
\r
do {
\r
m = init_mem_mapping(EVEN_STAGE);
\r
init_input_addresses_regular(m, EVEN_STAGE);
\r