Mercurial > repos > blastem
diff svp.cpu @ 1614:c9639139aedf
Did some cleanup of SVP code using the newly more powerful DSL if block and fixed some issues in the DSL implementation that cropped up as a result
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 21 Sep 2018 09:26:12 -0700 |
parents | 2d9e8a7b8ba2 |
children | 28f80d1b343e |
line wrap: on
line diff
--- a/svp.cpu Tue Sep 18 09:06:42 2018 -0700 +++ b/svp.cpu Fri Sep 21 09:26:12 2018 -0700 @@ -71,11 +71,8 @@ #loop decremenet meta modestr - mov reg tmp - switch rpl - case 0 - sub 1 reg reg - - default + + if rpl lsl 1 rpl rpl sub 1 rpl rpl local mask 16 @@ -84,19 +81,16 @@ sub 1 tmp tmp and rpl tmp tmp or rpl reg reg - - end + else + sub 1 reg reg + end case 3 #loop increment meta modestr + and 7 st rpl - switch rpl - case 0 - sub 1 reg reg - - default + if rpl mov reg tmp lsl 1 rpl rpl sub 1 rpl rpl @@ -106,8 +100,8 @@ add 1 tmp tmp and rpl tmp tmp or rpl reg reg - - end + else + sub 1 reg reg end and 255 idx idx @@ -184,13 +178,14 @@ default meta flag 0 end - switch fval - case 0 + + if fval + meta istrue flag + + else lnot flag invert - meta istrue invert + meta istrue invert - default - meta istrue flag end PPP0000000000000 alu_n1 @@ -282,10 +277,8 @@ 1001000FCCCC0OOO cond_mod svp_check_cond F C - switch istrue - case 0 - - default + if istrue + switch O case 2 asr a 1 a @@ -303,6 +296,7 @@ abs a a update_flags N end + end 000000000DDD0SSS ld_int_int dis "ld %s, %s" internal.D internal.S @@ -508,10 +502,8 @@ 0100100FCCCC0000 call_cond svp_check_cond F C svp_op_fetch - switch istrue - case 0 - default + if istrue svp_push pc mov scratch1 pc end @@ -519,10 +511,7 @@ 0100110FCCCC0000 bra_cond svp_check_cond F C svp_op_fetch - switch istrue - case 0 - - default + if istrue mov scratch1 pc end