summaryrefslogtreecommitdiff
path: root/risc-v/hgen/herdtools_ast_to_shallow_ast.hgen
diff options
context:
space:
mode:
Diffstat (limited to 'risc-v/hgen/herdtools_ast_to_shallow_ast.hgen')
-rw-r--r--risc-v/hgen/herdtools_ast_to_shallow_ast.hgen169
1 files changed, 52 insertions, 117 deletions
diff --git a/risc-v/hgen/herdtools_ast_to_shallow_ast.hgen b/risc-v/hgen/herdtools_ast_to_shallow_ast.hgen
index e614b714..ac6f22bd 100644
--- a/risc-v/hgen/herdtools_ast_to_shallow_ast.hgen
+++ b/risc-v/hgen/herdtools_ast_to_shallow_ast.hgen
@@ -1,122 +1,57 @@
-(*| `MIPSThreadStart ->
- SYSCALL_THREAD_START
-
-| `MIPSStopFetching ->
- ImplementationDefinedStopFetching0
-
-(* Note different argument order, which reflects difference
- between instruction encoding and asm format *)
-| `MIPSRType (op, rd, rs, rt) ->
- (translate_rtype_op op)
- (
+| `RISCVStopFetching -> EBREAK
+| `RISCVUTYPE(imm, rd, op) -> UTYPE(
+ translate_imm20 "imm" imm,
+ translate_reg "rd" rd,
+ translate_uop op)
+| `RISCVJAL(imm, rd) -> JAL0(
+ translate_imm20 "imm" imm,
+ translate_reg "rd" rd)
+| `RISCVJALR(imm, rs, rd) -> JALR0(
+ translate_imm12 "imm" imm,
+ translate_reg "rs" rd,
+ translate_reg "rd" rd)
+| `RISCVBType(imm, rs2, rs1, op) -> BTYPE(
+ translate_imm12 "imm" imm,
+ translate_reg "rs2" rs2,
+ translate_reg "rs1" rs1,
+ translate_bop op)
+| `RISCVIType(imm, rs1, rd, op) -> ITYPE(
+ translate_imm12 "imm" imm,
+ translate_reg "rs1" rs1,
+ translate_reg "rd" rd,
+ translate_iop op)
+| `RISCVShiftIop(imm, rs, rd, op) -> SHIFTIOP(
+ translate_imm6 "imm" imm,
+ translate_reg "rs" rs,
+ translate_reg "rd" rd,
+ translate_sop op)
+| `RISCVRType (rs2, rs1, rd, op) -> RTYPE (
+ translate_reg "rs2" rs2,
+ translate_reg "rs1" rs1,
+ translate_reg "rd" rd,
+ translate_rop op)
+| `RISCVLoad(imm, rs, rd, unsigned, width) -> LOAD(
+ translate_imm12 "imm" imm,
translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_reg "rd" rd
- )
-
-
-(* Note different argument order similar to above *)
-| `MIPSIType (op, rt, rs, imm) ->
- (translate_itype_op op)
- (
+ translate_reg "rd" rd,
+ translate_bool "unsigned" unsigned,
+ translate_wordWidth width)
+| `RISCVStore(imm, rs, rd, width) -> STORE (
+ translate_imm12 "imm" imm,
translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_imm16 "imm" imm
- )
-
-
-| `MIPSShiftI (op, rd, rt, sa) ->
- (translate_shifti_op op)
- (
- translate_reg "rt" rt,
translate_reg "rd" rd,
- translate_imm5 "sa" sa
- )
-
-
-| `MIPSShiftV (op, rd, rt, rs) ->
- (translate_shiftv_op op)
- (
+ translate_wordWidth width)
+| `RISCVADDIW(imm, rs, rd) -> ADDIW(
+ translate_imm12 "imm" imm,
translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_reg "rd" rd
- )
-
-
-| `MIPSMulDiv (op, rs, rt) ->
- (translate_muldiv_op op)
- (
+ translate_reg "rd" rd)
+| `RISCVSHIFTW(imm, rs, rd, op) -> SHIFTW(
+ translate_imm5 "imm" imm,
translate_reg "rs" rs,
- translate_reg "rt" rt
- )
-
-
-| `MIPSMFHiLo (op, rs) ->
- (translate_mfhilo_op op)
- (
- translate_reg "rs" rs
- )
-
-| `MIPSLUI (rt, imm) ->
- LUI
- (
- translate_reg "rt" rt,
- translate_imm16 "imm" imm
- )
-
-| `MIPSLoad (width, signed, linked, base, rt, offset) ->
- Load
- (
- translate_wordsize "width" width,
- translate_bool "signed" signed,
- translate_bool "linked" linked,
- translate_reg "base" base,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset
- )
-
-| `MIPSStore (width, conditional, base, rt, offset) ->
- Store
- (
- translate_wordsize "width" width,
- translate_bool "conditional" conditional,
- translate_reg "base" base,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset
- )
-
-| `MIPSLSLR (store, double, left, base, rt, offset) ->
- (translate_lslr_op store double left)
- (
- translate_reg "base" base,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset
- )
-
-| `MIPSSYNC -> SYNC
-| `MIPSBEQ (rs, rt, offset, ne, likely) ->
- BEQ
- (translate_reg "rs" rs,
- translate_reg "rt" rt,
- translate_imm16 "offset" offset,
- translate_bool "ne" ne,
- translate_bool "likely" likely
- )
-
-| `MIPSBCMPZ (rs, offset, cmp, link, likely) ->
- BCMPZ
- (translate_reg "rs" rs,
- translate_imm16 "offset" offset,
- translate_cmp "cmp" cmp,
- translate_bool "link" link,
- translate_bool "likely" likely
- )
-| `MIPSJ (offset) ->
- J (translate_imm26 "offset" offset)
-| `MIPSJAL (offset) ->
- JAL (translate_imm26 "offset" offset)
-| `MIPSJR(rd) ->
- JR (translate_reg "rd" rd)
-| `MIPSJALR(rd, rs) ->
- JALR (translate_reg "rd" rd, translate_reg "rs" rs)
-*) \ No newline at end of file
+ translate_reg "rd" rd,
+ translate_sop op)
+| `RISCVRTYPEW(rs2, rs1, rd, op) -> RTYPEW(
+ translate_reg "rs2" rs2,
+ translate_reg "rs1" rs1,
+ translate_reg "rd" rd,
+ translate_ropw op)