wrench-0.0.6.3
Safe HaskellNone
LanguageHaskell2010

Wrench.Isa.VliwIv

Description

Inspired by VLIW architectures and RISC-V

Synopsis

Documentation

data VliwIvIsa w l Source #

Constructors

VliwIvIsa 

Fields

Instances

Instances details
IsWord w => DerefMnemonic (VliwIvIsa w) w Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

derefMnemonic :: (Text -> Maybe w) -> w -> VliwIvIsa w (Ref w) -> VliwIvIsa w w Source #

IsWord w => Machine (VliwIvSt w) (VliwIvIsa w w) w Source # 
Instance details

Defined in Wrench.Isa.VliwIv

(Show w, Show l) => Show (VliwIvIsa w l) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

showsPrec :: Int -> VliwIvIsa w l -> ShowS #

show :: VliwIvIsa w l -> String #

showList :: [VliwIvIsa w l] -> ShowS #

ByteSize (VliwIvIsa w l) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

byteSize :: VliwIvIsa w l -> Int Source #

CommentStart (VliwIvIsa _a _b) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

IsWord w => MnemonicParser (VliwIvIsa w (Ref w)) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

mnemonic :: Parser (VliwIvIsa w (Ref w)) Source #

data VliwIvSt w Source #

Constructors

VliwIvSt 

Fields

Instances

Instances details
Show w => Show (VliwIvSt w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

showsPrec :: Int -> VliwIvSt w -> ShowS #

show :: VliwIvSt w -> String #

showList :: [VliwIvSt w] -> ShowS #

IsWord w => InitState (VliwIvSt w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

initState :: Int -> MemOf (VliwIvSt w) -> StdGen -> VliwIvSt w Source #

IsWord w => Inspectable (VliwIvSt w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Associated Types

type WordOf (VliwIvSt w) 
Instance details

Defined in Wrench.Isa.VliwIv

type WordOf (VliwIvSt w) = w
type IsaOf (VliwIvSt w) 
Instance details

Defined in Wrench.Isa.VliwIv

type IsaOf (VliwIvSt w) = VliwIvIsa w w
IsWord w => Machine (VliwIvSt w) (VliwIvIsa w w) w Source # 
Instance details

Defined in Wrench.Isa.VliwIv

type IsaOf (VliwIvSt w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

type IsaOf (VliwIvSt w) = VliwIvIsa w w
type MemOf (VliwIvSt w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

type MemOf (VliwIvSt w) = IoMem (VliwIvIsa w w) w
type WordOf (VliwIvSt w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

type WordOf (VliwIvSt w) = w

data Register Source #

Constructors

Zero 
Ra 
Sp 
Gp 
Tp 
T0 
T1 
T2 
S0Fp 
S1 
A0 
A1 
A2 
A3 
A4 
A5 
A6 
A7 
S2 
S3 
S4 
S5 
S6 
S7 
S8 
S9 
S10 
S11 
T3 
T4 
T5 
T6 

Instances

Instances details
Enum Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Generic Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Associated Types

type Rep Register 
Instance details

Defined in Wrench.Isa.VliwIv

type Rep Register = D1 ('MetaData "Register" "Wrench.Isa.VliwIv" "wrench-0.0.6.3-GOHhJzRU80S94JGLGysv3F" 'False) (((((C1 ('MetaCons "Zero" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ra" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Sp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Gp" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Tp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T0" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "T1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T2" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "S0Fp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "A0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A1" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "A2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A3" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "A4" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A5" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "A6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A7" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "S2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S3" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "S4" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S5" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "S6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S7" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "S8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S9" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "S10" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S11" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "T3" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T4" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "T5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T6" 'PrefixI 'False) (U1 :: Type -> Type))))))

Methods

from :: Register -> Rep Register x #

to :: Rep Register x -> Register #

Read Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Show Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Eq Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Hashable Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Default w => Default (HashMap Register w) Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Methods

def :: HashMap Register w

type Rep Register Source # 
Instance details

Defined in Wrench.Isa.VliwIv

type Rep Register = D1 ('MetaData "Register" "Wrench.Isa.VliwIv" "wrench-0.0.6.3-GOHhJzRU80S94JGLGysv3F" 'False) (((((C1 ('MetaCons "Zero" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ra" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Sp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Gp" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Tp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T0" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "T1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T2" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "S0Fp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "A0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A1" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "A2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A3" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "A4" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A5" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "A6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "A7" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "S2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S3" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "S4" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S5" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "S6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S7" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "S8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S9" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "S10" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "S11" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "T3" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T4" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "T5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "T6" 'PrefixI 'False) (U1 :: Type -> Type))))))

data VliwLoadAcc Source #

Per-run histogram of how many slots were active in each executed bundle. vlByLoad maps active-slot count (0..4) to the number of bundles with that load. Used by the vliw:* report variables to summarise how well the program exploits the four-wide pipeline.

Instances

Instances details
Show VliwLoadAcc Source # 
Instance details

Defined in Wrench.Isa.VliwIv

Eq VliwLoadAcc Source # 
Instance details

Defined in Wrench.Isa.VliwIv