-- InstructionCategory.hs ---

-- Copyright (C) 2020 Nerd Ed

-- Author: Nerd Ed <nerded.nerded@gmail.com>

-- This program is free software; you can redistribute it and/or
-- modify it under the terms of the GNU General Public License
-- as published by the Free Software Foundation; either version 3
-- of the License, or (at your option) any later version.

-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.

-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.

{-# LANGUAGE DerivingVia #-}

module Zydis.InstructionCategory
  ( InstructionCategory(..)
  )
where

import           Zydis.Util

data InstructionCategory
  = InstructionCategoryInvalid
  | InstructionCategoryAdoxAdcx
  | InstructionCategoryAes
  | InstructionCategoryAmd3Dnow
  | InstructionCategoryAvx
  | InstructionCategoryAvx2
  | InstructionCategoryAvx2Gather
  | InstructionCategoryAvx512
  | InstructionCategoryAvx5124Fmaps
  | InstructionCategoryAvx5124Vnniw
  | InstructionCategoryAvx512Bitalg
  | InstructionCategoryAvx512Vbmi
  | InstructionCategoryAvx512Vp2Intersect
  | InstructionCategoryBinary
  | InstructionCategoryBitbyte
  | InstructionCategoryBlend
  | InstructionCategoryBmi1
  | InstructionCategoryBmi2
  | InstructionCategoryBroadcast
  | InstructionCategoryCall
  | InstructionCategoryCet
  | InstructionCategoryCldemote
  | InstructionCategoryClflushopt
  | InstructionCategoryClwb
  | InstructionCategoryClzero
  | InstructionCategoryCmov
  | InstructionCategoryCompress
  | InstructionCategoryCondBr
  | InstructionCategoryConflict
  | InstructionCategoryConvert
  | InstructionCategoryDataxfer
  | InstructionCategoryDecimal
  | InstructionCategoryEnqcmd
  | InstructionCategoryExpand
  | InstructionCategoryFcmov
  | InstructionCategoryFlagop
  | InstructionCategoryFma4
  | InstructionCategoryGather
  | InstructionCategoryGfni
  | InstructionCategoryIfma
  | InstructionCategoryInterrupt
  | InstructionCategoryIo
  | InstructionCategoryIostringop
  | InstructionCategoryKmask
  | InstructionCategoryKnc
  | InstructionCategoryKncmask
  | InstructionCategoryKncscalar
  | InstructionCategoryLogical
  | InstructionCategoryLogicalFp
  | InstructionCategoryLzcnt
  | InstructionCategoryMisc
  | InstructionCategoryMmx
  | InstructionCategoryMovdir
  | InstructionCategoryMpx
  | InstructionCategoryNop
  | InstructionCategoryPadlock
  | InstructionCategoryPclmulqdq
  | InstructionCategoryPconfig
  | InstructionCategoryPku
  | InstructionCategoryPop
  | InstructionCategoryPrefetch
  | InstructionCategoryPrefetchwt1
  | InstructionCategoryPt
  | InstructionCategoryPush
  | InstructionCategoryRdpid
  | InstructionCategoryRdpru
  | InstructionCategoryRdrand
  | InstructionCategoryRdseed
  | InstructionCategoryRdwrfsgs
  | InstructionCategoryRet
  | InstructionCategoryRotate
  | InstructionCategoryScatter
  | InstructionCategorySegop
  | InstructionCategorySemaphore
  | InstructionCategorySetcc
  | InstructionCategorySgx
  | InstructionCategorySha
  | InstructionCategoryShift
  | InstructionCategorySmap
  | InstructionCategorySse
  | InstructionCategoryStringop
  | InstructionCategorySttni
  | InstructionCategorySyscall
  | InstructionCategorySysret
  | InstructionCategorySystem
  | InstructionCategoryTbm
  | InstructionCategoryUfma
  | InstructionCategoryUncondBr
  | InstructionCategoryVaes
  | InstructionCategoryVbmi2
  | InstructionCategoryVfma
  | InstructionCategoryVpclmulqdq
  | InstructionCategoryVtx
  | InstructionCategoryWaitpkg
  | InstructionCategoryWidenop
  | InstructionCategoryX87Alu
  | InstructionCategoryXop
  | InstructionCategoryXsave
  | InstructionCategoryXsaveopt
  deriving stock (Int -> InstructionCategory -> ShowS
[InstructionCategory] -> ShowS
InstructionCategory -> String
(Int -> InstructionCategory -> ShowS)
-> (InstructionCategory -> String)
-> ([InstructionCategory] -> ShowS)
-> Show InstructionCategory
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InstructionCategory] -> ShowS
$cshowList :: [InstructionCategory] -> ShowS
show :: InstructionCategory -> String
$cshow :: InstructionCategory -> String
showsPrec :: Int -> InstructionCategory -> ShowS
$cshowsPrec :: Int -> InstructionCategory -> ShowS
Show, InstructionCategory -> InstructionCategory -> Bool
(InstructionCategory -> InstructionCategory -> Bool)
-> (InstructionCategory -> InstructionCategory -> Bool)
-> Eq InstructionCategory
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InstructionCategory -> InstructionCategory -> Bool
$c/= :: InstructionCategory -> InstructionCategory -> Bool
== :: InstructionCategory -> InstructionCategory -> Bool
$c== :: InstructionCategory -> InstructionCategory -> Bool
Eq, InstructionCategory
InstructionCategory
-> InstructionCategory -> Bounded InstructionCategory
forall a. a -> a -> Bounded a
maxBound :: InstructionCategory
$cmaxBound :: InstructionCategory
minBound :: InstructionCategory
$cminBound :: InstructionCategory
Bounded, Int -> InstructionCategory
InstructionCategory -> Int
InstructionCategory -> [InstructionCategory]
InstructionCategory -> InstructionCategory
InstructionCategory -> InstructionCategory -> [InstructionCategory]
InstructionCategory
-> InstructionCategory
-> InstructionCategory
-> [InstructionCategory]
(InstructionCategory -> InstructionCategory)
-> (InstructionCategory -> InstructionCategory)
-> (Int -> InstructionCategory)
-> (InstructionCategory -> Int)
-> (InstructionCategory -> [InstructionCategory])
-> (InstructionCategory
    -> InstructionCategory -> [InstructionCategory])
-> (InstructionCategory
    -> InstructionCategory -> [InstructionCategory])
-> (InstructionCategory
    -> InstructionCategory
    -> InstructionCategory
    -> [InstructionCategory])
-> Enum InstructionCategory
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: InstructionCategory
-> InstructionCategory
-> InstructionCategory
-> [InstructionCategory]
$cenumFromThenTo :: InstructionCategory
-> InstructionCategory
-> InstructionCategory
-> [InstructionCategory]
enumFromTo :: InstructionCategory -> InstructionCategory -> [InstructionCategory]
$cenumFromTo :: InstructionCategory -> InstructionCategory -> [InstructionCategory]
enumFromThen :: InstructionCategory -> InstructionCategory -> [InstructionCategory]
$cenumFromThen :: InstructionCategory -> InstructionCategory -> [InstructionCategory]
enumFrom :: InstructionCategory -> [InstructionCategory]
$cenumFrom :: InstructionCategory -> [InstructionCategory]
fromEnum :: InstructionCategory -> Int
$cfromEnum :: InstructionCategory -> Int
toEnum :: Int -> InstructionCategory
$ctoEnum :: Int -> InstructionCategory
pred :: InstructionCategory -> InstructionCategory
$cpred :: InstructionCategory -> InstructionCategory
succ :: InstructionCategory -> InstructionCategory
$csucc :: InstructionCategory -> InstructionCategory
Enum)
  deriving Ptr b -> Int -> IO InstructionCategory
Ptr b -> Int -> InstructionCategory -> IO ()
Ptr InstructionCategory -> IO InstructionCategory
Ptr InstructionCategory -> Int -> IO InstructionCategory
Ptr InstructionCategory -> Int -> InstructionCategory -> IO ()
Ptr InstructionCategory -> InstructionCategory -> IO ()
InstructionCategory -> Int
(InstructionCategory -> Int)
-> (InstructionCategory -> Int)
-> (Ptr InstructionCategory -> Int -> IO InstructionCategory)
-> (Ptr InstructionCategory -> Int -> InstructionCategory -> IO ())
-> (forall b. Ptr b -> Int -> IO InstructionCategory)
-> (forall b. Ptr b -> Int -> InstructionCategory -> IO ())
-> (Ptr InstructionCategory -> IO InstructionCategory)
-> (Ptr InstructionCategory -> InstructionCategory -> IO ())
-> Storable InstructionCategory
forall b. Ptr b -> Int -> IO InstructionCategory
forall b. Ptr b -> Int -> InstructionCategory -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr InstructionCategory -> InstructionCategory -> IO ()
$cpoke :: Ptr InstructionCategory -> InstructionCategory -> IO ()
peek :: Ptr InstructionCategory -> IO InstructionCategory
$cpeek :: Ptr InstructionCategory -> IO InstructionCategory
pokeByteOff :: Ptr b -> Int -> InstructionCategory -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> InstructionCategory -> IO ()
peekByteOff :: Ptr b -> Int -> IO InstructionCategory
$cpeekByteOff :: forall b. Ptr b -> Int -> IO InstructionCategory
pokeElemOff :: Ptr InstructionCategory -> Int -> InstructionCategory -> IO ()
$cpokeElemOff :: Ptr InstructionCategory -> Int -> InstructionCategory -> IO ()
peekElemOff :: Ptr InstructionCategory -> Int -> IO InstructionCategory
$cpeekElemOff :: Ptr InstructionCategory -> Int -> IO InstructionCategory
alignment :: InstructionCategory -> Int
$calignment :: InstructionCategory -> Int
sizeOf :: InstructionCategory -> Int
$csizeOf :: InstructionCategory -> Int
Storable via StorableExt InstructionCategory