diff --git a/code/duffle/gen/offsets.h b/code/duffle/gen/offsets.h index 31b40fe..51ebcc1 100644 --- a/code/duffle/gen/offsets.h +++ b/code/duffle/gen/offsets.h @@ -33,7 +33,7 @@ enum { atom_offset_example_atom_proc_skip = _atom_offset_example_atom_proc_skip, }; -// --- atom: build_normalize_v3s4 (62 words) --- +// --- atom: normalize_v3s4 (62 words) --- #define _atom_offset_aligned_done_srav_path 3 #define _atom_offset_srav_path_aligned_done 4 diff --git a/code/duffle/lottes_tape.h b/code/duffle/lottes_tape.h index 963e5e0..8d12f7b 100644 --- a/code/duffle/lottes_tape.h +++ b/code/duffle/lottes_tape.h @@ -99,8 +99,8 @@ enum { R_Atom7 = R_T7, R_Atom8 = R_T8, R_Atom9 = R_T9, - R_Atom10 = R_V0, // Tend to be used with gte DMAs - R_Atom11 = R_V1, // Tend to be used with gte DMAs + R_Atom10 = R_V0, // Tend to be used with gte moves + R_Atom11 = R_V1, // Tend to be used with gte moves R_Atom12 = R_A0, R_Atom13 = R_A1, R_Atom14 = R_A2, @@ -258,7 +258,7 @@ FI_ void tb_bind(TapeBuilder* tb, Slice data) { mem_copy(tb->ptr + tb->used * S_ FI_ Tape tb_end (TapeBuilder* tb) { tb_emit(tb,tape_exit); return (Tape){ C_(U4*,tb->ptr), tb->used }; } FI_ Tape tb_slice(TapeBuilder tb) { return (Tape){ C_(U4*,tb.ptr), tb.used }; } -#define tb_scope(tb) for(U4 tbs_once=0;tbs_once==0;++tbs_once,tb_emit(tb,tape_exit)) +#define tb_scope(tb) for(U4 tbs_once=0;tbs_once==0;++tbs_once,tb_emit(tb,tape_exit)) FI_ void tb_scope_run_end(TapeBuilder* tb) { tb_emit(tb,tape_exit); tape_run(tb_slice(tb[0])); } #define tb_scope_run(tb) for(U4 tbs_once=0;tbs_once==0;++tbs_once,tb_scope_run_end(tb)) @@ -387,10 +387,6 @@ FI_ Reg regfile__alloc_helper(A2_U2 file, Reg r_id) { } return result; } -/* regfile_alloc picks the next free GPR from regfile_alloc_order. - * The table is the first-fit allocation order: T0..T7, V0..V1, A0..A3, - * S0..S7, T8..T9. The 24 entries leave room for the tape program to use - * any of them while R0, R1, R26-R31 remain reserved. */ I_ Reg regfile_alloc(RegFile_R rf) { Reg allocated = 0; for index_iter(U4, r_id, R_V0, <, R_T9) { diff --git a/code/hello_camera/hello_camera.c b/code/hello_camera/hello_camera.c index 580178c..5950daf 100644 --- a/code/hello_camera/hello_camera.c +++ b/code/hello_camera/hello_camera.c @@ -113,8 +113,8 @@ I_ void resolve_look_at_c11(MT3_S2S4* look_at, P3_S4* eye, P3_S4* target, V3_S4* forward = target[0]; sub_v3s4(& forward, eye[0]); // RGA(Lengyel): Affine point - point = zero-weight direction. psy_normalize_v3s4(& forward, & uz); // RGA(Lengyel): Normalize the direction bulk. Not finite-point unitization. - cross_v3s4(& uz, up_in, & right); normalize_v3s4(& right, & ux); // RGA(Lengyel): Complement(Wedge(forward, up_in)) -> right axis. - cross_v3s4(& uz, & ux, & up); normalize_v3s4(& up, & uy); // RGA(Lengyel): Complement(Wedge(forward, right)) -> up axis. + cross_v3s4(& uz, up_in, & right); psy_normalize_v3s4(& right, & ux); // RGA(Lengyel): Complement(Wedge(forward, up_in)) -> right axis. + cross_v3s4(& uz, & ux, & up); psy_normalize_v3s4(& up, & uy); // RGA(Lengyel): Complement(Wedge(forward, right)) -> up axis. // RGA(Lengyel): matrix expansion of the world-to-camera rotation (basis rows). look_at->m[0][0] = ux.x; look_at->m[0][1] = ux.y; look_at->m[0][2] = ux.z; @@ -238,7 +238,6 @@ I_ void resolve_look_at(TapeBuilder_R tb, MT3_S2S4* look_at, P3_S4* eye, P3_S4* } FI_ void camera_look_at(TapeBuilder_R tb, Camera* c, P3_S4* target, V3_S4* up_in) { resolve_look_at(tb, & c->look_at, & c->pos, target, up_in); } -GCC_OPTIMIZATION_DISABLE void update(PrimitiveArena* pa, U4* ordering_buf) { TapeBuilder tb = tb_make(slice_ut_arr(smem.MemTape)); @@ -372,7 +371,6 @@ void update(PrimitiveArena* pa, U4* ordering_buf) // smem.floor.rot.y += 5; } } -GCC_OPTIMIZATION_ENABLE void render(void) { } @@ -389,7 +387,6 @@ void gp_display_frame(DoubleBuffer* screen_buf, S4* active_buf_id, U4* ordering_ active_buf_id[0] = ! active_buf_id[0]; // Swap current buffer } -GCC_OPTIMIZATION_DISABLE int main(void) { smem = (SMemory){0}; @@ -437,4 +434,3 @@ int main(void) }; return 0; } -GCC_OPTIMIZATION_ENABLE