diff options
-rw-r--r-- | cpu/ChangeLog | 11 | ||||
-rw-r--r-- | cpu/xc16x.cpu | 196 |
2 files changed, 114 insertions, 93 deletions
diff --git a/cpu/ChangeLog b/cpu/ChangeLog index 432540f..a627b44 100644 --- a/cpu/ChangeLog +++ b/cpu/ChangeLog @@ -1,3 +1,14 @@ +2009-11-14 Doug Evans <dje@sebabeach.org> + + Must use VOID expression in VOID context. + * xc16x.cpu (mov4): Fix mode of `sequence'. + (mov9, mov10): Ditto. + (movbsrr, moveb1, jmprel, jmpseg, jmps): Fix mode of `if'. + (callr, callseg, calls, trap, rets, reti): Ditto. + (jb, jbc, jnb, jnbs): Fix mode of `if'. Comment out no-op `sll'. + (atomic, extr, extp, extp1, extpg1, extpr, extpr1): Fix mode of `cond'. + (exts, exts1, extsr, extsr1, prior): Ditto. + 2009-10-23 Doug Evans <dje@sebabeach.org> * m32c.opc (opc.h): cgen-types.h -> cgen/basic-modes.h. diff --git a/cpu/xc16x.cpu b/cpu/xc16x.cpu index efa687d..1d2057a 100644 --- a/cpu/xc16x.cpu +++ b/cpu/xc16x.cpu @@ -1476,7 +1476,7 @@ ((PIPE OS) (IDOC MOVE)) (.str insn " [-$"op2 "],$"op1) (+ opc1 opc2 op1 op2) - (sequence HI () + (sequence () (set op1 (sub op2 (const HI 2))) (set HI (mem HI op2) op1) ) @@ -1558,7 +1558,7 @@ ((PIPE OS) (IDOC MOVE)) (.str insn " $"op1 ",[$"op2"+$hash$"uimm16"]") (+ opc1 opc2 op1 op2 uimm16) - (sequence mode ((mode tmp1)) + (sequence ((mode tmp1)) (set mode tmp1 (add HI op2 uimm16)) (set mode op1 (mem HI tmp1)) ) @@ -1575,7 +1575,7 @@ ((PIPE OS) (IDOC MOVE)) (.str insn " [$"op2"+$hash$"uimm16 "],$"op1) (+ opc1 opc2 op1 op2 uimm16) - (sequence mode ((mode tmp1)) + (sequence ((mode tmp1)) (set mode tmp1 (add HI op1 uimm16)) (set mode (mem HI tmp1) op1) ) @@ -1722,8 +1722,8 @@ "movbs $sr,$drb" (+ OP1_13 OP2_0 drb sr) (sequence () - (if QI (and QI drb (const 128)) - (set HI sr (or HI (const HI 65280) drb))) + (if (and QI drb (const 128)) + (set HI sr (or HI (const HI 65280) drb))) (set HI sr (and HI (const HI 255) drb)) ) () @@ -1815,8 +1815,8 @@ (.str insn " $"op2 ",$"op1) (+ opc1 opc2 op1 op2) (sequence () - (if QI (and QI op1 (const 128)) - (set HI op2 (or HI (const HI 65280) op1))) + (if (and QI op1 (const 128)) + (set HI op2 (or HI (const HI 65280) op1))) (set HI op2 (and HI (const HI 255) op1)) ) () @@ -1896,13 +1896,13 @@ (sequence () (if (eq cond (const 1)) (sequence () - (if QI (lt QI rel (const 0)) - (sequence () - ;; FIXME: (neg QI rel) - ;; FIXME: (add QI rel (const 1)) - ;; FIXME: (mul QI rel (const 2)) - (set HI pc (sub HI pc rel)) - )) + (if (lt QI rel (const 0)) + (sequence () + ;; FIXME: (neg QI rel) + ;; FIXME: (add QI rel (const 1)) + ;; FIXME: (mul QI rel (const 2)) + (set HI pc (sub HI pc rel)) + )) (set HI pc (add HI pc (mul QI rel (const 2)))) ) ) @@ -1942,9 +1942,11 @@ "jmps $hash$segm$useg8,$hash$sof$usof16" (+ OP1_15 OP2_10 seg usof16) (sequence () - (if QI (eq BI sgtdisbit (const BI 0)) - (set QI (reg h-cr 10) useg8)) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (set QI (reg h-cr 10) useg8)) + ;; FIXME: previous indentation suggested this nop was the `else' + ;; clause of the previous `if'. + (nop) (set HI pc usof16) ) () @@ -1956,9 +1958,11 @@ "jmps $seg,$caddr" (+ OP1_15 OP2_10 seg caddr) (sequence () - (if QI (eq BI sgtdisbit (const BI 0)) - (set QI (reg h-cr 10) seg)) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (set QI (reg h-cr 10) seg)) + ;; FIXME: previous indentation suggested this nop was the `else' + ;; clause of the previous `if'. + (nop) (set HI pc caddr) ) () @@ -1974,14 +1978,14 @@ (sequence ((HI tmp1) (HI tmp2)) (set HI tmp1 genreg) (set HI tmp2 (const 1)) - (sll HI tmp2 qlobit) + ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...) (set HI tmp2 (and tmp1 tmp2)) - (if (eq tmp2 (const 1)) + (if (eq tmp2 (const 1)) ;; FIXME: (ne tmp2 0)? (sequence () - (if QI (lt QI relhi (const 0)) - (set HI pc (add HI pc (mul QI relhi (const 2))))) + (if (lt QI relhi (const 0)) + (set HI pc (add HI pc (mul QI relhi (const 2))))) )) - (set HI pc (add HI pc (const 4))) + (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right? ) () ) @@ -1995,20 +1999,21 @@ (sequence ((HI tmp1) (HI tmp2)) (set HI tmp1 genreg) (set HI tmp2 (const 1)) - (sll HI tmp2 qlobit) + ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...) (set HI tmp2 (and tmp1 tmp2)) - (if (eq tmp2 (const 1)) + (if (eq tmp2 (const 1)) ;; FIXME: (ne tmp2 0)? (sequence () - (if QI (lt QI relhi (const 0)) - (set tmp2 (const 1)) - (set tmp1 genreg) - ;; FIXME: (sll tmp2 qlobit) - ;; FIXME: (inv tmp2) - (set HI tmp1(and tmp1 tmp2)) - (set HI genreg tmp1) - (set HI pc (add HI pc (mul QI relhi (const 2))))) + ;; FIXME: The `else' clause has several statements. + (if (lt QI relhi (const 0)) + (set tmp2 (const 1)) + (set tmp1 genreg) + ;; FIXME: (sll tmp2 qlobit) + ;; FIXME: (inv tmp2) + (set HI tmp1 (and tmp1 tmp2)) + (set HI genreg tmp1) + (set HI pc (add HI pc (mul QI relhi (const 2))))) )) - (set HI pc (add HI pc (const 4))) + (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right? ) () ) @@ -2022,14 +2027,14 @@ (sequence ((HI tmp1) (HI tmp2)) (set HI tmp1 genreg) (set HI tmp2 (const 1)) - (sll HI tmp2 qlobit) + ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...) (set HI tmp2 (and tmp1 tmp2)) - (if (eq tmp2 (const 0)) + (if (eq tmp2 (const 0)) ;; FIXME: (ne tmp2 0)? (sequence () - (if QI (lt QI relhi (const 0)) - (set HI pc (add HI pc (mul QI relhi (const 2))))) + (if (lt QI relhi (const 0)) + (set HI pc (add HI pc (mul QI relhi (const 2))))) )) - (set HI pc (add HI pc (const 4))) + (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right? ) () ) @@ -2043,19 +2048,20 @@ (sequence ((HI tmp1) (HI tmp2)) (set HI tmp1 genreg) (set HI tmp2 (const 1)) - (sll HI tmp2 qlobit) + ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...) (set HI tmp2 (and tmp1 tmp2)) (if (eq tmp2 (const 0)) (sequence () - (if QI (lt QI relhi (const 0)) - (set tmp2 (const 1)) - (set tmp1 reg8) - ;; FIXME: (sll tmp2 qbit) - (set BI tmp1(or tmp1 tmp2)) - (set HI reg8 tmp1) - (set HI pc (add HI pc (mul QI relhi (const 2))))) + ;; FIXME: The `else' clause has several statements. + (if (lt QI relhi (const 0)) + (set tmp2 (const 1)) + (set tmp1 reg8) + ;; FIXME: (sll tmp2 qbit) + (set BI tmp1(or tmp1 tmp2)) + (set HI reg8 tmp1) + (set HI pc (add HI pc (mul QI relhi (const 2))))) )) - (set HI pc (add HI pc (const 4))) + (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right? ) () ) @@ -2127,13 +2133,13 @@ (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) (set HI (mem HI (reg h-cr 9)) pc) (sequence () - (if QI (lt QI rel (const 0)) - (sequence () - ;; FIXME: (neg QI rel) - ;; FIXME: (add QI rel (const 1)) - ;; FIXME: (mul QI rel (const 2)) - (set HI pc (sub HI pc rel)) - )) + (if (lt QI rel (const 0)) + (sequence () + ;; FIXME: (neg QI rel) + ;; FIXME: (add QI rel (const 1)) + ;; FIXME: (mul QI rel (const 2)) + (set HI pc (sub HI pc rel)) + )) (set HI pc (add HI pc (mul QI rel (const 2)))) ) ) @@ -2151,9 +2157,11 @@ (set HI (mem HI (reg h-cr 9)) (reg h-cr 10)) (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) (set HI (mem HI (reg h-cr 9)) pc) - (if QI (eq BI sgtdisbit (const BI 0)) - (set QI (reg h-cr 10) useg8)) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (set QI (reg h-cr 10) useg8)) + ;; FIXME: previous indentation suggested this nop was the `else' + ;; clause of the previous `if'. + (nop) (set HI pc usof16) ) () @@ -2169,9 +2177,11 @@ (set HI (mem HI (reg h-cr 9)) (reg h-cr 10)) (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) (set HI (mem HI (reg h-cr 9)) pc) - (if QI (eq BI sgtdisbit (const BI 0)) - (set QI (reg h-cr 10) seg)) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (set QI (reg h-cr 10) seg)) + ;; FIXME: previous indentation suggested this nop was the `else' + ;; clause of the previous `if'. + (nop) (set HI pc caddr) ) () @@ -2201,11 +2211,11 @@ (sequence () (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) (set HI (mem HI (reg h-cr 9)) (reg h-cr 4)) - (if QI (eq BI sgtdisbit (const BI 0)) - (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) - (set HI (mem HI (reg h-cr 9)) (reg h-cr 10) ) - ) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) + (set HI (mem HI (reg h-cr 9)) (reg h-cr 10) ) + ) + (nop) (set HI (reg h-cr 10) (reg h-cr 11)) (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2))) (set HI (mem HI (reg h-cr 9)) pc) @@ -2235,10 +2245,10 @@ (sequence () (set HI pc (mem HI (reg h-cr 9))) (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2))) - (if QI (eq BI sgtdisbit (const BI 0)) - (set HI (reg h-cr 10) (mem HI (reg h-cr 9))) - ) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (set HI (reg h-cr 10) (mem HI (reg h-cr 9))) + ) + (nop) (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2))) ) () @@ -2267,13 +2277,13 @@ (sequence () (set HI pc (mem HI (reg h-cr 9))) (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2))) - (if QI (eq BI sgtdisbit (const BI 0)) - (sequence () - (set HI (reg h-cr 10) (mem HI (reg h-cr 9))) - (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2))) - ) - ) - (nop) + (if (eq BI sgtdisbit (const BI 0)) + (sequence () + (set HI (reg h-cr 10) (mem HI (reg h-cr 9))) + (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2))) + ) + ) + (nop) (set HI (reg h-cr 4) (mem HI (reg h-cr 9))) (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2))) ) @@ -2411,7 +2421,7 @@ (+ OP1_13 OP2_1 (f-op-lbit2 0) uimm2 (f-op-bit4 0)) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2431,7 +2441,7 @@ (+ OP1_13 OP2_1 (f-op-lbit2 2) uimm2 (f-op-bit4 0)) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2451,7 +2461,7 @@ (+ OP1_13 OP2_12 (f-op-lbit2 1) uimm2 sr) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2471,7 +2481,7 @@ (+ OP1_13 OP2_7 (f-op-lbit2 1) uimm2 (f-op-bit4 0) pagenum (f-qlobit 0) (f-qlobit2 0)) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2490,7 +2500,7 @@ (+ OP1_13 OP2_7 (f-op-lbit2 1) uimm2 (f-op-bit4 0) upag16 ) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2510,7 +2520,7 @@ (+ OP1_13 OP2_12 (f-op-lbit2 3) uimm2 sr) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2530,7 +2540,7 @@ (+ OP1_13 OP2_7 (f-op-lbit2 3) uimm2 (f-op-bit4 0) pagenum (f-qlobit 0) (f-qlobit2 0)) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2550,7 +2560,7 @@ (+ OP1_13 OP2_12 (f-op-lbit2 0) uimm2 sr) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2570,7 +2580,7 @@ (+ OP1_13 OP2_7 (f-op-lbit2 0) uimm2 (f-op-bit4 0) seghi8 (f-op-bit8 0)) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2590,7 +2600,7 @@ (+ OP1_13 OP2_12 (f-op-lbit2 2) uimm2 sr) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2610,7 +2620,7 @@ (+ OP1_13 OP2_7 (f-op-lbit2 2) uimm2 (f-op-bit4 0) seghi8 (f-op-bit8 0)) (sequence ((HI count)) (set HI count uimm2) - (cond HI + (cond ((ne HI count (const 0)) (sequence () (set HI pc (add HI pc (const 2))) @@ -2632,9 +2642,9 @@ (set HI count (const 0)) (set HI tmp1 sr) (set HI tmp2 (and tmp1 (const 32768))) - (cond HI - ((ne HI tmp2 (const 1)) (ne HI sr (const 0)) - (sll HI tmp1 (const 1)) + (cond + ((ne HI tmp2 (const 1)) ;;(ne HI sr (const 0)) - FIXME: and? or? + ;;(sll HI tmp1 (const 1)) - FIXME: missing (set ...) (set HI tmp2 (and tmp1 (const 32768))) (set HI count (add HI count (const 1))) ) |