risc-v-0.0.2.0: Data/RiscV/Instruction/I.hs
{-# LANGUAGE ViewPatterns, PatternSynonyms #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Data.RiscV.Instruction.I where
import Clash.Explicit.Prelude.Safe
import Data.RiscV.Instruction
pattern R { major, rd, minor, rs1, imm } <-
(split -> (split -> (split -> (split -> (imm :: BitVector 12, Register -> rs1),
MinorOpcode -> minor),
Register -> rd),
split -> (0b11 :: BitVector 2, MajorOpcode -> major))) where
R (MajorOpcode major) (Register rd) (MinorOpcode minor) (Register rs1) imm =
unpack $ imm ++# rs1 ++# minor ++# rd ++# major ++# (0b11 :: BitVector 2)