15 14 13 12 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op5 | f-i | f-addsub-op | f-rn | f-rs | f-rd |
0x3 | 0x0 | 0x0 | rn | rs | rd |
(sequence () (sequence ((SI result)) (set result (addc rs rn 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (add-cflag rs rn 0)) (set vbit (add-oflag rs rn 0))) (set rd (add rs rn)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x0 | 0x1 | 0x1 | hs | hd |
(if (eq (index-of hd) 7) (set pc (add hd hs)) (set hd (add hd hs)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x0 | 0x1 | 0x0 | rs | hd |
(if (eq (index-of hd) 7) (set pc (add hd rs)) (set hd (add hd rs)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x0 | 0x0 | 0x1 | hs | rd |
(set rd (add rd hs))
15 14 13 12 11 10 9 8 | 7 | 6 5 4 3 2 1 0 |
f-op8 | f-addoff-s | f-sword7 |
0xb0 | 0x0 | sword7 |
(set sp (add sp sword7))
15 14 13 12 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op5 | f-i | f-addsub-op | f-offset3 | f-rs | f-rd |
0x3 | 0x1 | 0x0 | offset3 | rs | rd |
(sequence () (sequence ((SI result)) (set result (addc rs offset3 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (add-cflag rs offset3 0)) (set vbit (add-oflag rs offset3 0))) (set rd (add rs offset3)))
15 14 13 | 12 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op3 | f-mcasi-op | f-bit10-rd | f-offset8 |
0x1 | 0x2 | bit10-rd | offset8 |
(sequence () (sequence ((SI result)) (set result (addc bit10-rd offset8 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (add-cflag bit10-rd offset8 0)) (set vbit (add-oflag bit10-rd offset8 0))) (set bit10-rd (add bit10-rd offset8)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x5 | rs | rd |
(sequence ((SI result)) (set result (addc rd rs cbit)) (sequence ((SI result)) (set result (addc rd rs cbit)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (add-cflag rd rs cbit)) (set vbit (add-oflag rd rs cbit))) (set rd result))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x0 | rs | rd |
(sequence () (set rd (and rd rs)) (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x4 | rs | rd |
(sequence ((BI carry-out) (SI result)) (set carry-out (c-call BI "compute_carry_out_regshift" rd (enum INT SHIFT-TYPE-asr) rs cbit)) (set result (sra rd rs)) (set rd result) (sequence () (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit carry-out)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0xe | rs | rd |
(sequence () (set rd (and rd (inv rs))) (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0xb | rs | rd |
(sequence ((SI result)) (set result (addc rd rs 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (add-cflag rd rs 0)) (set vbit (add-oflag rd rs 0)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0xa | rs | rd |
(sequence ((SI result)) (set result (subc rd rs 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag rd rs 0))) (set vbit (sub-oflag rd rs 0)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x1 | rs | rd |
(sequence () (set rd (xor rd rs)) (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x2 | rs | rd |
(sequence ((BI carry-out) (SI result)) (set carry-out (c-call BI "compute_carry_out_regshift" rd (enum INT SHIFT-TYPE-lsl) rs cbit)) (set result (sll rd rs)) (set rd result) (sequence () (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit carry-out)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x3 | rs | rd |
(sequence ((BI carry-out) (SI result)) (set carry-out (c-call BI "compute_carry_out_regshift" rd (enum INT SHIFT-TYPE-lsr) rs cbit)) (set result (srl rd rs)) (set rd result) (sequence () (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit carry-out)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0xd | rs | rd |
(sequence () (set rd (mul rd rs)) (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0xf | rs | rd |
(sequence () (set rd (inv rs)) (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x9 | rs | rd |
(sequence ((SI result)) (set result (neg rs)) (sequence ((SI result)) (set result (subc 0 rs 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag 0 rs 0))) (set vbit (sub-oflag 0 rs 0))) (set rd result))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0xc | rs | rd |
(sequence () (set rd (or rd rs)) (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x7 | rs | rd |
(sequence ((BI carry-out) (SI result)) (set carry-out (c-call BI "compute_carry_out_regshift" rd (enum INT SHIFT-TYPE-ror) rs cbit)) (set result (ror rd rs)) (set rd result) (sequence () (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit carry-out)))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x6 | rs | rd |
(sequence ((SI result)) (set result (subc rd rs (not cbit))) (sequence ((SI result)) (set result (subc rd rs (not cbit))) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag rd rs (not cbit)))) (set vbit (sub-oflag rd rs (not cbit)))) (set rd result))
15 14 13 12 11 10 | 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op6 | f-alu-op | f-rs | f-rd |
0x10 | 0x8 | rs | rd |
(sequence ((SI x)) (set x (and rd rs)) (sequence () (set zbit (eq WI x 0)) (set nbit (lt WI x 0))))
15 14 13 | 12 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-shift-op | f-offset5 | f-rs | f-rd |
0x0 | 0x2 | offset5 | rs | rd |
(sequence ((BI carry-out)) (set carry-out (c-call BI "compute_carry_out_immshift" rs (enum INT SHIFT-TYPE-asr) offset5 cbit)) (set rd (sra rs offset5)) (sequence () (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))) (set cbit carry-out)))
15 14 13 12 11 | 10 9 8 7 6 5 4 3 2 1 0 |
f-op5 | f-offset11 |
0x1c | offset11 |
(set pc offset11)
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x3 | soffset8 |
(if (not cbit) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x2 | soffset8 |
(if cbit (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x0 | soffset8 |
(if zbit (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0xa | soffset8 |
(if (not (xor nbit vbit)) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0xc | soffset8 |
(if (not (or zbit (xor nbit vbit))) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x8 | soffset8 |
(if (and cbit (not zbit)) (set pc soffset8))
15 14 13 12 | 11 | 10 9 8 7 6 5 4 3 2 1 0 |
f-op4 | f-lbwl-h | f-lbwl-hi |
0xf | 0x0 | lbwl-hi |
(set lr (add (add pc 4) (sll lbwl-hi 12)))
15 14 13 12 | 11 | 10 9 8 7 6 5 4 3 2 1 0 |
f-op4 | f-lbwl-h | f-lbwl-lo |
0xf | 0x1 | lbwl-lo |
(sequence ((WI cur-pc)) (set cur-pc pc) (set pc (add lr (sll lbwl-lo 1))) (set lr (or (add cur-pc 2) 1)))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0xd | soffset8 |
(if (or zbit (xor nbit vbit)) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x9 | soffset8 |
(if (or (not cbit) zbit) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0xb | soffset8 |
(if (xor nbit vbit) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x4 | soffset8 |
(if nbit (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x1 | soffset8 |
(if (not zbit) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x5 | soffset8 |
(if (not nbit) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x7 | soffset8 |
(if (not vbit) (set pc soffset8))
15 14 13 12 | 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-cond | f-soffset8 |
0xd | 0x6 | soffset8 |
(if vbit (set pc soffset8))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x3 | 0x0 | 0x1 | hs | 0x0 |
(sequence () (set pc hs) (if (not (and hs 1)) (set (reg h-tbit) 0)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x3 | 0x0 | 0x0 | rs | 0x0 |
(sequence () (set pc rs) (if (not (and rs 1)) (set (reg h-tbit) 0)))
15 14 13 | 12 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op3 | f-mcasi-op | f-bit10-rd | f-offset8 |
0x1 | 0x1 | bit10-rd | offset8 |
(sequence ((SI result)) (set result (subc bit10-rd offset8 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag bit10-rd offset8 0))) (set vbit (sub-oflag bit10-rd offset8 0)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x1 | 0x1 | 0x1 | hs | hd |
(sequence ((SI result)) (set result (subc hd hs 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag hd hs 0))) (set vbit (sub-oflag hd hs 0)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x1 | 0x1 | 0x0 | rs | hd |
(sequence ((SI result)) (set result (subc hd rs 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag hd rs 0))) (set vbit (sub-oflag hd rs 0)))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x1 | 0x0 | 0x1 | hs | rd |
(sequence ((SI result)) (set result (subc rd hs 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag rd hs 0))) (set vbit (sub-oflag rd hs 0)))
15 14 13 12 | 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-sp | f-bit10-rd | f-word8 |
0xa | 0x0 | bit10-rd | word8 |
(set bit10-rd (add (and (add pc 4) -4) word8))
15 14 13 12 | 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-sp | f-bit10-rd | f-word8 |
0xa | 0x1 | bit10-rd | word8 |
(set bit10-rd (add sp word8))
15 14 13 12 | 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-bit10-rb | f-rlist |
0xc | 0x1 | bit10-rb | rlist |
(sequence () (if (and rlist (sll 1 0)) (sequence () (set (reg WI h-gr-t 0) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 1)) (sequence () (set (reg WI h-gr-t 1) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 2)) (sequence () (set (reg WI h-gr-t 2) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 3)) (sequence () (set (reg WI h-gr-t 3) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 4)) (sequence () (set (reg WI h-gr-t 4) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 5)) (sequence () (set (reg WI h-gr-t 5) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 6)) (sequence () (set (reg WI h-gr-t 6) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 7)) (sequence () (set (reg WI h-gr-t 7) (mem WI bit10-rb)) (set bit10-rb (add bit10-rb 4)))))
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-l | f-b | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x1 | 0x0 | 0x0 | ro | rb | rd |
(set rd (mem WI (add rb ro)))
15 14 13 | 12 | 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-b-imm | f-l | f-offset5-7 | f-rb | f-rd |
0x3 | 0x0 | 0x1 | offset5-7 | rb | rd |
(set rd (mem WI (add rb offset5-7)))
15 14 13 12 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op5 | f-bit10-rd | f-word8 |
0x9 | bit10-rd | word8 |
(set bit10-rd (mem WI (add (and (add pc 4) -4) word8)))
15 14 13 12 | 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-bit10-rd | f-word8 |
0x9 | 0x1 | bit10-rd | word8 |
(set bit10-rd (mem WI (add sp word8)))
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-l | f-b | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x1 | 0x1 | 0x0 | ro | rb | rd |
(set rd (zext SI (mem QI (add rb ro))))
15 14 13 | 12 | 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-b-imm | f-l | f-offset5 | f-rb | f-rd |
0x3 | 0x1 | 0x1 | offset5 | rb | rd |
(set rd (zext SI (mem QI (add rb offset5))))
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-h | f-s | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x1 | 0x0 | 0x1 | ro | rb | rd |
(set rd (zext SI (mem HI (add rb ro))))
15 14 13 12 | 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-l | f-offset5-6 | f-rb | f-rd |
0x8 | 0x1 | offset5-6 | rb | rd |
(set rd (zext WI (mem HI (add rb offset5-6))))
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-h | f-s | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x0 | 0x1 | 0x1 | ro | rb | rd |
(set rd (ext SI (mem QI (add rb ro))))
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-h | f-s | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x1 | 0x1 | 0x1 | ro | rb | rd |
(set rd (ext SI (mem HI (add rb ro))))
15 14 13 | 12 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-shift-op | f-offset5 | f-rs | f-rd |
0x0 | 0x0 | offset5 | rs | rd |
(sequence ((BI carry-out)) (set carry-out (c-call BI "compute_carry_out_immshift" rs (enum INT SHIFT-TYPE-lsl) offset5 cbit)) (set rd (sll rs offset5)) (sequence () (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))) (set cbit carry-out)))
15 14 13 | 12 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-shift-op | f-offset5 | f-rs | f-rd |
0x0 | 0x1 | offset5 | rs | rd |
(sequence ((BI carry-out)) (set carry-out (c-call BI "compute_carry_out_immshift" rs (enum INT SHIFT-TYPE-lsr) offset5 cbit)) (set rd (srl rs offset5)) (sequence () (sequence () (set zbit (eq WI rd 0)) (set nbit (lt WI rd 0))) (set cbit carry-out)))
15 14 13 | 12 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op3 | f-mcasi-op | f-bit10-rd | f-offset8 |
0x1 | 0x0 | bit10-rd | offset8 |
(sequence () (set bit10-rd offset8) (sequence () (set zbit (eq WI bit10-rd 0)) (set nbit (lt WI bit10-rd 0))))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x2 | 0x1 | 0x1 | hs | hd |
(if (eq (index-of hd) 7) (set pc hs) (set hd hs))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x2 | 0x1 | 0x0 | rs | hd |
(if (eq (index-of hd) 7) (set pc rs) (set hd rs))
15 14 13 12 11 10 | 9 8 | 7 | 6 | 5 4 3 | 2 1 0 |
f-op6 | f-hireg-op | f-h1 | f-h2 | f-rs | f-rd |
0x11 | 0x2 | 0x0 | 0x1 | hs | rd |
(set rd hs)
15 14 13 12 | 11 | 10 9 | 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-pushpop-op | f-r | f-rlist |
0xb | 0x1 | 0x2 | 0x0 | rlist |
(sequence () (if (and rlist (sll 1 0)) (sequence () (set (reg WI h-gr-t 0) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 1)) (sequence () (set (reg WI h-gr-t 1) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 2)) (sequence () (set (reg WI h-gr-t 2) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 3)) (sequence () (set (reg WI h-gr-t 3) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 4)) (sequence () (set (reg WI h-gr-t 4) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 5)) (sequence () (set (reg WI h-gr-t 5) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 6)) (sequence () (set (reg WI h-gr-t 6) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 7)) (sequence () (set (reg WI h-gr-t 7) (mem WI sp)) (set sp (add sp 4)))))
15 14 13 12 | 11 | 10 9 | 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-pushpop-op | f-r | f-rlist |
0xb | 0x1 | 0x2 | 0x1 | rlist |
(sequence () (if (and rlist (sll 1 0)) (sequence () (set (reg WI h-gr-t 0) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 1)) (sequence () (set (reg WI h-gr-t 1) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 2)) (sequence () (set (reg WI h-gr-t 2) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 3)) (sequence () (set (reg WI h-gr-t 3) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 4)) (sequence () (set (reg WI h-gr-t 4) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 5)) (sequence () (set (reg WI h-gr-t 5) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 6)) (sequence () (set (reg WI h-gr-t 6) (mem WI sp)) (set sp (add sp 4)))) (if (and rlist (sll 1 7)) (sequence () (set (reg WI h-gr-t 7) (mem WI sp)) (set sp (add sp 4)))) (set pc (mem WI sp)) (set sp (add sp 4)))
15 14 13 12 | 11 | 10 9 | 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-pushpop-op | f-r | f-rlist |
0xb | 0x0 | 0x2 | 0x0 | rlist |
(sequence () (if (and rlist (sll 1 7)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 7)))) (if (and rlist (sll 1 6)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 6)))) (if (and rlist (sll 1 5)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 5)))) (if (and rlist (sll 1 4)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 4)))) (if (and rlist (sll 1 3)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 3)))) (if (and rlist (sll 1 2)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 2)))) (if (and rlist (sll 1 1)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 1)))) (if (and rlist (sll 1 0)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 0)))))
15 14 13 12 | 11 | 10 9 | 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-pushpop-op | f-r | f-rlist |
0xb | 0x0 | 0x2 | 0x1 | rlist |
(sequence () (set sp (sub sp 4)) (set (mem WI sp) lr) (if (and rlist (sll 1 7)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 7)))) (if (and rlist (sll 1 6)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 6)))) (if (and rlist (sll 1 5)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 5)))) (if (and rlist (sll 1 4)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 4)))) (if (and rlist (sll 1 3)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 3)))) (if (and rlist (sll 1 2)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 2)))) (if (and rlist (sll 1 1)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 1)))) (if (and rlist (sll 1 0)) (sequence () (set sp (sub sp 4)) (set (mem WI sp) (reg WI h-gr-t 0)))))
15 14 13 12 | 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-bit10-rb | f-rlist |
0xc | 0x0 | bit10-rb | rlist |
(sequence () (if (and rlist (sll 1 0)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 0)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 1)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 1)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 2)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 2)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 3)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 3)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 4)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 4)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 5)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 5)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 6)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 6)) (set bit10-rb (add bit10-rb 4)))) (if (and rlist (sll 1 7)) (sequence () (set (mem WI bit10-rb) (reg WI h-gr-t 7)) (set bit10-rb (add bit10-rb 4)))))
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-l | f-b | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x0 | 0x0 | 0x0 | ro | rb | rd |
(set (mem WI (add rb ro)) rd)
15 14 13 | 12 | 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-b-imm | f-l | f-offset5-7 | f-rb | f-rd |
0x3 | 0x0 | 0x0 | offset5-7 | rb | rd |
(set (mem WI (add rb offset5-7)) rd)
15 14 13 12 | 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op4 | f-l | f-bit10-rd | f-word8 |
0x9 | 0x0 | bit10-rd | word8 |
(set (mem WI (add sp word8)) bit10-rd)
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-l | f-b | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x0 | 0x1 | 0x0 | ro | rb | rd |
(set (mem QI (add rb ro)) rd)
15 14 13 | 12 | 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op3 | f-b-imm | f-l | f-offset5 | f-rb | f-rd |
0x3 | 0x1 | 0x0 | offset5 | rb | rd |
(set (mem QI (add rb offset5)) rd)
15 14 13 12 | 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-h | f-s | f-bit9 | f-ro | f-rb | f-rd |
0x5 | 0x0 | 0x0 | 0x1 | ro | rb | rd |
(set (mem HI (add rb ro)) rd)
15 14 13 12 | 11 | 10 9 8 7 6 | 5 4 3 | 2 1 0 |
f-op4 | f-l | f-offset5-6 | f-rb | f-rd |
0x8 | 0x0 | offset5-6 | rb | rd |
(set (mem HI (add rb offset5-6)) rd)
15 14 13 12 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op5 | f-i | f-addsub-op | f-rn | f-rs | f-rd |
0x3 | 0x0 | 0x1 | rn | rs | rd |
(sequence () (sequence ((SI result)) (set result (subc rs rn 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag rs rn 0))) (set vbit (sub-oflag rs rn 0))) (set rd (sub rs rn)))
15 14 13 12 11 10 9 8 | 7 | 6 5 4 3 2 1 0 |
f-op8 | f-addoff-s | f-sword7 |
0xb0 | 0x1 | sword7 |
(set sp (sub sp sword7))
15 14 13 12 11 | 10 | 9 | 8 7 6 | 5 4 3 | 2 1 0 |
f-op5 | f-i | f-addsub-op | f-offset3 | f-rs | f-rd |
0x3 | 0x1 | 0x1 | offset3 | rs | rd |
(sequence () (sequence ((SI result)) (set result (subc rs offset3 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag rs offset3 0))) (set vbit (sub-oflag rs offset3 0))) (set rd (sub rs offset3)))
15 14 13 | 12 11 | 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op3 | f-mcasi-op | f-bit10-rd | f-offset8 |
0x1 | 0x3 | bit10-rd | offset8 |
(sequence () (sequence ((SI result)) (set result (subc bit10-rd offset8 0)) (sequence () (set zbit (eq WI result 0)) (set nbit (lt WI result 0))) (set cbit (not (sub-cflag bit10-rd offset8 0))) (set vbit (sub-oflag bit10-rd offset8 0))) (set bit10-rd (sub bit10-rd offset8)))
15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0 |
f-op8 | f-value8 |
0xdf | value8 |
(set pc (c-call WI "thumb_swi" pc value8))
This documentation was machine generated from the cgen cpu description
files for this architecture.
http://sources.redhat.com/cgen/