summaryrefslogtreecommitdiff
path: root/mips/gen/fold.hgen
blob: 05b9c808a3b4aa1b20832a5f1d8dfb722b9b7420 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| `MIPSThreadStart -> (y_reg, y_sreg)
| `MIPSRType  (op, rd, rs, rt)  -> fold_reg rt (fold_reg rs (fold_reg rd (y_reg, y_sreg)))
| `MIPSIType  (op, rs, rt, imm) -> fold_reg rs (fold_reg rt (y_reg, y_sreg))
| `MIPSShiftI (op, rd, rt, imm) -> fold_reg rt (fold_reg rd (y_reg, y_sreg))
| `MIPSShiftV (op, rd, rt, rs)  -> fold_reg rs (fold_reg rt (fold_reg rd (y_reg, y_sreg)))
| `MIPSMulDiv (op, rs, rt)      -> fold_reg rs (fold_reg rt  (y_reg, y_sreg))
| `MIPSMFHiLo (op, rs)          -> fold_reg rs (y_reg, y_sreg)
| `MIPSLUI (rt, imm)            -> fold_reg rt (y_reg, y_sreg)
| `MIPSLoad (width, signed, linked, base, rt, offset) -> fold_reg rt (fold_reg base (y_reg, y_sreg))
| `MIPSStore (width, conditional, base, rt, offset) -> fold_reg rt (fold_reg base (y_reg, y_sreg))
| `MIPSLSLR (store, double, left, base, rt, offset) -> fold_reg rt (fold_reg base (y_reg, y_sreg))
| `MIPSSYNC -> (y_reg, y_sreg)
| `MIPSBEQ (rs, rt, offset, ne, likely) -> fold_reg rs (fold_reg rt (y_reg, y_sreg))
| `MIPSBCMPZ (rs, offset, cmp, link, likely) -> fold_reg rs (y_reg, y_sreg)
| `MIPSJ (offset) -> (y_reg, y_sreg)
| `MIPSJAL (offset) -> fold_reg (IReg(R31)) (y_reg, y_sreg)
| `MIPSJR (rd) -> fold_reg rd (y_reg, y_sreg)
| `MIPSJALR (rd, rs) -> fold_reg rd (fold_reg rs (y_reg, y_sreg))