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