summaryrefslogtreecommitdiff
path: root/handwritten_support/hgen/fold.hgen
diff options
context:
space:
mode:
Diffstat (limited to 'handwritten_support/hgen/fold.hgen')
-rw-r--r--handwritten_support/hgen/fold.hgen21
1 files changed, 21 insertions, 0 deletions
diff --git a/handwritten_support/hgen/fold.hgen b/handwritten_support/hgen/fold.hgen
new file mode 100644
index 0000000..7f9d05c
--- /dev/null
+++ b/handwritten_support/hgen/fold.hgen
@@ -0,0 +1,21 @@
+| `RISCVThreadStart -> (y_reg, y_sreg)
+| `RISCVStopFetching -> (y_reg, y_sreg)
+
+| `RISCVUTYPE (_, r0, _) -> fold_reg r0 (y_reg, y_sreg)
+| `RISCVJAL (_, r0) -> fold_reg r0 (y_reg, y_sreg)
+| `RISCVJALR (_, r0, r1) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVBType (_, r0, r1, _) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVIType (_, r0, r1, _) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVShiftIop (_, r0, r1, _) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVRType (r0, r1, r2, _) -> fold_reg r0 (fold_reg r1 (fold_reg r2 (y_reg, y_sreg)))
+| `RISCVLoad (_, r0, r1, _, _, _, _) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVStore (_, r0, r1, _, _, _) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVADDIW (_, r0, r1) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVSHIFTW (_, r0, r1, _) -> fold_reg r0 (fold_reg r1 (y_reg, y_sreg))
+| `RISCVRTYPEW (r0, r1, r2, _) -> fold_reg r0 (fold_reg r1 (fold_reg r2 (y_reg, y_sreg)))
+| `RISCVFENCE (_, _) -> (y_reg, y_sreg)
+| `RISCVFENCE_TSO (_, _) -> (y_reg, y_sreg)
+| `RISCVFENCEI -> (y_reg, y_sreg)
+| `RISCVLoadRes (_, _, rs1, _, rd) -> fold_reg rs1 (fold_reg rd (y_reg, y_sreg))
+| `RISCVStoreCon (_, _, rs2, rs1, _, rd) -> fold_reg rs2 (fold_reg rs1 (fold_reg rd (y_reg, y_sreg)))
+| `RISCVAMO (_, _, _, rs2, rs1, _, rd) -> fold_reg rs2 (fold_reg rs1 (fold_reg rd (y_reg, y_sreg)))