-- GENERATED by C->Haskell Compiler, version 0.28.8 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Hapstone/Internal/Sparc.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-|
Module      : Hapstone.Internal.Sparc
Description : SPARC architecture header ported using C2HS + some boilerplate
Copyright   : (c) Inokentiy Babushkin, 2016
License     : BSD3
Maintainer  : Inokentiy Babushkin <inokentiy.babushkin@googlemail.com>
Stability   : experimental

This module contains SPARC specific datatypes and their respective Storable
instances. Most of the types are used internally and can be looked up here.
Some of them are currently unused, as the headers only define them as symbolic
constants whose type is never used explicitly, which poses a problem for a
memory-safe port to the Haskell language, this is about to get fixed in a
future version.

Apart from that, because the module is generated using C2HS, some of the
documentation is misplaced or rendered incorrectly, so if in doubt, read the
source file.
-}
module Hapstone.Internal.Sparc where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Storable as C2HSImp






{-# LINE 25 "src/Hapstone/Internal/Sparc.chs" #-}


import Foreign
import Foreign.C.Types

-- | SPARC condition codes
data SparcCc = SparcCcInvalid
             | SparcCcIccN
             | SparcCcIccE
             | SparcCcIccLe
             | SparcCcIccL
             | SparcCcIccLeu
             | SparcCcIccCs
             | SparcCcIccNeg
             | SparcCcIccVs
             | SparcCcIccA
             | SparcCcIccNe
             | SparcCcIccG
             | SparcCcIccGe
             | SparcCcIccGu
             | SparcCcIccCc
             | SparcCcIccPos
             | SparcCcIccVc
             | SparcCcFccN
             | SparcCcFccNe
             | SparcCcFccLg
             | SparcCcFccUl
             | SparcCcFccL
             | SparcCcFccUg
             | SparcCcFccG
             | SparcCcFccU
             | SparcCcFccA
             | SparcCcFccE
             | SparcCcFccUe
             | SparcCcFccGe
             | SparcCcFccUge
             | SparcCcFccLe
             | SparcCcFccUle
             | SparcCcFccO
  deriving (Int -> SparcCc -> ShowS
[SparcCc] -> ShowS
SparcCc -> String
(Int -> SparcCc -> ShowS)
-> (SparcCc -> String) -> ([SparcCc] -> ShowS) -> Show SparcCc
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SparcCc] -> ShowS
$cshowList :: [SparcCc] -> ShowS
show :: SparcCc -> String
$cshow :: SparcCc -> String
showsPrec :: Int -> SparcCc -> ShowS
$cshowsPrec :: Int -> SparcCc -> ShowS
Show,SparcCc -> SparcCc -> Bool
(SparcCc -> SparcCc -> Bool)
-> (SparcCc -> SparcCc -> Bool) -> Eq SparcCc
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SparcCc -> SparcCc -> Bool
$c/= :: SparcCc -> SparcCc -> Bool
== :: SparcCc -> SparcCc -> Bool
$c== :: SparcCc -> SparcCc -> Bool
Eq,SparcCc
SparcCc -> SparcCc -> Bounded SparcCc
forall a. a -> a -> Bounded a
maxBound :: SparcCc
$cmaxBound :: SparcCc
minBound :: SparcCc
$cminBound :: SparcCc
Bounded)
instance Enum SparcCc where
  succ SparcCcInvalid = SparcCcIccN
  succ SparcCcIccN = SparcCcIccE
  succ SparcCcIccE = SparcCcIccLe
  succ SparcCcIccLe = SparcCcIccL
  succ SparcCcIccL = SparcCcIccLeu
  succ SparcCcIccLeu = SparcCcIccCs
  succ SparcCcIccCs = SparcCcIccNeg
  succ SparcCcIccNeg = SparcCcIccVs
  succ SparcCcIccVs = SparcCcIccA
  succ SparcCcIccA = SparcCcIccNe
  succ SparcCcIccNe = SparcCcIccG
  succ SparcCcIccG = SparcCcIccGe
  succ SparcCcIccGe = SparcCcIccGu
  succ SparcCcIccGu = SparcCcIccCc
  succ SparcCcIccCc = SparcCcIccPos
  succ SparcCcIccPos = SparcCcIccVc
  succ SparcCcIccVc = SparcCcFccN
  succ SparcCcFccN = SparcCcFccNe
  succ SparcCcFccNe = SparcCcFccLg
  succ SparcCcFccLg = SparcCcFccUl
  succ SparcCcFccUl = SparcCcFccL
  succ SparcCcFccL = SparcCcFccUg
  succ SparcCcFccUg = SparcCcFccG
  succ SparcCcFccG = SparcCcFccU
  succ SparcCcFccU = SparcCcFccA
  succ SparcCcFccA = SparcCcFccE
  succ SparcCcFccE = SparcCcFccUe
  succ SparcCcFccUe = SparcCcFccGe
  succ SparcCcFccGe = SparcCcFccUge
  succ SparcCcFccUge = SparcCcFccLe
  succ SparcCcFccLe = SparcCcFccUle
  succ SparcCcFccUle = SparcCcFccO
  succ SparcCcFccO = error "SparcCc.succ: SparcCcFccO has no successor"

  pred :: SparcCc -> SparcCc
pred SparcCc
SparcCcIccN = SparcCc
SparcCcInvalid
  pred SparcCc
SparcCcIccE = SparcCc
SparcCcIccN
  pred SparcCc
SparcCcIccLe = SparcCc
SparcCcIccE
  pred SparcCc
SparcCcIccL = SparcCc
SparcCcIccLe
  pred SparcCc
SparcCcIccLeu = SparcCc
SparcCcIccL
  pred SparcCc
SparcCcIccCs = SparcCc
SparcCcIccLeu
  pred SparcCc
SparcCcIccNeg = SparcCc
SparcCcIccCs
  pred SparcCc
SparcCcIccVs = SparcCc
SparcCcIccNeg
  pred SparcCc
SparcCcIccA = SparcCc
SparcCcIccVs
  pred SparcCc
SparcCcIccNe = SparcCc
SparcCcIccA
  pred SparcCc
SparcCcIccG = SparcCc
SparcCcIccNe
  pred SparcCcIccGe = SparcCc
SparcCcIccG
  pred SparcCc
SparcCcIccGu = SparcCc
SparcCcIccGe
  pred SparcCc
SparcCcIccCc = SparcCc
SparcCcIccGu
  pred SparcCc
SparcCcIccPos = SparcCc
SparcCcIccCc
  pred SparcCc
SparcCcIccVc = SparcCc
SparcCcIccPos
  pred SparcCc
SparcCcFccN = SparcCc
SparcCcIccVc
  pred SparcCc
SparcCcFccNe = SparcCc
SparcCcFccN
  pred SparcCc
SparcCcFccLg = SparcCc
SparcCcFccNe
  pred SparcCc
SparcCcFccUl = SparcCcFccLg
  pred SparcCcFccL = SparcCcFccUl
  pred SparcCcFccUg = SparcCcFccL
  pred SparcCcFccG = SparcCcFccUg
  pred SparcCcFccU = SparcCcFccG
  pred SparcCcFccA = SparcCcFccU
  pred SparcCcFccE = SparcCcFccA
  pred SparcCcFccUe = SparcCcFccE
  pred SparcCcFccGe = SparcCcFccUe
  pred SparcCcFccUge = SparcCcFccGe
  pred SparcCcFccLe = SparcCcFccUge
  pred SparcCcFccUle = SparcCcFccLe
  pred SparcCcFccO = SparcCcFccUle
  pred SparcCcInvalid = error "SparcCc.pred: SparcCcInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from SparcCcFccO

  fromEnum SparcCcInvalid = 0
  fromEnum SparcCcIccN = 256
  fromEnum SparcCcIccE = 257
  fromEnum SparcCcIccLe = 258
  fromEnum SparcCcIccL = 259
  fromEnum SparcCcIccLeu = 260
  fromEnum SparcCcIccCs = 261
  fromEnum SparcCcIccNeg = 262
  fromEnum SparcCcIccVs = 263
  fromEnum SparcCcIccA = 264
  fromEnum SparcCcIccNe = 265
  fromEnum SparcCcIccG = 266
  fromEnum SparcCcIccGe = 267
  fromEnum SparcCcIccGu = 268
  fromEnum SparcCcIccCc = 269
  fromEnum SparcCcIccPos = 270
  fromEnum SparcCcIccVc = 271
  fromEnum SparcCcFccN = 272
  fromEnum SparcCcFccNe = 273
  fromEnum SparcCcFccLg = 274
  fromEnum SparcCcFccUl = 275
  fromEnum SparcCcFccL = 276
  fromEnum SparcCcFccUg = 277
  fromEnum SparcCcFccG = 278
  fromEnum SparcCcFccU = 279
  fromEnum SparcCcFccA = 280
  fromEnum SparcCcFccE = 281
  fromEnum SparcCcFccUe = 282
  fromEnum SparcCcFccGe = 283
  fromEnum SparcCcFccUge = 284
  fromEnum SparcCcFccLe = 285
  fromEnum SparcCcFccUle = 286
  fromEnum SparcCcFccO = 287

  toEnum 0 = SparcCcInvalid
  toEnum 256 = SparcCcIccN
  toEnum 257 = SparcCcIccE
  toEnum 258 = SparcCcIccLe
  toEnum 259 = SparcCcIccL
  toEnum 260 = SparcCcIccLeu
  toEnum 261 = SparcCcIccCs
  toEnum 262 = SparcCcIccNeg
  toEnum 263 = SparcCcIccVs
  toEnum 264 = SparcCcIccA
  toEnum 265 = SparcCcIccNe
  toEnum 266 = SparcCcIccG
  toEnum 267 = SparcCcIccGe
  toEnum 268 = SparcCcIccGu
  toEnum 269 = SparcCcIccCc
  toEnum 270 = SparcCcIccPos
  toEnum 271 = SparcCcIccVc
  toEnum 272 = SparcCcFccN
  toEnum 273 = SparcCcFccNe
  toEnum 274 = SparcCcFccLg
  toEnum 275 = SparcCcFccUl
  toEnum 276 = SparcCcFccL
  toEnum 277 = SparcCcFccUg
  toEnum 278 = SparcCcFccG
  toEnum 279 = SparcCcFccU
  toEnum 280 = SparcCcFccA
  toEnum 281 = SparcCcFccE
  toEnum 282 = SparcCcFccUe
  toEnum 283 = SparcCcFccGe
  toEnum 284 = SparcCcFccUge
  toEnum 285 = SparcCcFccLe
  toEnum 286 = SparcCcFccUle
  toEnum 287 = SparcCcFccO
  toEnum unmatched = error ("SparcCc.toEnum: Cannot match " ++ show unmatched)

{-# LINE 32 "src/Hapstone/Internal/Sparc.chs" #-}

-- | SPARC branch hint
data SparcHint = SparcHintInvalid
               | SparcHintA
               | SparcHintPt
               | SparcHintPn
  deriving (Show,Eq,Bounded)
instance Enum SparcHint where
  succ SparcHintInvalid = SparcHintA
  succ SparcHintA = SparcHintPt
  succ SparcHintPt = SparcHintPn
  succ SparcHintPn = error "SparcHint.succ: SparcHintPn has no successor"

  pred SparcHintA = SparcHintInvalid
  pred SparcHintPt = SparcHintA
  pred SparcHintPn = SparcHintPt
  pred SparcHintInvalid = error "SparcHint.pred: SparcHintInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from SparcHintPn

  fromEnum SparcHintInvalid = 0
  fromEnum SparcHintA = 1
  fromEnum SparcHintPt = 2
  fromEnum SparcHintPn = 4

  toEnum 0 = SparcHintInvalid
  toEnum 1 = SparcHintA
  toEnum 2 = SparcHintPt
  toEnum 4 = SparcHintPn
  toEnum unmatched = error ("SparcHint.toEnum: Cannot match " ++ show unmatched)

{-# LINE 35 "src/Hapstone/Internal/Sparc.chs" #-}


-- | operand type for instruction's operands
data SparcOpType = SparcOpInvalid
                 | SparcOpReg
                 | SparcOpImm
                 | SparcOpMem
  deriving (Show,Eq,Bounded)
instance Enum SparcOpType where
  succ SparcOpInvalid = SparcOpReg
  succ SparcOpReg = SparcOpImm
  succ SparcOpImm = SparcOpMem
  succ SparcOpMem = error "SparcOpType.succ: SparcOpMem has no successor"

  pred SparcOpReg = SparcOpInvalid
  pred SparcOpImm = SparcOpReg
  pred SparcOpMem = SparcOpImm
  pred SparcOpInvalid = error "SparcOpType.pred: SparcOpInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from SparcOpMem

  fromEnum SparcOpInvalid = 0
  fromEnum SparcOpReg = 1
  fromEnum SparcOpImm = 2
  fromEnum SparcOpMem = 3

  toEnum 0 = SparcOpInvalid
  toEnum 1 = SparcOpReg
  toEnum 2 = SparcOpImm
  toEnum 3 = SparcOpMem
  toEnum unmatched = error ("SparcOpType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 39 "src/Hapstone/Internal/Sparc.chs" #-}


-- | SPARC registers
data SparcReg = SparcRegInvalid
              | SparcRegF0
              | SparcRegF1
              | SparcRegF2
              | SparcRegF3
              | SparcRegF4
              | SparcRegF5
              | SparcRegF6
              | SparcRegF7
              | SparcRegF8
              | SparcRegF9
              | SparcRegF10
              | SparcRegF11
              | SparcRegF12
              | SparcRegF13
              | SparcRegF14
              | SparcRegF15
              | SparcRegF16
              | SparcRegF17
              | SparcRegF18
              | SparcRegF19
              | SparcRegF20
              | SparcRegF21
              | SparcRegF22
              | SparcRegF23
              | SparcRegF24
              | SparcRegF25
              | SparcRegF26
              | SparcRegF27
              | SparcRegF28
              | SparcRegF29
              | SparcRegF30
              | SparcRegF31
              | SparcRegF32
              | SparcRegF34
              | SparcRegF36
              | SparcRegF38
              | SparcRegF40
              | SparcRegF42
              | SparcRegF44
              | SparcRegF46
              | SparcRegF48
              | SparcRegF50
              | SparcRegF52
              | SparcRegF54
              | SparcRegF56
              | SparcRegF58
              | SparcRegF60
              | SparcRegF62
              | SparcRegFcc0
              | SparcRegFcc1
              | SparcRegFcc2
              | SparcRegFcc3
              | SparcRegFp
              | SparcRegI6
              | SparcRegG0
              | SparcRegG1
              | SparcRegG2
              | SparcRegG3
              | SparcRegG4
              | SparcRegG5
              | SparcRegG6
              | SparcRegG7
              | SparcRegI0
              | SparcRegI1
              | SparcRegI2
              | SparcRegI3
              | SparcRegI4
              | SparcRegI5
              | SparcRegI7
              | SparcRegIcc
              | SparcRegL0
              | SparcRegL1
              | SparcRegL2
              | SparcRegL3
              | SparcRegL4
              | SparcRegL5
              | SparcRegL6
              | SparcRegL7
              | SparcRegO0
              | SparcRegO1
              | SparcRegO2
              | SparcRegO3
              | SparcRegO4
              | SparcRegO5
              | SparcRegO7
              | SparcRegSp
              | SparcRegO6
              | SparcRegY
              | SparcRegXcc
              | SparcRegEnding
  deriving (Show,Eq,Bounded)
instance Enum SparcReg where
  succ SparcRegInvalid = SparcRegF0
  succ SparcRegF0 = SparcRegF1
  succ SparcRegF1 = SparcRegF2
  succ SparcRegF2 = SparcRegF3
  succ SparcRegF3 = SparcRegF4
  succ SparcRegF4 = SparcRegF5
  succ SparcRegF5 = SparcRegF6
  succ SparcRegF6 = SparcRegF7
  succ SparcRegF7 = SparcRegF8
  succ SparcRegF8 = SparcRegF9
  succ SparcRegF9 = SparcRegF10
  succ SparcRegF10 = SparcRegF11
  succ SparcRegF11 = SparcRegF12
  succ SparcRegF12 = SparcRegF13
  succ SparcRegF13 = SparcRegF14
  succ SparcRegF14 = SparcRegF15
  succ SparcRegF15 = SparcRegF16
  succ SparcRegF16 = SparcRegF17
  succ SparcRegF17 = SparcRegF18
  succ SparcRegF18 = SparcRegF19
  succ SparcRegF19 = SparcRegF20
  succ SparcRegF20 = SparcRegF21
  succ SparcRegF21 = SparcRegF22
  succ SparcRegF22 = SparcRegF23
  succ SparcRegF23 = SparcRegF24
  succ SparcRegF24 = SparcRegF25
  succ SparcRegF25 = SparcRegF26
  succ SparcRegF26 = SparcRegF27
  succ SparcRegF27 = SparcRegF28
  succ SparcRegF28 = SparcRegF29
  succ SparcRegF29 = SparcRegF30
  succ SparcRegF30 = SparcRegF31
  succ SparcRegF31 = SparcRegF32
  succ SparcRegF32 = SparcRegF34
  succ SparcRegF34 = SparcRegF36
  succ SparcRegF36 = SparcRegF38
  succ SparcRegF38 = SparcRegF40
  succ SparcRegF40 = SparcRegF42
  succ SparcRegF42 = SparcRegF44
  succ SparcRegF44 = SparcRegF46
  succ SparcRegF46 = SparcRegF48
  succ SparcRegF48 = SparcRegF50
  succ SparcRegF50 = SparcRegF52
  succ SparcRegF52 = SparcRegF54
  succ SparcRegF54 = SparcRegF56
  succ SparcRegF56 = SparcRegF58
  succ SparcRegF58 = SparcRegF60
  succ SparcRegF60 = SparcRegF62
  succ SparcRegF62 = SparcRegFcc0
  succ SparcRegFcc0 = SparcRegFcc1
  succ SparcRegFcc1 = SparcRegFcc2
  succ SparcRegFcc2 = SparcRegFcc3
  succ SparcRegFcc3 = SparcRegFp
  succ SparcRegFp = SparcRegG0
  succ SparcRegI6 = SparcRegG0
  succ SparcRegG0 = SparcRegG1
  succ SparcRegG1 = SparcRegG2
  succ SparcRegG2 = SparcRegG3
  succ SparcRegG3 = SparcRegG4
  succ SparcRegG4 = SparcRegG5
  succ SparcRegG5 = SparcRegG6
  succ SparcRegG6 = SparcRegG7
  succ SparcRegG7 = SparcRegI0
  succ SparcRegI0 = SparcRegI1
  succ SparcRegI1 = SparcRegI2
  succ SparcRegI2 = SparcRegI3
  succ SparcRegI3 = SparcRegI4
  succ SparcRegI4 = SparcRegI5
  succ SparcRegI5 = SparcRegI7
  succ SparcRegI7 = SparcRegIcc
  succ SparcRegIcc = SparcRegL0
  succ SparcRegL0 = SparcRegL1
  succ SparcRegL1 = SparcRegL2
  succ SparcRegL2 = SparcRegL3
  succ SparcRegL3 = SparcRegL4
  succ SparcRegL4 = SparcRegL5
  succ SparcRegL5 = SparcRegL6
  succ SparcRegL6 = SparcRegL7
  succ SparcRegL7 = SparcRegO0
  succ SparcRegO0 = SparcRegO1
  succ SparcRegO1 = SparcRegO2
  succ SparcRegO2 = SparcRegO3
  succ SparcRegO3 = SparcRegO4
  succ SparcRegO4 = SparcRegO5
  succ SparcRegO5 = SparcRegO7
  succ SparcRegO7 = SparcRegSp
  succ SparcRegSp = SparcRegY
  succ SparcRegO6 = SparcRegY
  succ SparcRegY = SparcRegXcc
  succ SparcRegXcc = SparcRegEnding
  succ SparcRegEnding = error "SparcReg.succ: SparcRegEnding has no successor"

  pred SparcRegF0 = SparcRegInvalid
  pred SparcRegF1 = SparcRegF0
  pred SparcRegF2 = SparcRegF1
  pred SparcRegF3 = SparcRegF2
  pred SparcRegF4 = SparcRegF3
  pred SparcRegF5 = SparcRegF4
  pred SparcRegF6 = SparcRegF5
  pred SparcRegF7 = SparcRegF6
  pred SparcRegF8 = SparcRegF7
  pred SparcRegF9 = SparcRegF8
  pred SparcRegF10 = SparcRegF9
  pred SparcRegF11 = SparcRegF10
  pred SparcRegF12 = SparcRegF11
  pred SparcRegF13 = SparcRegF12
  pred SparcRegF14 = SparcRegF13
  pred SparcRegF15 = SparcRegF14
  pred SparcRegF16 = SparcRegF15
  pred SparcRegF17 = SparcRegF16
  pred SparcRegF18 = SparcRegF17
  pred SparcRegF19 = SparcRegF18
  pred SparcRegF20 = SparcRegF19
  pred SparcRegF21 = SparcRegF20
  pred SparcRegF22 = SparcRegF21
  pred SparcRegF23 = SparcRegF22
  pred SparcRegF24 = SparcRegF23
  pred SparcRegF25 = SparcRegF24
  pred SparcRegF26 = SparcRegF25
  pred SparcRegF27 = SparcRegF26
  pred SparcRegF28 = SparcRegF27
  pred SparcRegF29 = SparcRegF28
  pred SparcRegF30 = SparcRegF29
  pred SparcRegF31 = SparcRegF30
  pred SparcRegF32 = SparcRegF31
  pred SparcRegF34 = SparcRegF32
  pred SparcRegF36 = SparcRegF34
  pred SparcRegF38 = SparcRegF36
  pred SparcRegF40 = SparcRegF38
  pred SparcRegF42 = SparcRegF40
  pred SparcRegF44 = SparcRegF42
  pred SparcRegF46 = SparcRegF44
  pred SparcRegF48 = SparcRegF46
  pred SparcRegF50 = SparcRegF48
  pred SparcRegF52 = SparcRegF50
  pred SparcRegF54 = SparcRegF52
  pred SparcRegF56 = SparcRegF54
  pred SparcRegF58 = SparcRegF56
  pred SparcRegF60 = SparcRegF58
  pred SparcRegF62 = SparcRegF60
  pred SparcRegFcc0 = SparcRegF62
  pred SparcRegFcc1 = SparcRegFcc0
  pred SparcRegFcc2 = SparcRegFcc1
  pred SparcRegFcc3 = SparcRegFcc2
  pred SparcRegFp = SparcRegFcc3
  pred SparcRegI6 = SparcRegFcc3
  pred SparcRegG0 = SparcRegFp
  pred SparcRegG1 = SparcRegG0
  pred SparcRegG2 = SparcRegG1
  pred SparcRegG3 = SparcRegG2
  pred SparcRegG4 = SparcRegG3
  pred SparcRegG5 = SparcRegG4
  pred SparcRegG6 = SparcRegG5
  pred SparcRegG7 = SparcRegG6
  pred SparcRegI0 = SparcRegG7
  pred SparcRegI1 = SparcRegI0
  pred SparcRegI2 = SparcRegI1
  pred SparcRegI3 = SparcRegI2
  pred SparcRegI4 = SparcRegI3
  pred SparcRegI5 = SparcRegI4
  pred SparcRegI7 = SparcRegI5
  pred SparcRegIcc = SparcRegI7
  pred SparcRegL0 = SparcRegIcc
  pred SparcRegL1 = SparcRegL0
  pred SparcRegL2 = SparcRegL1
  pred SparcRegL3 = SparcRegL2
  pred SparcRegL4 = SparcRegL3
  pred SparcRegL5 = SparcRegL4
  pred SparcRegL6 = SparcRegL5
  pred SparcRegL7 = SparcRegL6
  pred SparcRegO0 = SparcRegL7
  pred SparcRegO1 = SparcRegO0
  pred SparcRegO2 = SparcRegO1
  pred SparcRegO3 = SparcRegO2
  pred SparcRegO4 = SparcRegO3
  pred SparcRegO5 = SparcRegO4
  pred SparcRegO7 = SparcRegO5
  pred SparcRegSp = SparcRegO7
  pred SparcRegO6 = SparcRegO7
  pred SparcRegY = SparcRegSp
  pred SparcRegXcc = SparcRegY
  pred SparcRegEnding = SparcRegXcc
  pred SparcRegInvalid = error "SparcReg.pred: SparcRegInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from SparcRegEnding

  fromEnum SparcRegInvalid = 0
  fromEnum SparcRegF0 = 1
  fromEnum SparcRegF1 = 2
  fromEnum SparcRegF2 = 3
  fromEnum SparcRegF3 = 4
  fromEnum SparcRegF4 = 5
  fromEnum SparcRegF5 = 6
  fromEnum SparcRegF6 = 7
  fromEnum SparcRegF7 = 8
  fromEnum SparcRegF8 = 9
  fromEnum SparcRegF9 = 10
  fromEnum SparcRegF10 = 11
  fromEnum SparcRegF11 = 12
  fromEnum SparcRegF12 = 13
  fromEnum SparcRegF13 = 14
  fromEnum SparcRegF14 = 15
  fromEnum SparcRegF15 = 16
  fromEnum SparcRegF16 = 17
  fromEnum SparcRegF17 = 18
  fromEnum SparcRegF18 = 19
  fromEnum SparcRegF19 = 20
  fromEnum SparcRegF20 = 21
  fromEnum SparcRegF21 = 22
  fromEnum SparcRegF22 = 23
  fromEnum SparcRegF23 = 24
  fromEnum SparcRegF24 = 25
  fromEnum SparcRegF25 = 26
  fromEnum SparcRegF26 = 27
  fromEnum SparcRegF27 = 28
  fromEnum SparcRegF28 = 29
  fromEnum SparcRegF29 = 30
  fromEnum SparcRegF30 = 31
  fromEnum SparcRegF31 = 32
  fromEnum SparcRegF32 = 33
  fromEnum SparcRegF34 = 34
  fromEnum SparcRegF36 = 35
  fromEnum SparcRegF38 = 36
  fromEnum SparcRegF40 = 37
  fromEnum SparcRegF42 = 38
  fromEnum SparcRegF44 = 39
  fromEnum SparcRegF46 = 40
  fromEnum SparcRegF48 = 41
  fromEnum SparcRegF50 = 42
  fromEnum SparcRegF52 = 43
  fromEnum SparcRegF54 = 44
  fromEnum SparcRegF56 = 45
  fromEnum SparcRegF58 = 46
  fromEnum SparcRegF60 = 47
  fromEnum SparcRegF62 = 48
  fromEnum SparcRegFcc0 = 49
  fromEnum SparcRegFcc1 = 50
  fromEnum SparcRegFcc2 = 51
  fromEnum SparcRegFcc3 = 52
  fromEnum SparcRegFp = 53
  fromEnum SparcRegI6 = 53
  fromEnum SparcRegG0 = 54
  fromEnum SparcRegG1 = 55
  fromEnum SparcRegG2 = 56
  fromEnum SparcRegG3 = 57
  fromEnum SparcRegG4 = 58
  fromEnum SparcRegG5 = 59
  fromEnum SparcRegG6 = 60
  fromEnum SparcRegG7 = 61
  fromEnum SparcRegI0 = 62
  fromEnum SparcRegI1 = 63
  fromEnum SparcRegI2 = 64
  fromEnum SparcRegI3 = 65
  fromEnum SparcRegI4 = 66
  fromEnum SparcRegI5 = 67
  fromEnum SparcRegI7 = 68
  fromEnum SparcRegIcc = 69
  fromEnum SparcRegL0 = 70
  fromEnum SparcRegL1 = 71
  fromEnum SparcRegL2 = 72
  fromEnum SparcRegL3 = 73
  fromEnum SparcRegL4 = 74
  fromEnum SparcRegL5 = 75
  fromEnum SparcRegL6 = 76
  fromEnum SparcRegL7 = 77
  fromEnum SparcRegO0 = 78
  fromEnum SparcRegO1 = 79
  fromEnum SparcRegO2 = 80
  fromEnum SparcRegO3 = 81
  fromEnum SparcRegO4 = 82
  fromEnum SparcRegO5 = 83
  fromEnum SparcRegO7 = 84
  fromEnum SparcRegSp = 85
  fromEnum SparcRegO6 = 85
  fromEnum SparcRegY = 86
  fromEnum SparcRegXcc = 87
  fromEnum SparcRegEnding = 88

  toEnum :: Int -> SparcReg
toEnum Int
0 = SparcReg
SparcRegInvalid
  toEnum 1 = SparcReg
SparcRegF0
  toEnum 2 = SparcReg
SparcRegF1
  toEnum 3 = SparcReg
SparcRegF2
  toEnum 4 = SparcReg
SparcRegF3
  toEnum 5 = SparcReg
SparcRegF4
  toEnum 6 = SparcReg
SparcRegF5
  toEnum 7 = SparcReg
SparcRegF6
  toEnum 8 = SparcReg
SparcRegF7
  toEnum 9 = SparcReg
SparcRegF8
  toEnum 10 = SparcReg
SparcRegF9
  toEnum 11 = SparcReg
SparcRegF10
  toEnum 12 = SparcReg
SparcRegF11
  toEnum 13 = SparcReg
SparcRegF12
  toEnum 14 = SparcReg
SparcRegF13
  toEnum 15 = SparcReg
SparcRegF14
  toEnum 16 = SparcReg
SparcRegF15
  toEnum 17 = SparcReg
SparcRegF16
  toEnum 18 = SparcReg
SparcRegF17
  toEnum 19 = SparcReg
SparcRegF18
  toEnum 20 = SparcReg
SparcRegF19
  toEnum 21 = SparcReg
SparcRegF20
  toEnum 22 = SparcReg
SparcRegF21
  toEnum 23 = SparcReg
SparcRegF22
  toEnum 24 = SparcReg
SparcRegF23
  toEnum 25 = SparcReg
SparcRegF24
  toEnum 26 = SparcReg
SparcRegF25
  toEnum 27 = SparcRegF26
  toEnum 28 = SparcRegF27
  toEnum 29 = SparcRegF28
  toEnum 30 = SparcRegF29
  toEnum 31 = SparcRegF30
  toEnum 32 = SparcRegF31
  toEnum 33 = SparcRegF32
  toEnum 34 = SparcRegF34
  toEnum 35 = SparcRegF36
  toEnum 36 = SparcRegF38
  toEnum 37 = SparcRegF40
  toEnum 38 = SparcRegF42
  toEnum 39 = SparcRegF44
  toEnum 40 = SparcRegF46
  toEnum 41 = SparcRegF48
  toEnum 42 = SparcRegF50
  toEnum 43 = SparcRegF52
  toEnum 44 = SparcRegF54
  toEnum 45 = SparcRegF56
  toEnum 46 = SparcRegF58
  toEnum 47 = SparcRegF60
  toEnum 48 = SparcRegF62
  toEnum 49 = SparcRegFcc0
  toEnum 50 = SparcRegFcc1
  toEnum 51 = SparcRegFcc2
  toEnum 52 = SparcRegFcc3
  toEnum 53 = SparcRegFp
  toEnum 54 = SparcRegG0
  toEnum 55 = SparcRegG1
  toEnum 56 = SparcRegG2
  toEnum 57 = SparcRegG3
  toEnum 58 = SparcRegG4
  toEnum 59 = SparcRegG5
  toEnum 60 = SparcRegG6
  toEnum 61 = SparcRegG7
  toEnum 62 = SparcRegI0
  toEnum 63 = SparcRegI1
  toEnum 64 = SparcRegI2
  toEnum 65 = SparcRegI3
  toEnum 66 = SparcRegI4
  toEnum 67 = SparcRegI5
  toEnum 68 = SparcRegI7
  toEnum 69 = SparcRegIcc
  toEnum 70 = SparcRegL0
  toEnum 71 = SparcRegL1
  toEnum 72 = SparcRegL2
  toEnum 73 = SparcRegL3
  toEnum 74 = SparcRegL4
  toEnum 75 = SparcRegL5
  toEnum 76 = SparcRegL6
  toEnum 77 = SparcRegL7
  toEnum 78 = SparcRegO0
  toEnum 79 = SparcRegO1
  toEnum 80 = SparcRegO2
  toEnum 81 = SparcRegO3
  toEnum 82 = SparcRegO4
  toEnum 83 = SparcRegO5
  toEnum 84 = SparcRegO7
  toEnum 85 = SparcRegSp
  toEnum 86 = SparcRegY
  toEnum 87 = SparcRegXcc
  toEnum 88 = SparcRegEnding
  toEnum unmatched = error ("SparcReg.toEnum: Cannot match " ++ show unmatched)

{-# LINE 43 "src/Hapstone/Internal/Sparc.chs" #-}


-- | memory access operand
-- associated with 'SparcOpMem' operand type
data SparcOpMemStruct = SparcOpMemStruct
    { base :: Word8 -- ^ base register
    , index :: Word8 -- ^ index register
    , disp :: Int32 -- ^ displacement/offset value
    } deriving (Show, Eq)

instance Storable SparcOpMemStruct where
    sizeOf _ = 8
{-# LINE 54 "src/Hapstone/Internal/Sparc.chs" #-}

    alignment _ = 4
{-# LINE 55 "src/Hapstone/Internal/Sparc.chs" #-}

    peek p = SparcOpMemStruct
        <$> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CUChar}) p)
        <*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 1 :: IO C2HSImp.CUChar}) p)
        <*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
    poke p (SparcOpMemStruct b i d) = do
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CUChar)}) p (fromIntegral b)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 1 (val :: C2HSImp.CUChar)}) p (fromIntegral i)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral d)

-- | instruction operand
data CsSparcOp
    = Reg Word32 -- ^ register value for 'SparcOpReg' operands
    | Imm Int32 -- ^ immediate value for 'SparcOpImm' operands
    | Mem SparcOpMemStruct -- ^ base,index,disp value for 'SparcOpMem' operands
    | Undefined -- ^ invalid operand value, for 'SparcOpInvalid' operand
    deriving (Show, Eq)

instance Storable CsSparcOp where
    sizeOf _ = 12
    alignment _ = 4
    peek p = do
        t <- fromIntegral <$> ((\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p :: IO CInt)
        let bP = plusPtr p 4
        case toEnum t of
          SparcOpReg -> Reg <$> peek bP
          SparcOpImm -> Imm <$> peek bP
          SparcOpMem -> Mem <$> peek bP
          _ -> return Undefined
    poke p op = do
        let bP = plusPtr p 4
            setType = (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p . fromIntegral . fromEnum
        case op of
          Reg r -> do
              poke bP (fromIntegral $ fromEnum r :: CInt)
              setType SparcOpReg
          Imm i -> do
              poke bP i
              setType SparcOpImm
          Mem m -> do
              poke bP m
              setType SparcOpMem
          _ -> setType SparcOpInvalid

-- | instruction datatype
data CsSparc = CsSparc
    { cc :: SparcCc -- ^ condition code
    , hint :: SparcHint -- ^ branch hint
    , operands :: [CsSparcOp] -- ^ operand list of this instruction, *MUST*
                              -- have <= 4 elements, else you'll get a runtime
                              -- error when you (implicitly) try to write it to
                              -- memory via it's Storable instance
    } deriving (Show, Eq)

instance Storable CsSparc where
    sizeOf _ = 60
    alignment _ = 4
    peek p = CsSparc
        <$> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
        <*> do num <- fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CUChar}) p
               let ptr = plusPtr p (16)
{-# LINE 116 "src/Hapstone/Internal/Sparc.chs" #-}

               peekArray num ptr
    poke p (CsSparc cc h o) = do
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum cc)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum h)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CUChar)}) p (fromIntegral $ length o)
        if length o > 4
           then error "operands overflew 4 elements"
           else pokeArray (plusPtr p (16)) o

-- | SPARC instructions
data SparcInsn = SparcInsInvalid
               | SparcInsAddcc
               | SparcInsAddx
               | SparcInsAddxcc
               | SparcInsAddxc
               | SparcInsAddxccc
               | SparcInsAdd
               | SparcInsAlignaddr
               | SparcInsAlignaddrl
               | SparcInsAndcc
               | SparcInsAndncc
               | SparcInsAndn
               | SparcInsAnd
               | SparcInsArray16
               | SparcInsArray32
               | SparcInsArray8
               | SparcInsB
               | SparcInsJmp
               | SparcInsBmask
               | SparcInsFb
               | SparcInsBrgez
               | SparcInsBrgz
               | SparcInsBrlez
               | SparcInsBrlz
               | SparcInsBrnz
               | SparcInsBrz
               | SparcInsBshuffle
               | SparcInsCall
               | SparcInsCasx
               | SparcInsCas
               | SparcInsCmask16
               | SparcInsCmask32
               | SparcInsCmask8
               | SparcInsCmp
               | SparcInsEdge16
               | SparcInsEdge16l
               | SparcInsEdge16ln
               | SparcInsEdge16n
               | SparcInsEdge32
               | SparcInsEdge32l
               | SparcInsEdge32ln
               | SparcInsEdge32n
               | SparcInsEdge8
               | SparcInsEdge8l
               | SparcInsEdge8ln
               | SparcInsEdge8n
               | SparcInsFabsd
               | SparcInsFabsq
               | SparcInsFabss
               | SparcInsFaddd
               | SparcInsFaddq
               | SparcInsFadds
               | SparcInsFaligndata
               | SparcInsFand
               | SparcInsFandnot1
               | SparcInsFandnot1s
               | SparcInsFandnot2
               | SparcInsFandnot2s
               | SparcInsFands
               | SparcInsFchksm16
               | SparcInsFcmpd
               | SparcInsFcmpeq16
               | SparcInsFcmpeq32
               | SparcInsFcmpgt16
               | SparcInsFcmpgt32
               | SparcInsFcmple16
               | SparcInsFcmple32
               | SparcInsFcmpne16
               | SparcInsFcmpne32
               | SparcInsFcmpq
               | SparcInsFcmps
               | SparcInsFdivd
               | SparcInsFdivq
               | SparcInsFdivs
               | SparcInsFdmulq
               | SparcInsFdtoi
               | SparcInsFdtoq
               | SparcInsFdtos
               | SparcInsFdtox
               | SparcInsFexpand
               | SparcInsFhaddd
               | SparcInsFhadds
               | SparcInsFhsubd
               | SparcInsFhsubs
               | SparcInsFitod
               | SparcInsFitoq
               | SparcInsFitos
               | SparcInsFlcmpd
               | SparcInsFlcmps
               | SparcInsFlushw
               | SparcInsFmean16
               | SparcInsFmovd
               | SparcInsFmovq
               | SparcInsFmovrdgez
               | SparcInsFmovrqgez
               | SparcInsFmovrsgez
               | SparcInsFmovrdgz
               | SparcInsFmovrqgz
               | SparcInsFmovrsgz
               | SparcInsFmovrdlez
               | SparcInsFmovrqlez
               | SparcInsFmovrslez
               | SparcInsFmovrdlz
               | SparcInsFmovrqlz
               | SparcInsFmovrslz
               | SparcInsFmovrdnz
               | SparcInsFmovrqnz
               | SparcInsFmovrsnz
               | SparcInsFmovrdz
               | SparcInsFmovrqz
               | SparcInsFmovrsz
               | SparcInsFmovs
               | SparcInsFmul8sux16
               | SparcInsFmul8ulx16
               | SparcInsFmul8x16
               | SparcInsFmul8x16al
               | SparcInsFmul8x16au
               | SparcInsFmuld
               | SparcInsFmuld8sux16
               | SparcInsFmuld8ulx16
               | SparcInsFmulq
               | SparcInsFmuls
               | SparcInsFnaddd
               | SparcInsFnadds
               | SparcInsFnand
               | SparcInsFnands
               | SparcInsFnegd
               | SparcInsFnegq
               | SparcInsFnegs
               | SparcInsFnhaddd
               | SparcInsFnhadds
               | SparcInsFnor
               | SparcInsFnors
               | SparcInsFnot1
               | SparcInsFnot1s
               | SparcInsFnot2
               | SparcInsFnot2s
               | SparcInsFone
               | SparcInsFones
               | SparcInsFor
               | SparcInsFornot1
               | SparcInsFornot1s
               | SparcInsFornot2
               | SparcInsFornot2s
               | SparcInsFors
               | SparcInsFpack16
               | SparcInsFpack32
               | SparcInsFpackfix
               | SparcInsFpadd16
               | SparcInsFpadd16s
               | SparcInsFpadd32
               | SparcInsFpadd32s
               | SparcInsFpadd64
               | SparcInsFpmerge
               | SparcInsFpsub16
               | SparcInsFpsub16s
               | SparcInsFpsub32
               | SparcInsFpsub32s
               | SparcInsFqtod
               | SparcInsFqtoi
               | SparcInsFqtos
               | SparcInsFqtox
               | SparcInsFslas16
               | SparcInsFslas32
               | SparcInsFsll16
               | SparcInsFsll32
               | SparcInsFsmuld
               | SparcInsFsqrtd
               | SparcInsFsqrtq
               | SparcInsFsqrts
               | SparcInsFsra16
               | SparcInsFsra32
               | SparcInsFsrc1
               | SparcInsFsrc1s
               | SparcInsFsrc2
               | SparcInsFsrc2s
               | SparcInsFsrl16
               | SparcInsFsrl32
               | SparcInsFstod
               | SparcInsFstoi
               | SparcInsFstoq
               | SparcInsFstox
               | SparcInsFsubd
               | SparcInsFsubq
               | SparcInsFsubs
               | SparcInsFxnor
               | SparcInsFxnors
               | SparcInsFxor
               | SparcInsFxors
               | SparcInsFxtod
               | SparcInsFxtoq
               | SparcInsFxtos
               | SparcInsFzero
               | SparcInsFzeros
               | SparcInsJmpl
               | SparcInsLdd
               | SparcInsLd
               | SparcInsLdq
               | SparcInsLdsb
               | SparcInsLdsh
               | SparcInsLdsw
               | SparcInsLdub
               | SparcInsLduh
               | SparcInsLdx
               | SparcInsLzcnt
               | SparcInsMembar
               | SparcInsMovdtox
               | SparcInsMov
               | SparcInsMovrgez
               | SparcInsMovrgz
               | SparcInsMovrlez
               | SparcInsMovrlz
               | SparcInsMovrnz
               | SparcInsMovrz
               | SparcInsMovstosw
               | SparcInsMovstouw
               | SparcInsMulx
               | SparcInsNop
               | SparcInsOrcc
               | SparcInsOrncc
               | SparcInsOrn
               | SparcInsOr
               | SparcInsPdist
               | SparcInsPdistn
               | SparcInsPopc
               | SparcInsRd
               | SparcInsRestore
               | SparcInsRett
               | SparcInsSave
               | SparcInsSdivcc
               | SparcInsSdivx
               | SparcInsSdiv
               | SparcInsSethi
               | SparcInsShutdown
               | SparcInsSiam
               | SparcInsSllx
               | SparcInsSll
               | SparcInsSmulcc
               | SparcInsSmul
               | SparcInsSrax
               | SparcInsSra
               | SparcInsSrlx
               | SparcInsSrl
               | SparcInsStbar
               | SparcInsStb
               | SparcInsStd
               | SparcInsSt
               | SparcInsSth
               | SparcInsStq
               | SparcInsStx
               | SparcInsSubcc
               | SparcInsSubx
               | SparcInsSubxcc
               | SparcInsSub
               | SparcInsSwap
               | SparcInsTaddcctv
               | SparcInsTaddcc
               | SparcInsT
               | SparcInsTsubcctv
               | SparcInsTsubcc
               | SparcInsUdivcc
               | SparcInsUdivx
               | SparcInsUdiv
               | SparcInsUmulcc
               | SparcInsUmulxhi
               | SparcInsUmul
               | SparcInsUnimp
               | SparcInsFcmped
               | SparcInsFcmpeq
               | SparcInsFcmpes
               | SparcInsWr
               | SparcInsXmulx
               | SparcInsXmulxhi
               | SparcInsXnorcc
               | SparcInsXnor
               | SparcInsXorcc
               | SparcInsXor
               | SparcInsRet
               | SparcInsRetl
               | SparcInsEnding
  deriving (Show,Eq,Bounded)
instance Enum SparcInsn where
  succ SparcInsInvalid = SparcInsAddcc
  succ SparcInsAddcc = SparcInsAddx
  succ SparcInsAddx = SparcInsAddxcc
  succ SparcInsAddxcc = SparcInsAddxc
  succ SparcInsAddxc = SparcInsAddxccc
  succ SparcInsAddxccc = SparcInsAdd
  succ SparcInsAdd = SparcInsAlignaddr
  succ SparcInsAlignaddr = SparcInsAlignaddrl
  succ SparcInsAlignaddrl = SparcInsAndcc
  succ SparcInsAndcc = SparcInsAndncc
  succ SparcInsAndncc = SparcInsAndn
  succ SparcInsAndn = SparcInsAnd
  succ SparcInsAnd = SparcInsArray16
  succ SparcInsArray16 = SparcInsArray32
  succ SparcInsArray32 = SparcInsArray8
  succ SparcInsArray8 = SparcInsB
  succ SparcInsB = SparcInsJmp
  succ SparcInsJmp = SparcInsBmask
  succ SparcInsBmask = SparcInsFb
  succ SparcInsFb = SparcInsBrgez
  succ SparcInsBrgez = SparcInsBrgz
  succ SparcInsBrgz = SparcInsBrlez
  succ SparcInsBrlez = SparcInsBrlz
  succ SparcInsBrlz = SparcInsBrnz
  succ SparcInsBrnz = SparcInsBrz
  succ SparcInsBrz = SparcInsBshuffle
  succ SparcInsBshuffle = SparcInsCall
  succ SparcInsCall = SparcInsCasx
  succ SparcInsCasx = SparcInsCas
  succ SparcInsCas = SparcInsCmask16
  succ SparcInsCmask16 = SparcInsCmask32
  succ SparcInsCmask32 = SparcInsCmask8
  succ SparcInsCmask8 = SparcInsCmp
  succ SparcInsCmp = SparcInsEdge16
  succ SparcInsEdge16 = SparcInsEdge16l
  succ SparcInsEdge16l = SparcInsEdge16ln
  succ SparcInsEdge16ln = SparcInsEdge16n
  succ SparcInsEdge16n = SparcInsEdge32
  succ SparcInsEdge32 = SparcInsEdge32l
  succ SparcInsEdge32l = SparcInsEdge32ln
  succ SparcInsEdge32ln = SparcInsEdge32n
  succ SparcInsEdge32n = SparcInsEdge8
  succ SparcInsEdge8 = SparcInsEdge8l
  succ SparcInsEdge8l = SparcInsEdge8ln
  succ SparcInsEdge8ln = SparcInsEdge8n
  succ SparcInsEdge8n = SparcInsFabsd
  succ SparcInsFabsd = SparcInsFabsq
  succ SparcInsFabsq = SparcInsFabss
  succ SparcInsFabss = SparcInsFaddd
  succ SparcInsFaddd = SparcInsFaddq
  succ SparcInsFaddq = SparcInsFadds
  succ SparcInsFadds = SparcInsFaligndata
  succ SparcInsFaligndata = SparcInsFand
  succ SparcInsFand = SparcInsFandnot1
  succ SparcInsFandnot1 = SparcInsFandnot1s
  succ SparcInsFandnot1s = SparcInsFandnot2
  succ SparcInsFandnot2 = SparcInsFandnot2s
  succ SparcInsFandnot2s = SparcInsFands
  succ SparcInsFands = SparcInsFchksm16
  succ SparcInsFchksm16 = SparcInsFcmpd
  succ SparcInsFcmpd = SparcInsFcmpeq16
  succ SparcInsFcmpeq16 = SparcInsFcmpeq32
  succ SparcInsFcmpeq32 = SparcInsFcmpgt16
  succ SparcInsFcmpgt16 = SparcInsFcmpgt32
  succ SparcInsFcmpgt32 = SparcInsFcmple16
  succ SparcInsFcmple16 = SparcInsFcmple32
  succ SparcInsFcmple32 = SparcInsFcmpne16
  succ SparcInsFcmpne16 = SparcInsFcmpne32
  succ SparcInsFcmpne32 = SparcInsFcmpq
  succ SparcInsFcmpq = SparcInsFcmps
  succ SparcInsFcmps = SparcInsFdivd
  succ SparcInsFdivd = SparcInsFdivq
  succ SparcInsFdivq = SparcInsFdivs
  succ SparcInsFdivs = SparcInsFdmulq
  succ SparcInsFdmulq = SparcInsFdtoi
  succ SparcInsFdtoi = SparcInsFdtoq
  succ SparcInsFdtoq = SparcInsFdtos
  succ SparcInsFdtos = SparcInsFdtox
  succ SparcInsFdtox = SparcInsFexpand
  succ SparcInsFexpand = SparcInsFhaddd
  succ SparcInsFhaddd = SparcInsFhadds
  succ SparcInsFhadds = SparcInsFhsubd
  succ SparcInsFhsubd = SparcInsFhsubs
  succ SparcInsFhsubs = SparcInsFitod
  succ SparcInsFitod = SparcInsFitoq
  succ SparcInsFitoq = SparcInsFitos
  succ SparcInsFitos = SparcInsFlcmpd
  succ SparcInsFlcmpd = SparcInsFlcmps
  succ SparcInsFlcmps = SparcInsFlushw
  succ SparcInsFlushw = SparcInsFmean16
  succ SparcInsFmean16 = SparcInsFmovd
  succ SparcInsFmovd = SparcInsFmovq
  succ SparcInsFmovq = SparcInsFmovrdgez
  succ SparcInsFmovrdgez = SparcInsFmovrqgez
  succ SparcInsFmovrqgez = SparcInsFmovrsgez
  succ SparcInsFmovrsgez = SparcInsFmovrdgz
  succ SparcInsFmovrdgz = SparcInsFmovrqgz
  succ SparcInsFmovrqgz = SparcInsFmovrsgz
  succ SparcInsFmovrsgz = SparcInsFmovrdlez
  succ SparcInsFmovrdlez = SparcInsFmovrqlez
  succ SparcInsFmovrqlez = SparcInsFmovrslez
  succ SparcInsFmovrslez = SparcInsFmovrdlz
  succ SparcInsFmovrdlz = SparcInsFmovrqlz
  succ SparcInsFmovrqlz = SparcInsFmovrslz
  succ SparcInsFmovrslz = SparcInsFmovrdnz
  succ SparcInsFmovrdnz = SparcInsFmovrqnz
  succ SparcInsFmovrqnz = SparcInsFmovrsnz
  succ SparcInsFmovrsnz = SparcInsFmovrdz
  succ SparcInsFmovrdz = SparcInsFmovrqz
  succ SparcInsFmovrqz = SparcInsFmovrsz
  succ SparcInsFmovrsz = SparcInsFmovs
  succ SparcInsFmovs = SparcInsFmul8sux16
  succ SparcInsFmul8sux16 = SparcInsFmul8ulx16
  succ SparcInsFmul8ulx16 = SparcInsFmul8x16
  succ SparcInsFmul8x16 = SparcInsFmul8x16al
  succ SparcInsFmul8x16al = SparcInsFmul8x16au
  succ SparcInsFmul8x16au = SparcInsFmuld
  succ SparcInsFmuld = SparcInsFmuld8sux16
  succ SparcInsFmuld8sux16 = SparcInsFmuld8ulx16
  succ SparcInsFmuld8ulx16 = SparcInsFmulq
  succ SparcInsFmulq = SparcInsFmuls
  succ SparcInsFmuls = SparcInsFnaddd
  succ SparcInsFnaddd = SparcInsFnadds
  succ SparcInsFnadds = SparcInsFnand
  succ SparcInsFnand = SparcInsFnands
  succ SparcInsFnands = SparcInsFnegd
  succ SparcInsFnegd = SparcInsFnegq
  succ SparcInsFnegq = SparcInsFnegs
  succ SparcInsFnegs = SparcInsFnhaddd
  succ SparcInsFnhaddd = SparcInsFnhadds
  succ SparcInsFnhadds = SparcInsFnor
  succ SparcInsFnor = SparcInsFnors
  succ SparcInsFnors = SparcInsFnot1
  succ SparcInsFnot1 = SparcInsFnot1s
  succ SparcInsFnot1s = SparcInsFnot2
  succ SparcInsFnot2 = SparcInsFnot2s
  succ SparcInsFnot2s = SparcInsFone
  succ SparcInsFone = SparcInsFones
  succ SparcInsFones = SparcInsFor
  succ SparcInsFor = SparcInsFornot1
  succ SparcInsFornot1 = SparcInsFornot1s
  succ SparcInsFornot1s = SparcInsFornot2
  succ SparcInsFornot2 = SparcInsFornot2s
  succ SparcInsFornot2s = SparcInsFors
  succ SparcInsFors = SparcInsFpack16
  succ SparcInsFpack16 = SparcInsFpack32
  succ SparcInsFpack32 = SparcInsFpackfix
  succ SparcInsFpackfix = SparcInsFpadd16
  succ SparcInsFpadd16 = SparcInsFpadd16s
  succ SparcInsFpadd16s = SparcInsFpadd32
  succ SparcInsFpadd32 = SparcInsFpadd32s
  succ SparcInsFpadd32s = SparcInsFpadd64
  succ SparcInsFpadd64 = SparcInsFpmerge
  succ SparcInsFpmerge = SparcInsFpsub16
  succ SparcInsFpsub16 = SparcInsFpsub16s
  succ SparcInsFpsub16s = SparcInsFpsub32
  succ SparcInsFpsub32 = SparcInsFpsub32s
  succ SparcInsFpsub32s = SparcInsFqtod
  succ SparcInsFqtod = SparcInsFqtoi
  succ SparcInsFqtoi = SparcInsFqtos
  succ SparcInsFqtos = SparcInsFqtox
  succ SparcInsFqtox = SparcInsFslas16
  succ SparcInsFslas16 = SparcInsFslas32
  succ SparcInsFslas32 = SparcInsFsll16
  succ SparcInsFsll16 = SparcInsFsll32
  succ SparcInsFsll32 = SparcInsFsmuld
  succ SparcInsFsmuld = SparcInsFsqrtd
  succ SparcInsFsqrtd = SparcInsFsqrtq
  succ SparcInsFsqrtq = SparcInsFsqrts
  succ SparcInsFsqrts = SparcInsFsra16
  succ SparcInsFsra16 = SparcInsFsra32
  succ SparcInsFsra32 = SparcInsFsrc1
  succ SparcInsFsrc1 = SparcInsFsrc1s
  succ SparcInsFsrc1s = SparcInsFsrc2
  succ SparcInsFsrc2 = SparcInsFsrc2s
  succ SparcInsFsrc2s = SparcInsFsrl16
  succ SparcInsFsrl16 = SparcInsFsrl32
  succ SparcInsFsrl32 = SparcInsFstod
  succ SparcInsFstod = SparcInsFstoi
  succ SparcInsFstoi = SparcInsFstoq
  succ SparcInsFstoq = SparcInsFstox
  succ SparcInsFstox = SparcInsFsubd
  succ SparcInsFsubd = SparcInsFsubq
  succ SparcInsFsubq = SparcInsFsubs
  succ SparcInsFsubs = SparcInsFxnor
  succ SparcInsFxnor = SparcInsFxnors
  succ SparcInsFxnors = SparcInsFxor
  succ SparcInsFxor = SparcInsFxors
  succ SparcInsFxors = SparcInsFxtod
  succ SparcInsFxtod = SparcInsFxtoq
  succ SparcInsFxtoq = SparcInsFxtos
  succ SparcInsFxtos = SparcInsFzero
  succ SparcInsFzero = SparcInsFzeros
  succ SparcInsFzeros = SparcInsJmpl
  succ SparcInsJmpl = SparcInsLdd
  succ SparcInsLdd = SparcInsLd
  succ SparcInsLd = SparcInsLdq
  succ SparcInsLdq = SparcInsLdsb
  succ SparcInsLdsb = SparcInsLdsh
  succ SparcInsLdsh = SparcInsLdsw
  succ SparcInsLdsw = SparcInsLdub
  succ SparcInsLdub = SparcInsLduh
  succ SparcInsLduh = SparcInsLdx
  succ SparcInsLdx = SparcInsLzcnt
  succ SparcInsLzcnt = SparcInsMembar
  succ SparcInsMembar = SparcInsMovdtox
  succ SparcInsMovdtox = SparcInsMov
  succ SparcInsMov = SparcInsMovrgez
  succ SparcInsMovrgez = SparcInsMovrgz
  succ SparcInsMovrgz = SparcInsMovrlez
  succ SparcInsMovrlez = SparcInsMovrlz
  succ SparcInsMovrlz = SparcInsMovrnz
  succ SparcInsMovrnz = SparcInsMovrz
  succ SparcInsMovrz = SparcInsMovstosw
  succ SparcInsMovstosw = SparcInsMovstouw
  succ SparcInsMovstouw = SparcInsMulx
  succ SparcInsMulx = SparcInsNop
  succ SparcInsNop = SparcInsOrcc
  succ SparcInsOrcc = SparcInsOrncc
  succ SparcInsOrncc = SparcInsOrn
  succ SparcInsOrn = SparcInsOr
  succ SparcInsOr = SparcInsPdist
  succ SparcInsPdist = SparcInsPdistn
  succ SparcInsPdistn = SparcInsPopc
  succ SparcInsPopc = SparcInsRd
  succ SparcInsRd = SparcInsRestore
  succ SparcInsRestore = SparcInsRett
  succ SparcInsRett = SparcInsSave
  succ SparcInsSave = SparcInsSdivcc
  succ SparcInsSdivcc = SparcInsSdivx
  succ SparcInsSdivx = SparcInsSdiv
  succ SparcInsSdiv = SparcInsSethi
  succ SparcInsSethi = SparcInsShutdown
  succ SparcInsShutdown = SparcInsSiam
  succ SparcInsSiam = SparcInsSllx
  succ SparcInsSllx = SparcInsSll
  succ SparcInsSll = SparcInsSmulcc
  succ SparcInsSmulcc = SparcInsSmul
  succ SparcInsSmul = SparcInsSrax
  succ SparcInsSrax = SparcInsSra
  succ SparcInsSra = SparcInsSrlx
  succ SparcInsSrlx = SparcInsSrl
  succ SparcInsSrl = SparcInsStbar
  succ SparcInsStbar = SparcInsStb
  succ SparcInsStb = SparcInsStd
  succ SparcInsStd = SparcInsSt
  succ SparcInsSt = SparcInsSth
  succ SparcInsSth = SparcInsStq
  succ SparcInsStq = SparcInsStx
  succ SparcInsStx = SparcInsSubcc
  succ SparcInsSubcc = SparcInsSubx
  succ SparcInsSubx = SparcInsSubxcc
  succ SparcInsSubxcc = SparcInsSub
  succ SparcInsSub = SparcInsSwap
  succ SparcInsSwap = SparcInsTaddcctv
  succ SparcInsTaddcctv = SparcInsTaddcc
  succ SparcInsTaddcc = SparcInsT
  succ SparcInsT = SparcInsTsubcctv
  succ SparcInsTsubcctv = SparcInsTsubcc
  succ SparcInsTsubcc = SparcInsUdivcc
  succ SparcInsUdivcc = SparcInsUdivx
  succ SparcInsUdivx = SparcInsUdiv
  succ SparcInsUdiv = SparcInsUmulcc
  succ SparcInsUmulcc = SparcInsUmulxhi
  succ SparcInsUmulxhi = SparcInsUmul
  succ SparcInsUmul = SparcInsUnimp
  succ SparcInsUnimp = SparcInsFcmped
  succ SparcInsFcmped = SparcInsFcmpeq
  succ SparcInsFcmpeq = SparcInsFcmpes
  succ SparcInsFcmpes = SparcInsWr
  succ SparcInsWr = SparcInsXmulx
  succ SparcInsXmulx = SparcInsXmulxhi
  succ SparcInsXmulxhi = SparcInsXnorcc
  succ SparcInsXnorcc = SparcInsXnor
  succ SparcInsXnor = SparcInsXorcc
  succ SparcInsXorcc = SparcInsXor
  succ SparcInsXor = SparcInsRet
  succ SparcInsRet = SparcInsRetl
  succ SparcInsRetl = SparcInsEnding
  succ SparcInsEnding = error "SparcInsn.succ: SparcInsEnding has no successor"

  pred :: SparcInsn -> SparcInsn
pred SparcInsn
SparcInsAddcc = SparcInsn
SparcInsInvalid
  pred SparcInsn
SparcInsAddx = SparcInsn
SparcInsAddcc
  pred SparcInsn
SparcInsAddxcc = SparcInsn
SparcInsAddx
  pred SparcInsn
SparcInsAddxc = SparcInsn
SparcInsAddxcc
  pred SparcInsn
SparcInsAddxccc = SparcInsn
SparcInsAddxc
  pred SparcInsn
SparcInsAdd = SparcInsn
SparcInsAddxccc
  pred SparcInsn
SparcInsAlignaddr = SparcInsn
SparcInsAdd
  pred SparcInsn
SparcInsAlignaddrl = SparcInsn
SparcInsAlignaddr
  pred SparcInsn
SparcInsAndcc = SparcInsn
SparcInsAlignaddrl
  pred SparcInsn
SparcInsAndncc = SparcInsn
SparcInsAndcc
  pred SparcInsn
SparcInsAndn = SparcInsn
SparcInsAndncc
  pred SparcInsn
SparcInsAnd = SparcInsn
SparcInsAndn
  pred SparcInsn
SparcInsArray16 = SparcInsn
SparcInsAnd
  pred SparcInsn
SparcInsArray32 = SparcInsn
SparcInsArray16
  pred SparcInsn
SparcInsArray8 = SparcInsn
SparcInsArray32
  pred SparcInsn
SparcInsB = SparcInsn
SparcInsArray8
  pred SparcInsn
SparcInsJmp = SparcInsn
SparcInsB
  pred SparcInsn
SparcInsBmask = SparcInsn
SparcInsJmp
  pred SparcInsn
SparcInsFb = SparcInsn
SparcInsBmask
  pred SparcInsn
SparcInsBrgez = SparcInsn
SparcInsFb
  pred SparcInsn
SparcInsBrgz = SparcInsn
SparcInsBrgez
  pred SparcInsn
SparcInsBrlez = SparcInsn
SparcInsBrgz
  pred SparcInsn
SparcInsBrlz = SparcInsn
SparcInsBrlez
  pred SparcInsn
SparcInsBrnz = SparcInsn
SparcInsBrlz
  pred SparcInsn
SparcInsBrz = SparcInsn
SparcInsBrnz
  pred SparcInsn
SparcInsBshuffle = SparcInsn
SparcInsBrz
  pred SparcInsn
SparcInsCall = SparcInsn
SparcInsBshuffle
  pred SparcInsn
SparcInsCasx = SparcInsn
SparcInsCall
  pred SparcInsn
SparcInsCas = SparcInsn
SparcInsCasx
  pred SparcInsn
SparcInsCmask16 = SparcInsn
SparcInsCas
  pred SparcInsn
SparcInsCmask32 = SparcInsn
SparcInsCmask16
  pred SparcInsn
SparcInsCmask8 = SparcInsn
SparcInsCmask32
  pred SparcInsn
SparcInsCmp = SparcInsn
SparcInsCmask8
  pred SparcInsn
SparcInsEdge16 = SparcInsn
SparcInsCmp
  pred SparcInsn
SparcInsEdge16l = SparcInsn
SparcInsEdge16
  pred SparcInsn
SparcInsEdge16ln = SparcInsn
SparcInsEdge16l
  pred SparcInsn
SparcInsEdge16n = SparcInsn
SparcInsEdge16ln
  pred SparcInsn
SparcInsEdge32 = SparcInsn
SparcInsEdge16n
  pred SparcInsn
SparcInsEdge32l = SparcInsn
SparcInsEdge32
  pred SparcInsn
SparcInsEdge32ln = SparcInsn
SparcInsEdge32l
  pred SparcInsn
SparcInsEdge32n = SparcInsn
SparcInsEdge32ln
  pred SparcInsn
SparcInsEdge8 = SparcInsn
SparcInsEdge32n
  pred SparcInsn
SparcInsEdge8l = SparcInsn
SparcInsEdge8
  pred SparcInsn
SparcInsEdge8ln = SparcInsn
SparcInsEdge8l
  pred SparcInsn
SparcInsEdge8n = SparcInsn
SparcInsEdge8ln
  pred SparcInsn
SparcInsFabsd = SparcInsn
SparcInsEdge8n
  pred SparcInsn
SparcInsFabsq = SparcInsn
SparcInsFabsd
  pred SparcInsn
SparcInsFabss = SparcInsn
SparcInsFabsq
  pred SparcInsn
SparcInsFaddd = SparcInsn
SparcInsFabss
  pred SparcInsn
SparcInsFaddq = SparcInsn
SparcInsFaddd
  pred SparcInsn
SparcInsFadds = SparcInsn
SparcInsFaddq
  pred SparcInsn
SparcInsFaligndata = SparcInsn
SparcInsFadds
  pred SparcInsn
SparcInsFand = SparcInsn
SparcInsFaligndata
  pred SparcInsn
SparcInsFandnot1 = SparcInsn
SparcInsFand
  pred SparcInsn
SparcInsFandnot1s = SparcInsn
SparcInsFandnot1
  pred SparcInsn
SparcInsFandnot2 = SparcInsn
SparcInsFandnot1s
  pred SparcInsn
SparcInsFandnot2s = SparcInsn
SparcInsFandnot2
  pred SparcInsn
SparcInsFands = SparcInsn
SparcInsFandnot2s
  pred SparcInsn
SparcInsFchksm16 = SparcInsn
SparcInsFands
  pred SparcInsn
SparcInsFcmpd = SparcInsn
SparcInsFchksm16
  pred SparcInsn
SparcInsFcmpeq16 = SparcInsn
SparcInsFcmpd
  pred SparcInsn
SparcInsFcmpeq32 = SparcInsn
SparcInsFcmpeq16
  pred SparcInsn
SparcInsFcmpgt16 = SparcInsn
SparcInsFcmpeq32
  pred SparcInsn
SparcInsFcmpgt32 = SparcInsn
SparcInsFcmpgt16
  pred SparcInsn
SparcInsFcmple16 = SparcInsn
SparcInsFcmpgt32
  pred SparcInsn
SparcInsFcmple32 = SparcInsn
SparcInsFcmple16
  pred SparcInsn
SparcInsFcmpne16 = SparcInsn
SparcInsFcmple32
  pred SparcInsn
SparcInsFcmpne32 = SparcInsn
SparcInsFcmpne16
  pred SparcInsn
SparcInsFcmpq = SparcInsn
SparcInsFcmpne32
  pred SparcInsn
SparcInsFcmps = SparcInsn
SparcInsFcmpq
  pred SparcInsn
SparcInsFdivd = SparcInsn
SparcInsFcmps
  pred SparcInsn
SparcInsFdivq = SparcInsn
SparcInsFdivd
  pred SparcInsn
SparcInsFdivs = SparcInsn
SparcInsFdivq
  pred SparcInsn
SparcInsFdmulq = SparcInsn
SparcInsFdivs
  pred SparcInsn
SparcInsFdtoi = SparcInsn
SparcInsFdmulq
  pred SparcInsn
SparcInsFdtoq = SparcInsn
SparcInsFdtoi
  pred SparcInsn
SparcInsFdtos = SparcInsn
SparcInsFdtoq
  pred SparcInsn
SparcInsFdtox = SparcInsn
SparcInsFdtos
  pred SparcInsn
SparcInsFexpand = SparcInsn
SparcInsFdtox
  pred SparcInsn
SparcInsFhaddd = SparcInsn
SparcInsFexpand
  pred SparcInsn
SparcInsFhadds = SparcInsn
SparcInsFhaddd
  pred SparcInsn
SparcInsFhsubd = SparcInsn
SparcInsFhadds
  pred SparcInsn
SparcInsFhsubs = SparcInsn
SparcInsFhsubd
  pred SparcInsn
SparcInsFitod = SparcInsn
SparcInsFhsubs
  pred SparcInsn
SparcInsFitoq = SparcInsn
SparcInsFitod
  pred SparcInsn
SparcInsFitos = SparcInsn
SparcInsFitoq
  pred SparcInsn
SparcInsFlcmpd = SparcInsn
SparcInsFitos
  pred SparcInsn
SparcInsFlcmps = SparcInsn
SparcInsFlcmpd
  pred SparcInsn
SparcInsFlushw = SparcInsn
SparcInsFlcmps
  pred SparcInsn
SparcInsFmean16 = SparcInsn
SparcInsFlushw
  pred SparcInsn
SparcInsFmovd = SparcInsn
SparcInsFmean16
  pred SparcInsn
SparcInsFmovq = SparcInsn
SparcInsFmovd
  pred SparcInsn
SparcInsFmovrdgez = SparcInsn
SparcInsFmovq
  pred SparcInsn
SparcInsFmovrqgez = SparcInsn
SparcInsFmovrdgez
  pred SparcInsn
SparcInsFmovrsgez = SparcInsn
SparcInsFmovrqgez
  pred SparcInsn
SparcInsFmovrdgz = SparcInsn
SparcInsFmovrsgez
  pred SparcInsn
SparcInsFmovrqgz = SparcInsn
SparcInsFmovrdgz
  pred SparcInsn
SparcInsFmovrsgz = SparcInsn
SparcInsFmovrqgz
  pred SparcInsn
SparcInsFmovrdlez = SparcInsn
SparcInsFmovrsgz
  pred SparcInsn
SparcInsFmovrqlez = SparcInsn
SparcInsFmovrdlez
  pred SparcInsn
SparcInsFmovrslez = SparcInsn
SparcInsFmovrqlez
  pred SparcInsn
SparcInsFmovrdlz = SparcInsn
SparcInsFmovrslez
  pred SparcInsn
SparcInsFmovrqlz = SparcInsn
SparcInsFmovrdlz
  pred SparcInsn
SparcInsFmovrslz = SparcInsn
SparcInsFmovrqlz
  pred SparcInsn
SparcInsFmovrdnz = SparcInsn
SparcInsFmovrslz
  pred SparcInsn
SparcInsFmovrqnz = SparcInsn
SparcInsFmovrdnz
  pred SparcInsn
SparcInsFmovrsnz = SparcInsn
SparcInsFmovrqnz
  pred SparcInsn
SparcInsFmovrdz = SparcInsn
SparcInsFmovrsnz
  pred SparcInsn
SparcInsFmovrqz = SparcInsn
SparcInsFmovrdz
  pred SparcInsn
SparcInsFmovrsz = SparcInsn
SparcInsFmovrqz
  pred SparcInsn
SparcInsFmovs = SparcInsn
SparcInsFmovrsz
  pred SparcInsn
SparcInsFmul8sux16 = SparcInsn
SparcInsFmovs
  pred SparcInsn
SparcInsFmul8ulx16 = SparcInsn
SparcInsFmul8sux16
  pred SparcInsn
SparcInsFmul8x16 = SparcInsn
SparcInsFmul8ulx16
  pred SparcInsn
SparcInsFmul8x16al = SparcInsn
SparcInsFmul8x16
  pred SparcInsn
SparcInsFmul8x16au = SparcInsn
SparcInsFmul8x16al
  pred SparcInsn
SparcInsFmuld = SparcInsn
SparcInsFmul8x16au
  pred SparcInsn
SparcInsFmuld8sux16 = SparcInsn
SparcInsFmuld
  pred SparcInsn
SparcInsFmuld8ulx16 = SparcInsn
SparcInsFmuld8sux16
  pred SparcInsn
SparcInsFmulq = SparcInsn
SparcInsFmuld8ulx16
  pred SparcInsn
SparcInsFmuls = SparcInsn
SparcInsFmulq
  pred SparcInsn
SparcInsFnaddd = SparcInsn
SparcInsFmuls
  pred SparcInsn
SparcInsFnadds = SparcInsn
SparcInsFnaddd
  pred SparcInsn
SparcInsFnand = SparcInsn
SparcInsFnadds
  pred SparcInsn
SparcInsFnands = SparcInsn
SparcInsFnand
  pred SparcInsn
SparcInsFnegd = SparcInsn
SparcInsFnands
  pred SparcInsn
SparcInsFnegq = SparcInsn
SparcInsFnegd
  pred SparcInsn
SparcInsFnegs = SparcInsn
SparcInsFnegq
  pred SparcInsn
SparcInsFnhaddd = SparcInsn
SparcInsFnegs
  pred SparcInsn
SparcInsFnhadds = SparcInsn
SparcInsFnhaddd
  pred SparcInsn
SparcInsFnor = SparcInsn
SparcInsFnhadds
  pred SparcInsn
SparcInsFnors = SparcInsn
SparcInsFnor
  pred SparcInsn
SparcInsFnot1 = SparcInsn
SparcInsFnors
  pred SparcInsn
SparcInsFnot1s = SparcInsn
SparcInsFnot1
  pred SparcInsn
SparcInsFnot2 = SparcInsn
SparcInsFnot1s
  pred SparcInsn
SparcInsFnot2s = SparcInsn
SparcInsFnot2
  pred SparcInsn
SparcInsFone = SparcInsn
SparcInsFnot2s
  pred SparcInsn
SparcInsFones = SparcInsn
SparcInsFone
  pred SparcInsn
SparcInsFor = SparcInsn
SparcInsFones
  pred SparcInsn
SparcInsFornot1 = SparcInsn
SparcInsFor
  pred SparcInsn
SparcInsFornot1s = SparcInsn
SparcInsFornot1
  pred SparcInsn
SparcInsFornot2 = SparcInsn
SparcInsFornot1s
  pred SparcInsn
SparcInsFornot2s = SparcInsn
SparcInsFornot2
  pred SparcInsn
SparcInsFors = SparcInsn
SparcInsFornot2s
  pred SparcInsn
SparcInsFpack16 = SparcInsn
SparcInsFors
  pred SparcInsn
SparcInsFpack32 = SparcInsn
SparcInsFpack16
  pred SparcInsn
SparcInsFpackfix = SparcInsn
SparcInsFpack32
  pred SparcInsn
SparcInsFpadd16 = SparcInsn
SparcInsFpackfix
  pred SparcInsn
SparcInsFpadd16s = SparcInsn
SparcInsFpadd16
  pred SparcInsn
SparcInsFpadd32 = SparcInsn
SparcInsFpadd16s
  pred SparcInsn
SparcInsFpadd32s = SparcInsn
SparcInsFpadd32
  pred SparcInsn
SparcInsFpadd64 = SparcInsn
SparcInsFpadd32s
  pred SparcInsn
SparcInsFpmerge = SparcInsn
SparcInsFpadd64
  pred SparcInsn
SparcInsFpsub16 = SparcInsn
SparcInsFpmerge
  pred SparcInsn
SparcInsFpsub16s = SparcInsn
SparcInsFpsub16
  pred SparcInsn
SparcInsFpsub32 = SparcInsn
SparcInsFpsub16s
  pred SparcInsn
SparcInsFpsub32s = SparcInsn
SparcInsFpsub32
  pred SparcInsn
SparcInsFqtod = SparcInsn
SparcInsFpsub32s
  pred SparcInsn
SparcInsFqtoi = SparcInsn
SparcInsFqtod
  pred SparcInsn
SparcInsFqtos = SparcInsn
SparcInsFqtoi
  pred SparcInsn
SparcInsFqtox = SparcInsn
SparcInsFqtos
  pred SparcInsn
SparcInsFslas16 = SparcInsn
SparcInsFqtox
  pred SparcInsn
SparcInsFslas32 = SparcInsn
SparcInsFslas16
  pred SparcInsn
SparcInsFsll16 = SparcInsn
SparcInsFslas32
  pred SparcInsn
SparcInsFsll32 = SparcInsn
SparcInsFsll16
  pred SparcInsn
SparcInsFsmuld = SparcInsn
SparcInsFsll32
  pred SparcInsn
SparcInsFsqrtd = SparcInsn
SparcInsFsmuld
  pred SparcInsn
SparcInsFsqrtq = SparcInsn
SparcInsFsqrtd
  pred SparcInsn
SparcInsFsqrts = SparcInsn
SparcInsFsqrtq
  pred SparcInsn
SparcInsFsra16 = SparcInsn
SparcInsFsqrts
  pred SparcInsn
SparcInsFsra32 = SparcInsn
SparcInsFsra16
  pred SparcInsn
SparcInsFsrc1 = SparcInsn
SparcInsFsra32
  pred SparcInsn
SparcInsFsrc1s = SparcInsn
SparcInsFsrc1
  pred SparcInsn
SparcInsFsrc2 = SparcInsn
SparcInsFsrc1s
  pred SparcInsn
SparcInsFsrc2s = SparcInsn
SparcInsFsrc2
  pred SparcInsn
SparcInsFsrl16 = SparcInsn
SparcInsFsrc2s
  pred SparcInsn
SparcInsFsrl32 = SparcInsn
SparcInsFsrl16
  pred SparcInsn
SparcInsFstod = SparcInsn
SparcInsFsrl32
  pred SparcInsn
SparcInsFstoi = SparcInsn
SparcInsFstod
  pred SparcInsn
SparcInsFstoq = SparcInsn
SparcInsFstoi
  pred SparcInsn
SparcInsFstox = SparcInsn
SparcInsFstoq
  pred SparcInsn
SparcInsFsubd = SparcInsn
SparcInsFstox
  pred SparcInsn
SparcInsFsubq = SparcInsn
SparcInsFsubd
  pred SparcInsn
SparcInsFsubs = SparcInsn
SparcInsFsubq
  pred SparcInsn
SparcInsFxnor = SparcInsn
SparcInsFsubs
  pred SparcInsn
SparcInsFxnors = SparcInsn
SparcInsFxnor
  pred SparcInsn
SparcInsFxor = SparcInsn
SparcInsFxnors
  pred SparcInsn
SparcInsFxors = SparcInsn
SparcInsFxor
  pred SparcInsn
SparcInsFxtod = SparcInsn
SparcInsFxors
  pred SparcInsn
SparcInsFxtoq = SparcInsn
SparcInsFxtod
  pred SparcInsn
SparcInsFxtos = SparcInsn
SparcInsFxtoq
  pred SparcInsn
SparcInsFzero = SparcInsn
SparcInsFxtos
  pred SparcInsn
SparcInsFzeros = SparcInsn
SparcInsFzero
  pred SparcInsn
SparcInsJmpl = SparcInsn
SparcInsFzeros
  pred SparcInsn
SparcInsLdd = SparcInsn
SparcInsJmpl
  pred SparcInsn
SparcInsLd = SparcInsn
SparcInsLdd
  pred SparcInsn
SparcInsLdq = SparcInsn
SparcInsLd
  pred SparcInsn
SparcInsLdsb = SparcInsn
SparcInsLdq
  pred SparcInsn
SparcInsLdsh = SparcInsn
SparcInsLdsb
  pred SparcInsn
SparcInsLdsw = SparcInsn
SparcInsLdsh
  pred SparcInsn
SparcInsLdub = SparcInsn
SparcInsLdsw
  pred SparcInsn
SparcInsLduh = SparcInsn
SparcInsLdub
  pred SparcInsn
SparcInsLdx = SparcInsn
SparcInsLduh
  pred SparcInsn
SparcInsLzcnt = SparcInsn
SparcInsLdx
  pred SparcInsn
SparcInsMembar = SparcInsn
SparcInsLzcnt
  pred SparcInsn
SparcInsMovdtox = SparcInsn
SparcInsMembar
  pred SparcInsn
SparcInsMov = SparcInsn
SparcInsMovdtox
  pred SparcInsn
SparcInsMovrgez = SparcInsn
SparcInsMov
  pred SparcInsn
SparcInsMovrgz = SparcInsn
SparcInsMovrgez
  pred SparcInsn
SparcInsMovrlez = SparcInsn
SparcInsMovrgz
  pred SparcInsn
SparcInsMovrlz = SparcInsn
SparcInsMovrlez
  pred SparcInsn
SparcInsMovrnz = SparcInsn
SparcInsMovrlz
  pred SparcInsn
SparcInsMovrz = SparcInsn
SparcInsMovrnz
  pred SparcInsn
SparcInsMovstosw = SparcInsn
SparcInsMovrz
  pred SparcInsn
SparcInsMovstouw = SparcInsn
SparcInsMovstosw
  pred SparcInsn
SparcInsMulx = SparcInsn
SparcInsMovstouw
  pred SparcInsn
SparcInsNop = SparcInsn
SparcInsMulx
  pred SparcInsn
SparcInsOrcc = SparcInsn
SparcInsNop
  pred SparcInsn
SparcInsOrncc = SparcInsn
SparcInsOrcc
  pred SparcInsn
SparcInsOrn = SparcInsn
SparcInsOrncc
  pred SparcInsn
SparcInsOr = SparcInsn
SparcInsOrn
  pred SparcInsn
SparcInsPdist = SparcInsn
SparcInsOr
  pred SparcInsn
SparcInsPdistn = SparcInsn
SparcInsPdist
  pred SparcInsn
SparcInsPopc = SparcInsn
SparcInsPdistn
  pred SparcInsn
SparcInsRd = SparcInsn
SparcInsPopc
  pred SparcInsn
SparcInsRestore = SparcInsn
SparcInsRd
  pred SparcInsn
SparcInsRett = SparcInsn
SparcInsRestore
  pred SparcInsn
SparcInsSave = SparcInsn
SparcInsRett
  pred SparcInsn
SparcInsSdivcc = SparcInsn
SparcInsSave
  pred SparcInsn
SparcInsSdivx = SparcInsn
SparcInsSdivcc
  pred SparcInsn
SparcInsSdiv = SparcInsn
SparcInsSdivx
  pred SparcInsn
SparcInsSethi = SparcInsn
SparcInsSdiv
  pred SparcInsn
SparcInsShutdown = SparcInsn
SparcInsSethi
  pred SparcInsn
SparcInsSiam = SparcInsn
SparcInsShutdown
  pred SparcInsn
SparcInsSllx = SparcInsn
SparcInsSiam
  pred SparcInsn
SparcInsSll = SparcInsn
SparcInsSllx
  pred SparcInsn
SparcInsSmulcc = SparcInsn
SparcInsSll
  pred SparcInsn
SparcInsSmul = SparcInsn
SparcInsSmulcc
  pred SparcInsn
SparcInsSrax = SparcInsn
SparcInsSmul
  pred SparcInsn
SparcInsSra = SparcInsn
SparcInsSrax
  pred SparcInsn
SparcInsSrlx = SparcInsn
SparcInsSra
  pred SparcInsn
SparcInsSrl = SparcInsn
SparcInsSrlx
  pred SparcInsn
SparcInsStbar = SparcInsn
SparcInsSrl
  pred SparcInsn
SparcInsStb = SparcInsn
SparcInsStbar
  pred SparcInsn
SparcInsStd = SparcInsn
SparcInsStb
  pred SparcInsn
SparcInsSt = SparcInsn
SparcInsStd
  pred SparcInsn
SparcInsSth = SparcInsn
SparcInsSt
  pred SparcInsn
SparcInsStq = SparcInsn
SparcInsSth
  pred SparcInsn
SparcInsStx = SparcInsn
SparcInsStq
  pred SparcInsn
SparcInsSubcc = SparcInsn
SparcInsStx
  pred SparcInsn
SparcInsSubx = SparcInsn
SparcInsSubcc
  pred SparcInsn
SparcInsSubxcc = SparcInsn
SparcInsSubx
  pred SparcInsn
SparcInsSub = SparcInsn
SparcInsSubxcc
  pred SparcInsn
SparcInsSwap = SparcInsn
SparcInsSub
  pred SparcInsn
SparcInsTaddcctv = SparcInsn
SparcInsSwap
  pred SparcInsn
SparcInsTaddcc = SparcInsn
SparcInsTaddcctv
  pred SparcInsn
SparcInsT = SparcInsn
SparcInsTaddcc
  pred SparcInsn
SparcInsTsubcctv = SparcInsn
SparcInsT
  pred SparcInsn
SparcInsTsubcc = SparcInsn
SparcInsTsubcctv
  pred SparcInsn
SparcInsUdivcc = SparcInsn
SparcInsTsubcc
  pred SparcInsn
SparcInsUdivx = SparcInsn
SparcInsUdivcc
  pred SparcInsn
SparcInsUdiv = SparcInsn
SparcInsUdivx
  pred SparcInsn
SparcInsUmulcc = SparcInsn
SparcInsUdiv
  pred SparcInsn
SparcInsUmulxhi = SparcInsn
SparcInsUmulcc
  pred SparcInsn
SparcInsUmul = SparcInsn
SparcInsUmulxhi
  pred SparcInsn
SparcInsUnimp = SparcInsn
SparcInsUmul
  pred SparcInsn
SparcInsFcmped = SparcInsn
SparcInsUnimp
  pred SparcInsn
SparcInsFcmpeq = SparcInsn
SparcInsFcmped
  pred SparcInsn
SparcInsFcmpes = SparcInsn
SparcInsFcmpeq
  pred SparcInsn
SparcInsWr = SparcInsn
SparcInsFcmpes
  pred SparcInsn
SparcInsXmulx = SparcInsn
SparcInsWr
  pred SparcInsn
SparcInsXmulxhi = SparcInsn
SparcInsXmulx
  pred SparcInsn
SparcInsXnorcc = SparcInsn
SparcInsXmulxhi
  pred SparcInsn
SparcInsXnor = SparcInsn
SparcInsXnorcc
  pred SparcInsn
SparcInsXorcc = SparcInsn
SparcInsXnor
  pred SparcInsn
SparcInsXor = SparcInsn
SparcInsXorcc
  pred SparcInsn
SparcInsRet = SparcInsn
SparcInsXor
  pred SparcInsn
SparcInsRetl = SparcInsn
SparcInsRet
  pred SparcInsn
SparcInsEnding = SparcInsn
SparcInsRetl
  pred SparcInsn
SparcInsInvalid = String -> SparcInsn
forall a. HasCallStack => String -> a
error String
"SparcInsn.pred: SparcInsInvalid has no predecessor"

  enumFromTo :: SparcInsn -> SparcInsn -> [SparcInsn]
enumFromTo SparcInsn
from SparcInsn
to = SparcInsn -> [SparcInsn]
forall t. Enum t => t -> [t]
go SparcInsn
from
    where
      end :: Int
end = SparcInsn -> Int
forall a. Enum a => a -> Int
fromEnum SparcInsn
to
      go :: t -> [t]
go t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
                 Ordering
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
                 Ordering
EQ -> [t
v]
                 Ordering
GT -> []

  enumFrom :: SparcInsn -> [SparcInsn]
enumFrom SparcInsn
from = SparcInsn -> SparcInsn -> [SparcInsn]
forall a. Enum a => a -> a -> [a]
enumFromTo SparcInsn
from SparcInsn
SparcInsEnding

  fromEnum :: SparcInsn -> Int
fromEnum SparcInsn
SparcInsInvalid = Int
0
  fromEnum SparcInsn
SparcInsAddcc = Int
1
  fromEnum SparcInsn
SparcInsAddx = Int
2
  fromEnum SparcInsn
SparcInsAddxcc = Int
3
  fromEnum SparcInsn
SparcInsAddxc = Int
4
  fromEnum SparcInsn
SparcInsAddxccc = Int
5
  fromEnum SparcInsn
SparcInsAdd = Int
6
  fromEnum SparcInsn
SparcInsAlignaddr = Int
7
  fromEnum SparcInsn
SparcInsAlignaddrl = Int
8
  fromEnum SparcInsn
SparcInsAndcc = Int
9
  fromEnum SparcInsn
SparcInsAndncc = Int
10
  fromEnum SparcInsn
SparcInsAndn = Int
11
  fromEnum SparcInsn
SparcInsAnd = Int
12
  fromEnum SparcInsn
SparcInsArray16 = Int
13
  fromEnum SparcInsn
SparcInsArray32 = Int
14
  fromEnum SparcInsn
SparcInsArray8 = Int
15
  fromEnum SparcInsn
SparcInsB = Int
16
  fromEnum SparcInsn
SparcInsJmp = Int
17
  fromEnum SparcInsn
SparcInsBmask = Int
18
  fromEnum SparcInsn
SparcInsFb = Int
19
  fromEnum SparcInsn
SparcInsBrgez = Int
20
  fromEnum SparcInsn
SparcInsBrgz = Int
21
  fromEnum SparcInsn
SparcInsBrlez = Int
22
  fromEnum SparcInsn
SparcInsBrlz = Int
23
  fromEnum SparcInsn
SparcInsBrnz = Int
24
  fromEnum SparcInsn
SparcInsBrz = Int
25
  fromEnum SparcInsn
SparcInsBshuffle = Int
26
  fromEnum SparcInsn
SparcInsCall = Int
27
  fromEnum SparcInsn
SparcInsCasx = Int
28
  fromEnum SparcInsn
SparcInsCas = Int
29
  fromEnum SparcInsn
SparcInsCmask16 = Int
30
  fromEnum SparcInsn
SparcInsCmask32 = Int
31
  fromEnum SparcInsn
SparcInsCmask8 = Int
32
  fromEnum SparcInsn
SparcInsCmp = Int
33
  fromEnum SparcInsn
SparcInsEdge16 = Int
34
  fromEnum SparcInsn
SparcInsEdge16l = Int
35
  fromEnum SparcInsn
SparcInsEdge16ln = Int
36
  fromEnum SparcInsn
SparcInsEdge16n = Int
37
  fromEnum SparcInsn
SparcInsEdge32 = Int
38
  fromEnum SparcInsn
SparcInsEdge32l = Int
39
  fromEnum SparcInsn
SparcInsEdge32ln = Int
40
  fromEnum SparcInsn
SparcInsEdge32n = Int
41
  fromEnum SparcInsn
SparcInsEdge8 = Int
42
  fromEnum SparcInsn
SparcInsEdge8l = Int
43
  fromEnum SparcInsn
SparcInsEdge8ln = Int
44
  fromEnum SparcInsn
SparcInsEdge8n = Int
45
  fromEnum SparcInsn
SparcInsFabsd = Int
46
  fromEnum SparcInsn
SparcInsFabsq = Int
47
  fromEnum SparcInsn
SparcInsFabss = Int
48
  fromEnum SparcInsn
SparcInsFaddd = Int
49
  fromEnum SparcInsn
SparcInsFaddq = Int
50
  fromEnum SparcInsn
SparcInsFadds = Int
51
  fromEnum SparcInsn
SparcInsFaligndata = Int
52
  fromEnum SparcInsn
SparcInsFand = Int
53
  fromEnum SparcInsn
SparcInsFandnot1 = Int
54
  fromEnum SparcInsn
SparcInsFandnot1s = Int
55
  fromEnum SparcInsn
SparcInsFandnot2 = Int
56
  fromEnum SparcInsn
SparcInsFandnot2s = Int
57
  fromEnum SparcInsn
SparcInsFands = Int
58
  fromEnum SparcInsn
SparcInsFchksm16 = Int
59
  fromEnum SparcInsn
SparcInsFcmpd = Int
60
  fromEnum SparcInsn
SparcInsFcmpeq16 = Int
61
  fromEnum SparcInsn
SparcInsFcmpeq32 = Int
62
  fromEnum SparcInsn
SparcInsFcmpgt16 = Int
63
  fromEnum SparcInsn
SparcInsFcmpgt32 = Int
64
  fromEnum SparcInsn
SparcInsFcmple16 = Int
65
  fromEnum SparcInsn
SparcInsFcmple32 = Int
66
  fromEnum SparcInsn
SparcInsFcmpne16 = Int
67
  fromEnum SparcInsn
SparcInsFcmpne32 = Int
68
  fromEnum SparcInsn
SparcInsFcmpq = Int
69
  fromEnum SparcInsn
SparcInsFcmps = Int
70
  fromEnum SparcInsn
SparcInsFdivd = Int
71
  fromEnum SparcInsn
SparcInsFdivq = Int
72
  fromEnum SparcInsn
SparcInsFdivs = Int
73
  fromEnum SparcInsn
SparcInsFdmulq = Int
74
  fromEnum SparcInsn
SparcInsFdtoi = Int
75
  fromEnum SparcInsn
SparcInsFdtoq = Int
76
  fromEnum SparcInsn
SparcInsFdtos = Int
77
  fromEnum SparcInsn
SparcInsFdtox = Int
78
  fromEnum SparcInsn
SparcInsFexpand = Int
79
  fromEnum SparcInsn
SparcInsFhaddd = Int
80
  fromEnum SparcInsn
SparcInsFhadds = Int
81
  fromEnum SparcInsn
SparcInsFhsubd = Int
82
  fromEnum SparcInsn
SparcInsFhsubs = Int
83
  fromEnum SparcInsn
SparcInsFitod = Int
84
  fromEnum SparcInsn
SparcInsFitoq = Int
85
  fromEnum SparcInsn
SparcInsFitos = Int
86
  fromEnum SparcInsn
SparcInsFlcmpd = Int
87
  fromEnum SparcInsn
SparcInsFlcmps = Int
88
  fromEnum SparcInsn
SparcInsFlushw = Int
89
  fromEnum SparcInsn
SparcInsFmean16 = Int
90
  fromEnum SparcInsn
SparcInsFmovd = Int
91
  fromEnum SparcInsn
SparcInsFmovq = Int
92
  fromEnum SparcInsn
SparcInsFmovrdgez = Int
93
  fromEnum SparcInsn
SparcInsFmovrqgez = Int
94
  fromEnum SparcInsn
SparcInsFmovrsgez = Int
95
  fromEnum SparcInsn
SparcInsFmovrdgz = Int
96
  fromEnum SparcInsn
SparcInsFmovrqgz = Int
97
  fromEnum SparcInsn
SparcInsFmovrsgz = Int
98
  fromEnum SparcInsn
SparcInsFmovrdlez = Int
99
  fromEnum SparcInsn
SparcInsFmovrqlez = Int
100
  fromEnum SparcInsn
SparcInsFmovrslez = Int
101
  fromEnum SparcInsn
SparcInsFmovrdlz = Int
102
  fromEnum SparcInsn
SparcInsFmovrqlz = Int
103
  fromEnum SparcInsn
SparcInsFmovrslz = Int
104
  fromEnum SparcInsn
SparcInsFmovrdnz = Int
105
  fromEnum SparcInsn
SparcInsFmovrqnz = Int
106
  fromEnum SparcInsn
SparcInsFmovrsnz = Int
107
  fromEnum SparcInsn
SparcInsFmovrdz = Int
108
  fromEnum SparcInsn
SparcInsFmovrqz = Int
109
  fromEnum SparcInsn
SparcInsFmovrsz = Int
110
  fromEnum SparcInsn
SparcInsFmovs = Int
111
  fromEnum SparcInsn
SparcInsFmul8sux16 = Int
112
  fromEnum SparcInsn
SparcInsFmul8ulx16 = Int
113
  fromEnum SparcInsn
SparcInsFmul8x16 = Int
114
  fromEnum SparcInsn
SparcInsFmul8x16al = Int
115
  fromEnum SparcInsn
SparcInsFmul8x16au = Int
116
  fromEnum SparcInsn
SparcInsFmuld = Int
117
  fromEnum SparcInsn
SparcInsFmuld8sux16 = Int
118
  fromEnum SparcInsn
SparcInsFmuld8ulx16 = Int
119
  fromEnum SparcInsn
SparcInsFmulq = Int
120
  fromEnum SparcInsn
SparcInsFmuls = Int
121
  fromEnum SparcInsn
SparcInsFnaddd = Int
122
  fromEnum SparcInsn
SparcInsFnadds = Int
123
  fromEnum SparcInsn
SparcInsFnand = Int
124
  fromEnum SparcInsn
SparcInsFnands = Int
125
  fromEnum SparcInsn
SparcInsFnegd = Int
126
  fromEnum SparcInsn
SparcInsFnegq = Int
127
  fromEnum SparcInsn
SparcInsFnegs = Int
128
  fromEnum SparcInsn
SparcInsFnhaddd = Int
129
  fromEnum SparcInsn
SparcInsFnhadds = Int
130
  fromEnum SparcInsn
SparcInsFnor = Int
131
  fromEnum SparcInsn
SparcInsFnors = Int
132
  fromEnum SparcInsn
SparcInsFnot1 = Int
133
  fromEnum SparcInsn
SparcInsFnot1s = Int
134
  fromEnum SparcInsn
SparcInsFnot2 = Int
135
  fromEnum SparcInsn
SparcInsFnot2s = Int
136
  fromEnum SparcInsn
SparcInsFone = Int
137
  fromEnum SparcInsn
SparcInsFones = Int
138
  fromEnum SparcInsn
SparcInsFor = Int
139
  fromEnum SparcInsn
SparcInsFornot1 = Int
140
  fromEnum SparcInsn
SparcInsFornot1s = Int
141
  fromEnum SparcInsn
SparcInsFornot2 = Int
142
  fromEnum SparcInsn
SparcInsFornot2s = Int
143
  fromEnum SparcInsn
SparcInsFors = Int
144
  fromEnum SparcInsn
SparcInsFpack16 = Int
145
  fromEnum SparcInsn
SparcInsFpack32 = Int
146
  fromEnum SparcInsn
SparcInsFpackfix = Int
147
  fromEnum SparcInsn
SparcInsFpadd16 = Int
148
  fromEnum SparcInsn
SparcInsFpadd16s = Int
149
  fromEnum SparcInsn
SparcInsFpadd32 = Int
150
  fromEnum SparcInsn
SparcInsFpadd32s = Int
151
  fromEnum SparcInsn
SparcInsFpadd64 = Int
152
  fromEnum SparcInsn
SparcInsFpmerge = Int
153
  fromEnum SparcInsn
SparcInsFpsub16 = Int
154
  fromEnum SparcInsn
SparcInsFpsub16s = Int
155
  fromEnum SparcInsn
SparcInsFpsub32 = Int
156
  fromEnum SparcInsn
SparcInsFpsub32s = Int
157
  fromEnum SparcInsn
SparcInsFqtod = Int
158
  fromEnum SparcInsn
SparcInsFqtoi = Int
159
  fromEnum SparcInsn
SparcInsFqtos = Int
160
  fromEnum SparcInsn
SparcInsFqtox = Int
161
  fromEnum SparcInsn
SparcInsFslas16 = Int
162
  fromEnum SparcInsn
SparcInsFslas32 = Int
163
  fromEnum SparcInsn
SparcInsFsll16 = Int
164
  fromEnum SparcInsn
SparcInsFsll32 = Int
165
  fromEnum SparcInsn
SparcInsFsmuld = Int
166
  fromEnum SparcInsn
SparcInsFsqrtd = Int
167
  fromEnum SparcInsn
SparcInsFsqrtq = Int
168
  fromEnum SparcInsn
SparcInsFsqrts = Int
169
  fromEnum SparcInsn
SparcInsFsra16 = Int
170
  fromEnum SparcInsn
SparcInsFsra32 = Int
171
  fromEnum SparcInsn
SparcInsFsrc1 = Int
172
  fromEnum SparcInsn
SparcInsFsrc1s = Int
173
  fromEnum SparcInsn
SparcInsFsrc2 = Int
174
  fromEnum SparcInsn
SparcInsFsrc2s = Int
175
  fromEnum SparcInsn
SparcInsFsrl16 = Int
176
  fromEnum SparcInsn
SparcInsFsrl32 = Int
177
  fromEnum SparcInsn
SparcInsFstod = Int
178
  fromEnum SparcInsn
SparcInsFstoi = Int
179
  fromEnum SparcInsn
SparcInsFstoq = Int
180
  fromEnum SparcInsn
SparcInsFstox = Int
181
  fromEnum SparcInsn
SparcInsFsubd = Int
182
  fromEnum SparcInsn
SparcInsFsubq = Int
183
  fromEnum SparcInsn
SparcInsFsubs = Int
184
  fromEnum SparcInsn
SparcInsFxnor = Int
185
  fromEnum SparcInsn
SparcInsFxnors = Int
186
  fromEnum SparcInsn
SparcInsFxor = Int
187
  fromEnum SparcInsn
SparcInsFxors = Int
188
  fromEnum SparcInsn
SparcInsFxtod = Int
189
  fromEnum SparcInsn
SparcInsFxtoq = Int
190
  fromEnum SparcInsn
SparcInsFxtos = Int
191
  fromEnum SparcInsn
SparcInsFzero = Int
192
  fromEnum SparcInsn
SparcInsFzeros = Int
193
  fromEnum SparcInsn
SparcInsJmpl = Int
194
  fromEnum SparcInsn
SparcInsLdd = Int
195
  fromEnum SparcInsn
SparcInsLd = Int
196
  fromEnum SparcInsn
SparcInsLdq = Int
197
  fromEnum SparcInsn
SparcInsLdsb = Int
198
  fromEnum SparcInsn
SparcInsLdsh = Int
199
  fromEnum SparcInsn
SparcInsLdsw = Int
200
  fromEnum SparcInsn
SparcInsLdub = Int
201
  fromEnum SparcInsn
SparcInsLduh = Int
202
  fromEnum SparcInsn
SparcInsLdx = Int
203
  fromEnum SparcInsn
SparcInsLzcnt = Int
204
  fromEnum SparcInsn
SparcInsMembar = Int
205
  fromEnum SparcInsn
SparcInsMovdtox = Int
206
  fromEnum SparcInsn
SparcInsMov = Int
207
  fromEnum SparcInsn
SparcInsMovrgez = Int
208
  fromEnum SparcInsn
SparcInsMovrgz = Int
209
  fromEnum SparcInsn
SparcInsMovrlez = Int
210
  fromEnum SparcInsn
SparcInsMovrlz = Int
211
  fromEnum SparcInsn
SparcInsMovrnz = Int
212
  fromEnum SparcInsn
SparcInsMovrz = Int
213
  fromEnum SparcInsn
SparcInsMovstosw = Int
214
  fromEnum SparcInsn
SparcInsMovstouw = Int
215
  fromEnum SparcInsn
SparcInsMulx = Int
216
  fromEnum SparcInsn
SparcInsNop = Int
217
  fromEnum SparcInsn
SparcInsOrcc = Int
218
  fromEnum SparcInsn
SparcInsOrncc = Int
219
  fromEnum SparcInsn
SparcInsOrn = Int
220
  fromEnum SparcInsn
SparcInsOr = Int
221
  fromEnum SparcInsn
SparcInsPdist = Int
222
  fromEnum SparcInsn
SparcInsPdistn = Int
223
  fromEnum SparcInsn
SparcInsPopc = Int
224
  fromEnum SparcInsn
SparcInsRd = Int
225
  fromEnum SparcInsn
SparcInsRestore = Int
226
  fromEnum SparcInsn
SparcInsRett = Int
227
  fromEnum SparcInsn
SparcInsSave = Int
228
  fromEnum SparcInsn
SparcInsSdivcc = Int
229
  fromEnum SparcInsn
SparcInsSdivx = Int
230
  fromEnum SparcInsn
SparcInsSdiv = Int
231
  fromEnum SparcInsn
SparcInsSethi = Int
232
  fromEnum SparcInsn
SparcInsShutdown = Int
233
  fromEnum SparcInsn
SparcInsSiam = Int
234
  fromEnum SparcInsn
SparcInsSllx = Int
235
  fromEnum SparcInsn
SparcInsSll = Int
236
  fromEnum SparcInsn
SparcInsSmulcc = Int
237
  fromEnum SparcInsn
SparcInsSmul = Int
238
  fromEnum SparcInsn
SparcInsSrax = Int
239
  fromEnum SparcInsn
SparcInsSra = Int
240
  fromEnum SparcInsn
SparcInsSrlx = Int
241
  fromEnum SparcInsn
SparcInsSrl = Int
242
  fromEnum SparcInsn
SparcInsStbar = Int
243
  fromEnum SparcInsn
SparcInsStb = Int
244
  fromEnum SparcInsn
SparcInsStd = Int
245
  fromEnum SparcInsn
SparcInsSt = Int
246
  fromEnum SparcInsn
SparcInsSth = Int
247
  fromEnum SparcInsn
SparcInsStq = Int
248
  fromEnum SparcInsn
SparcInsStx = Int
249
  fromEnum SparcInsn
SparcInsSubcc = Int
250
  fromEnum SparcInsn
SparcInsSubx = Int
251
  fromEnum SparcInsn
SparcInsSubxcc = Int
252
  fromEnum SparcInsn
SparcInsSub = Int
253
  fromEnum SparcInsn
SparcInsSwap = Int
254
  fromEnum SparcInsn
SparcInsTaddcctv = Int
255
  fromEnum SparcInsn
SparcInsTaddcc = Int
256
  fromEnum SparcInsn
SparcInsT = Int
257
  fromEnum SparcInsn
SparcInsTsubcctv = Int
258
  fromEnum SparcInsn
SparcInsTsubcc = Int
259
  fromEnum SparcInsn
SparcInsUdivcc = Int
260
  fromEnum SparcInsn
SparcInsUdivx = Int
261
  fromEnum SparcInsn
SparcInsUdiv = Int
262
  fromEnum SparcInsn
SparcInsUmulcc = Int
263
  fromEnum SparcInsn
SparcInsUmulxhi = Int
264
  fromEnum SparcInsn
SparcInsUmul = Int
265
  fromEnum SparcInsn
SparcInsUnimp = Int
266
  fromEnum SparcInsn
SparcInsFcmped = Int
267
  fromEnum SparcInsn
SparcInsFcmpeq = Int
268
  fromEnum SparcInsn
SparcInsFcmpes = Int
269
  fromEnum SparcInsn
SparcInsWr = Int
270
  fromEnum SparcInsn
SparcInsXmulx = Int
271
  fromEnum SparcInsn
SparcInsXmulxhi = Int
272
  fromEnum SparcInsn
SparcInsXnorcc = Int
273
  fromEnum SparcInsn
SparcInsXnor = Int
274
  fromEnum SparcInsn
SparcInsXorcc = Int
275
  fromEnum SparcInsn
SparcInsXor = Int
276
  fromEnum SparcInsn
SparcInsRet = Int
277
  fromEnum SparcInsn
SparcInsRetl = Int
278
  fromEnum SparcInsn
SparcInsEnding = Int
279

  toEnum :: Int -> SparcInsn
toEnum Int
0 = SparcInsn
SparcInsInvalid
  toEnum Int
1 = SparcInsn
SparcInsAddcc
  toEnum Int
2 = SparcInsn
SparcInsAddx
  toEnum Int
3 = SparcInsn
SparcInsAddxcc
  toEnum Int
4 = SparcInsn
SparcInsAddxc
  toEnum Int
5 = SparcInsn
SparcInsAddxccc
  toEnum Int
6 = SparcInsn
SparcInsAdd
  toEnum Int
7 = SparcInsn
SparcInsAlignaddr
  toEnum Int
8 = SparcInsn
SparcInsAlignaddrl
  toEnum Int
9 = SparcInsn
SparcInsAndcc
  toEnum Int
10 = SparcInsn
SparcInsAndncc
  toEnum Int
11 = SparcInsn
SparcInsAndn
  toEnum Int
12 = SparcInsn
SparcInsAnd
  toEnum Int
13 = SparcInsn
SparcInsArray16
  toEnum Int
14 = SparcInsn
SparcInsArray32
  toEnum Int
15 = SparcInsn
SparcInsArray8
  toEnum Int
16 = SparcInsn
SparcInsB
  toEnum Int
17 = SparcInsn
SparcInsJmp
  toEnum Int
18 = SparcInsn
SparcInsBmask
  toEnum Int
19 = SparcInsn
SparcInsFb
  toEnum Int
20 = SparcInsn
SparcInsBrgez
  toEnum Int
21 = SparcInsn
SparcInsBrgz
  toEnum Int
22 = SparcInsn
SparcInsBrlez
  toEnum Int
23 = SparcInsn
SparcInsBrlz
  toEnum Int
24 = SparcInsn
SparcInsBrnz
  toEnum Int
25 = SparcInsn
SparcInsBrz
  toEnum Int
26 = SparcInsn
SparcInsBshuffle
  toEnum Int
27 = SparcInsn
SparcInsCall
  toEnum Int
28 = SparcInsn
SparcInsCasx
  toEnum Int
29 = SparcInsn
SparcInsCas
  toEnum Int
30 = SparcInsn
SparcInsCmask16
  toEnum Int
31 = SparcInsn
SparcInsCmask32
  toEnum Int
32 = SparcInsn
SparcInsCmask8
  toEnum Int
33 = SparcInsn
SparcInsCmp
  toEnum Int
34 = SparcInsn
SparcInsEdge16
  toEnum Int
35 = SparcInsn
SparcInsEdge16l
  toEnum Int
36 = SparcInsn
SparcInsEdge16ln
  toEnum Int
37 = SparcInsn
SparcInsEdge16n
  toEnum Int
38 = SparcInsn
SparcInsEdge32
  toEnum Int
39 = SparcInsn
SparcInsEdge32l
  toEnum Int
40 = SparcInsn
SparcInsEdge32ln
  toEnum Int
41 = SparcInsn
SparcInsEdge32n
  toEnum Int
42 = SparcInsn
SparcInsEdge8
  toEnum Int
43 = SparcInsn
SparcInsEdge8l
  toEnum Int
44 = SparcInsn
SparcInsEdge8ln
  toEnum Int
45 = SparcInsn
SparcInsEdge8n
  toEnum Int
46 = SparcInsn
SparcInsFabsd
  toEnum Int
47 = SparcInsn
SparcInsFabsq
  toEnum Int
48 = SparcInsn
SparcInsFabss
  toEnum Int
49 = SparcInsn
SparcInsFaddd
  toEnum Int
50 = SparcInsn
SparcInsFaddq
  toEnum Int
51 = SparcInsn
SparcInsFadds
  toEnum Int
52 = SparcInsn
SparcInsFaligndata
  toEnum Int
53 = SparcInsn
SparcInsFand
  toEnum Int
54 = SparcInsn
SparcInsFandnot1
  toEnum Int
55 = SparcInsn
SparcInsFandnot1s
  toEnum Int
56 = SparcInsn
SparcInsFandnot2
  toEnum Int
57 = SparcInsn
SparcInsFandnot2s
  toEnum Int
58 = SparcInsn
SparcInsFands
  toEnum Int
59 = SparcInsn
SparcInsFchksm16
  toEnum Int
60 = SparcInsn
SparcInsFcmpd
  toEnum Int
61 = SparcInsn
SparcInsFcmpeq16
  toEnum Int
62 = SparcInsn
SparcInsFcmpeq32
  toEnum Int
63 = SparcInsn
SparcInsFcmpgt16
  toEnum Int
64 = SparcInsn
SparcInsFcmpgt32
  toEnum Int
65 = SparcInsn
SparcInsFcmple16
  toEnum Int
66 = SparcInsn
SparcInsFcmple32
  toEnum Int
67 = SparcInsn
SparcInsFcmpne16
  toEnum Int
68 = SparcInsn
SparcInsFcmpne32
  toEnum Int
69 = SparcInsn
SparcInsFcmpq
  toEnum Int
70 = SparcInsn
SparcInsFcmps
  toEnum Int
71 = SparcInsn
SparcInsFdivd
  toEnum Int
72 = SparcInsn
SparcInsFdivq
  toEnum Int
73 = SparcInsn
SparcInsFdivs
  toEnum Int
74 = SparcInsn
SparcInsFdmulq
  toEnum Int
75 = SparcInsn
SparcInsFdtoi
  toEnum Int
76 = SparcInsn
SparcInsFdtoq
  toEnum Int
77 = SparcInsn
SparcInsFdtos
  toEnum Int
78 = SparcInsn
SparcInsFdtox
  toEnum Int
79 = SparcInsn
SparcInsFexpand
  toEnum Int
80 = SparcInsn
SparcInsFhaddd
  toEnum Int
81 = SparcInsn
SparcInsFhadds
  toEnum Int
82 = SparcInsn
SparcInsFhsubd
  toEnum Int
83 = SparcInsn
SparcInsFhsubs
  toEnum Int
84 = SparcInsn
SparcInsFitod
  toEnum Int
85 = SparcInsn
SparcInsFitoq
  toEnum Int
86 = SparcInsn
SparcInsFitos
  toEnum Int
87 = SparcInsn
SparcInsFlcmpd
  toEnum Int
88 = SparcInsn
SparcInsFlcmps
  toEnum Int
89 = SparcInsn
SparcInsFlushw
  toEnum Int
90 = SparcInsn
SparcInsFmean16
  toEnum Int
91 = SparcInsn
SparcInsFmovd
  toEnum Int
92 = SparcInsn
SparcInsFmovq
  toEnum Int
93 = SparcInsn
SparcInsFmovrdgez
  toEnum Int
94 = SparcInsn
SparcInsFmovrqgez
  toEnum Int
95 = SparcInsn
SparcInsFmovrsgez
  toEnum Int
96 = SparcInsn
SparcInsFmovrdgz
  toEnum Int
97 = SparcInsn
SparcInsFmovrqgz
  toEnum Int
98 = SparcInsn
SparcInsFmovrsgz
  toEnum Int
99 = SparcInsn
SparcInsFmovrdlez
  toEnum Int
100 = SparcInsn
SparcInsFmovrqlez
  toEnum Int
101 = SparcInsn
SparcInsFmovrslez
  toEnum Int
102 = SparcInsn
SparcInsFmovrdlz
  toEnum Int
103 = SparcInsn
SparcInsFmovrqlz
  toEnum Int
104 = SparcInsn
SparcInsFmovrslz
  toEnum Int
105 = SparcInsn
SparcInsFmovrdnz
  toEnum Int
106 = SparcInsn
SparcInsFmovrqnz
  toEnum Int
107 = SparcInsn
SparcInsFmovrsnz
  toEnum Int
108 = SparcInsn
SparcInsFmovrdz
  toEnum Int
109 = SparcInsn
SparcInsFmovrqz
  toEnum Int
110 = SparcInsn
SparcInsFmovrsz
  toEnum Int
111 = SparcInsn
SparcInsFmovs
  toEnum Int
112 = SparcInsn
SparcInsFmul8sux16
  toEnum Int
113 = SparcInsn
SparcInsFmul8ulx16
  toEnum Int
114 = SparcInsn
SparcInsFmul8x16
  toEnum Int
115 = SparcInsn
SparcInsFmul8x16al
  toEnum Int
116 = SparcInsn
SparcInsFmul8x16au
  toEnum Int
117 = SparcInsn
SparcInsFmuld
  toEnum Int
118 = SparcInsn
SparcInsFmuld8sux16
  toEnum Int
119 = SparcInsn
SparcInsFmuld8ulx16
  toEnum Int
120 = SparcInsn
SparcInsFmulq
  toEnum Int
121 = SparcInsn
SparcInsFmuls
  toEnum Int
122 = SparcInsn
SparcInsFnaddd
  toEnum Int
123 = SparcInsn
SparcInsFnadds
  toEnum Int
124 = SparcInsn
SparcInsFnand
  toEnum Int
125 = SparcInsn
SparcInsFnands
  toEnum Int
126 = SparcInsn
SparcInsFnegd
  toEnum Int
127 = SparcInsn
SparcInsFnegq
  toEnum Int
128 = SparcInsn
SparcInsFnegs
  toEnum Int
129 = SparcInsn
SparcInsFnhaddd
  toEnum Int
130 = SparcInsn
SparcInsFnhadds
  toEnum Int
131 = SparcInsn
SparcInsFnor
  toEnum Int
132 = SparcInsn
SparcInsFnors
  toEnum Int
133 = SparcInsn
SparcInsFnot1
  toEnum Int
134 = SparcInsn
SparcInsFnot1s
  toEnum Int
135 = SparcInsn
SparcInsFnot2
  toEnum Int
136 = SparcInsn
SparcInsFnot2s
  toEnum Int
137 = SparcInsn
SparcInsFone
  toEnum Int
138 = SparcInsn
SparcInsFones
  toEnum Int
139 = SparcInsn
SparcInsFor
  toEnum Int
140 = SparcInsn
SparcInsFornot1
  toEnum Int
141 = SparcInsn
SparcInsFornot1s
  toEnum Int
142 = SparcInsn
SparcInsFornot2
  toEnum Int
143 = SparcInsn
SparcInsFornot2s
  toEnum Int
144 = SparcInsn
SparcInsFors
  toEnum Int
145 = SparcInsn
SparcInsFpack16
  toEnum Int
146 = SparcInsn
SparcInsFpack32
  toEnum Int
147 = SparcInsn
SparcInsFpackfix
  toEnum Int
148 = SparcInsn
SparcInsFpadd16
  toEnum Int
149 = SparcInsn
SparcInsFpadd16s
  toEnum Int
150 = SparcInsn
SparcInsFpadd32
  toEnum Int
151 = SparcInsn
SparcInsFpadd32s
  toEnum Int
152 = SparcInsn
SparcInsFpadd64
  toEnum Int
153 = SparcInsn
SparcInsFpmerge
  toEnum Int
154 = SparcInsn
SparcInsFpsub16
  toEnum Int
155 = SparcInsn
SparcInsFpsub16s
  toEnum Int
156 = SparcInsn
SparcInsFpsub32
  toEnum Int
157 = SparcInsn
SparcInsFpsub32s
  toEnum Int
158 = SparcInsn
SparcInsFqtod
  toEnum Int
159 = SparcInsn
SparcInsFqtoi
  toEnum Int
160 = SparcInsn
SparcInsFqtos
  toEnum Int
161 = SparcInsn
SparcInsFqtox
  toEnum Int
162 = SparcInsn
SparcInsFslas16
  toEnum Int
163 = SparcInsn
SparcInsFslas32
  toEnum Int
164 = SparcInsn
SparcInsFsll16
  toEnum Int
165 = SparcInsn
SparcInsFsll32
  toEnum Int
166 = SparcInsn
SparcInsFsmuld
  toEnum Int
167 = SparcInsn
SparcInsFsqrtd
  toEnum Int
168 = SparcInsn
SparcInsFsqrtq
  toEnum Int
169 = SparcInsn
SparcInsFsqrts
  toEnum Int
170 = SparcInsn
SparcInsFsra16
  toEnum Int
171 = SparcInsn
SparcInsFsra32
  toEnum Int
172 = SparcInsn
SparcInsFsrc1
  toEnum Int
173 = SparcInsn
SparcInsFsrc1s
  toEnum Int
174 = SparcInsn
SparcInsFsrc2
  toEnum Int
175 = SparcInsn
SparcInsFsrc2s
  toEnum Int
176 = SparcInsn
SparcInsFsrl16
  toEnum Int
177 = SparcInsn
SparcInsFsrl32
  toEnum Int
178 = SparcInsn
SparcInsFstod
  toEnum Int
179 = SparcInsn
SparcInsFstoi
  toEnum Int
180 = SparcInsn
SparcInsFstoq
  toEnum Int
181 = SparcInsn
SparcInsFstox
  toEnum Int
182 = SparcInsn
SparcInsFsubd
  toEnum Int
183 = SparcInsn
SparcInsFsubq
  toEnum Int
184 = SparcInsn
SparcInsFsubs
  toEnum Int
185 = SparcInsn
SparcInsFxnor
  toEnum Int
186 = SparcInsn
SparcInsFxnors
  toEnum Int
187 = SparcInsn
SparcInsFxor
  toEnum Int
188 = SparcInsn
SparcInsFxors
  toEnum Int
189 = SparcInsn
SparcInsFxtod
  toEnum Int
190 = SparcInsn
SparcInsFxtoq
  toEnum Int
191 = SparcInsn
SparcInsFxtos
  toEnum Int
192 = SparcInsn
SparcInsFzero
  toEnum Int
193 = SparcInsn
SparcInsFzeros
  toEnum Int
194 = SparcInsn
SparcInsJmpl
  toEnum Int
195 = SparcInsn
SparcInsLdd
  toEnum Int
196 = SparcInsn
SparcInsLd
  toEnum Int
197 = SparcInsn
SparcInsLdq
  toEnum Int
198 = SparcInsn
SparcInsLdsb
  toEnum Int
199 = SparcInsn
SparcInsLdsh
  toEnum Int
200 = SparcInsn
SparcInsLdsw
  toEnum Int
201 = SparcInsn
SparcInsLdub
  toEnum Int
202 = SparcInsn
SparcInsLduh
  toEnum Int
203 = SparcInsn
SparcInsLdx
  toEnum Int
204 = SparcInsn
SparcInsLzcnt
  toEnum Int
205 = SparcInsn
SparcInsMembar
  toEnum Int
206 = SparcInsn
SparcInsMovdtox
  toEnum Int
207 = SparcInsn
SparcInsMov
  toEnum Int
208 = SparcInsn
SparcInsMovrgez
  toEnum Int
209 = SparcInsn
SparcInsMovrgz
  toEnum Int
210 = SparcInsn
SparcInsMovrlez
  toEnum Int
211 = SparcInsn
SparcInsMovrlz
  toEnum Int
212 = SparcInsn
SparcInsMovrnz
  toEnum Int
213 = SparcInsn
SparcInsMovrz
  toEnum Int
214 = SparcInsn
SparcInsMovstosw
  toEnum Int
215 = SparcInsn
SparcInsMovstouw
  toEnum Int
216 = SparcInsn
SparcInsMulx
  toEnum Int
217 = SparcInsn
SparcInsNop
  toEnum Int
218 = SparcInsn
SparcInsOrcc
  toEnum Int
219 = SparcInsn
SparcInsOrncc
  toEnum Int
220 = SparcInsn
SparcInsOrn
  toEnum Int
221 = SparcInsn
SparcInsOr
  toEnum Int
222 = SparcInsn
SparcInsPdist
  toEnum Int
223 = SparcInsn
SparcInsPdistn
  toEnum Int
224 = SparcInsn
SparcInsPopc
  toEnum Int
225 = SparcInsn
SparcInsRd
  toEnum Int
226 = SparcInsn
SparcInsRestore
  toEnum Int
227 = SparcInsn
SparcInsRett
  toEnum Int
228 = SparcInsn
SparcInsSave
  toEnum Int
229 = SparcInsn
SparcInsSdivcc
  toEnum Int
230 = SparcInsn
SparcInsSdivx
  toEnum Int
231 = SparcInsn
SparcInsSdiv
  toEnum Int
232 = SparcInsn
SparcInsSethi
  toEnum Int
233 = SparcInsn
SparcInsShutdown
  toEnum Int
234 = SparcInsn
SparcInsSiam
  toEnum Int
235 = SparcInsn
SparcInsSllx
  toEnum Int
236 = SparcInsn
SparcInsSll
  toEnum Int
237 = SparcInsn
SparcInsSmulcc
  toEnum Int
238 = SparcInsn
SparcInsSmul
  toEnum Int
239 = SparcInsn
SparcInsSrax
  toEnum Int
240 = SparcInsn
SparcInsSra
  toEnum Int
241 = SparcInsn
SparcInsSrlx
  toEnum Int
242 = SparcInsn
SparcInsSrl
  toEnum Int
243 = SparcInsn
SparcInsStbar
  toEnum Int
244 = SparcInsn
SparcInsStb
  toEnum Int
245 = SparcInsn
SparcInsStd
  toEnum Int
246 = SparcInsn
SparcInsSt
  toEnum Int
247 = SparcInsn
SparcInsSth
  toEnum Int
248 = SparcInsn
SparcInsStq
  toEnum Int
249 = SparcInsn
SparcInsStx
  toEnum Int
250 = SparcInsn
SparcInsSubcc
  toEnum Int
251 = SparcInsn
SparcInsSubx
  toEnum Int
252 = SparcInsn
SparcInsSubxcc
  toEnum Int
253 = SparcInsn
SparcInsSub
  toEnum Int
254 = SparcInsn
SparcInsSwap
  toEnum Int
255 = SparcInsn
SparcInsTaddcctv
  toEnum Int
256 = SparcInsn
SparcInsTaddcc
  toEnum Int
257 = SparcInsn
SparcInsT
  toEnum Int
258 = SparcInsn
SparcInsTsubcctv
  toEnum Int
259 = SparcInsn
SparcInsTsubcc
  toEnum Int
260 = SparcInsn
SparcInsUdivcc
  toEnum Int
261 = SparcInsn
SparcInsUdivx
  toEnum Int
262 = SparcInsn
SparcInsUdiv
  toEnum Int
263 = SparcInsn
SparcInsUmulcc
  toEnum Int
264 = SparcInsn
SparcInsUmulxhi
  toEnum Int
265 = SparcInsn
SparcInsUmul
  toEnum Int
266 = SparcInsn
SparcInsUnimp
  toEnum Int
267 = SparcInsn
SparcInsFcmped
  toEnum Int
268 = SparcInsn
SparcInsFcmpeq
  toEnum Int
269 = SparcInsn
SparcInsFcmpes
  toEnum Int
270 = SparcInsn
SparcInsWr
  toEnum Int
271 = SparcInsn
SparcInsXmulx
  toEnum Int
272 = SparcInsn
SparcInsXmulxhi
  toEnum Int
273 = SparcInsn
SparcInsXnorcc
  toEnum Int
274 = SparcInsn
SparcInsXnor
  toEnum Int
275 = SparcInsn
SparcInsXorcc
  toEnum Int
276 = SparcInsn
SparcInsXor
  toEnum Int
277 = SparcInsn
SparcInsRet
  toEnum Int
278 = SparcInsn
SparcInsRetl
  toEnum Int
279 = SparcInsn
SparcInsEnding
  toEnum Int
unmatched = String -> SparcInsn
forall a. HasCallStack => String -> a
error (String
"SparcInsn.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 128 "src/Hapstone/Internal/Sparc.chs" #-}

-- | SPARC instruction groups
data SparcInsnGroup = SparcGrpInvalid
                    | SparcGrpJump
                    | SparcGrpHardquad
                    | SparcGrpV9
                    | SparcGrpVis
                    | SparcGrpVis2
                    | SparcGrpVis3
                    | SparcGrp32bit
                    | SparcGrp64bit
                    | SparcGrpEnding
  deriving (Show,Eq,Bounded)
instance Enum SparcInsnGroup where
  succ SparcGrpInvalid = SparcGrpJump
  succ SparcGrpJump = SparcGrpHardquad
  succ SparcGrpHardquad = SparcGrpV9
  succ SparcGrpV9 = SparcGrpVis
  succ SparcGrpVis = SparcGrpVis2
  succ SparcGrpVis2 = SparcGrpVis3
  succ SparcGrpVis3 = SparcGrp32bit
  succ SparcGrp32bit = SparcGrp64bit
  succ SparcGrp64bit = SparcGrpEnding
  succ SparcGrpEnding = error "SparcInsnGroup.succ: SparcGrpEnding has no successor"

  pred SparcGrpJump = SparcGrpInvalid
  pred SparcGrpHardquad = SparcGrpJump
  pred SparcGrpV9 = SparcGrpHardquad
  pred SparcGrpVis = SparcGrpV9
  pred SparcGrpVis2 = SparcGrpVis
  pred SparcGrpVis3 = SparcGrpVis2
  pred SparcGrp32bit = SparcGrpVis3
  pred SparcGrp64bit = SparcGrp32bit
  pred SparcGrpEnding = SparcGrp64bit
  pred SparcGrpInvalid = error "SparcInsnGroup.pred: SparcGrpInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from SparcGrpEnding

  fromEnum SparcGrpInvalid = 0
  fromEnum SparcGrpJump = 1
  fromEnum SparcGrpHardquad = 128
  fromEnum SparcGrpV9 = 129
  fromEnum SparcGrpVis = 130
  fromEnum SparcGrpVis2 = 131
  fromEnum SparcGrpVis3 = 132
  fromEnum SparcGrp32bit = 133
  fromEnum SparcGrp64bit = 134
  fromEnum SparcGrpEnding = 135

  toEnum 0 = SparcGrpInvalid
  toEnum 1 = SparcGrpJump
  toEnum 128 = SparcGrpHardquad
  toEnum 129 = SparcGrpV9
  toEnum 130 = SparcGrpVis
  toEnum 131 = SparcGrpVis2
  toEnum 132 = SparcGrpVis3
  toEnum 133 = SparcGrp32bit
  toEnum 134 = SparcGrp64bit
  toEnum 135 = SparcGrpEnding
  toEnum unmatched = error ("SparcInsnGroup.toEnum: Cannot match " ++ show unmatched)

{-# LINE 131 "src/Hapstone/Internal/Sparc.chs" #-}