-- 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/Arm64.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-|
Module      : Hapstone.Internal.Arm64
Description : ARM64 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 ARM64 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.Arm64 where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Storable as C2HSImp






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


import Control.Monad (join)

import Foreign
import Foreign.C.Types

-- | ARM64 shift type
data Arm64Shifter = Arm64SftInvalid
                  | Arm64SftLsl
                  | Arm64SftMsl
                  | Arm64SftLsr
                  | Arm64SftAsr
                  | Arm64SftRor
  deriving (Int -> Arm64Shifter -> ShowS
[Arm64Shifter] -> ShowS
Arm64Shifter -> String
(Int -> Arm64Shifter -> ShowS)
-> (Arm64Shifter -> String)
-> ([Arm64Shifter] -> ShowS)
-> Show Arm64Shifter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Arm64Shifter] -> ShowS
$cshowList :: [Arm64Shifter] -> ShowS
show :: Arm64Shifter -> String
$cshow :: Arm64Shifter -> String
showsPrec :: Int -> Arm64Shifter -> ShowS
$cshowsPrec :: Int -> Arm64Shifter -> ShowS
Show,Arm64Shifter -> Arm64Shifter -> Bool
(Arm64Shifter -> Arm64Shifter -> Bool)
-> (Arm64Shifter -> Arm64Shifter -> Bool) -> Eq Arm64Shifter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Arm64Shifter -> Arm64Shifter -> Bool
$c/= :: Arm64Shifter -> Arm64Shifter -> Bool
== :: Arm64Shifter -> Arm64Shifter -> Bool
$c== :: Arm64Shifter -> Arm64Shifter -> Bool
Eq,Arm64Shifter
Arm64Shifter -> Arm64Shifter -> Bounded Arm64Shifter
forall a. a -> a -> Bounded a
maxBound :: Arm64Shifter
$cmaxBound :: Arm64Shifter
minBound :: Arm64Shifter
$cminBound :: Arm64Shifter
Bounded)
instance Enum Arm64Shifter where
  succ :: Arm64Shifter -> Arm64Shifter
succ Arm64Shifter
Arm64SftInvalid = Arm64Shifter
Arm64SftLsl
  succ Arm64Shifter
Arm64SftLsl = Arm64Shifter
Arm64SftMsl
  succ Arm64Shifter
Arm64SftMsl = Arm64Shifter
Arm64SftLsr
  succ Arm64Shifter
Arm64SftLsr = Arm64Shifter
Arm64SftAsr
  succ Arm64Shifter
Arm64SftAsr = Arm64Shifter
Arm64SftRor
  succ Arm64Shifter
Arm64SftRor = String -> Arm64Shifter
forall a. HasCallStack => String -> a
error String
"Arm64Shifter.succ: Arm64SftRor has no successor"

  pred Arm64SftLsl = Arm64SftInvalid
  pred Arm64SftMsl = Arm64SftLsl
  pred Arm64SftLsr = Arm64SftMsl
  pred Arm64SftAsr = Arm64SftLsr
  pred Arm64SftRor = Arm64SftAsr
  pred Arm64SftInvalid = error "Arm64Shifter.pred: Arm64SftInvalid has no predecessor"

  enumFromTo :: Arm64Shifter -> Arm64Shifter -> [Arm64Shifter]
enumFromTo Arm64Shifter
from Arm64Shifter
to = Arm64Shifter -> [Arm64Shifter]
forall t. Enum t => t -> [t]
go Arm64Shifter
from
    where
      end :: Int
end = Arm64Shifter -> Int
forall a. Enum a => a -> Int
fromEnum Arm64Shifter
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 :: Arm64Shifter -> [Arm64Shifter]
enumFrom Arm64Shifter
from = Arm64Shifter -> Arm64Shifter -> [Arm64Shifter]
forall a. Enum a => a -> a -> [a]
enumFromTo Arm64Shifter
from Arm64Shifter
Arm64SftRor

  fromEnum :: Arm64Shifter -> Int
fromEnum Arm64Shifter
Arm64SftInvalid = Int
0
  fromEnum Arm64Shifter
Arm64SftLsl = Int
1
  fromEnum Arm64Shifter
Arm64SftMsl = Int
2
  fromEnum Arm64Shifter
Arm64SftLsr = Int
3
  fromEnum Arm64Shifter
Arm64SftAsr = Int
4
  fromEnum Arm64Shifter
Arm64SftRor = Int
5

  toEnum :: Int -> Arm64Shifter
toEnum Int
0 = Arm64Shifter
Arm64SftInvalid
  toEnum Int
1 = Arm64Shifter
Arm64SftLsl
  toEnum Int
2 = Arm64Shifter
Arm64SftMsl
  toEnum Int
3 = Arm64Shifter
Arm64SftLsr
  toEnum Int
4 = Arm64Shifter
Arm64SftAsr
  toEnum Int
5 = Arm64Shifter
Arm64SftRor
  toEnum Int
unmatched = String -> Arm64Shifter
forall a. HasCallStack => String -> a
error (String
"Arm64Shifter.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 34 "src/Hapstone/Internal/Arm64.chs" #-}

-- | ARM64 extender type
data Arm64Extender = Arm64ExtInvalid
                   | Arm64ExtUxtb
                   | Arm64ExtUxth
                   | Arm64ExtUxtw
                   | Arm64ExtUxtx
                   | Arm64ExtSxtb
                   | Arm64ExtSxth
                   | Arm64ExtSxtw
                   | Arm64ExtSxtx
  deriving (Show,Eq,Bounded)
instance Enum Arm64Extender where
  succ Arm64ExtInvalid = Arm64ExtUxtb
  succ Arm64ExtUxtb = Arm64ExtUxth
  succ Arm64ExtUxth = Arm64ExtUxtw
  succ Arm64ExtUxtw = Arm64ExtUxtx
  succ Arm64ExtUxtx = Arm64ExtSxtb
  succ Arm64ExtSxtb = Arm64ExtSxth
  succ Arm64ExtSxth = Arm64ExtSxtw
  succ Arm64ExtSxtw = Arm64ExtSxtx
  succ Arm64ExtSxtx = error "Arm64Extender.succ: Arm64ExtSxtx has no successor"

  pred Arm64ExtUxtb = Arm64ExtInvalid
  pred Arm64ExtUxth = Arm64ExtUxtb
  pred Arm64ExtUxtw = Arm64ExtUxth
  pred Arm64ExtUxtx = Arm64ExtUxtw
  pred Arm64ExtSxtb = Arm64ExtUxtx
  pred Arm64ExtSxth = Arm64ExtSxtb
  pred Arm64ExtSxtw = Arm64ExtSxth
  pred Arm64ExtSxtx = Arm64ExtSxtw
  pred Arm64ExtInvalid = error "Arm64Extender.pred: Arm64ExtInvalid 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 Arm64ExtSxtx

  fromEnum Arm64ExtInvalid = 0
  fromEnum Arm64ExtUxtb = 1
  fromEnum Arm64ExtUxth = 2
  fromEnum Arm64ExtUxtw = 3
  fromEnum Arm64ExtUxtx = 4
  fromEnum Arm64ExtSxtb = 5
  fromEnum Arm64ExtSxth = 6
  fromEnum Arm64ExtSxtw = 7
  fromEnum Arm64ExtSxtx = 8

  toEnum 0 = Arm64ExtInvalid
  toEnum 1 = Arm64ExtUxtb
  toEnum 2 = Arm64ExtUxth
  toEnum 3 = Arm64ExtUxtw
  toEnum 4 = Arm64ExtUxtx
  toEnum 5 = Arm64ExtSxtb
  toEnum 6 = Arm64ExtSxth
  toEnum 7 = Arm64ExtSxtw
  toEnum 8 = Arm64ExtSxtx
  toEnum unmatched = error ("Arm64Extender.toEnum: Cannot match " ++ show unmatched)

{-# LINE 37 "src/Hapstone/Internal/Arm64.chs" #-}

-- | ARM64 condition code
data Arm64ConditionCode = Arm64CcInvalid
                        | Arm64CcEq
                        | Arm64CcNe
                        | Arm64CcHs
                        | Arm64CcLo
                        | Arm64CcMi
                        | Arm64CcPl
                        | Arm64CcVs
                        | Arm64CcVc
                        | Arm64CcHi
                        | Arm64CcLs
                        | Arm64CcGe
                        | Arm64CcLt
                        | Arm64CcGt
                        | Arm64CcLe
                        | Arm64CcAl
                        | Arm64CcNv
  deriving (Show,Eq,Bounded)
instance Enum Arm64ConditionCode where
  succ Arm64CcInvalid = Arm64CcEq
  succ Arm64CcEq = Arm64CcNe
  succ Arm64CcNe = Arm64CcHs
  succ Arm64CcHs = Arm64CcLo
  succ Arm64CcLo = Arm64CcMi
  succ Arm64CcMi = Arm64CcPl
  succ Arm64CcPl = Arm64CcVs
  succ Arm64CcVs = Arm64CcVc
  succ Arm64CcVc = Arm64CcHi
  succ Arm64CcHi = Arm64CcLs
  succ Arm64CcLs = Arm64CcGe
  succ Arm64CcGe = Arm64CcLt
  succ Arm64CcLt = Arm64CcGt
  succ Arm64CcGt = Arm64CcLe
  succ Arm64CcLe = Arm64CcAl
  succ Arm64CcAl = Arm64CcNv
  succ Arm64CcNv = error "Arm64ConditionCode.succ: Arm64CcNv has no successor"

  pred Arm64CcEq = Arm64CcInvalid
  pred Arm64CcNe = Arm64CcEq
  pred Arm64CcHs = Arm64CcNe
  pred Arm64CcLo = Arm64CcHs
  pred Arm64CcMi = Arm64CcLo
  pred Arm64CcPl = Arm64CcMi
  pred Arm64CcVs = Arm64CcPl
  pred Arm64CcVc = Arm64CcVs
  pred Arm64CcHi = Arm64CcVc
  pred Arm64CcLs = Arm64CcHi
  pred Arm64CcGe = Arm64CcLs
  pred Arm64CcLt = Arm64CcGe
  pred Arm64CcGt = Arm64CcLt
  pred Arm64CcLe = Arm64CcGt
  pred Arm64CcAl = Arm64CcLe
  pred Arm64CcNv = Arm64CcAl
  pred Arm64CcInvalid = error "Arm64ConditionCode.pred: Arm64CcInvalid 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 Arm64CcNv

  fromEnum Arm64CcInvalid = 0
  fromEnum Arm64CcEq = 1
  fromEnum Arm64CcNe = 2
  fromEnum Arm64CcHs = 3
  fromEnum Arm64CcLo = 4
  fromEnum Arm64CcMi = 5
  fromEnum Arm64CcPl = 6
  fromEnum Arm64CcVs = 7
  fromEnum Arm64CcVc = 8
  fromEnum Arm64CcHi = 9
  fromEnum Arm64CcLs = 10
  fromEnum Arm64CcGe = 11
  fromEnum Arm64CcLt = 12
  fromEnum Arm64CcGt = 13
  fromEnum Arm64CcLe = 14
  fromEnum Arm64CcAl = 15
  fromEnum Arm64CcNv = 16

  toEnum 0 = Arm64CcInvalid
  toEnum 1 = Arm64CcEq
  toEnum 2 = Arm64CcNe
  toEnum 3 = Arm64CcHs
  toEnum 4 = Arm64CcLo
  toEnum 5 = Arm64CcMi
  toEnum 6 = Arm64CcPl
  toEnum 7 = Arm64CcVs
  toEnum 8 = Arm64CcVc
  toEnum 9 = Arm64CcHi
  toEnum 10 = Arm64CcLs
  toEnum 11 = Arm64CcGe
  toEnum 12 = Arm64CcLt
  toEnum 13 = Arm64CcGt
  toEnum 14 = Arm64CcLe
  toEnum 15 = Arm64CcAl
  toEnum 16 = Arm64CcNv
  toEnum unmatched = error ("Arm64ConditionCode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 40 "src/Hapstone/Internal/Arm64.chs" #-}


-- | system registers
data Arm64Sysreg = Arm64SysregInvalid
                 | Arm64SysregMdrarEl1
                 | Arm64SysregOslsrEl1
                 | Arm64SysregDbgauthstatusEl1
                 | Arm64SysregTrcidr8
                 | Arm64SysregTrcidr9
                 | Arm64SysregTrcidr10
                 | Arm64SysregTrcstatr
                 | Arm64SysregTrcidr11
                 | Arm64SysregTrcidr12
                 | Arm64SysregTrcidr13
                 | Arm64SysregTrcidr0
                 | Arm64SysregTrcidr1
                 | Arm64SysregTrcidr2
                 | Arm64SysregTrcidr3
                 | Arm64SysregTrcidr4
                 | Arm64SysregTrcidr5
                 | Arm64SysregTrcidr6
                 | Arm64SysregTrcidr7
                 | Arm64SysregTrcoslsr
                 | Arm64SysregTrcpdsr
                 | Arm64SysregTrcdevid
                 | Arm64SysregTrcdevtype
                 | Arm64SysregTrcpidr4
                 | Arm64SysregTrcpidr5
                 | Arm64SysregTrcpidr6
                 | Arm64SysregTrcpidr7
                 | Arm64SysregTrcpidr0
                 | Arm64SysregTrcpidr1
                 | Arm64SysregTrcdevaff0
                 | Arm64SysregTrcpidr2
                 | Arm64SysregTrcdevaff1
                 | Arm64SysregTrcpidr3
                 | Arm64SysregTrccidr0
                 | Arm64SysregTrclsr
                 | Arm64SysregTrccidr1
                 | Arm64SysregTrcauthstatus
                 | Arm64SysregTrccidr2
                 | Arm64SysregTrcdevarch
                 | Arm64SysregTrccidr3
                 | Arm64SysregMdccsrEl0
                 | Arm64SysregDbgdtrrxEl0
                 | Arm64SysregMidrEl1
                 | Arm64SysregMpidrEl1
                 | Arm64SysregRevidrEl1
                 | Arm64SysregIdPfr0El1
                 | Arm64SysregIdPfr1El1
                 | Arm64SysregIdDfr0El1
                 | Arm64SysregIdAfr0El1
                 | Arm64SysregIdMmfr0El1
                 | Arm64SysregIdMmfr1El1
                 | Arm64SysregIdMmfr2El1
                 | Arm64SysregIdMmfr3El1
                 | Arm64SysregIdIsar0El1
                 | Arm64SysregIdIsar1El1
                 | Arm64SysregIdIsar2El1
                 | Arm64SysregIdIsar3El1
                 | Arm64SysregIdIsar4El1
                 | Arm64SysregIdIsar5El1
                 | Arm64SysregMvfr0El1
                 | Arm64SysregMvfr1El1
                 | Arm64SysregMvfr2El1
                 | Arm64SysregIdA64pfr0El1
                 | Arm64SysregIdA64pfr1El1
                 | Arm64SysregIdA64dfr0El1
                 | Arm64SysregIdA64dfr1El1
                 | Arm64SysregIdA64afr0El1
                 | Arm64SysregIdA64afr1El1
                 | Arm64SysregIdA64isar0El1
                 | Arm64SysregIdA64isar1El1
                 | Arm64SysregIdA64mmfr0El1
                 | Arm64SysregIdA64mmfr1El1
                 | Arm64SysregRvbarEl1
                 | Arm64SysregIsrEl1
                 | Arm64SysregIccIar0El1
                 | Arm64SysregIccHppir0El1
                 | Arm64SysregIccRprEl1
                 | Arm64SysregIccIar1El1
                 | Arm64SysregIccHppir1El1
                 | Arm64SysregCcsidrEl1
                 | Arm64SysregClidrEl1
                 | Arm64SysregAidrEl1
                 | Arm64SysregCtrEl0
                 | Arm64SysregDczidEl0
                 | Arm64SysregPmceid0El0
                 | Arm64SysregPmceid1El0
                 | Arm64SysregCntpctEl0
                 | Arm64SysregCntvctEl0
                 | Arm64SysregRvbarEl2
                 | Arm64SysregIchVtrEl2
                 | Arm64SysregIchEisrEl2
                 | Arm64SysregIchElsrEl2
                 | Arm64SysregRvbarEl3
  deriving (Show,Eq,Bounded)
instance Enum Arm64Sysreg where
  succ Arm64SysregInvalid = Arm64SysregMdrarEl1
  succ Arm64SysregMdrarEl1 = Arm64SysregOslsrEl1
  succ Arm64SysregOslsrEl1 = Arm64SysregDbgauthstatusEl1
  succ Arm64SysregDbgauthstatusEl1 = Arm64SysregTrcidr8
  succ Arm64SysregTrcidr8 = Arm64SysregTrcidr9
  succ Arm64SysregTrcidr9 = Arm64SysregTrcidr10
  succ Arm64SysregTrcidr10 = Arm64SysregTrcstatr
  succ Arm64SysregTrcstatr = Arm64SysregTrcidr11
  succ Arm64SysregTrcidr11 = Arm64SysregTrcidr12
  succ Arm64SysregTrcidr12 = Arm64SysregTrcidr13
  succ Arm64SysregTrcidr13 = Arm64SysregTrcidr0
  succ Arm64SysregTrcidr0 = Arm64SysregTrcidr1
  succ Arm64SysregTrcidr1 = Arm64SysregTrcidr2
  succ Arm64SysregTrcidr2 = Arm64SysregTrcidr3
  succ Arm64SysregTrcidr3 = Arm64SysregTrcidr4
  succ Arm64SysregTrcidr4 = Arm64SysregTrcidr5
  succ Arm64SysregTrcidr5 = Arm64SysregTrcidr6
  succ Arm64SysregTrcidr6 = Arm64SysregTrcidr7
  succ Arm64SysregTrcidr7 = Arm64SysregTrcoslsr
  succ Arm64SysregTrcoslsr = Arm64SysregTrcpdsr
  succ Arm64SysregTrcpdsr = Arm64SysregTrcdevid
  succ Arm64SysregTrcdevid = Arm64SysregTrcdevtype
  succ Arm64SysregTrcdevtype = Arm64SysregTrcpidr4
  succ Arm64SysregTrcpidr4 = Arm64SysregTrcpidr5
  succ Arm64SysregTrcpidr5 = Arm64SysregTrcpidr6
  succ Arm64SysregTrcpidr6 = Arm64SysregTrcpidr7
  succ Arm64SysregTrcpidr7 = Arm64SysregTrcpidr0
  succ Arm64SysregTrcpidr0 = Arm64SysregTrcpidr1
  succ Arm64SysregTrcpidr1 = Arm64SysregTrcdevaff0
  succ Arm64SysregTrcdevaff0 = Arm64SysregTrcpidr2
  succ Arm64SysregTrcpidr2 = Arm64SysregTrcdevaff1
  succ Arm64SysregTrcdevaff1 = Arm64SysregTrcpidr3
  succ Arm64SysregTrcpidr3 = Arm64SysregTrccidr0
  succ Arm64SysregTrccidr0 = Arm64SysregTrclsr
  succ Arm64SysregTrclsr = Arm64SysregTrccidr1
  succ Arm64SysregTrccidr1 = Arm64SysregTrcauthstatus
  succ Arm64SysregTrcauthstatus = Arm64SysregTrccidr2
  succ Arm64SysregTrccidr2 = Arm64SysregTrcdevarch
  succ Arm64SysregTrcdevarch = Arm64SysregTrccidr3
  succ Arm64SysregTrccidr3 = Arm64SysregMdccsrEl0
  succ Arm64SysregMdccsrEl0 = Arm64SysregDbgdtrrxEl0
  succ Arm64SysregDbgdtrrxEl0 = Arm64SysregMidrEl1
  succ Arm64SysregMidrEl1 = Arm64SysregMpidrEl1
  succ Arm64SysregMpidrEl1 = Arm64SysregRevidrEl1
  succ Arm64SysregRevidrEl1 = Arm64SysregIdPfr0El1
  succ Arm64SysregIdPfr0El1 = Arm64SysregIdPfr1El1
  succ Arm64SysregIdPfr1El1 = Arm64SysregIdDfr0El1
  succ Arm64SysregIdDfr0El1 = Arm64SysregIdAfr0El1
  succ Arm64SysregIdAfr0El1 = Arm64SysregIdMmfr0El1
  succ Arm64SysregIdMmfr0El1 = Arm64SysregIdMmfr1El1
  succ Arm64SysregIdMmfr1El1 = Arm64SysregIdMmfr2El1
  succ Arm64SysregIdMmfr2El1 = Arm64SysregIdMmfr3El1
  succ Arm64SysregIdMmfr3El1 = Arm64SysregIdIsar0El1
  succ Arm64SysregIdIsar0El1 = Arm64SysregIdIsar1El1
  succ Arm64SysregIdIsar1El1 = Arm64SysregIdIsar2El1
  succ Arm64SysregIdIsar2El1 = Arm64SysregIdIsar3El1
  succ Arm64SysregIdIsar3El1 = Arm64SysregIdIsar4El1
  succ Arm64SysregIdIsar4El1 = Arm64SysregIdIsar5El1
  succ Arm64SysregIdIsar5El1 = Arm64SysregMvfr0El1
  succ Arm64SysregMvfr0El1 = Arm64SysregMvfr1El1
  succ Arm64SysregMvfr1El1 = Arm64SysregMvfr2El1
  succ Arm64SysregMvfr2El1 = Arm64SysregIdA64pfr0El1
  succ Arm64SysregIdA64pfr0El1 = Arm64SysregIdA64pfr1El1
  succ Arm64SysregIdA64pfr1El1 = Arm64SysregIdA64dfr0El1
  succ Arm64SysregIdA64dfr0El1 = Arm64SysregIdA64dfr1El1
  succ Arm64SysregIdA64dfr1El1 = Arm64SysregIdA64afr0El1
  succ Arm64SysregIdA64afr0El1 = Arm64SysregIdA64afr1El1
  succ Arm64SysregIdA64afr1El1 = Arm64SysregIdA64isar0El1
  succ Arm64SysregIdA64isar0El1 = Arm64SysregIdA64isar1El1
  succ Arm64SysregIdA64isar1El1 = Arm64SysregIdA64mmfr0El1
  succ Arm64SysregIdA64mmfr0El1 = Arm64SysregIdA64mmfr1El1
  succ Arm64SysregIdA64mmfr1El1 = Arm64SysregRvbarEl1
  succ Arm64SysregRvbarEl1 = Arm64SysregIsrEl1
  succ Arm64SysregIsrEl1 = Arm64SysregIccIar0El1
  succ Arm64SysregIccIar0El1 = Arm64SysregIccHppir0El1
  succ Arm64SysregIccHppir0El1 = Arm64SysregIccRprEl1
  succ Arm64SysregIccRprEl1 = Arm64SysregIccIar1El1
  succ Arm64SysregIccIar1El1 = Arm64SysregIccHppir1El1
  succ Arm64SysregIccHppir1El1 = Arm64SysregCcsidrEl1
  succ Arm64SysregCcsidrEl1 = Arm64SysregClidrEl1
  succ Arm64SysregClidrEl1 = Arm64SysregAidrEl1
  succ Arm64SysregAidrEl1 = Arm64SysregCtrEl0
  succ Arm64SysregCtrEl0 = Arm64SysregDczidEl0
  succ Arm64SysregDczidEl0 = Arm64SysregPmceid0El0
  succ Arm64SysregPmceid0El0 = Arm64SysregPmceid1El0
  succ Arm64SysregPmceid1El0 = Arm64SysregCntpctEl0
  succ Arm64SysregCntpctEl0 = Arm64SysregCntvctEl0
  succ Arm64SysregCntvctEl0 = Arm64SysregRvbarEl2
  succ Arm64SysregRvbarEl2 = Arm64SysregIchVtrEl2
  succ Arm64SysregIchVtrEl2 = Arm64SysregIchEisrEl2
  succ Arm64SysregIchEisrEl2 = Arm64SysregIchElsrEl2
  succ Arm64SysregIchElsrEl2 = Arm64SysregRvbarEl3
  succ Arm64SysregRvbarEl3 = error "Arm64Sysreg.succ: Arm64SysregRvbarEl3 has no successor"

  pred Arm64SysregMdrarEl1 = Arm64SysregInvalid
  pred Arm64SysregOslsrEl1 = Arm64SysregMdrarEl1
  pred Arm64SysregDbgauthstatusEl1 = Arm64SysregOslsrEl1
  pred Arm64SysregTrcidr8 = Arm64SysregDbgauthstatusEl1
  pred Arm64SysregTrcidr9 = Arm64SysregTrcidr8
  pred Arm64SysregTrcidr10 = Arm64SysregTrcidr9
  pred Arm64SysregTrcstatr = Arm64SysregTrcidr10
  pred Arm64SysregTrcidr11 = Arm64SysregTrcstatr
  pred Arm64SysregTrcidr12 = Arm64SysregTrcidr11
  pred Arm64SysregTrcidr13 = Arm64SysregTrcidr12
  pred Arm64SysregTrcidr0 = Arm64SysregTrcidr13
  pred Arm64SysregTrcidr1 = Arm64SysregTrcidr0
  pred Arm64SysregTrcidr2 = Arm64SysregTrcidr1
  pred Arm64SysregTrcidr3 = Arm64SysregTrcidr2
  pred Arm64SysregTrcidr4 = Arm64SysregTrcidr3
  pred Arm64SysregTrcidr5 = Arm64SysregTrcidr4
  pred Arm64SysregTrcidr6 = Arm64SysregTrcidr5
  pred Arm64SysregTrcidr7 = Arm64SysregTrcidr6
  pred Arm64SysregTrcoslsr = Arm64SysregTrcidr7
  pred Arm64SysregTrcpdsr = Arm64SysregTrcoslsr
  pred Arm64SysregTrcdevid = Arm64SysregTrcpdsr
  succ :: Arm64InsnGroup -> Arm64InsnGroup
pred Arm64SysregTrcdevtype = Arm64SysregTrcdevid
  pred Arm64SysregTrcpidr4 = Arm64SysregTrcdevtype
  pred Arm64SysregTrcpidr5 = Arm64SysregTrcpidr4
  pred Arm64SysregTrcpidr6 = Arm64SysregTrcpidr5
  pred Arm64SysregTrcpidr7 = Arm64SysregTrcpidr6
  pred Arm64SysregTrcpidr0 = Arm64SysregTrcpidr7
  pred Arm64SysregTrcpidr1 = Arm64SysregTrcpidr0
  pred Arm64SysregTrcdevaff0 = Arm64SysregTrcpidr1
  pred Arm64SysregTrcpidr2 = Arm64SysregTrcdevaff0
  pred Arm64SysregTrcdevaff1 = Arm64SysregTrcpidr2
  pred Arm64SysregTrcpidr3 = Arm64SysregTrcdevaff1
  pred Arm64SysregTrccidr0 = Arm64SysregTrcpidr3
  pred Arm64SysregTrclsr = Arm64SysregTrccidr0
  pred :: Arm64InsnGroup -> Arm64InsnGroup
pred Arm64SysregTrccidr1 = Arm64SysregTrclsr
  pred Arm64SysregTrcauthstatus = Arm64SysregTrccidr1
  pred Arm64SysregTrccidr2 = Arm64SysregTrcauthstatus
  pred Arm64SysregTrcdevarch = Arm64SysregTrccidr2
  pred Arm64SysregTrccidr3 = Arm64SysregTrcdevarch
  pred Arm64SysregMdccsrEl0 = Arm64SysregTrccidr3
  pred Arm64SysregDbgdtrrxEl0 = Arm64SysregMdccsrEl0
  pred Arm64SysregMidrEl1 = Arm64SysregDbgdtrrxEl0
  pred Arm64SysregMpidrEl1 = Arm64SysregMidrEl1
  pred Arm64SysregRevidrEl1 = Arm64SysregMpidrEl1
  pred Arm64SysregIdPfr0El1 = Arm64SysregRevidrEl1
  pred Arm64SysregIdPfr1El1 = Arm64SysregIdPfr0El1
  pred Arm64SysregIdDfr0El1 = Arm64SysregIdPfr1El1
  pred Arm64SysregIdAfr0El1 = Arm64SysregIdDfr0El1
  pred Arm64SysregIdMmfr0El1 = Arm64SysregIdAfr0El1
  pred Arm64SysregIdMmfr1El1 = Arm64SysregIdMmfr0El1
  pred Arm64SysregIdMmfr2El1 = Arm64SysregIdMmfr1El1
  pred Arm64SysregIdMmfr3El1 = Arm64SysregIdMmfr2El1
  pred Arm64SysregIdIsar0El1 = Arm64SysregIdMmfr3El1
  pred Arm64SysregIdIsar1El1 = Arm64SysregIdIsar0El1
  pred Arm64SysregIdIsar2El1 = Arm64SysregIdIsar1El1
  pred Arm64SysregIdIsar3El1 = Arm64SysregIdIsar2El1
  pred Arm64SysregIdIsar4El1 = Arm64SysregIdIsar3El1
  pred Arm64SysregIdIsar5El1 = Arm64SysregIdIsar4El1
  pred Arm64SysregMvfr0El1 = Arm64SysregIdIsar5El1
  pred Arm64SysregMvfr1El1 = Arm64SysregMvfr0El1
  pred Arm64SysregMvfr2El1 = Arm64SysregMvfr1El1
  pred Arm64SysregIdA64pfr0El1 = Arm64SysregMvfr2El1
  pred Arm64SysregIdA64pfr1El1 = Arm64SysregIdA64pfr0El1
  pred Arm64SysregIdA64dfr0El1 = Arm64SysregIdA64pfr1El1
  pred Arm64SysregIdA64dfr1El1 = Arm64SysregIdA64dfr0El1
  pred Arm64SysregIdA64afr0El1 = Arm64SysregIdA64dfr1El1
  pred Arm64SysregIdA64afr1El1 = Arm64SysregIdA64afr0El1
  pred Arm64SysregIdA64isar0El1 = Arm64SysregIdA64afr1El1
  pred Arm64SysregIdA64isar1El1 = Arm64SysregIdA64isar0El1
  pred Arm64SysregIdA64mmfr0El1 = Arm64SysregIdA64isar1El1
  pred Arm64SysregIdA64mmfr1El1 = Arm64SysregIdA64mmfr0El1
  pred Arm64SysregRvbarEl1 = Arm64SysregIdA64mmfr1El1
  pred Arm64SysregIsrEl1 = Arm64SysregRvbarEl1
  pred Arm64SysregIccIar0El1 = Arm64SysregIsrEl1
  pred Arm64SysregIccHppir0El1 = Arm64SysregIccIar0El1
  pred Arm64SysregIccRprEl1 = Arm64SysregIccHppir0El1
  pred Arm64SysregIccIar1El1 = Arm64SysregIccRprEl1
  pred Arm64SysregIccHppir1El1 = Arm64SysregIccIar1El1
  pred Arm64SysregCcsidrEl1 = Arm64SysregIccHppir1El1
  pred Arm64SysregClidrEl1 = Arm64SysregCcsidrEl1
  pred Arm64SysregAidrEl1 = Arm64SysregClidrEl1
  pred Arm64SysregCtrEl0 = Arm64SysregAidrEl1
  pred Arm64SysregDczidEl0 = Arm64SysregCtrEl0
  pred Arm64SysregPmceid0El0 = Arm64SysregDczidEl0
  pred Arm64SysregPmceid1El0 = Arm64SysregPmceid0El0
  pred Arm64SysregCntpctEl0 = Arm64SysregPmceid1El0
  pred Arm64SysregCntvctEl0 = Arm64SysregCntpctEl0
  pred Arm64SysregRvbarEl2 = Arm64SysregCntvctEl0
  pred Arm64SysregIchVtrEl2 = Arm64SysregRvbarEl2
  pred Arm64SysregIchEisrEl2 = Arm64SysregIchVtrEl2
  pred Arm64SysregIchElsrEl2 = Arm64SysregIchEisrEl2
  pred Arm64SysregRvbarEl3 = Arm64SysregIchElsrEl2
  pred Arm64SysregInvalid = error "Arm64Sysreg.pred: Arm64SysregInvalid has no predecessor"

  enumFromTo :: Arm64Sysreg -> Arm64Sysreg -> [Arm64Sysreg]
enumFromTo Arm64Sysreg
from Arm64Sysreg
to = Arm64Sysreg -> [Arm64Sysreg]
forall t. Enum t => t -> [t]
go Arm64Sysreg
from
    where
      end :: Int
end = Arm64Sysreg -> Int
forall a. Enum a => a -> Int
fromEnum Arm64Sysreg
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 :: Arm64Sysreg -> [Arm64Sysreg]
enumFrom Arm64Sysreg
from = Arm64Sysreg -> Arm64Sysreg -> [Arm64Sysreg]
forall a. Enum a => a -> a -> [a]
enumFromTo Arm64Sysreg
from Arm64Sysreg
Arm64SysregRvbarEl3

  fromEnum :: Arm64Sysreg -> Int
fromEnum Arm64Sysreg
Arm64SysregInvalid = Int
0
  fromEnum Arm64Sysreg
Arm64SysregMdrarEl1 = Int
32896
  fromEnum Arm64Sysreg
Arm64SysregOslsrEl1 = Int
32908
  fromEnum Arm64Sysreg
Arm64SysregDbgauthstatusEl1 = Int
33782
  fromEnum Arm64Sysreg
Arm64SysregTrcidr8 = Int
34822
  fromEnum Arm64Sysreg
Arm64SysregTrcidr9 = Int
34830
  fromEnum Arm64Sysreg
Arm64SysregTrcidr10 = Int
34838
  fromEnum Arm64Sysreg
Arm64SysregTrcstatr = Int
34840
  fromEnum Arm64Sysreg
Arm64SysregTrcidr11 = Int
34846
  fromEnum Arm64Sysreg
Arm64SysregTrcidr12 = Int
34854
  fromEnum Arm64Sysreg
Arm64SysregTrcidr13 = Int
34862
  fromEnum Arm64Sysreg
Arm64SysregTrcidr0 = Int
34887
  fromEnum Arm64Sysreg
Arm64SysregTrcidr1 = Int
34895
  fromEnum Arm64Sysreg
Arm64SysregTrcidr2 = Int
34903
  fromEnum Arm64Sysreg
Arm64SysregTrcidr3 = Int
34911
  fromEnum Arm64Sysreg
Arm64SysregTrcidr4 = Int
34919
  fromEnum Arm64Sysreg
Arm64SysregTrcidr5 = Int
34927
  fromEnum Arm64Sysreg
Arm64SysregTrcidr6 = Int
34935
  fromEnum Arm64Sysreg
Arm64SysregTrcidr7 = Int
34943
  fromEnum Arm64Sysreg
Arm64SysregTrcoslsr = Int
34956
  fromEnum Arm64Sysreg
Arm64SysregTrcpdsr = Int
34988
  fromEnum Arm64Sysreg
Arm64SysregTrcdevid = Int
35735
  fromEnum Arm64Sysreg
Arm64SysregTrcdevtype = Int
35743
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr4 = Int
35751
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr5 = Int
35759
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr6 = Int
35767
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr7 = Int
35775
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr0 = Int
35783
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr1 = Int
35791
  fromEnum Arm64Sysreg
Arm64SysregTrcdevaff0 = Int
35798
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr2 = Int
35799
  fromEnum Arm64Sysreg
Arm64SysregTrcdevaff1 = Int
35806
  fromEnum Arm64Sysreg
Arm64SysregTrcpidr3 = Int
35807
  fromEnum Arm64Sysreg
Arm64SysregTrccidr0 = Int
35815
  fromEnum Arm64Sysreg
Arm64SysregTrclsr = Int
35822
  fromEnum Arm64Sysreg
Arm64SysregTrccidr1 = Int
35823
  fromEnum Arm64Sysreg
Arm64SysregTrcauthstatus = Int
35830
  fromEnum Arm64Sysreg
Arm64SysregTrccidr2 = Int
35831
  fromEnum Arm64Sysreg
Arm64SysregTrcdevarch = Int
35838
  fromEnum Arm64Sysreg
Arm64SysregTrccidr3 = Int
35839
  fromEnum Arm64Sysreg
Arm64SysregMdccsrEl0 = Int
38920
  fromEnum Arm64Sysreg
Arm64SysregDbgdtrrxEl0 = Int
38952
  fromEnum Arm64Sysreg
Arm64SysregMidrEl1 = Int
49152
  fromEnum Arm64Sysreg
Arm64SysregMpidrEl1 = Int
49157
  fromEnum Arm64Sysreg
Arm64SysregRevidrEl1 = Int
49158
  fromEnum Arm64Sysreg
Arm64SysregIdPfr0El1 = Int
49160
  fromEnum Arm64Sysreg
Arm64SysregIdPfr1El1 = Int
49161
  fromEnum Arm64Sysreg
Arm64SysregIdDfr0El1 = Int
49162
  fromEnum Arm64Sysreg
Arm64SysregIdAfr0El1 = Int
49163
  fromEnum Arm64Sysreg
Arm64SysregIdMmfr0El1 = Int
49164
  fromEnum Arm64Sysreg
Arm64SysregIdMmfr1El1 = Int
49165
  fromEnum Arm64Sysreg
Arm64SysregIdMmfr2El1 = Int
49166
  fromEnum Arm64Sysreg
Arm64SysregIdMmfr3El1 = Int
49167
  fromEnum Arm64Sysreg
Arm64SysregIdIsar0El1 = Int
49168
  fromEnum Arm64Sysreg
Arm64SysregIdIsar1El1 = Int
49169
  fromEnum Arm64Sysreg
Arm64SysregIdIsar2El1 = Int
49170
  fromEnum Arm64Sysreg
Arm64SysregIdIsar3El1 = Int
49171
  fromEnum Arm64Sysreg
Arm64SysregIdIsar4El1 = Int
49172
  fromEnum Arm64Sysreg
Arm64SysregIdIsar5El1 = Int
49173
  fromEnum Arm64Sysreg
Arm64SysregMvfr0El1 = Int
49176
  fromEnum Arm64Sysreg
Arm64SysregMvfr1El1 = Int
49177
  fromEnum Arm64Sysreg
Arm64SysregMvfr2El1 = Int
49178
  fromEnum Arm64Sysreg
Arm64SysregIdA64pfr0El1 = Int
49184
  fromEnum Arm64Sysreg
Arm64SysregIdA64pfr1El1 = Int
49185
  fromEnum Arm64Sysreg
Arm64SysregIdA64dfr0El1 = Int
49192
  fromEnum Arm64Sysreg
Arm64SysregIdA64dfr1El1 = Int
49193
  fromEnum Arm64Sysreg
Arm64SysregIdA64afr0El1 = Int
49196
  fromEnum Arm64Sysreg
Arm64SysregIdA64afr1El1 = Int
49197
  fromEnum Arm64Sysreg
Arm64SysregIdA64isar0El1 = Int
49200
  fromEnum Arm64Sysreg
Arm64SysregIdA64isar1El1 = Int
49201
  fromEnum Arm64Sysreg
Arm64SysregIdA64mmfr0El1 = Int
49208
  fromEnum Arm64Sysreg
Arm64SysregIdA64mmfr1El1 = Int
49209
  fromEnum Arm64Sysreg
Arm64SysregRvbarEl1 = Int
50689
  fromEnum Arm64Sysreg
Arm64SysregIsrEl1 = Int
50696
  fromEnum Arm64Sysreg
Arm64SysregIccIar0El1 = Int
50752
  fromEnum Arm64Sysreg
Arm64SysregIccHppir0El1 = Int
50754
  fromEnum Arm64Sysreg
Arm64SysregIccRprEl1 = Int
50779
  fromEnum Arm64Sysreg
Arm64SysregIccIar1El1 = Int
50784
  fromEnum Arm64Sysreg
Arm64SysregIccHppir1El1 = Int
50786
  fromEnum Arm64Sysreg
Arm64SysregCcsidrEl1 = Int
51200
  fromEnum Arm64Sysreg
Arm64SysregClidrEl1 = Int
51201
  fromEnum Arm64Sysreg
Arm64SysregAidrEl1 = Int
51207
  fromEnum Arm64Sysreg
Arm64SysregCtrEl0 = Int
55297
  fromEnum Arm64Sysreg
Arm64SysregDczidEl0 = Int
55303
  fromEnum Arm64Sysreg
Arm64SysregPmceid0El0 = Int
56550
  fromEnum Arm64Sysreg
Arm64SysregPmceid1El0 = Int
56551
  fromEnum Arm64Sysreg
Arm64SysregCntpctEl0 = Int
57089
  fromEnum Arm64Sysreg
Arm64SysregCntvctEl0 = Int
57090
  fromEnum Arm64Sysreg
Arm64SysregRvbarEl2 = Int
58881
  fromEnum Arm64Sysreg
Arm64SysregIchVtrEl2 = Int
58969
  fromEnum Arm64Sysreg
Arm64SysregIchEisrEl2 = Int
58971
  fromEnum Arm64Sysreg
Arm64SysregIchElsrEl2 = Int
58973
  fromEnum Arm64Sysreg
Arm64SysregRvbarEl3 = Int
62977

  toEnum :: Int -> Arm64Sysreg
toEnum Int
0 = Arm64Sysreg
Arm64SysregInvalid
  toEnum Int
32896 = Arm64Sysreg
Arm64SysregMdrarEl1
  toEnum Int
32908 = Arm64Sysreg
Arm64SysregOslsrEl1
  toEnum Int
33782 = Arm64Sysreg
Arm64SysregDbgauthstatusEl1
  toEnum Int
34822 = Arm64Sysreg
Arm64SysregTrcidr8
  toEnum Int
34830 = Arm64Sysreg
Arm64SysregTrcidr9
  toEnum Int
34838 = Arm64Sysreg
Arm64SysregTrcidr10
  toEnum Int
34840 = Arm64Sysreg
Arm64SysregTrcstatr
  toEnum Int
34846 = Arm64Sysreg
Arm64SysregTrcidr11
  toEnum Int
34854 = Arm64Sysreg
Arm64SysregTrcidr12
  toEnum Int
34862 = Arm64Sysreg
Arm64SysregTrcidr13
  toEnum Int
34887 = Arm64Sysreg
Arm64SysregTrcidr0
  toEnum Int
34895 = Arm64Sysreg
Arm64SysregTrcidr1
  toEnum Int
34903 = Arm64Sysreg
Arm64SysregTrcidr2
  toEnum Int
34911 = Arm64Sysreg
Arm64SysregTrcidr3
  toEnum Int
34919 = Arm64Sysreg
Arm64SysregTrcidr4
  toEnum Int
34927 = Arm64Sysreg
Arm64SysregTrcidr5
  toEnum Int
34935 = Arm64Sysreg
Arm64SysregTrcidr6
  toEnum Int
34943 = Arm64Sysreg
Arm64SysregTrcidr7
  toEnum Int
34956 = Arm64Sysreg
Arm64SysregTrcoslsr
  toEnum Int
34988 = Arm64Sysreg
Arm64SysregTrcpdsr
  toEnum Int
35735 = Arm64Sysreg
Arm64SysregTrcdevid
  toEnum Int
35743 = Arm64Sysreg
Arm64SysregTrcdevtype
  toEnum Int
35751 = Arm64Sysreg
Arm64SysregTrcpidr4
  toEnum Int
35759 = Arm64Sysreg
Arm64SysregTrcpidr5
  toEnum Int
35767 = Arm64Sysreg
Arm64SysregTrcpidr6
  toEnum Int
35775 = Arm64Sysreg
Arm64SysregTrcpidr7
  toEnum Int
35783 = Arm64Sysreg
Arm64SysregTrcpidr0
  toEnum Int
35791 = Arm64Sysreg
Arm64SysregTrcpidr1
  toEnum Int
35798 = Arm64Sysreg
Arm64SysregTrcdevaff0
  toEnum Int
35799 = Arm64Sysreg
Arm64SysregTrcpidr2
  toEnum Int
35806 = Arm64Sysreg
Arm64SysregTrcdevaff1
  toEnum Int
35807 = Arm64Sysreg
Arm64SysregTrcpidr3
  toEnum Int
35815 = Arm64Sysreg
Arm64SysregTrccidr0
  toEnum Int
35822 = Arm64Sysreg
Arm64SysregTrclsr
  toEnum Int
35823 = Arm64Sysreg
Arm64SysregTrccidr1
  toEnum Int
35830 = Arm64Sysreg
Arm64SysregTrcauthstatus
  toEnum Int
35831 = Arm64Sysreg
Arm64SysregTrccidr2
  toEnum Int
35838 = Arm64Sysreg
Arm64SysregTrcdevarch
  toEnum Int
35839 = Arm64Sysreg
Arm64SysregTrccidr3
  toEnum Int
38920 = Arm64Sysreg
Arm64SysregMdccsrEl0
  toEnum Int
38952 = Arm64Sysreg
Arm64SysregDbgdtrrxEl0
  toEnum Int
49152 = Arm64Sysreg
Arm64SysregMidrEl1
  toEnum Int
49157 = Arm64Sysreg
Arm64SysregMpidrEl1
  toEnum Int
49158 = Arm64Sysreg
Arm64SysregRevidrEl1
  toEnum Int
49160 = Arm64Sysreg
Arm64SysregIdPfr0El1
  toEnum Int
49161 = Arm64Sysreg
Arm64SysregIdPfr1El1
  toEnum Int
49162 = Arm64Sysreg
Arm64SysregIdDfr0El1
  toEnum Int
49163 = Arm64Sysreg
Arm64SysregIdAfr0El1
  toEnum Int
49164 = Arm64Sysreg
Arm64SysregIdMmfr0El1
  toEnum Int
49165 = Arm64Sysreg
Arm64SysregIdMmfr1El1
  toEnum Int
49166 = Arm64Sysreg
Arm64SysregIdMmfr2El1
  toEnum Int
49167 = Arm64Sysreg
Arm64SysregIdMmfr3El1
  toEnum Int
49168 = Arm64Sysreg
Arm64SysregIdIsar0El1
  toEnum Int
49169 = Arm64Sysreg
Arm64SysregIdIsar1El1
  toEnum Int
49170 = Arm64Sysreg
Arm64SysregIdIsar2El1
  toEnum Int
49171 = Arm64Sysreg
Arm64SysregIdIsar3El1
  toEnum Int
49172 = Arm64Sysreg
Arm64SysregIdIsar4El1
  toEnum Int
49173 = Arm64Sysreg
Arm64SysregIdIsar5El1
  toEnum Int
49176 = Arm64Sysreg
Arm64SysregMvfr0El1
  toEnum Int
49177 = Arm64Sysreg
Arm64SysregMvfr1El1
  toEnum Int
49178 = Arm64Sysreg
Arm64SysregMvfr2El1
  toEnum Int
49184 = Arm64Sysreg
Arm64SysregIdA64pfr0El1
  toEnum Int
49185 = Arm64Sysreg
Arm64SysregIdA64pfr1El1
  toEnum Int
49192 = Arm64Sysreg
Arm64SysregIdA64dfr0El1
  toEnum Int
49193 = Arm64Sysreg
Arm64SysregIdA64dfr1El1
  toEnum Int
49196 = Arm64Sysreg
Arm64SysregIdA64afr0El1
  toEnum Int
49197 = Arm64Sysreg
Arm64SysregIdA64afr1El1
  toEnum Int
49200 = Arm64Sysreg
Arm64SysregIdA64isar0El1
  toEnum Int
49201 = Arm64Sysreg
Arm64SysregIdA64isar1El1
  toEnum Int
49208 = Arm64Sysreg
Arm64SysregIdA64mmfr0El1
  toEnum Int
49209 = Arm64Sysreg
Arm64SysregIdA64mmfr1El1
  toEnum Int
50689 = Arm64Sysreg
Arm64SysregRvbarEl1
  toEnum Int
50696 = Arm64Sysreg
Arm64SysregIsrEl1
  toEnum Int
50752 = Arm64Sysreg
Arm64SysregIccIar0El1
  toEnum Int
50754 = Arm64Sysreg
Arm64SysregIccHppir0El1
  toEnum Int
50779 = Arm64Sysreg
Arm64SysregIccRprEl1
  toEnum Int
50784 = Arm64Sysreg
Arm64SysregIccIar1El1
  toEnum Int
50786 = Arm64Sysreg
Arm64SysregIccHppir1El1
  toEnum Int
51200 = Arm64Sysreg
Arm64SysregCcsidrEl1
  toEnum Int
51201 = Arm64Sysreg
Arm64SysregClidrEl1
  toEnum Int
51207 = Arm64Sysreg
Arm64SysregAidrEl1
  toEnum Int
55297 = Arm64Sysreg
Arm64SysregCtrEl0
  toEnum Int
55303 = Arm64Sysreg
Arm64SysregDczidEl0
  toEnum Int
56550 = Arm64Sysreg
Arm64SysregPmceid0El0
  toEnum Int
56551 = Arm64Sysreg
Arm64SysregPmceid1El0
  toEnum Int
57089 = Arm64Sysreg
Arm64SysregCntpctEl0
  toEnum Int
57090 = Arm64Sysreg
Arm64SysregCntvctEl0
  toEnum Int
58881 = Arm64Sysreg
Arm64SysregRvbarEl2
  toEnum Int
58969 = Arm64Sysreg
Arm64SysregIchVtrEl2
  toEnum Int
58971 = Arm64Sysreg
Arm64SysregIchEisrEl2
  toEnum Int
58973 = Arm64Sysreg
Arm64SysregIchElsrEl2
  toEnum Int
62977 = Arm64Sysreg
Arm64SysregRvbarEl3
  toEnum unmatched = error (String
"Arm64Sysreg.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 44 "src/Hapstone/Internal/Arm64.chs" #-}

-- | more system registers
data Arm64MsrReg = Arm64SysregOslarEl1
                 | Arm64SysregTrcoslar
                 | Arm64SysregTrclar
                 | Arm64SysregDbgdtrtxEl0
                 | Arm64SysregIccEoir0El1
                 | Arm64SysregIccDirEl1
                 | Arm64SysregIccSgi1rEl1
                 | Arm64SysregIccAsgi1rEl1
                 | Arm64SysregIccSgi0rEl1
                 | Arm64SysregIccEoir1El1
                 | Arm64SysregPmswincEl0
  deriving (Show,Eq,Bounded)
instance Enum Arm64MsrReg where
  succ Arm64SysregOslarEl1 = Arm64SysregTrcoslar
  succ Arm64SysregTrcoslar = Arm64SysregTrclar
  succ Arm64SysregTrclar = Arm64SysregDbgdtrtxEl0
  succ Arm64SysregDbgdtrtxEl0 = Arm64SysregIccEoir0El1
  succ Arm64SysregIccEoir0El1 = Arm64SysregIccDirEl1
  succ Arm64SysregIccDirEl1 = Arm64SysregIccSgi1rEl1
  succ Arm64SysregIccSgi1rEl1 = Arm64SysregIccAsgi1rEl1
  succ Arm64SysregIccAsgi1rEl1 = Arm64SysregIccSgi0rEl1
  succ Arm64SysregIccSgi0rEl1 = Arm64SysregIccEoir1El1
  succ Arm64SysregIccEoir1El1 = Arm64SysregPmswincEl0
  succ Arm64SysregPmswincEl0 = error "Arm64MsrReg.succ: Arm64SysregPmswincEl0 has no successor"

  pred Arm64SysregTrcoslar = Arm64SysregOslarEl1
  pred Arm64SysregTrclar = Arm64SysregTrcoslar
  pred Arm64SysregDbgdtrtxEl0 = Arm64SysregTrclar
  pred Arm64SysregIccEoir0El1 = Arm64SysregDbgdtrtxEl0
  pred Arm64SysregIccDirEl1 = Arm64SysregIccEoir0El1
  pred Arm64SysregIccSgi1rEl1 = Arm64SysregIccDirEl1
  pred Arm64SysregIccAsgi1rEl1 = Arm64SysregIccSgi1rEl1
  pred Arm64SysregIccSgi0rEl1 = Arm64SysregIccAsgi1rEl1
  pred Arm64SysregIccEoir1El1 = Arm64SysregIccSgi0rEl1
  pred Arm64SysregPmswincEl0 = Arm64SysregIccEoir1El1
  pred Arm64SysregOslarEl1 = error "Arm64MsrReg.pred: Arm64SysregOslarEl1 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 Arm64SysregPmswincEl0

  fromEnum Arm64SysregOslarEl1 = 32900
  fromEnum Arm64SysregTrcoslar = 34948
  fromEnum Arm64SysregTrclar = 35814
  fromEnum Arm64SysregDbgdtrtxEl0 = 38952
  fromEnum Arm64SysregIccEoir0El1 = 50753
  fromEnum Arm64SysregIccDirEl1 = 50777
  fromEnum Arm64SysregIccSgi1rEl1 = 50781
  fromEnum Arm64SysregIccAsgi1rEl1 = 50782
  fromEnum Arm64SysregIccSgi0rEl1 = 50783
  fromEnum Arm64SysregIccEoir1El1 = 50785
  fromEnum Arm64SysregPmswincEl0 = 56548

  toEnum 32900 = Arm64SysregOslarEl1
  toEnum 34948 = Arm64SysregTrcoslar
  toEnum 35814 = Arm64SysregTrclar
  toEnum 38952 = Arm64SysregDbgdtrtxEl0
  toEnum 50753 = Arm64SysregIccEoir0El1
  toEnum 50777 = Arm64SysregIccDirEl1
  toEnum 50781 = Arm64SysregIccSgi1rEl1
  toEnum 50782 = Arm64SysregIccAsgi1rEl1
  toEnum 50783 = Arm64SysregIccSgi0rEl1
  toEnum 50785 = Arm64SysregIccEoir1El1
  toEnum 56548 = Arm64SysregPmswincEl0
  toEnum unmatched = error ("Arm64MsrReg.toEnum: Cannot match " ++ show unmatched)

{-# LINE 47 "src/Hapstone/Internal/Arm64.chs" #-}


-- | system pstate field (MSR instructions)
data Arm64Pstate = Arm64PstateInvalid
                 | Arm64PstateSpsel
                 | Arm64PstateDaifset
                 | Arm64PstateDaifclr
  deriving (Show,Eq,Bounded)
instance Enum Arm64Pstate where
  succ Arm64PstateInvalid = Arm64PstateSpsel
  succ Arm64PstateSpsel = Arm64PstateDaifset
  succ Arm64PstateDaifset = Arm64PstateDaifclr
  succ Arm64PstateDaifclr = error "Arm64Pstate.succ: Arm64PstateDaifclr has no successor"

  pred Arm64PstateSpsel = Arm64PstateInvalid
  pred Arm64PstateDaifset = Arm64PstateSpsel
  pred Arm64PstateDaifclr = Arm64PstateDaifset
  pred Arm64PstateInvalid = error "Arm64Pstate.pred: Arm64PstateInvalid 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 Arm64PstateDaifclr

  fromEnum Arm64PstateInvalid = 0
  fromEnum Arm64PstateSpsel = 5
  fromEnum Arm64PstateDaifset = 30
  fromEnum Arm64PstateDaifclr = 31

  toEnum 0 = Arm64PstateInvalid
  toEnum 5 = Arm64PstateSpsel
  toEnum 30 = Arm64PstateDaifset
  toEnum 31 = Arm64PstateDaifclr
  toEnum unmatched = error ("Arm64Pstate.toEnum: Cannot match " ++ show unmatched)

{-# LINE 51 "src/Hapstone/Internal/Arm64.chs" #-}


-- | vector arrangement specifier (floating point/advanced SIMD instructions)
data Arm64Vas = Arm64VasInvalid
              | Arm64Vas8b
              | Arm64Vas16b
              | Arm64Vas4h
              | Arm64Vas8h
              | Arm64Vas2s
              | Arm64Vas4s
              | Arm64Vas1d
              | Arm64Vas2d
              | Arm64Vas1q
  deriving (Show,Eq,Bounded)
instance Enum Arm64Vas where
  succ Arm64VasInvalid = Arm64Vas8b
  succ Arm64Vas8b = Arm64Vas16b
  succ Arm64Vas16b = Arm64Vas4h
  succ Arm64Vas4h = Arm64Vas8h
  succ Arm64Vas8h = Arm64Vas2s
  succ Arm64Vas2s = Arm64Vas4s
  succ Arm64Vas4s = Arm64Vas1d
  succ Arm64Vas1d = Arm64Vas2d
  succ Arm64Vas2d = Arm64Vas1q
  succ Arm64Vas1q = error "Arm64Vas.succ: Arm64Vas1q has no successor"

  pred Arm64Vas8b = Arm64VasInvalid
  pred Arm64Vas16b = Arm64Vas8b
  pred Arm64Vas4h = Arm64Vas16b
  pred Arm64Vas8h = Arm64Vas4h
  pred Arm64Vas2s = Arm64Vas8h
  pred Arm64Vas4s = Arm64Vas2s
  pred Arm64Vas1d = Arm64Vas4s
  pred Arm64Vas2d = Arm64Vas1d
  pred Arm64Vas1q = Arm64Vas2d
  pred Arm64VasInvalid = error "Arm64Vas.pred: Arm64VasInvalid 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 Arm64Vas1q

  fromEnum Arm64VasInvalid = 0
  fromEnum Arm64Vas8b = 1
  fromEnum Arm64Vas16b = 2
  fromEnum Arm64Vas4h = 3
  fromEnum Arm64Vas8h = 4
  fromEnum Arm64Vas2s = 5
  fromEnum Arm64Vas4s = 6
  fromEnum Arm64Vas1d = 7
  fromEnum Arm64Vas2d = 8
  fromEnum Arm64Vas1q = 9

  toEnum 0 = Arm64VasInvalid
  toEnum 1 = Arm64Vas8b
  toEnum 2 = Arm64Vas16b
  toEnum 3 = Arm64Vas4h
  toEnum 4 = Arm64Vas8h
  toEnum 5 = Arm64Vas2s
  toEnum 6 = Arm64Vas4s
  toEnum 7 = Arm64Vas1d
  toEnum 8 = Arm64Vas2d
  toEnum 9 = Arm64Vas1q
  toEnum unmatched = error ("Arm64Vas.toEnum: Cannot match " ++ show unmatched)

{-# LINE 55 "src/Hapstone/Internal/Arm64.chs" #-}

-- | vector element size specifier
data Arm64Vess = Arm64VessInvalid
               | Arm64VessB
               | Arm64VessH
               | Arm64VessS
               | Arm64VessD
  deriving (Show,Eq,Bounded)
instance Enum Arm64Vess where
  succ Arm64VessInvalid = Arm64VessB
  succ Arm64VessB = Arm64VessH
  succ Arm64VessH = Arm64VessS
  succ Arm64VessS = Arm64VessD
  succ Arm64VessD = error "Arm64Vess.succ: Arm64VessD has no successor"

  pred Arm64VessB = Arm64VessInvalid
  pred Arm64VessH = Arm64VessB
  pred Arm64VessS = Arm64VessH
  pred Arm64VessD = Arm64VessS
  pred Arm64VessInvalid = error "Arm64Vess.pred: Arm64VessInvalid 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 Arm64VessD

  fromEnum Arm64VessInvalid = 0
  fromEnum Arm64VessB = 1
  fromEnum Arm64VessH = 2
  fromEnum Arm64VessS = 3
  fromEnum Arm64VessD = 4

  toEnum 0 = Arm64VessInvalid
  toEnum 1 = Arm64VessB
  toEnum 2 = Arm64VessH
  toEnum 3 = Arm64VessS
  toEnum 4 = Arm64VessD
  toEnum unmatched = error ("Arm64Vess.toEnum: Cannot match " ++ show unmatched)

{-# LINE 58 "src/Hapstone/Internal/Arm64.chs" #-}


-- | memory barrier operands
data Arm64BarrierOp = Arm64BarrierInvalid
                    | Arm64BarrierOshld
                    | Arm64BarrierOshst
                    | Arm64BarrierOsh
                    | Arm64BarrierNshld
                    | Arm64BarrierNshst
                    | Arm64BarrierNsh
                    | Arm64BarrierIshld
                    | Arm64BarrierIshst
                    | Arm64BarrierIsh
                    | Arm64BarrierLd
                    | Arm64BarrierSt
                    | Arm64BarrierSy
  deriving (Show,Eq,Bounded)
instance Enum Arm64BarrierOp where
  succ Arm64BarrierInvalid = Arm64BarrierOshld
  succ Arm64BarrierOshld = Arm64BarrierOshst
  succ Arm64BarrierOshst = Arm64BarrierOsh
  succ Arm64BarrierOsh = Arm64BarrierNshld
  succ Arm64BarrierNshld = Arm64BarrierNshst
  succ Arm64BarrierNshst = Arm64BarrierNsh
  succ Arm64BarrierNsh = Arm64BarrierIshld
  succ Arm64BarrierIshld = Arm64BarrierIshst
  succ Arm64BarrierIshst = Arm64BarrierIsh
  succ Arm64BarrierIsh = Arm64BarrierLd
  succ Arm64BarrierLd = Arm64BarrierSt
  succ Arm64BarrierSt = Arm64BarrierSy
  succ Arm64BarrierSy = error "Arm64BarrierOp.succ: Arm64BarrierSy has no successor"

  pred Arm64BarrierOshld = Arm64BarrierInvalid
  pred Arm64BarrierOshst = Arm64BarrierOshld
  pred Arm64BarrierOsh = Arm64BarrierOshst
  pred Arm64BarrierNshld = Arm64BarrierOsh
  pred Arm64BarrierNshst = Arm64BarrierNshld
  pred Arm64BarrierNsh = Arm64BarrierNshst
  pred Arm64BarrierIshld = Arm64BarrierNsh
  pred Arm64BarrierIshst = Arm64BarrierIshld
  pred Arm64BarrierIsh = Arm64BarrierIshst
  pred Arm64BarrierLd = Arm64BarrierIsh
  pred Arm64BarrierSt = Arm64BarrierLd
  pred Arm64BarrierSy = Arm64BarrierSt
  pred Arm64BarrierInvalid = error "Arm64BarrierOp.pred: Arm64BarrierInvalid 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 Arm64BarrierSy

  fromEnum Arm64BarrierInvalid = 0
  fromEnum Arm64BarrierOshld = 1
  fromEnum Arm64BarrierOshst = 2
  fromEnum Arm64BarrierOsh = 3
  fromEnum Arm64BarrierNshld = 5
  fromEnum Arm64BarrierNshst = 6
  fromEnum Arm64BarrierNsh = 7
  fromEnum Arm64BarrierIshld = 9
  fromEnum Arm64BarrierIshst = 10
  fromEnum Arm64BarrierIsh = 11
  fromEnum Arm64BarrierLd = 13
  fromEnum Arm64BarrierSt = 14
  fromEnum Arm64BarrierSy = 15

  toEnum 0 = Arm64BarrierInvalid
  toEnum 1 = Arm64BarrierOshld
  toEnum 2 = Arm64BarrierOshst
  toEnum 3 = Arm64BarrierOsh
  toEnum 5 = Arm64BarrierNshld
  toEnum 6 = Arm64BarrierNshst
  toEnum 7 = Arm64BarrierNsh
  toEnum 9 = Arm64BarrierIshld
  toEnum 10 = Arm64BarrierIshst
  toEnum 11 = Arm64BarrierIsh
  toEnum 13 = Arm64BarrierLd
  toEnum 14 = Arm64BarrierSt
  toEnum 15 = Arm64BarrierSy
  toEnum unmatched = error ("Arm64BarrierOp.toEnum: Cannot match " ++ show unmatched)

{-# LINE 62 "src/Hapstone/Internal/Arm64.chs" #-}


-- | operand type for instruction's operands
data Arm64OpType = Arm64OpInvalid
                 | Arm64OpReg
                 | Arm64OpImm
                 | Arm64OpMem
                 | Arm64OpFp
                 | Arm64OpCimm
                 | Arm64OpRegMrs
                 | Arm64OpRegMsr
                 | Arm64OpPstate
                 | Arm64OpSys
                 | Arm64OpPrefetch
                 | Arm64OpBarrier
  deriving (Show,Eq,Bounded)
instance Enum Arm64OpType where
  succ Arm64OpInvalid = Arm64OpReg
  succ Arm64OpReg = Arm64OpImm
  succ Arm64OpImm = Arm64OpMem
  succ Arm64OpMem = Arm64OpFp
  succ Arm64OpFp = Arm64OpCimm
  succ Arm64OpCimm = Arm64OpRegMrs
  succ Arm64OpRegMrs = Arm64OpRegMsr
  succ Arm64OpRegMsr = Arm64OpPstate
  succ Arm64OpPstate = Arm64OpSys
  succ Arm64OpSys = Arm64OpPrefetch
  succ Arm64OpPrefetch = Arm64OpBarrier
  succ Arm64OpBarrier = error "Arm64OpType.succ: Arm64OpBarrier has no successor"

  pred Arm64OpReg = Arm64OpInvalid
  pred Arm64OpImm = Arm64OpReg
  pred Arm64OpMem = Arm64OpImm
  pred Arm64OpFp = Arm64OpMem
  pred Arm64OpCimm = Arm64OpFp
  pred Arm64OpRegMrs = Arm64OpCimm
  pred Arm64OpRegMsr = Arm64OpRegMrs
  pred Arm64OpPstate = Arm64OpRegMsr
  pred Arm64OpSys = Arm64OpPstate
  pred Arm64OpPrefetch = Arm64OpSys
  pred Arm64OpBarrier = Arm64OpPrefetch
  pred Arm64OpInvalid = error "Arm64OpType.pred: Arm64OpInvalid 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 Arm64OpBarrier

  fromEnum Arm64OpInvalid = 0
  fromEnum Arm64OpReg = 1
  fromEnum Arm64OpImm = 2
  fromEnum Arm64OpMem = 3
  fromEnum Arm64OpFp = 4
  fromEnum Arm64OpCimm = 64
  fromEnum Arm64OpRegMrs = 65
  fromEnum Arm64OpRegMsr = 66
  fromEnum Arm64OpPstate = 67
  fromEnum Arm64OpSys = 68
  fromEnum Arm64OpPrefetch = 69
  fromEnum Arm64OpBarrier = 70

  toEnum 0 = Arm64OpInvalid
  toEnum 1 = Arm64OpReg
  toEnum 2 = Arm64OpImm
  toEnum 3 = Arm64OpMem
  toEnum 4 = Arm64OpFp
  toEnum 64 = Arm64OpCimm
  toEnum 65 = Arm64OpRegMrs
  toEnum 66 = Arm64OpRegMsr
  toEnum 67 = Arm64OpPstate
  toEnum 68 = Arm64OpSys
  toEnum 69 = Arm64OpPrefetch
  toEnum 70 = Arm64OpBarrier
  toEnum unmatched = error ("Arm64OpType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 66 "src/Hapstone/Internal/Arm64.chs" #-}

-- | TLBI operations
data Arm64TlbiOp = Arm64TlbiInvalid
                 | Arm64TlbiVmalle1is
                 | Arm64TlbiVae1is
                 | Arm64TlbiAside1is
                 | Arm64TlbiVaae1is
                 | Arm64TlbiVale1is
                 | Arm64TlbiVaale1is
                 | Arm64TlbiAlle2is
                 | Arm64TlbiVae2is
                 | Arm64TlbiAlle1is
                 | Arm64TlbiVale2is
                 | Arm64TlbiVmalls12e1is
                 | Arm64TlbiAlle3is
                 | Arm64TlbiVae3is
                 | Arm64TlbiVale3is
                 | Arm64TlbiIpas2e1is
                 | Arm64TlbiIpas2le1is
                 | Arm64TlbiIpas2e1
                 | Arm64TlbiIpas2le1
                 | Arm64TlbiVmalle1
                 | Arm64TlbiVae1
                 | Arm64TlbiAside1
                 | Arm64TlbiVaae1
                 | Arm64TlbiVale1
                 | Arm64TlbiVaale1
                 | Arm64TlbiAlle2
                 | Arm64TlbiVae2
                 | Arm64TlbiAlle1
                 | Arm64TlbiVale2
                 | Arm64TlbiVmalls12e1
                 | Arm64TlbiAlle3
                 | Arm64TlbiVae3
                 | Arm64TlbiVale3
  deriving (Show,Eq,Bounded)
instance Enum Arm64TlbiOp where
  succ Arm64TlbiInvalid = Arm64TlbiVmalle1is
  succ Arm64TlbiVmalle1is = Arm64TlbiVae1is
  succ Arm64TlbiVae1is = Arm64TlbiAside1is
  succ Arm64TlbiAside1is = Arm64TlbiVaae1is
  succ Arm64TlbiVaae1is = Arm64TlbiVale1is
  succ Arm64TlbiVale1is = Arm64TlbiVaale1is
  succ Arm64TlbiVaale1is = Arm64TlbiAlle2is
  succ Arm64TlbiAlle2is = Arm64TlbiVae2is
  succ Arm64TlbiVae2is = Arm64TlbiAlle1is
  succ Arm64TlbiAlle1is = Arm64TlbiVale2is
  succ Arm64TlbiVale2is = Arm64TlbiVmalls12e1is
  succ Arm64TlbiVmalls12e1is = Arm64TlbiAlle3is
  succ Arm64TlbiAlle3is = Arm64TlbiVae3is
  succ Arm64TlbiVae3is = Arm64TlbiVale3is
  succ Arm64TlbiVale3is = Arm64TlbiIpas2e1is
  succ Arm64TlbiIpas2e1is = Arm64TlbiIpas2le1is
  succ Arm64TlbiIpas2le1is = Arm64TlbiIpas2e1
  succ Arm64TlbiIpas2e1 = Arm64TlbiIpas2le1
  succ Arm64TlbiIpas2le1 = Arm64TlbiVmalle1
  succ Arm64TlbiVmalle1 = Arm64TlbiVae1
  succ Arm64TlbiVae1 = Arm64TlbiAside1
  succ Arm64TlbiAside1 = Arm64TlbiVaae1
  succ Arm64TlbiVaae1 = Arm64TlbiVale1
  succ Arm64TlbiVale1 = Arm64TlbiVaale1
  succ Arm64TlbiVaale1 = Arm64TlbiAlle2
  succ Arm64TlbiAlle2 = Arm64TlbiVae2
  succ Arm64TlbiVae2 = Arm64TlbiAlle1
  succ Arm64TlbiAlle1 = Arm64TlbiVale2
  succ Arm64TlbiVale2 = Arm64TlbiVmalls12e1
  succ Arm64TlbiVmalls12e1 = Arm64TlbiAlle3
  succ Arm64TlbiAlle3 = Arm64TlbiVae3
  succ Arm64TlbiVae3 = Arm64TlbiVale3
  succ Arm64TlbiVale3 = error "Arm64TlbiOp.succ: Arm64TlbiVale3 has no successor"

  pred Arm64TlbiVmalle1is = Arm64TlbiInvalid
  pred Arm64TlbiVae1is = Arm64TlbiVmalle1is
  pred Arm64TlbiAside1is = Arm64TlbiVae1is
  pred Arm64TlbiVaae1is = Arm64TlbiAside1is
  pred Arm64TlbiVale1is = Arm64TlbiVaae1is
  pred Arm64TlbiVaale1is = Arm64TlbiVale1is
  pred Arm64TlbiAlle2is = Arm64TlbiVaale1is
  pred Arm64TlbiVae2is = Arm64TlbiAlle2is
  pred Arm64TlbiAlle1is = Arm64TlbiVae2is
  pred Arm64TlbiVale2is = Arm64TlbiAlle1is
  pred Arm64TlbiVmalls12e1is = Arm64TlbiVale2is
  pred Arm64TlbiAlle3is = Arm64TlbiVmalls12e1is
  pred Arm64TlbiVae3is = Arm64TlbiAlle3is
  pred Arm64TlbiVale3is = Arm64TlbiVae3is
  pred Arm64TlbiIpas2e1is = Arm64TlbiVale3is
  pred Arm64TlbiIpas2le1is = Arm64TlbiIpas2e1is
  pred Arm64TlbiIpas2e1 = Arm64TlbiIpas2le1is
  pred Arm64TlbiIpas2le1 = Arm64TlbiIpas2e1
  pred Arm64TlbiVmalle1 = Arm64TlbiIpas2le1
  pred Arm64TlbiVae1 = Arm64TlbiVmalle1
  pred Arm64TlbiAside1 = Arm64TlbiVae1
  pred Arm64TlbiVaae1 = Arm64TlbiAside1
  pred Arm64TlbiVale1 = Arm64TlbiVaae1
  pred Arm64TlbiVaale1 = Arm64TlbiVale1
  pred Arm64TlbiAlle2 = Arm64TlbiVaale1
  pred Arm64TlbiVae2 = Arm64TlbiAlle2
  pred Arm64TlbiAlle1 = Arm64TlbiVae2
  pred Arm64TlbiVale2 = Arm64TlbiAlle1
  pred Arm64TlbiVmalls12e1 = Arm64TlbiVale2
  pred Arm64TlbiAlle3 = Arm64TlbiVmalls12e1
  pred Arm64TlbiVae3 = Arm64TlbiAlle3
  pred Arm64TlbiVale3 = Arm64TlbiVae3
  pred Arm64TlbiInvalid = error "Arm64TlbiOp.pred: Arm64TlbiInvalid 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 Arm64TlbiVale3

  fromEnum Arm64TlbiInvalid = 0
  fromEnum Arm64TlbiVmalle1is = 1
  fromEnum Arm64TlbiVae1is = 2
  fromEnum Arm64TlbiAside1is = 3
  fromEnum Arm64TlbiVaae1is = 4
  fromEnum Arm64TlbiVale1is = 5
  fromEnum Arm64TlbiVaale1is = 6
  fromEnum Arm64TlbiAlle2is = 7
  fromEnum Arm64TlbiVae2is = 8
  fromEnum Arm64TlbiAlle1is = 9
  fromEnum Arm64TlbiVale2is = 10
  fromEnum Arm64TlbiVmalls12e1is = 11
  fromEnum Arm64TlbiAlle3is = 12
  fromEnum Arm64TlbiVae3is = 13
  fromEnum Arm64TlbiVale3is = 14
  fromEnum Arm64TlbiIpas2e1is = 15
  fromEnum Arm64TlbiIpas2le1is = 16
  fromEnum Arm64TlbiIpas2e1 = 17
  fromEnum Arm64TlbiIpas2le1 = 18
  fromEnum Arm64TlbiVmalle1 = 19
  fromEnum Arm64TlbiVae1 = 20
  fromEnum Arm64TlbiAside1 = 21
  fromEnum Arm64TlbiVaae1 = 22
  fromEnum Arm64TlbiVale1 = 23
  fromEnum Arm64TlbiVaale1 = 24
  fromEnum Arm64TlbiAlle2 = 25
  fromEnum Arm64TlbiVae2 = 26
  fromEnum Arm64TlbiAlle1 = 27
  fromEnum Arm64TlbiVale2 = 28
  fromEnum Arm64TlbiVmalls12e1 = 29
  fromEnum Arm64TlbiAlle3 = 30
  fromEnum Arm64TlbiVae3 = 31
  fromEnum Arm64TlbiVale3 = 32

  toEnum 0 = Arm64TlbiInvalid
  toEnum 1 = Arm64TlbiVmalle1is
  toEnum 2 = Arm64TlbiVae1is
  toEnum 3 = Arm64TlbiAside1is
  toEnum 4 = Arm64TlbiVaae1is
  toEnum 5 = Arm64TlbiVale1is
  toEnum 6 = Arm64TlbiVaale1is
  toEnum 7 = Arm64TlbiAlle2is
  toEnum 8 = Arm64TlbiVae2is
  toEnum 9 = Arm64TlbiAlle1is
  toEnum 10 = Arm64TlbiVale2is
  toEnum 11 = Arm64TlbiVmalls12e1is
  toEnum 12 = Arm64TlbiAlle3is
  toEnum 13 = Arm64TlbiVae3is
  toEnum 14 = Arm64TlbiVale3is
  toEnum 15 = Arm64TlbiIpas2e1is
  toEnum 16 = Arm64TlbiIpas2le1is
  toEnum 17 = Arm64TlbiIpas2e1
  toEnum 18 = Arm64TlbiIpas2le1
  toEnum 19 = Arm64TlbiVmalle1
  toEnum 20 = Arm64TlbiVae1
  toEnum 21 = Arm64TlbiAside1
  toEnum 22 = Arm64TlbiVaae1
  toEnum 23 = Arm64TlbiVale1
  toEnum 24 = Arm64TlbiVaale1
  toEnum 25 = Arm64TlbiAlle2
  toEnum 26 = Arm64TlbiVae2
  toEnum 27 = Arm64TlbiAlle1
  toEnum 28 = Arm64TlbiVale2
  toEnum 29 = Arm64TlbiVmalls12e1
  toEnum 30 = Arm64TlbiAlle3
  toEnum 31 = Arm64TlbiVae3
  toEnum 32 = Arm64TlbiVale3
  toEnum unmatched = error ("Arm64TlbiOp.toEnum: Cannot match " ++ show unmatched)

{-# LINE 69 "src/Hapstone/Internal/Arm64.chs" #-}

-- | AT operations
data Arm64AtOp = Arm64AtS1e1r
               | Arm64AtS1e1w
               | Arm64AtS1e0r
               | Arm64AtS1e0w
               | Arm64AtS1e2r
               | Arm64AtS1e2w
               | Arm64AtS12e1r
               | Arm64AtS12e1w
               | Arm64AtS12e0r
               | Arm64AtS12e0w
               | Arm64AtS1e3r
               | Arm64AtS1e3w
  deriving (Enum,Show,Eq,Bounded)

{-# LINE 72 "src/Hapstone/Internal/Arm64.chs" #-}

-- | DC operations
data Arm64DcOp = Arm64DcInvalid
               | Arm64DcZva
               | Arm64DcIvac
               | Arm64DcIsw
               | Arm64DcCvac
               | Arm64DcCsw
               | Arm64DcCvau
               | Arm64DcCivac
               | Arm64DcCisw
  deriving (Show,Eq,Bounded)
instance Enum Arm64DcOp where
  succ Arm64DcInvalid = Arm64DcZva
  succ Arm64DcZva = Arm64DcIvac
  succ Arm64DcIvac = Arm64DcIsw
  succ Arm64DcIsw = Arm64DcCvac
  succ Arm64DcCvac = Arm64DcCsw
  succ Arm64DcCsw = Arm64DcCvau
  succ Arm64DcCvau = Arm64DcCivac
  succ Arm64DcCivac = Arm64DcCisw
  succ Arm64DcCisw = error "Arm64DcOp.succ: Arm64DcCisw has no successor"

  pred Arm64DcZva = Arm64DcInvalid
  pred Arm64DcIvac = Arm64DcZva
  pred Arm64DcIsw = Arm64DcIvac
  pred Arm64DcCvac = Arm64DcIsw
  pred Arm64DcCsw = Arm64DcCvac
  pred Arm64DcCvau = Arm64DcCsw
  pred Arm64DcCivac = Arm64DcCvau
  pred Arm64DcCisw = Arm64DcCivac
  pred Arm64DcInvalid = error "Arm64DcOp.pred: Arm64DcInvalid 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 Arm64DcCisw

  fromEnum Arm64DcInvalid = 0
  fromEnum Arm64DcZva = 1
  fromEnum Arm64DcIvac = 2
  fromEnum Arm64DcIsw = 3
  fromEnum Arm64DcCvac = 4
  fromEnum Arm64DcCsw = 5
  fromEnum Arm64DcCvau = 6
  fromEnum Arm64DcCivac = 7
  fromEnum Arm64DcCisw = 8

  toEnum 0 = Arm64DcInvalid
  toEnum 1 = Arm64DcZva
  toEnum 2 = Arm64DcIvac
  toEnum 3 = Arm64DcIsw
  toEnum 4 = Arm64DcCvac
  toEnum 5 = Arm64DcCsw
  toEnum 6 = Arm64DcCvau
  toEnum 7 = Arm64DcCivac
  toEnum 8 = Arm64DcCisw
  toEnum unmatched = error ("Arm64DcOp.toEnum: Cannot match " ++ show unmatched)

{-# LINE 75 "src/Hapstone/Internal/Arm64.chs" #-}

-- | IC operations
data Arm64IcOp = Arm64IcInvalid
               | Arm64IcIalluis
               | Arm64IcIallu
               | Arm64IcIvau
  deriving (Show,Eq,Bounded)
instance Enum Arm64IcOp where
  succ Arm64IcInvalid = Arm64IcIalluis
  succ Arm64IcIalluis = Arm64IcIallu
  succ Arm64IcIallu = Arm64IcIvau
  succ Arm64IcIvau = error "Arm64IcOp.succ: Arm64IcIvau has no successor"

  pred Arm64IcIalluis = Arm64IcInvalid
  pred Arm64IcIallu = Arm64IcIalluis
  pred Arm64IcIvau = Arm64IcIallu
  pred Arm64IcInvalid = error "Arm64IcOp.pred: Arm64IcInvalid 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 Arm64IcIvau

  fromEnum Arm64IcInvalid = 0
  fromEnum Arm64IcIalluis = 1
  fromEnum Arm64IcIallu = 2
  fromEnum Arm64IcIvau = 3

  toEnum 0 = Arm64IcInvalid
  toEnum 1 = Arm64IcIalluis
  toEnum 2 = Arm64IcIallu
  toEnum 3 = Arm64IcIvau
  toEnum unmatched = error ("Arm64IcOp.toEnum: Cannot match " ++ show unmatched)

{-# LINE 78 "src/Hapstone/Internal/Arm64.chs" #-}

-- | prefetch operations (PRFM)
data Arm64PrefetchOp = Arm64PrfmInvalid
                     | Arm64PrfmPldl1keep
                     | Arm64PrfmPldl1strm
                     | Arm64PrfmPldl2keep
                     | Arm64PrfmPldl2strm
                     | Arm64PrfmPldl3keep
                     | Arm64PrfmPldl3strm
                     | Arm64PrfmPlil1keep
                     | Arm64PrfmPlil1strm
                     | Arm64PrfmPlil2keep
                     | Arm64PrfmPlil2strm
                     | Arm64PrfmPlil3keep
                     | Arm64PrfmPlil3strm
                     | Arm64PrfmPstl1keep
                     | Arm64PrfmPstl1strm
                     | Arm64PrfmPstl2keep
                     | Arm64PrfmPstl2strm
                     | Arm64PrfmPstl3keep
                     | Arm64PrfmPstl3strm
  deriving (Show,Eq,Bounded)
instance Enum Arm64PrefetchOp where
  succ Arm64PrfmInvalid = Arm64PrfmPldl1keep
  succ Arm64PrfmPldl1keep = Arm64PrfmPldl1strm
  succ Arm64PrfmPldl1strm = Arm64PrfmPldl2keep
  succ Arm64PrfmPldl2keep = Arm64PrfmPldl2strm
  succ Arm64PrfmPldl2strm = Arm64PrfmPldl3keep
  succ Arm64PrfmPldl3keep = Arm64PrfmPldl3strm
  succ Arm64PrfmPldl3strm = Arm64PrfmPlil1keep
  succ Arm64PrfmPlil1keep = Arm64PrfmPlil1strm
  succ Arm64PrfmPlil1strm = Arm64PrfmPlil2keep
  succ Arm64PrfmPlil2keep = Arm64PrfmPlil2strm
  succ Arm64PrfmPlil2strm = Arm64PrfmPlil3keep
  succ Arm64PrfmPlil3keep = Arm64PrfmPlil3strm
  succ Arm64PrfmPlil3strm = Arm64PrfmPstl1keep
  succ Arm64PrfmPstl1keep = Arm64PrfmPstl1strm
  succ Arm64PrfmPstl1strm = Arm64PrfmPstl2keep
  succ Arm64PrfmPstl2keep = Arm64PrfmPstl2strm
  succ Arm64PrfmPstl2strm = Arm64PrfmPstl3keep
  succ Arm64PrfmPstl3keep = Arm64PrfmPstl3strm
  succ Arm64PrfmPstl3strm = error "Arm64PrefetchOp.succ: Arm64PrfmPstl3strm has no successor"

  pred Arm64PrfmPldl1keep = Arm64PrfmInvalid
  pred Arm64PrfmPldl1strm = Arm64PrfmPldl1keep
  pred Arm64PrfmPldl2keep = Arm64PrfmPldl1strm
  pred Arm64PrfmPldl2strm = Arm64PrfmPldl2keep
  pred Arm64PrfmPldl3keep = Arm64PrfmPldl2strm
  pred Arm64PrfmPldl3strm = Arm64PrfmPldl3keep
  pred Arm64PrfmPlil1keep = Arm64PrfmPldl3strm
  pred Arm64PrfmPlil1strm = Arm64PrfmPlil1keep
  pred Arm64PrfmPlil2keep = Arm64PrfmPlil1strm
  pred Arm64PrfmPlil2strm = Arm64PrfmPlil2keep
  pred Arm64PrfmPlil3keep = Arm64PrfmPlil2strm
  pred Arm64PrfmPlil3strm = Arm64PrfmPlil3keep
  pred Arm64PrfmPstl1keep = Arm64PrfmPlil3strm
  pred Arm64PrfmPstl1strm = Arm64PrfmPstl1keep
  pred Arm64PrfmPstl2keep = Arm64PrfmPstl1strm
  pred Arm64PrfmPstl2strm = Arm64PrfmPstl2keep
  pred Arm64PrfmPstl3keep = Arm64PrfmPstl2strm
  pred Arm64PrfmPstl3strm = Arm64PrfmPstl3keep
  pred Arm64PrfmInvalid = error "Arm64PrefetchOp.pred: Arm64PrfmInvalid 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 Arm64PrfmPstl3strm

  fromEnum Arm64PrfmInvalid = 0
  fromEnum Arm64PrfmPldl1keep = 1
  fromEnum Arm64PrfmPldl1strm = 2
  fromEnum Arm64PrfmPldl2keep = 3
  fromEnum Arm64PrfmPldl2strm = 4
  fromEnum Arm64PrfmPldl3keep = 5
  fromEnum Arm64PrfmPldl3strm = 6
  fromEnum Arm64PrfmPlil1keep = 9
  fromEnum Arm64PrfmPlil1strm = 10
  fromEnum Arm64PrfmPlil2keep = 11
  fromEnum Arm64PrfmPlil2strm = 12
  fromEnum Arm64PrfmPlil3keep = 13
  fromEnum Arm64PrfmPlil3strm = 14
  fromEnum Arm64PrfmPstl1keep = 17
  fromEnum Arm64PrfmPstl1strm = 18
  fromEnum Arm64PrfmPstl2keep = 19
  fromEnum Arm64PrfmPstl2strm = 20
  fromEnum Arm64PrfmPstl3keep = 21
  fromEnum Arm64PrfmPstl3strm = 22

  toEnum 0 = Arm64PrfmInvalid
  toEnum 1 = Arm64PrfmPldl1keep
  toEnum 2 = Arm64PrfmPldl1strm
  toEnum 3 = Arm64PrfmPldl2keep
  toEnum 4 = Arm64PrfmPldl2strm
  toEnum 5 = Arm64PrfmPldl3keep
  toEnum 6 = Arm64PrfmPldl3strm
  toEnum 9 = Arm64PrfmPlil1keep
  toEnum 10 = Arm64PrfmPlil1strm
  toEnum 11 = Arm64PrfmPlil2keep
  toEnum 12 = Arm64PrfmPlil2strm
  toEnum 13 = Arm64PrfmPlil3keep
  toEnum 14 = Arm64PrfmPlil3strm
  toEnum 17 = Arm64PrfmPstl1keep
  toEnum 18 = Arm64PrfmPstl1strm
  toEnum 19 = Arm64PrfmPstl2keep
  toEnum 20 = Arm64PrfmPstl2strm
  toEnum 21 = Arm64PrfmPstl3keep
  toEnum 22 = Arm64PrfmPstl3strm
  toEnum unmatched = error ("Arm64PrefetchOp.toEnum: Cannot match " ++ show unmatched)

{-# LINE 81 "src/Hapstone/Internal/Arm64.chs" #-}


-- | ARM64 registers
data Arm64Reg = Arm64RegInvalid
              | Arm64RegX29
              | Arm64RegFp
              | Arm64RegX30
              | Arm64RegLr
              | Arm64RegNzcv
              | Arm64RegSp
              | Arm64RegWsp
              | Arm64RegWzr
              | Arm64RegXzr
              | Arm64RegB0
              | Arm64RegB1
              | Arm64RegB2
              | Arm64RegB3
              | Arm64RegB4
              | Arm64RegB5
              | Arm64RegB6
              | Arm64RegB7
              | Arm64RegB8
              | Arm64RegB9
              | Arm64RegB10
              | Arm64RegB11
              | Arm64RegB12
              | Arm64RegB13
              | Arm64RegB14
              | Arm64RegB15
              | Arm64RegB16
              | Arm64RegB17
              | Arm64RegB18
              | Arm64RegB19
              | Arm64RegB20
              | Arm64RegB21
              | Arm64RegB22
              | Arm64RegB23
              | Arm64RegB24
              | Arm64RegB25
              | Arm64RegB26
              | Arm64RegB27
              | Arm64RegB28
              | Arm64RegB29
              | Arm64RegB30
              | Arm64RegB31
              | Arm64RegD0
              | Arm64RegD1
              | Arm64RegD2
              | Arm64RegD3
              | Arm64RegD4
              | Arm64RegD5
              | Arm64RegD6
              | Arm64RegD7
              | Arm64RegD8
              | Arm64RegD9
              | Arm64RegD10
              | Arm64RegD11
              | Arm64RegD12
              | Arm64RegD13
              | Arm64RegD14
              | Arm64RegD15
              | Arm64RegD16
              | Arm64RegD17
              | Arm64RegD18
              | Arm64RegD19
              | Arm64RegD20
              | Arm64RegD21
              | Arm64RegD22
              | Arm64RegD23
              | Arm64RegD24
              | Arm64RegD25
              | Arm64RegD26
              | Arm64RegD27
              | Arm64RegD28
              | Arm64RegD29
              | Arm64RegD30
              | Arm64RegD31
              | Arm64RegH0
              | Arm64RegH1
              | Arm64RegH2
              | Arm64RegH3
              | Arm64RegH4
              | Arm64RegH5
              | Arm64RegH6
              | Arm64RegH7
              | Arm64RegH8
              | Arm64RegH9
              | Arm64RegH10
              | Arm64RegH11
              | Arm64RegH12
              | Arm64RegH13
              | Arm64RegH14
              | Arm64RegH15
              | Arm64RegH16
              | Arm64RegH17
              | Arm64RegH18
              | Arm64RegH19
              | Arm64RegH20
              | Arm64RegH21
              | Arm64RegH22
              | Arm64RegH23
              | Arm64RegH24
              | Arm64RegH25
              | Arm64RegH26
              | Arm64RegH27
              | Arm64RegH28
              | Arm64RegH29
              | Arm64RegH30
              | Arm64RegH31
              | Arm64RegQ0
              | Arm64RegQ1
              | Arm64RegQ2
              | Arm64RegQ3
              | Arm64RegQ4
              | Arm64RegQ5
              | Arm64RegQ6
              | Arm64RegQ7
              | Arm64RegQ8
              | Arm64RegQ9
              | Arm64RegQ10
              | Arm64RegQ11
              | Arm64RegQ12
              | Arm64RegQ13
              | Arm64RegQ14
              | Arm64RegQ15
              | Arm64RegQ16
              | Arm64RegQ17
              | Arm64RegQ18
              | Arm64RegQ19
              | Arm64RegQ20
              | Arm64RegQ21
              | Arm64RegQ22
              | Arm64RegQ23
              | Arm64RegQ24
              | Arm64RegQ25
              | Arm64RegQ26
              | Arm64RegQ27
              | Arm64RegQ28
              | Arm64RegQ29
              | Arm64RegQ30
              | Arm64RegQ31
              | Arm64RegS0
              | Arm64RegS1
              | Arm64RegS2
              | Arm64RegS3
              | Arm64RegS4
              | Arm64RegS5
              | Arm64RegS6
              | Arm64RegS7
              | Arm64RegS8
              | Arm64RegS9
              | Arm64RegS10
              | Arm64RegS11
              | Arm64RegS12
              | Arm64RegS13
              | Arm64RegS14
              | Arm64RegS15
              | Arm64RegS16
              | Arm64RegS17
              | Arm64RegS18
              | Arm64RegS19
              | Arm64RegS20
              | Arm64RegS21
              | Arm64RegS22
              | Arm64RegS23
              | Arm64RegS24
              | Arm64RegS25
              | Arm64RegS26
              | Arm64RegS27
              | Arm64RegS28
              | Arm64RegS29
              | Arm64RegS30
              | Arm64RegS31
              | Arm64RegW0
              | Arm64RegW1
              | Arm64RegW2
              | Arm64RegW3
              | Arm64RegW4
              | Arm64RegW5
              | Arm64RegW6
              | Arm64RegW7
              | Arm64RegW8
              | Arm64RegW9
              | Arm64RegW10
              | Arm64RegW11
              | Arm64RegW12
              | Arm64RegW13
              | Arm64RegW14
              | Arm64RegW15
              | Arm64RegW16
              | Arm64RegW17
              | Arm64RegW18
              | Arm64RegW19
              | Arm64RegW20
              | Arm64RegW21
              | Arm64RegW22
              | Arm64RegW23
              | Arm64RegW24
              | Arm64RegW25
              | Arm64RegW26
              | Arm64RegW27
              | Arm64RegW28
              | Arm64RegW29
              | Arm64RegW30
              | Arm64RegX0
              | Arm64RegX1
              | Arm64RegX2
              | Arm64RegX3
              | Arm64RegX4
              | Arm64RegX5
              | Arm64RegX6
              | Arm64RegX7
              | Arm64RegX8
              | Arm64RegX9
              | Arm64RegX10
              | Arm64RegX11
              | Arm64RegX12
              | Arm64RegX13
              | Arm64RegX14
              | Arm64RegX15
              | Arm64RegX16
              | Arm64RegIp0
              | Arm64RegX17
              | Arm64RegIp1
              | Arm64RegX18
              | Arm64RegX19
              | Arm64RegX20
              | Arm64RegX21
              | Arm64RegX22
              | Arm64RegX23
              | Arm64RegX24
              | Arm64RegX25
              | Arm64RegX26
              | Arm64RegX27
              | Arm64RegX28
              | Arm64RegV0
              | Arm64RegV1
              | Arm64RegV2
              | Arm64RegV3
              | Arm64RegV4
              | Arm64RegV5
              | Arm64RegV6
              | Arm64RegV7
              | Arm64RegV8
              | Arm64RegV9
              | Arm64RegV10
              | Arm64RegV11
              | Arm64RegV12
              | Arm64RegV13
              | Arm64RegV14
              | Arm64RegV15
              | Arm64RegV16
              | Arm64RegV17
              | Arm64RegV18
              | Arm64RegV19
              | Arm64RegV20
              | Arm64RegV21
              | Arm64RegV22
              | Arm64RegV23
              | Arm64RegV24
              | Arm64RegV25
              | Arm64RegV26
              | Arm64RegV27
              | Arm64RegV28
              | Arm64RegV29
              | Arm64RegV30
              | Arm64RegV31
              | Arm64RegEnding
  deriving (Show,Eq,Bounded)
instance Enum Arm64Reg where
  succ Arm64RegInvalid = Arm64RegX29
  succ Arm64RegX29 = Arm64RegX30
  succ Arm64RegFp = Arm64RegX30
  succ Arm64RegX30 = Arm64RegNzcv
  succ Arm64RegLr = Arm64RegNzcv
  succ Arm64RegNzcv = Arm64RegSp
  succ Arm64RegSp = Arm64RegWsp
  succ Arm64RegWsp = Arm64RegWzr
  succ Arm64RegWzr = Arm64RegXzr
  succ Arm64RegXzr = Arm64RegB0
  succ Arm64RegB0 = Arm64RegB1
  succ Arm64RegB1 = Arm64RegB2
  succ Arm64RegB2 = Arm64RegB3
  succ Arm64RegB3 = Arm64RegB4
  succ Arm64RegB4 = Arm64RegB5
  succ Arm64RegB5 = Arm64RegB6
  succ Arm64RegB6 = Arm64RegB7
  succ Arm64RegB7 = Arm64RegB8
  succ Arm64RegB8 = Arm64RegB9
  succ Arm64RegB9 = Arm64RegB10
  succ Arm64RegB10 = Arm64RegB11
  succ Arm64RegB11 = Arm64RegB12
  succ Arm64RegB12 = Arm64RegB13
  succ Arm64RegB13 = Arm64RegB14
  succ Arm64RegB14 = Arm64RegB15
  succ Arm64RegB15 = Arm64RegB16
  succ Arm64RegB16 = Arm64RegB17
  succ Arm64RegB17 = Arm64RegB18
  succ Arm64RegB18 = Arm64RegB19
  succ Arm64RegB19 = Arm64RegB20
  succ Arm64RegB20 = Arm64RegB21
  succ Arm64RegB21 = Arm64RegB22
  succ Arm64RegB22 = Arm64RegB23
  succ Arm64RegB23 = Arm64RegB24
  succ Arm64RegB24 = Arm64RegB25
  succ Arm64RegB25 = Arm64RegB26
  succ Arm64RegB26 = Arm64RegB27
  succ Arm64RegB27 = Arm64RegB28
  succ Arm64RegB28 = Arm64RegB29
  succ Arm64RegB29 = Arm64RegB30
  succ Arm64RegB30 = Arm64RegB31
  succ Arm64RegB31 = Arm64RegD0
  succ Arm64RegD0 = Arm64RegD1
  succ Arm64RegD1 = Arm64RegD2
  succ Arm64RegD2 = Arm64RegD3
  succ Arm64RegD3 = Arm64RegD4
  succ Arm64RegD4 = Arm64RegD5
  succ Arm64RegD5 = Arm64RegD6
  succ Arm64RegD6 = Arm64RegD7
  succ Arm64RegD7 = Arm64RegD8
  succ Arm64RegD8 = Arm64RegD9
  succ Arm64RegD9 = Arm64RegD10
  succ Arm64RegD10 = Arm64RegD11
  succ Arm64RegD11 = Arm64RegD12
  succ Arm64RegD12 = Arm64RegD13
  succ Arm64RegD13 = Arm64RegD14
  succ Arm64RegD14 = Arm64RegD15
  succ Arm64RegD15 = Arm64RegD16
  succ Arm64RegD16 = Arm64RegD17
  succ Arm64RegD17 = Arm64RegD18
  succ Arm64RegD18 = Arm64RegD19
  succ Arm64RegD19 = Arm64RegD20
  succ Arm64RegD20 = Arm64RegD21
  succ Arm64RegD21 = Arm64RegD22
  succ Arm64RegD22 = Arm64RegD23
  succ Arm64RegD23 = Arm64RegD24
  succ Arm64RegD24 = Arm64RegD25
  succ Arm64RegD25 = Arm64RegD26
  succ Arm64RegD26 = Arm64RegD27
  succ Arm64RegD27 = Arm64RegD28
  succ Arm64RegD28 = Arm64RegD29
  succ Arm64RegD29 = Arm64RegD30
  succ Arm64RegD30 = Arm64RegD31
  succ Arm64RegD31 = Arm64RegH0
  succ Arm64RegH0 = Arm64RegH1
  succ Arm64RegH1 = Arm64RegH2
  succ Arm64RegH2 = Arm64RegH3
  succ Arm64RegH3 = Arm64RegH4
  succ Arm64RegH4 = Arm64RegH5
  succ Arm64RegH5 = Arm64RegH6
  succ Arm64RegH6 = Arm64RegH7
  succ Arm64RegH7 = Arm64RegH8
  succ Arm64RegH8 = Arm64RegH9
  succ Arm64RegH9 = Arm64RegH10
  succ Arm64RegH10 = Arm64RegH11
  succ Arm64RegH11 = Arm64RegH12
  succ Arm64RegH12 = Arm64RegH13
  succ Arm64RegH13 = Arm64RegH14
  succ Arm64RegH14 = Arm64RegH15
  succ Arm64RegH15 = Arm64RegH16
  succ Arm64RegH16 = Arm64RegH17
  succ Arm64RegH17 = Arm64RegH18
  succ Arm64RegH18 = Arm64RegH19
  succ Arm64RegH19 = Arm64RegH20
  succ Arm64RegH20 = Arm64RegH21
  succ Arm64RegH21 = Arm64RegH22
  succ Arm64RegH22 = Arm64RegH23
  succ Arm64RegH23 = Arm64RegH24
  succ Arm64RegH24 = Arm64RegH25
  succ Arm64RegH25 = Arm64RegH26
  succ Arm64RegH26 = Arm64RegH27
  succ Arm64RegH27 = Arm64RegH28
  succ Arm64RegH28 = Arm64RegH29
  succ Arm64RegH29 = Arm64RegH30
  succ Arm64RegH30 = Arm64RegH31
  succ Arm64RegH31 = Arm64RegQ0
  succ Arm64RegQ0 = Arm64RegQ1
  succ Arm64RegQ1 = Arm64RegQ2
  succ Arm64RegQ2 = Arm64RegQ3
  succ Arm64RegQ3 = Arm64RegQ4
  succ Arm64RegQ4 = Arm64RegQ5
  succ Arm64RegQ5 = Arm64RegQ6
  succ Arm64RegQ6 = Arm64RegQ7
  succ Arm64RegQ7 = Arm64RegQ8
  succ Arm64RegQ8 = Arm64RegQ9
  succ Arm64RegQ9 = Arm64RegQ10
  succ Arm64RegQ10 = Arm64RegQ11
  succ Arm64RegQ11 = Arm64RegQ12
  succ Arm64RegQ12 = Arm64RegQ13
  succ Arm64RegQ13 = Arm64RegQ14
  succ Arm64RegQ14 = Arm64RegQ15
  succ Arm64RegQ15 = Arm64RegQ16
  succ Arm64RegQ16 = Arm64RegQ17
  succ Arm64RegQ17 = Arm64RegQ18
  succ Arm64RegQ18 = Arm64RegQ19
  succ Arm64RegQ19 = Arm64RegQ20
  succ Arm64RegQ20 = Arm64RegQ21
  succ Arm64RegQ21 = Arm64RegQ22
  succ Arm64RegQ22 = Arm64RegQ23
  succ Arm64RegQ23 = Arm64RegQ24
  succ Arm64RegQ24 = Arm64RegQ25
  succ Arm64RegQ25 = Arm64RegQ26
  succ Arm64RegQ26 = Arm64RegQ27
  succ Arm64RegQ27 = Arm64RegQ28
  succ Arm64RegQ28 = Arm64RegQ29
  succ Arm64RegQ29 = Arm64RegQ30
  succ Arm64RegQ30 = Arm64RegQ31
  succ Arm64RegQ31 = Arm64RegS0
  succ Arm64RegS0 = Arm64RegS1
  succ Arm64RegS1 = Arm64RegS2
  succ Arm64RegS2 = Arm64RegS3
  succ Arm64RegS3 = Arm64RegS4
  succ Arm64RegS4 = Arm64RegS5
  succ Arm64RegS5 = Arm64RegS6
  succ Arm64RegS6 = Arm64RegS7
  succ Arm64RegS7 = Arm64RegS8
  succ Arm64RegS8 = Arm64RegS9
  succ Arm64RegS9 = Arm64RegS10
  succ Arm64RegS10 = Arm64RegS11
  succ Arm64RegS11 = Arm64RegS12
  succ Arm64RegS12 = Arm64RegS13
  succ Arm64RegS13 = Arm64RegS14
  succ Arm64RegS14 = Arm64RegS15
  succ Arm64RegS15 = Arm64RegS16
  succ Arm64RegS16 = Arm64RegS17
  succ Arm64RegS17 = Arm64RegS18
  succ Arm64RegS18 = Arm64RegS19
  succ Arm64RegS19 = Arm64RegS20
  succ Arm64RegS20 = Arm64RegS21
  succ Arm64RegS21 = Arm64RegS22
  succ Arm64RegS22 = Arm64RegS23
  succ Arm64RegS23 = Arm64RegS24
  succ Arm64RegS24 = Arm64RegS25
  succ Arm64RegS25 = Arm64RegS26
  succ Arm64RegS26 = Arm64RegS27
  succ Arm64RegS27 = Arm64RegS28
  succ Arm64RegS28 = Arm64RegS29
  succ Arm64RegS29 = Arm64RegS30
  succ Arm64RegS30 = Arm64RegS31
  succ Arm64RegS31 = Arm64RegW0
  succ Arm64RegW0 = Arm64RegW1
  succ Arm64RegW1 = Arm64RegW2
  succ Arm64RegW2 = Arm64RegW3
  succ Arm64RegW3 = Arm64RegW4
  succ Arm64RegW4 = Arm64RegW5
  succ Arm64RegW5 = Arm64RegW6
  succ Arm64RegW6 = Arm64RegW7
  succ Arm64RegW7 = Arm64RegW8
  succ Arm64RegW8 = Arm64RegW9
  succ Arm64RegW9 = Arm64RegW10
  succ Arm64RegW10 = Arm64RegW11
  succ Arm64RegW11 = Arm64RegW12
  succ Arm64RegW12 = Arm64RegW13
  succ Arm64RegW13 = Arm64RegW14
  succ Arm64RegW14 = Arm64RegW15
  succ Arm64RegW15 = Arm64RegW16
  succ Arm64RegW16 = Arm64RegW17
  succ Arm64RegW17 = Arm64RegW18
  succ Arm64RegW18 = Arm64RegW19
  succ Arm64RegW19 = Arm64RegW20
  succ Arm64RegW20 = Arm64RegW21
  succ Arm64RegW21 = Arm64RegW22
  succ Arm64RegW22 = Arm64RegW23
  succ Arm64RegW23 = Arm64RegW24
  succ Arm64RegW24 = Arm64RegW25
  succ Arm64RegW25 = Arm64RegW26
  succ Arm64RegW26 = Arm64RegW27
  succ Arm64RegW27 = Arm64RegW28
  succ Arm64RegW28 = Arm64RegW29
  succ Arm64RegW29 = Arm64RegW30
  succ Arm64RegW30 = Arm64RegX0
  succ Arm64RegX0 = Arm64RegX1
  succ Arm64RegX1 = Arm64RegX2
  succ Arm64RegX2 = Arm64RegX3
  succ Arm64RegX3 = Arm64RegX4
  succ Arm64RegX4 = Arm64RegX5
  succ Arm64RegX5 = Arm64RegX6
  succ Arm64RegX6 = Arm64RegX7
  succ Arm64RegX7 = Arm64RegX8
  succ Arm64RegX8 = Arm64RegX9
  succ Arm64RegX9 = Arm64RegX10
  succ Arm64RegX10 = Arm64RegX11
  succ Arm64RegX11 = Arm64RegX12
  succ Arm64RegX12 = Arm64RegX13
  succ Arm64RegX13 = Arm64RegX14
  succ Arm64RegX14 = Arm64RegX15
  succ Arm64RegX15 = Arm64RegX16
  succ Arm64RegX16 = Arm64RegX17
  succ Arm64RegIp0 = Arm64RegX17
  succ Arm64RegX17 = Arm64RegX18
  succ Arm64RegIp1 = Arm64RegX18
  succ Arm64RegX18 = Arm64RegX19
  succ Arm64RegX19 = Arm64RegX20
  succ Arm64RegX20 = Arm64RegX21
  succ Arm64RegX21 = Arm64RegX22
  succ Arm64RegX22 = Arm64RegX23
  succ Arm64RegX23 = Arm64RegX24
  succ Arm64RegX24 = Arm64RegX25
  succ Arm64RegX25 = Arm64RegX26
  succ Arm64RegX26 = Arm64RegX27
  succ Arm64RegX27 = Arm64RegX28
  succ Arm64RegX28 = Arm64RegV0
  succ Arm64RegV0 = Arm64RegV1
  succ Arm64RegV1 = Arm64RegV2
  succ Arm64RegV2 = Arm64RegV3
  succ Arm64RegV3 = Arm64RegV4
  succ Arm64RegV4 = Arm64RegV5
  succ Arm64RegV5 = Arm64RegV6
  succ Arm64RegV6 = Arm64RegV7
  succ Arm64RegV7 = Arm64RegV8
  succ Arm64RegV8 = Arm64RegV9
  succ Arm64RegV9 = Arm64RegV10
  succ Arm64RegV10 = Arm64RegV11
  succ Arm64RegV11 = Arm64RegV12
  succ Arm64RegV12 = Arm64RegV13
  succ Arm64RegV13 = Arm64RegV14
  succ Arm64RegV14 = Arm64RegV15
  succ Arm64RegV15 = Arm64RegV16
  succ Arm64RegV16 = Arm64RegV17
  succ Arm64RegV17 = Arm64RegV18
  succ Arm64RegV18 = Arm64RegV19
  succ Arm64RegV19 = Arm64RegV20
  succ Arm64RegV20 = Arm64RegV21
  succ Arm64RegV21 = Arm64RegV22
  succ Arm64RegV22 = Arm64RegV23
  succ Arm64RegV23 = Arm64RegV24
  succ Arm64RegV24 = Arm64RegV25
  succ Arm64RegV25 = Arm64RegV26
  succ Arm64RegV26 = Arm64RegV27
  succ Arm64RegV27 = Arm64RegV28
  succ Arm64RegV28 = Arm64RegV29
  succ Arm64RegV29 = Arm64RegV30
  succ Arm64RegV30 = Arm64RegV31
  succ Arm64RegV31 = Arm64RegEnding
  succ Arm64RegEnding = error "Arm64Reg.succ: Arm64RegEnding has no successor"

  pred :: Arm64Reg -> Arm64Reg
pred Arm64Reg
Arm64RegX29 = Arm64Reg
Arm64RegInvalid
  pred Arm64Reg
Arm64RegFp = Arm64Reg
Arm64RegInvalid
  pred Arm64Reg
Arm64RegX30 = Arm64Reg
Arm64RegX29
  pred Arm64Reg
Arm64RegLr = Arm64Reg
Arm64RegX29
  pred Arm64Reg
Arm64RegNzcv = Arm64Reg
Arm64RegX30
  pred Arm64Reg
Arm64RegSp = Arm64Reg
Arm64RegNzcv
  pred Arm64Reg
Arm64RegWsp = Arm64Reg
Arm64RegSp
  pred Arm64Reg
Arm64RegWzr = Arm64Reg
Arm64RegWsp
  pred Arm64Reg
Arm64RegXzr = Arm64Reg
Arm64RegWzr
  pred Arm64Reg
Arm64RegB0 = Arm64Reg
Arm64RegXzr
  pred Arm64Reg
Arm64RegB1 = Arm64Reg
Arm64RegB0
  pred Arm64Reg
Arm64RegB2 = Arm64Reg
Arm64RegB1
  pred Arm64Reg
Arm64RegB3 = Arm64Reg
Arm64RegB2
  pred Arm64Reg
Arm64RegB4 = Arm64Reg
Arm64RegB3
  pred Arm64Reg
Arm64RegB5 = Arm64Reg
Arm64RegB4
  pred Arm64Reg
Arm64RegB6 = Arm64Reg
Arm64RegB5
  pred Arm64Reg
Arm64RegB7 = Arm64Reg
Arm64RegB6
  pred Arm64Reg
Arm64RegB8 = Arm64Reg
Arm64RegB7
  pred Arm64Reg
Arm64RegB9 = Arm64Reg
Arm64RegB8
  pred Arm64Reg
Arm64RegB10 = Arm64Reg
Arm64RegB9
  pred Arm64Reg
Arm64RegB11 = Arm64Reg
Arm64RegB10
  pred Arm64Reg
Arm64RegB12 = Arm64Reg
Arm64RegB11
  pred Arm64Reg
Arm64RegB13 = Arm64Reg
Arm64RegB12
  pred Arm64Reg
Arm64RegB14 = Arm64Reg
Arm64RegB13
  pred Arm64Reg
Arm64RegB15 = Arm64Reg
Arm64RegB14
  pred Arm64Reg
Arm64RegB16 = Arm64Reg
Arm64RegB15
  pred Arm64Reg
Arm64RegB17 = Arm64Reg
Arm64RegB16
  pred Arm64Reg
Arm64RegB18 = Arm64Reg
Arm64RegB17
  pred Arm64Reg
Arm64RegB19 = Arm64Reg
Arm64RegB18
  pred Arm64Reg
Arm64RegB20 = Arm64Reg
Arm64RegB19
  pred Arm64Reg
Arm64RegB21 = Arm64Reg
Arm64RegB20
  pred Arm64Reg
Arm64RegB22 = Arm64Reg
Arm64RegB21
  pred Arm64Reg
Arm64RegB23 = Arm64Reg
Arm64RegB22
  pred Arm64Reg
Arm64RegB24 = Arm64Reg
Arm64RegB23
  pred Arm64Reg
Arm64RegB25 = Arm64Reg
Arm64RegB24
  pred Arm64Reg
Arm64RegB26 = Arm64Reg
Arm64RegB25
  pred Arm64Reg
Arm64RegB27 = Arm64Reg
Arm64RegB26
  pred Arm64Reg
Arm64RegB28 = Arm64Reg
Arm64RegB27
  pred Arm64Reg
Arm64RegB29 = Arm64Reg
Arm64RegB28
  pred Arm64Reg
Arm64RegB30 = Arm64Reg
Arm64RegB29
  pred Arm64Reg
Arm64RegB31 = Arm64Reg
Arm64RegB30
  pred Arm64Reg
Arm64RegD0 = Arm64Reg
Arm64RegB31
  pred Arm64Reg
Arm64RegD1 = Arm64Reg
Arm64RegD0
  pred Arm64Reg
Arm64RegD2 = Arm64Reg
Arm64RegD1
  pred Arm64Reg
Arm64RegD3 = Arm64Reg
Arm64RegD2
  pred Arm64Reg
Arm64RegD4 = Arm64Reg
Arm64RegD3
  pred Arm64Reg
Arm64RegD5 = Arm64Reg
Arm64RegD4
  pred Arm64Reg
Arm64RegD6 = Arm64Reg
Arm64RegD5
  pred Arm64Reg
Arm64RegD7 = Arm64Reg
Arm64RegD6
  pred Arm64Reg
Arm64RegD8 = Arm64Reg
Arm64RegD7
  pred Arm64Reg
Arm64RegD9 = Arm64Reg
Arm64RegD8
  pred Arm64Reg
Arm64RegD10 = Arm64Reg
Arm64RegD9
  pred Arm64Reg
Arm64RegD11 = Arm64Reg
Arm64RegD10
  pred Arm64Reg
Arm64RegD12 = Arm64Reg
Arm64RegD11
  pred Arm64Reg
Arm64RegD13 = Arm64Reg
Arm64RegD12
  pred Arm64Reg
Arm64RegD14 = Arm64Reg
Arm64RegD13
  pred Arm64Reg
Arm64RegD15 = Arm64Reg
Arm64RegD14
  pred Arm64Reg
Arm64RegD16 = Arm64Reg
Arm64RegD15
  pred Arm64Reg
Arm64RegD17 = Arm64Reg
Arm64RegD16
  pred Arm64Reg
Arm64RegD18 = Arm64Reg
Arm64RegD17
  pred Arm64Reg
Arm64RegD19 = Arm64Reg
Arm64RegD18
  pred Arm64Reg
Arm64RegD20 = Arm64Reg
Arm64RegD19
  pred Arm64Reg
Arm64RegD21 = Arm64Reg
Arm64RegD20
  pred Arm64Reg
Arm64RegD22 = Arm64Reg
Arm64RegD21
  pred Arm64Reg
Arm64RegD23 = Arm64Reg
Arm64RegD22
  pred Arm64Reg
Arm64RegD24 = Arm64Reg
Arm64RegD23
  pred Arm64Reg
Arm64RegD25 = Arm64Reg
Arm64RegD24
  pred Arm64Reg
Arm64RegD26 = Arm64Reg
Arm64RegD25
  pred Arm64Reg
Arm64RegD27 = Arm64Reg
Arm64RegD26
  pred Arm64Reg
Arm64RegD28 = Arm64Reg
Arm64RegD27
  pred Arm64Reg
Arm64RegD29 = Arm64Reg
Arm64RegD28
  pred Arm64Reg
Arm64RegD30 = Arm64Reg
Arm64RegD29
  pred Arm64Reg
Arm64RegD31 = Arm64Reg
Arm64RegD30
  pred Arm64Reg
Arm64RegH0 = Arm64Reg
Arm64RegD31
  pred Arm64Reg
Arm64RegH1 = Arm64Reg
Arm64RegH0
  pred Arm64Reg
Arm64RegH2 = Arm64Reg
Arm64RegH1
  pred Arm64Reg
Arm64RegH3 = Arm64Reg
Arm64RegH2
  pred Arm64Reg
Arm64RegH4 = Arm64Reg
Arm64RegH3
  pred Arm64Reg
Arm64RegH5 = Arm64Reg
Arm64RegH4
  pred Arm64Reg
Arm64RegH6 = Arm64Reg
Arm64RegH5
  pred Arm64Reg
Arm64RegH7 = Arm64Reg
Arm64RegH6
  pred Arm64Reg
Arm64RegH8 = Arm64Reg
Arm64RegH7
  pred Arm64Reg
Arm64RegH9 = Arm64Reg
Arm64RegH8
  pred Arm64Reg
Arm64RegH10 = Arm64Reg
Arm64RegH9
  pred Arm64Reg
Arm64RegH11 = Arm64Reg
Arm64RegH10
  pred Arm64Reg
Arm64RegH12 = Arm64Reg
Arm64RegH11
  pred Arm64Reg
Arm64RegH13 = Arm64Reg
Arm64RegH12
  pred Arm64Reg
Arm64RegH14 = Arm64Reg
Arm64RegH13
  pred Arm64Reg
Arm64RegH15 = Arm64Reg
Arm64RegH14
  pred Arm64Reg
Arm64RegH16 = Arm64Reg
Arm64RegH15
  pred Arm64Reg
Arm64RegH17 = Arm64Reg
Arm64RegH16
  pred Arm64Reg
Arm64RegH18 = Arm64Reg
Arm64RegH17
  pred Arm64Reg
Arm64RegH19 = Arm64Reg
Arm64RegH18
  pred Arm64Reg
Arm64RegH20 = Arm64Reg
Arm64RegH19
  pred Arm64Reg
Arm64RegH21 = Arm64Reg
Arm64RegH20
  pred Arm64Reg
Arm64RegH22 = Arm64Reg
Arm64RegH21
  pred Arm64Reg
Arm64RegH23 = Arm64Reg
Arm64RegH22
  pred Arm64Reg
Arm64RegH24 = Arm64Reg
Arm64RegH23
  pred Arm64Reg
Arm64RegH25 = Arm64Reg
Arm64RegH24
  pred Arm64Reg
Arm64RegH26 = Arm64Reg
Arm64RegH25
  pred Arm64Reg
Arm64RegH27 = Arm64Reg
Arm64RegH26
  pred Arm64Reg
Arm64RegH28 = Arm64Reg
Arm64RegH27
  pred Arm64Reg
Arm64RegH29 = Arm64Reg
Arm64RegH28
  pred Arm64Reg
Arm64RegH30 = Arm64Reg
Arm64RegH29
  pred Arm64Reg
Arm64RegH31 = Arm64Reg
Arm64RegH30
  pred Arm64Reg
Arm64RegQ0 = Arm64Reg
Arm64RegH31
  pred Arm64Reg
Arm64RegQ1 = Arm64Reg
Arm64RegQ0
  pred Arm64Reg
Arm64RegQ2 = Arm64Reg
Arm64RegQ1
  pred Arm64Reg
Arm64RegQ3 = Arm64Reg
Arm64RegQ2
  pred Arm64Reg
Arm64RegQ4 = Arm64Reg
Arm64RegQ3
  pred Arm64Reg
Arm64RegQ5 = Arm64Reg
Arm64RegQ4
  pred Arm64Reg
Arm64RegQ6 = Arm64Reg
Arm64RegQ5
  pred Arm64Reg
Arm64RegQ7 = Arm64Reg
Arm64RegQ6
  pred Arm64Reg
Arm64RegQ8 = Arm64Reg
Arm64RegQ7
  pred Arm64Reg
Arm64RegQ9 = Arm64Reg
Arm64RegQ8
  pred Arm64Reg
Arm64RegQ10 = Arm64Reg
Arm64RegQ9
  pred Arm64Reg
Arm64RegQ11 = Arm64Reg
Arm64RegQ10
  pred Arm64Reg
Arm64RegQ12 = Arm64Reg
Arm64RegQ11
  pred Arm64Reg
Arm64RegQ13 = Arm64Reg
Arm64RegQ12
  pred Arm64Reg
Arm64RegQ14 = Arm64Reg
Arm64RegQ13
  pred Arm64Reg
Arm64RegQ15 = Arm64Reg
Arm64RegQ14
  pred Arm64Reg
Arm64RegQ16 = Arm64Reg
Arm64RegQ15
  pred Arm64Reg
Arm64RegQ17 = Arm64Reg
Arm64RegQ16
  pred Arm64Reg
Arm64RegQ18 = Arm64Reg
Arm64RegQ17
  pred Arm64Reg
Arm64RegQ19 = Arm64Reg
Arm64RegQ18
  pred Arm64Reg
Arm64RegQ20 = Arm64Reg
Arm64RegQ19
  pred Arm64Reg
Arm64RegQ21 = Arm64Reg
Arm64RegQ20
  pred Arm64Reg
Arm64RegQ22 = Arm64Reg
Arm64RegQ21
  pred Arm64Reg
Arm64RegQ23 = Arm64Reg
Arm64RegQ22
  pred Arm64Reg
Arm64RegQ24 = Arm64Reg
Arm64RegQ23
  pred Arm64Reg
Arm64RegQ25 = Arm64Reg
Arm64RegQ24
  pred Arm64Reg
Arm64RegQ26 = Arm64Reg
Arm64RegQ25
  pred Arm64Reg
Arm64RegQ27 = Arm64Reg
Arm64RegQ26
  pred Arm64Reg
Arm64RegQ28 = Arm64Reg
Arm64RegQ27
  pred Arm64Reg
Arm64RegQ29 = Arm64Reg
Arm64RegQ28
  pred Arm64Reg
Arm64RegQ30 = Arm64Reg
Arm64RegQ29
  pred Arm64Reg
Arm64RegQ31 = Arm64Reg
Arm64RegQ30
  pred Arm64Reg
Arm64RegS0 = Arm64Reg
Arm64RegQ31
  pred Arm64Reg
Arm64RegS1 = Arm64Reg
Arm64RegS0
  pred Arm64Reg
Arm64RegS2 = Arm64Reg
Arm64RegS1
  pred Arm64Reg
Arm64RegS3 = Arm64Reg
Arm64RegS2
  pred Arm64Reg
Arm64RegS4 = Arm64Reg
Arm64RegS3
  pred Arm64Reg
Arm64RegS5 = Arm64Reg
Arm64RegS4
  pred Arm64Reg
Arm64RegS6 = Arm64Reg
Arm64RegS5
  pred Arm64Reg
Arm64RegS7 = Arm64Reg
Arm64RegS6
  pred Arm64Reg
Arm64RegS8 = Arm64Reg
Arm64RegS7
  pred Arm64Reg
Arm64RegS9 = Arm64Reg
Arm64RegS8
  pred Arm64Reg
Arm64RegS10 = Arm64Reg
Arm64RegS9
  pred Arm64Reg
Arm64RegS11 = Arm64Reg
Arm64RegS10
  pred Arm64Reg
Arm64RegS12 = Arm64Reg
Arm64RegS11
  pred Arm64Reg
Arm64RegS13 = Arm64Reg
Arm64RegS12
  pred Arm64Reg
Arm64RegS14 = Arm64Reg
Arm64RegS13
  pred Arm64Reg
Arm64RegS15 = Arm64Reg
Arm64RegS14
  pred Arm64Reg
Arm64RegS16 = Arm64Reg
Arm64RegS15
  pred Arm64Reg
Arm64RegS17 = Arm64Reg
Arm64RegS16
  pred Arm64Reg
Arm64RegS18 = Arm64Reg
Arm64RegS17
  pred Arm64Reg
Arm64RegS19 = Arm64Reg
Arm64RegS18
  pred Arm64Reg
Arm64RegS20 = Arm64Reg
Arm64RegS19
  pred Arm64Reg
Arm64RegS21 = Arm64Reg
Arm64RegS20
  pred Arm64Reg
Arm64RegS22 = Arm64Reg
Arm64RegS21
  pred Arm64Reg
Arm64RegS23 = Arm64Reg
Arm64RegS22
  pred Arm64Reg
Arm64RegS24 = Arm64Reg
Arm64RegS23
  pred Arm64Reg
Arm64RegS25 = Arm64Reg
Arm64RegS24
  pred Arm64Reg
Arm64RegS26 = Arm64Reg
Arm64RegS25
  pred Arm64Reg
Arm64RegS27 = Arm64Reg
Arm64RegS26
  pred Arm64Reg
Arm64RegS28 = Arm64Reg
Arm64RegS27
  pred Arm64Reg
Arm64RegS29 = Arm64Reg
Arm64RegS28
  pred Arm64Reg
Arm64RegS30 = Arm64Reg
Arm64RegS29
  pred Arm64Reg
Arm64RegS31 = Arm64Reg
Arm64RegS30
  pred Arm64Reg
Arm64RegW0 = Arm64Reg
Arm64RegS31
  pred Arm64Reg
Arm64RegW1 = Arm64Reg
Arm64RegW0
  pred Arm64Reg
Arm64RegW2 = Arm64Reg
Arm64RegW1
  pred Arm64Reg
Arm64RegW3 = Arm64Reg
Arm64RegW2
  pred Arm64Reg
Arm64RegW4 = Arm64Reg
Arm64RegW3
  pred Arm64Reg
Arm64RegW5 = Arm64Reg
Arm64RegW4
  pred Arm64Reg
Arm64RegW6 = Arm64Reg
Arm64RegW5
  pred Arm64Reg
Arm64RegW7 = Arm64Reg
Arm64RegW6
  pred Arm64Reg
Arm64RegW8 = Arm64Reg
Arm64RegW7
  pred Arm64Reg
Arm64RegW9 = Arm64Reg
Arm64RegW8
  pred Arm64Reg
Arm64RegW10 = Arm64Reg
Arm64RegW9
  pred Arm64Reg
Arm64RegW11 = Arm64Reg
Arm64RegW10
  pred Arm64Reg
Arm64RegW12 = Arm64Reg
Arm64RegW11
  pred Arm64Reg
Arm64RegW13 = Arm64Reg
Arm64RegW12
  pred Arm64Reg
Arm64RegW14 = Arm64Reg
Arm64RegW13
  pred Arm64Reg
Arm64RegW15 = Arm64Reg
Arm64RegW14
  pred Arm64Reg
Arm64RegW16 = Arm64Reg
Arm64RegW15
  pred Arm64Reg
Arm64RegW17 = Arm64Reg
Arm64RegW16
  pred Arm64Reg
Arm64RegW18 = Arm64Reg
Arm64RegW17
  pred Arm64Reg
Arm64RegW19 = Arm64Reg
Arm64RegW18
  pred Arm64Reg
Arm64RegW20 = Arm64Reg
Arm64RegW19
  pred Arm64Reg
Arm64RegW21 = Arm64Reg
Arm64RegW20
  pred Arm64Reg
Arm64RegW22 = Arm64Reg
Arm64RegW21
  pred Arm64Reg
Arm64RegW23 = Arm64Reg
Arm64RegW22
  pred Arm64Reg
Arm64RegW24 = Arm64Reg
Arm64RegW23
  pred Arm64Reg
Arm64RegW25 = Arm64Reg
Arm64RegW24
  pred Arm64Reg
Arm64RegW26 = Arm64Reg
Arm64RegW25
  pred Arm64Reg
Arm64RegW27 = Arm64Reg
Arm64RegW26
  pred Arm64Reg
Arm64RegW28 = Arm64Reg
Arm64RegW27
  pred Arm64Reg
Arm64RegW29 = Arm64Reg
Arm64RegW28
  pred Arm64Reg
Arm64RegW30 = Arm64Reg
Arm64RegW29
  pred Arm64Reg
Arm64RegX0 = Arm64Reg
Arm64RegW30
  pred Arm64Reg
Arm64RegX1 = Arm64Reg
Arm64RegX0
  pred Arm64Reg
Arm64RegX2 = Arm64Reg
Arm64RegX1
  pred Arm64Reg
Arm64RegX3 = Arm64Reg
Arm64RegX2
  pred Arm64Reg
Arm64RegX4 = Arm64Reg
Arm64RegX3
  pred Arm64Reg
Arm64RegX5 = Arm64Reg
Arm64RegX4
  pred Arm64Reg
Arm64RegX6 = Arm64Reg
Arm64RegX5
  pred Arm64Reg
Arm64RegX7 = Arm64Reg
Arm64RegX6
  pred Arm64Reg
Arm64RegX8 = Arm64Reg
Arm64RegX7
  pred Arm64Reg
Arm64RegX9 = Arm64Reg
Arm64RegX8
  pred Arm64Reg
Arm64RegX10 = Arm64Reg
Arm64RegX9
  pred Arm64Reg
Arm64RegX11 = Arm64Reg
Arm64RegX10
  pred Arm64Reg
Arm64RegX12 = Arm64Reg
Arm64RegX11
  pred Arm64Reg
Arm64RegX13 = Arm64Reg
Arm64RegX12
  pred Arm64Reg
Arm64RegX14 = Arm64Reg
Arm64RegX13
  pred Arm64Reg
Arm64RegX15 = Arm64Reg
Arm64RegX14
  pred Arm64Reg
Arm64RegX16 = Arm64Reg
Arm64RegX15
  pred Arm64Reg
Arm64RegIp0 = Arm64Reg
Arm64RegX15
  pred Arm64Reg
Arm64RegX17 = Arm64Reg
Arm64RegX16
  pred Arm64Reg
Arm64RegIp1 = Arm64Reg
Arm64RegX16
  pred Arm64Reg
Arm64RegX18 = Arm64Reg
Arm64RegX17
  pred Arm64Reg
Arm64RegX19 = Arm64Reg
Arm64RegX18
  pred Arm64Reg
Arm64RegX20 = Arm64Reg
Arm64RegX19
  pred Arm64Reg
Arm64RegX21 = Arm64Reg
Arm64RegX20
  pred Arm64Reg
Arm64RegX22 = Arm64Reg
Arm64RegX21
  pred Arm64Reg
Arm64RegX23 = Arm64Reg
Arm64RegX22
  pred Arm64Reg
Arm64RegX24 = Arm64Reg
Arm64RegX23
  pred Arm64Reg
Arm64RegX25 = Arm64Reg
Arm64RegX24
  pred Arm64Reg
Arm64RegX26 = Arm64Reg
Arm64RegX25
  pred Arm64Reg
Arm64RegX27 = Arm64Reg
Arm64RegX26
  pred Arm64Reg
Arm64RegX28 = Arm64Reg
Arm64RegX27
  pred Arm64Reg
Arm64RegV0 = Arm64Reg
Arm64RegX28
  pred Arm64Reg
Arm64RegV1 = Arm64Reg
Arm64RegV0
  pred Arm64Reg
Arm64RegV2 = Arm64Reg
Arm64RegV1
  pred Arm64Reg
Arm64RegV3 = Arm64Reg
Arm64RegV2
  pred Arm64Reg
Arm64RegV4 = Arm64Reg
Arm64RegV3
  pred Arm64Reg
Arm64RegV5 = Arm64Reg
Arm64RegV4
  pred Arm64Reg
Arm64RegV6 = Arm64Reg
Arm64RegV5
  pred Arm64Reg
Arm64RegV7 = Arm64Reg
Arm64RegV6
  pred Arm64Reg
Arm64RegV8 = Arm64Reg
Arm64RegV7
  pred Arm64Reg
Arm64RegV9 = Arm64Reg
Arm64RegV8
  pred Arm64Reg
Arm64RegV10 = Arm64Reg
Arm64RegV9
  pred Arm64Reg
Arm64RegV11 = Arm64Reg
Arm64RegV10
  pred Arm64Reg
Arm64RegV12 = Arm64Reg
Arm64RegV11
  pred Arm64Reg
Arm64RegV13 = Arm64Reg
Arm64RegV12
  pred Arm64Reg
Arm64RegV14 = Arm64Reg
Arm64RegV13
  pred Arm64Reg
Arm64RegV15 = Arm64Reg
Arm64RegV14
  pred Arm64Reg
Arm64RegV16 = Arm64Reg
Arm64RegV15
  pred Arm64Reg
Arm64RegV17 = Arm64Reg
Arm64RegV16
  pred Arm64Reg
Arm64RegV18 = Arm64Reg
Arm64RegV17
  pred Arm64Reg
Arm64RegV19 = Arm64Reg
Arm64RegV18
  pred Arm64Reg
Arm64RegV20 = Arm64Reg
Arm64RegV19
  pred Arm64Reg
Arm64RegV21 = Arm64Reg
Arm64RegV20
  pred Arm64Reg
Arm64RegV22 = Arm64Reg
Arm64RegV21
  pred Arm64Reg
Arm64RegV23 = Arm64Reg
Arm64RegV22
  pred Arm64Reg
Arm64RegV24 = Arm64Reg
Arm64RegV23
  pred Arm64Reg
Arm64RegV25 = Arm64Reg
Arm64RegV24
  pred Arm64Reg
Arm64RegV26 = Arm64Reg
Arm64RegV25
  pred Arm64Reg
Arm64RegV27 = Arm64Reg
Arm64RegV26
  pred Arm64Reg
Arm64RegV28 = Arm64Reg
Arm64RegV27
  pred Arm64Reg
Arm64RegV29 = Arm64Reg
Arm64RegV28
  pred Arm64Reg
Arm64RegV30 = Arm64Reg
Arm64RegV29
  pred Arm64Reg
Arm64RegV31 = Arm64Reg
Arm64RegV30
  pred Arm64Reg
Arm64RegEnding = Arm64Reg
Arm64RegV31
  pred Arm64Reg
Arm64RegInvalid = String -> Arm64Reg
forall a. HasCallStack => String -> a
error String
"Arm64Reg.pred: Arm64RegInvalid has no predecessor"

  enumFromTo :: Arm64Reg -> Arm64Reg -> [Arm64Reg]
enumFromTo Arm64Reg
from to = go from
    where
      end :: Int
end = Arm64Reg -> Int
forall a. Enum a => a -> Int
fromEnum Arm64Reg
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)
                 EQ -> [v]
                 Ordering
GT -> []

  enumFrom :: Arm64Reg -> [Arm64Reg]
enumFrom Arm64Reg
from = enumFromTo Arm64Reg
from Arm64Reg
Arm64RegEnding

  fromEnum Arm64RegInvalid = 0
  fromEnum Arm64RegX29 = 1
  fromEnum Arm64RegFp = 1
  fromEnum Arm64RegX30 = 2
  fromEnum Arm64RegLr = 2
  fromEnum Arm64RegNzcv = 3
  fromEnum Arm64RegSp = 4
  fromEnum Arm64RegWsp = 5
  fromEnum Arm64RegWzr = 6
  fromEnum Arm64RegXzr = 7
  fromEnum Arm64RegB0 = 8
  fromEnum Arm64RegB1 = 9
  fromEnum Arm64RegB2 = 10
  fromEnum Arm64RegB3 = 11
  fromEnum Arm64RegB4 = 12
  fromEnum Arm64RegB5 = 13
  fromEnum Arm64RegB6 = 14
  fromEnum Arm64RegB7 = 15
  fromEnum Arm64RegB8 = 16
  fromEnum Arm64RegB9 = 17
  fromEnum Arm64RegB10 = 18
  fromEnum Arm64RegB11 = 19
  fromEnum Arm64RegB12 = 20
  fromEnum Arm64RegB13 = 21
  fromEnum Arm64RegB14 = 22
  fromEnum Arm64RegB15 = 23
  fromEnum Arm64RegB16 = 24
  fromEnum Arm64RegB17 = 25
  fromEnum Arm64RegB18 = 26
  fromEnum Arm64RegB19 = 27
  fromEnum Arm64RegB20 = 28
  fromEnum Arm64RegB21 = 29
  fromEnum Arm64RegB22 = 30
  fromEnum Arm64RegB23 = 31
  fromEnum Arm64RegB24 = 32
  fromEnum Arm64RegB25 = 33
  fromEnum Arm64RegB26 = 34
  fromEnum Arm64RegB27 = 35
  fromEnum Arm64RegB28 = 36
  fromEnum Arm64RegB29 = 37
  fromEnum Arm64RegB30 = 38
  fromEnum Arm64RegB31 = 39
  fromEnum Arm64RegD0 = 40
  fromEnum Arm64RegD1 = 41
  fromEnum Arm64RegD2 = 42
  fromEnum Arm64RegD3 = 43
  fromEnum Arm64RegD4 = 44
  fromEnum Arm64RegD5 = 45
  fromEnum Arm64RegD6 = 46
  fromEnum Arm64RegD7 = 47
  fromEnum Arm64RegD8 = 48
  fromEnum Arm64RegD9 = 49
  fromEnum Arm64RegD10 = 50
  fromEnum Arm64RegD11 = 51
  fromEnum Arm64RegD12 = 52
  fromEnum Arm64RegD13 = 53
  fromEnum Arm64RegD14 = 54
  fromEnum Arm64RegD15 = 55
  fromEnum Arm64RegD16 = 56
  fromEnum Arm64RegD17 = 57
  fromEnum Arm64RegD18 = 58
  fromEnum Arm64RegD19 = 59
  fromEnum Arm64RegD20 = 60
  fromEnum Arm64RegD21 = 61
  fromEnum Arm64RegD22 = 62
  fromEnum Arm64RegD23 = 63
  fromEnum Arm64RegD24 = 64
  fromEnum Arm64RegD25 = 65
  fromEnum Arm64RegD26 = 66
  fromEnum Arm64RegD27 = 67
  fromEnum Arm64RegD28 = 68
  fromEnum Arm64RegD29 = 69
  fromEnum Arm64RegD30 = 70
  fromEnum Arm64RegD31 = 71
  fromEnum Arm64RegH0 = 72
  fromEnum Arm64RegH1 = 73
  fromEnum Arm64RegH2 = 74
  fromEnum Arm64RegH3 = 75
  fromEnum Arm64RegH4 = 76
  fromEnum Arm64RegH5 = 77
  fromEnum Arm64RegH6 = 78
  fromEnum Arm64RegH7 = 79
  fromEnum Arm64RegH8 = 80
  fromEnum Arm64RegH9 = 81
  fromEnum Arm64RegH10 = 82
  fromEnum Arm64RegH11 = 83
  fromEnum Arm64RegH12 = 84
  fromEnum Arm64RegH13 = 85
  fromEnum Arm64RegH14 = 86
  fromEnum Arm64RegH15 = 87
  fromEnum Arm64RegH16 = 88
  fromEnum Arm64RegH17 = 89
  fromEnum Arm64RegH18 = 90
  fromEnum Arm64RegH19 = 91
  fromEnum Arm64RegH20 = 92
  fromEnum Arm64RegH21 = 93
  fromEnum Arm64RegH22 = 94
  fromEnum Arm64RegH23 = 95
  fromEnum Arm64RegH24 = 96
  fromEnum Arm64RegH25 = 97
  fromEnum Arm64RegH26 = 98
  fromEnum Arm64RegH27 = 99
  fromEnum Arm64RegH28 = 100
  fromEnum Arm64RegH29 = 101
  fromEnum Arm64RegH30 = 102
  fromEnum Arm64RegH31 = 103
  fromEnum Arm64RegQ0 = 104
  fromEnum Arm64RegQ1 = 105
  fromEnum Arm64RegQ2 = 106
  fromEnum Arm64RegQ3 = 107
  fromEnum Arm64RegQ4 = 108
  fromEnum Arm64RegQ5 = 109
  fromEnum Arm64RegQ6 = 110
  fromEnum Arm64RegQ7 = 111
  fromEnum Arm64RegQ8 = 112
  fromEnum Arm64RegQ9 = 113
  fromEnum Arm64RegQ10 = 114
  fromEnum Arm64RegQ11 = 115
  fromEnum Arm64RegQ12 = 116
  fromEnum Arm64RegQ13 = 117
  fromEnum Arm64RegQ14 = 118
  fromEnum Arm64RegQ15 = 119
  fromEnum Arm64RegQ16 = 120
  fromEnum Arm64RegQ17 = 121
  fromEnum Arm64RegQ18 = 122
  fromEnum Arm64RegQ19 = 123
  fromEnum Arm64RegQ20 = 124
  fromEnum Arm64RegQ21 = 125
  fromEnum Arm64RegQ22 = 126
  fromEnum Arm64RegQ23 = 127
  fromEnum Arm64RegQ24 = 128
  fromEnum Arm64RegQ25 = 129
  fromEnum Arm64RegQ26 = 130
  fromEnum Arm64RegQ27 = 131
  fromEnum Arm64RegQ28 = 132
  fromEnum Arm64RegQ29 = 133
  fromEnum Arm64RegQ30 = 134
  fromEnum Arm64RegQ31 = 135
  fromEnum Arm64RegS0 = 136
  fromEnum Arm64RegS1 = 137
  fromEnum Arm64RegS2 = 138
  fromEnum Arm64RegS3 = 139
  fromEnum Arm64RegS4 = 140
  fromEnum Arm64RegS5 = 141
  fromEnum Arm64RegS6 = 142
  fromEnum Arm64RegS7 = 143
  fromEnum Arm64RegS8 = 144
  fromEnum Arm64RegS9 = 145
  fromEnum Arm64RegS10 = 146
  fromEnum Arm64RegS11 = 147
  fromEnum Arm64RegS12 = 148
  fromEnum Arm64RegS13 = 149
  fromEnum Arm64RegS14 = 150
  fromEnum Arm64RegS15 = 151
  fromEnum Arm64RegS16 = 152
  fromEnum Arm64RegS17 = 153
  fromEnum Arm64RegS18 = 154
  fromEnum Arm64RegS19 = 155
  fromEnum Arm64RegS20 = 156
  fromEnum Arm64RegS21 = 157
  fromEnum Arm64RegS22 = 158
  fromEnum Arm64RegS23 = 159
  fromEnum Arm64RegS24 = 160
  fromEnum Arm64RegS25 = 161
  fromEnum Arm64RegS26 = 162
  fromEnum Arm64RegS27 = 163
  fromEnum Arm64RegS28 = 164
  fromEnum Arm64RegS29 = 165
  fromEnum Arm64RegS30 = 166
  fromEnum Arm64RegS31 = 167
  fromEnum Arm64RegW0 = 168
  fromEnum Arm64RegW1 = 169
  fromEnum Arm64RegW2 = 170
  fromEnum Arm64RegW3 = 171
  fromEnum Arm64RegW4 = 172
  fromEnum Arm64RegW5 = 173
  fromEnum Arm64RegW6 = 174
  fromEnum Arm64RegW7 = 175
  fromEnum Arm64RegW8 = 176
  fromEnum Arm64RegW9 = 177
  fromEnum Arm64RegW10 = 178
  fromEnum Arm64RegW11 = 179
  fromEnum Arm64RegW12 = 180
  fromEnum Arm64RegW13 = 181
  fromEnum Arm64RegW14 = 182
  fromEnum Arm64RegW15 = 183
  fromEnum Arm64RegW16 = 184
  fromEnum Arm64RegW17 = 185
  fromEnum Arm64RegW18 = 186
  fromEnum Arm64RegW19 = 187
  fromEnum Arm64RegW20 = 188
  fromEnum Arm64RegW21 = 189
  fromEnum Arm64RegW22 = 190
  fromEnum Arm64RegW23 = 191
  fromEnum Arm64RegW24 = 192
  fromEnum Arm64RegW25 = 193
  fromEnum Arm64RegW26 = 194
  fromEnum Arm64RegW27 = 195
  fromEnum Arm64RegW28 = 196
  fromEnum Arm64RegW29 = 197
  fromEnum Arm64RegW30 = 198
  fromEnum Arm64RegX0 = 199
  fromEnum Arm64RegX1 = 200
  fromEnum Arm64RegX2 = 201
  fromEnum Arm64RegX3 = 202
  fromEnum Arm64RegX4 = 203
  fromEnum Arm64RegX5 = 204
  fromEnum Arm64RegX6 = 205
  fromEnum Arm64RegX7 = 206
  fromEnum Arm64RegX8 = 207
  fromEnum Arm64RegX9 = 208
  fromEnum Arm64RegX10 = 209
  fromEnum Arm64RegX11 = 210
  fromEnum Arm64RegX12 = 211
  fromEnum Arm64RegX13 = 212
  fromEnum Arm64RegX14 = 213
  fromEnum Arm64RegX15 = 214
  fromEnum Arm64RegX16 = 215
  fromEnum Arm64RegIp0 = 215
  fromEnum Arm64RegX17 = 216
  fromEnum Arm64RegIp1 = 216
  fromEnum Arm64RegX18 = 217
  fromEnum Arm64RegX19 = 218
  fromEnum Arm64RegX20 = 219
  fromEnum Arm64RegX21 = 220
  fromEnum Arm64RegX22 = 221
  fromEnum Arm64RegX23 = 222
  fromEnum Arm64RegX24 = 223
  fromEnum Arm64RegX25 = 224
  fromEnum Arm64RegX26 = 225
  fromEnum Arm64RegX27 = 226
  fromEnum Arm64RegX28 = 227
  fromEnum Arm64RegV0 = 228
  fromEnum Arm64RegV1 = 229
  fromEnum Arm64RegV2 = 230
  fromEnum Arm64RegV3 = 231
  fromEnum Arm64RegV4 = 232
  fromEnum Arm64RegV5 = 233
  fromEnum Arm64RegV6 = 234
  fromEnum Arm64RegV7 = 235
  fromEnum Arm64RegV8 = 236
  fromEnum Arm64RegV9 = 237
  fromEnum Arm64RegV10 = 238
  fromEnum Arm64RegV11 = 239
  fromEnum Arm64RegV12 = 240
  fromEnum Arm64RegV13 = 241
  fromEnum Arm64RegV14 = 242
  fromEnum Arm64RegV15 = 243
  fromEnum Arm64RegV16 = 244
  fromEnum Arm64RegV17 = 245
  fromEnum Arm64RegV18 = 246
  fromEnum Arm64RegV19 = 247
  fromEnum Arm64RegV20 = 248
  fromEnum Arm64RegV21 = 249
  fromEnum Arm64RegV22 = 250
  fromEnum Arm64RegV23 = 251
  fromEnum Arm64RegV24 = 252
  fromEnum Arm64RegV25 = 253
  fromEnum Arm64RegV26 = 254
  fromEnum Arm64RegV27 = 255
  fromEnum Arm64RegV28 = 256
  fromEnum Arm64RegV29 = 257
  fromEnum Arm64RegV30 = 258
  fromEnum Arm64RegV31 = 259
  fromEnum Arm64RegEnding = 260

  toEnum :: Int -> Arm64Reg
toEnum Int
0 = Arm64Reg
Arm64RegInvalid
  toEnum 1 = Arm64Reg
Arm64RegX29
  toEnum 2 = Arm64Reg
Arm64RegX30
  toEnum 3 = Arm64Reg
Arm64RegNzcv
  toEnum 4 = Arm64Reg
Arm64RegSp
  toEnum 5 = Arm64Reg
Arm64RegWsp
  toEnum 6 = Arm64Reg
Arm64RegWzr
  toEnum 7 = Arm64Reg
Arm64RegXzr
  toEnum 8 = Arm64Reg
Arm64RegB0
  toEnum 9 = Arm64Reg
Arm64RegB1
  toEnum 10 = Arm64Reg
Arm64RegB2
  toEnum 11 = Arm64Reg
Arm64RegB3
  toEnum 12 = Arm64Reg
Arm64RegB4
  toEnum 13 = Arm64Reg
Arm64RegB5
  toEnum 14 = Arm64Reg
Arm64RegB6
  toEnum 15 = Arm64Reg
Arm64RegB7
  toEnum 16 = Arm64Reg
Arm64RegB8
  toEnum 17 = Arm64Reg
Arm64RegB9
  toEnum 18 = Arm64Reg
Arm64RegB10
  toEnum 19 = Arm64Reg
Arm64RegB11
  toEnum 20 = Arm64Reg
Arm64RegB12
  toEnum 21 = Arm64Reg
Arm64RegB13
  toEnum 22 = Arm64Reg
Arm64RegB14
  toEnum 23 = Arm64Reg
Arm64RegB15
  toEnum 24 = Arm64Reg
Arm64RegB16
  toEnum 25 = Arm64Reg
Arm64RegB17
  toEnum 26 = Arm64Reg
Arm64RegB18
  toEnum 27 = Arm64Reg
Arm64RegB19
  toEnum 28 = Arm64Reg
Arm64RegB20
  toEnum 29 = Arm64Reg
Arm64RegB21
  toEnum 30 = Arm64Reg
Arm64RegB22
  toEnum 31 = Arm64Reg
Arm64RegB23
  toEnum 32 = Arm64Reg
Arm64RegB24
  toEnum 33 = Arm64Reg
Arm64RegB25
  toEnum 34 = Arm64Reg
Arm64RegB26
  toEnum 35 = Arm64Reg
Arm64RegB27
  toEnum 36 = Arm64Reg
Arm64RegB28
  toEnum 37 = Arm64Reg
Arm64RegB29
  toEnum 38 = Arm64Reg
Arm64RegB30
  toEnum 39 = Arm64Reg
Arm64RegB31
  toEnum 40 = Arm64Reg
Arm64RegD0
  toEnum 41 = Arm64Reg
Arm64RegD1
  toEnum 42 = Arm64Reg
Arm64RegD2
  toEnum 43 = Arm64Reg
Arm64RegD3
  toEnum 44 = Arm64Reg
Arm64RegD4
  toEnum 45 = Arm64Reg
Arm64RegD5
  toEnum 46 = Arm64Reg
Arm64RegD6
  toEnum 47 = Arm64Reg
Arm64RegD7
  toEnum 48 = Arm64Reg
Arm64RegD8
  toEnum 49 = Arm64Reg
Arm64RegD9
  toEnum 50 = Arm64Reg
Arm64RegD10
  toEnum 51 = Arm64Reg
Arm64RegD11
  toEnum 52 = Arm64Reg
Arm64RegD12
  toEnum 53 = Arm64Reg
Arm64RegD13
  toEnum 54 = Arm64Reg
Arm64RegD14
  toEnum 55 = Arm64Reg
Arm64RegD15
  toEnum 56 = Arm64Reg
Arm64RegD16
  toEnum 57 = Arm64Reg
Arm64RegD17
  toEnum 58 = Arm64Reg
Arm64RegD18
  toEnum 59 = Arm64Reg
Arm64RegD19
  toEnum 60 = Arm64Reg
Arm64RegD20
  toEnum 61 = Arm64Reg
Arm64RegD21
  toEnum 62 = Arm64Reg
Arm64RegD22
  toEnum 63 = Arm64Reg
Arm64RegD23
  toEnum 64 = Arm64Reg
Arm64RegD24
  toEnum 65 = Arm64Reg
Arm64RegD25
  toEnum 66 = Arm64Reg
Arm64RegD26
  toEnum 67 = Arm64Reg
Arm64RegD27
  toEnum 68 = Arm64Reg
Arm64RegD28
  toEnum 69 = Arm64Reg
Arm64RegD29
  toEnum 70 = Arm64Reg
Arm64RegD30
  toEnum 71 = Arm64Reg
Arm64RegD31
  toEnum 72 = Arm64Reg
Arm64RegH0
  toEnum 73 = Arm64Reg
Arm64RegH1
  toEnum 74 = Arm64Reg
Arm64RegH2
  toEnum 75 = Arm64Reg
Arm64RegH3
  toEnum 76 = Arm64Reg
Arm64RegH4
  toEnum 77 = Arm64Reg
Arm64RegH5
  toEnum 78 = Arm64Reg
Arm64RegH6
  toEnum 79 = Arm64Reg
Arm64RegH7
  toEnum 80 = Arm64Reg
Arm64RegH8
  toEnum 81 = Arm64Reg
Arm64RegH9
  toEnum 82 = Arm64Reg
Arm64RegH10
  toEnum 83 = Arm64Reg
Arm64RegH11
  toEnum 84 = Arm64Reg
Arm64RegH12
  toEnum 85 = Arm64Reg
Arm64RegH13
  toEnum 86 = Arm64Reg
Arm64RegH14
  toEnum 87 = Arm64Reg
Arm64RegH15
  toEnum 88 = Arm64Reg
Arm64RegH16
  toEnum 89 = Arm64Reg
Arm64RegH17
  toEnum 90 = Arm64Reg
Arm64RegH18
  toEnum 91 = Arm64Reg
Arm64RegH19
  toEnum 92 = Arm64Reg
Arm64RegH20
  toEnum 93 = Arm64Reg
Arm64RegH21
  toEnum 94 = Arm64Reg
Arm64RegH22
  toEnum 95 = Arm64Reg
Arm64RegH23
  toEnum 96 = Arm64Reg
Arm64RegH24
  toEnum 97 = Arm64Reg
Arm64RegH25
  toEnum 98 = Arm64Reg
Arm64RegH26
  toEnum 99 = Arm64Reg
Arm64RegH27
  toEnum 100 = Arm64Reg
Arm64RegH28
  toEnum 101 = Arm64Reg
Arm64RegH29
  toEnum 102 = Arm64Reg
Arm64RegH30
  toEnum 103 = Arm64Reg
Arm64RegH31
  toEnum 104 = Arm64Reg
Arm64RegQ0
  toEnum 105 = Arm64Reg
Arm64RegQ1
  toEnum 106 = Arm64Reg
Arm64RegQ2
  toEnum 107 = Arm64Reg
Arm64RegQ3
  toEnum 108 = Arm64Reg
Arm64RegQ4
  toEnum 109 = Arm64Reg
Arm64RegQ5
  toEnum 110 = Arm64Reg
Arm64RegQ6
  toEnum 111 = Arm64Reg
Arm64RegQ7
  toEnum 112 = Arm64Reg
Arm64RegQ8
  toEnum 113 = Arm64Reg
Arm64RegQ9
  toEnum 114 = Arm64Reg
Arm64RegQ10
  toEnum 115 = Arm64Reg
Arm64RegQ11
  toEnum 116 = Arm64Reg
Arm64RegQ12
  toEnum 117 = Arm64Reg
Arm64RegQ13
  toEnum 118 = Arm64Reg
Arm64RegQ14
  toEnum 119 = Arm64Reg
Arm64RegQ15
  toEnum 120 = Arm64Reg
Arm64RegQ16
  toEnum 121 = Arm64Reg
Arm64RegQ17
  toEnum 122 = Arm64Reg
Arm64RegQ18
  toEnum 123 = Arm64Reg
Arm64RegQ19
  toEnum 124 = Arm64Reg
Arm64RegQ20
  toEnum 125 = Arm64Reg
Arm64RegQ21
  toEnum 126 = Arm64Reg
Arm64RegQ22
  toEnum 127 = Arm64Reg
Arm64RegQ23
  toEnum 128 = Arm64Reg
Arm64RegQ24
  toEnum 129 = Arm64Reg
Arm64RegQ25
  toEnum 130 = Arm64Reg
Arm64RegQ26
  toEnum 131 = Arm64Reg
Arm64RegQ27
  toEnum 132 = Arm64Reg
Arm64RegQ28
  toEnum 133 = Arm64Reg
Arm64RegQ29
  toEnum 134 = Arm64Reg
Arm64RegQ30
  toEnum 135 = Arm64Reg
Arm64RegQ31
  toEnum 136 = Arm64Reg
Arm64RegS0
  toEnum 137 = Arm64Reg
Arm64RegS1
  toEnum 138 = Arm64Reg
Arm64RegS2
  toEnum 139 = Arm64Reg
Arm64RegS3
  toEnum 140 = Arm64Reg
Arm64RegS4
  toEnum 141 = Arm64Reg
Arm64RegS5
  toEnum 142 = Arm64Reg
Arm64RegS6
  toEnum 143 = Arm64Reg
Arm64RegS7
  toEnum 144 = Arm64Reg
Arm64RegS8
  toEnum 145 = Arm64Reg
Arm64RegS9
  toEnum 146 = Arm64Reg
Arm64RegS10
  toEnum 147 = Arm64Reg
Arm64RegS11
  toEnum 148 = Arm64Reg
Arm64RegS12
  toEnum 149 = Arm64Reg
Arm64RegS13
  toEnum 150 = Arm64Reg
Arm64RegS14
  toEnum 151 = Arm64Reg
Arm64RegS15
  toEnum 152 = Arm64Reg
Arm64RegS16
  toEnum 153 = Arm64Reg
Arm64RegS17
  toEnum 154 = Arm64Reg
Arm64RegS18
  toEnum 155 = Arm64Reg
Arm64RegS19
  toEnum 156 = Arm64Reg
Arm64RegS20
  toEnum 157 = Arm64Reg
Arm64RegS21
  toEnum 158 = Arm64Reg
Arm64RegS22
  toEnum 159 = Arm64Reg
Arm64RegS23
  toEnum 160 = Arm64Reg
Arm64RegS24
  toEnum 161 = Arm64Reg
Arm64RegS25
  toEnum 162 = Arm64Reg
Arm64RegS26
  toEnum 163 = Arm64Reg
Arm64RegS27
  toEnum 164 = Arm64Reg
Arm64RegS28
  toEnum 165 = Arm64Reg
Arm64RegS29
  toEnum 166 = Arm64Reg
Arm64RegS30
  toEnum 167 = Arm64Reg
Arm64RegS31
  toEnum 168 = Arm64Reg
Arm64RegW0
  toEnum 169 = Arm64Reg
Arm64RegW1
  toEnum 170 = Arm64Reg
Arm64RegW2
  toEnum 171 = Arm64Reg
Arm64RegW3
  toEnum 172 = Arm64Reg
Arm64RegW4
  toEnum 173 = Arm64Reg
Arm64RegW5
  toEnum 174 = Arm64Reg
Arm64RegW6
  toEnum 175 = Arm64Reg
Arm64RegW7
  toEnum 176 = Arm64Reg
Arm64RegW8
  toEnum 177 = Arm64Reg
Arm64RegW9
  toEnum 178 = Arm64Reg
Arm64RegW10
  toEnum 179 = Arm64Reg
Arm64RegW11
  toEnum 180 = Arm64Reg
Arm64RegW12
  toEnum 181 = Arm64Reg
Arm64RegW13
  toEnum 182 = Arm64Reg
Arm64RegW14
  toEnum 183 = Arm64Reg
Arm64RegW15
  toEnum 184 = Arm64Reg
Arm64RegW16
  toEnum 185 = Arm64Reg
Arm64RegW17
  toEnum 186 = Arm64Reg
Arm64RegW18
  toEnum 187 = Arm64Reg
Arm64RegW19
  toEnum 188 = Arm64Reg
Arm64RegW20
  toEnum 189 = Arm64Reg
Arm64RegW21
  toEnum 190 = Arm64Reg
Arm64RegW22
  toEnum 191 = Arm64Reg
Arm64RegW23
  toEnum 192 = Arm64Reg
Arm64RegW24
  toEnum 193 = Arm64Reg
Arm64RegW25
  toEnum 194 = Arm64Reg
Arm64RegW26
  toEnum 195 = Arm64Reg
Arm64RegW27
  toEnum 196 = Arm64Reg
Arm64RegW28
  toEnum 197 = Arm64Reg
Arm64RegW29
  toEnum 198 = Arm64Reg
Arm64RegW30
  toEnum 199 = Arm64Reg
Arm64RegX0
  toEnum 200 = Arm64Reg
Arm64RegX1
  toEnum 201 = Arm64Reg
Arm64RegX2
  toEnum 202 = Arm64Reg
Arm64RegX3
  toEnum 203 = Arm64Reg
Arm64RegX4
  toEnum 204 = Arm64Reg
Arm64RegX5
  toEnum 205 = Arm64Reg
Arm64RegX6
  toEnum 206 = Arm64Reg
Arm64RegX7
  toEnum 207 = Arm64Reg
Arm64RegX8
  toEnum 208 = Arm64Reg
Arm64RegX9
  toEnum 209 = Arm64Reg
Arm64RegX10
  toEnum 210 = Arm64Reg
Arm64RegX11
  toEnum 211 = Arm64Reg
Arm64RegX12
  toEnum 212 = Arm64Reg
Arm64RegX13
  toEnum 213 = Arm64Reg
Arm64RegX14
  toEnum 214 = Arm64Reg
Arm64RegX15
  toEnum 215 = Arm64Reg
Arm64RegX16
  toEnum 216 = Arm64Reg
Arm64RegX17
  toEnum 217 = Arm64Reg
Arm64RegX18
  toEnum 218 = Arm64Reg
Arm64RegX19
  toEnum 219 = Arm64Reg
Arm64RegX20
  toEnum 220 = Arm64Reg
Arm64RegX21
  toEnum 221 = Arm64Reg
Arm64RegX22
  toEnum 222 = Arm64Reg
Arm64RegX23
  toEnum 223 = Arm64Reg
Arm64RegX24
  toEnum 224 = Arm64Reg
Arm64RegX25
  toEnum 225 = Arm64Reg
Arm64RegX26
  toEnum 226 = Arm64Reg
Arm64RegX27
  toEnum 227 = Arm64Reg
Arm64RegX28
  toEnum 228 = Arm64Reg
Arm64RegV0
  toEnum 229 = Arm64Reg
Arm64RegV1
  toEnum 230 = Arm64Reg
Arm64RegV2
  toEnum 231 = Arm64Reg
Arm64RegV3
  toEnum 232 = Arm64Reg
Arm64RegV4
  toEnum 233 = Arm64Reg
Arm64RegV5
  toEnum 234 = Arm64Reg
Arm64RegV6
  toEnum 235 = Arm64Reg
Arm64RegV7
  toEnum 236 = Arm64Reg
Arm64RegV8
  toEnum 237 = Arm64Reg
Arm64RegV9
  toEnum 238 = Arm64Reg
Arm64RegV10
  toEnum 239 = Arm64Reg
Arm64RegV11
  toEnum 240 = Arm64Reg
Arm64RegV12
  toEnum 241 = Arm64Reg
Arm64RegV13
  toEnum 242 = Arm64Reg
Arm64RegV14
  toEnum 243 = Arm64Reg
Arm64RegV15
  toEnum 244 = Arm64Reg
Arm64RegV16
  toEnum 245 = Arm64Reg
Arm64RegV17
  toEnum 246 = Arm64Reg
Arm64RegV18
  toEnum 247 = Arm64Reg
Arm64RegV19
  toEnum 248 = Arm64Reg
Arm64RegV20
  toEnum 249 = Arm64Reg
Arm64RegV21
  toEnum 250 = Arm64Reg
Arm64RegV22
  toEnum 251 = Arm64Reg
Arm64RegV23
  toEnum 252 = Arm64Reg
Arm64RegV24
  toEnum 253 = Arm64Reg
Arm64RegV25
  toEnum 254 = Arm64Reg
Arm64RegV26
  toEnum 255 = Arm64Reg
Arm64RegV27
  toEnum 256 = Arm64Reg
Arm64RegV28
  toEnum 257 = Arm64Reg
Arm64RegV29
  toEnum 258 = Arm64Reg
Arm64RegV30
  toEnum 259 = Arm64Reg
Arm64RegV31
  toEnum 260 = Arm64Reg
Arm64RegEnding
  toEnum unmatched = error (String
"Arm64Reg.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 85 "src/Hapstone/Internal/Arm64.chs" #-}


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

instance Storable Arm64OpMemStruct where
    sizeOf _ = 12
{-# LINE 96 "src/Hapstone/Internal/Arm64.chs" #-}

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

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

-- | possible operand types (corresponding to the tagged union in the C header)
data CsArm64OpValue
    = Reg Arm64Reg -- ^ register value for 'Arm64OpReg' operands
    | Imm Int64 -- ^ immediate value for 'Arm64OpImm' operands
    | CImm Int64 -- ^ index value for 'Arm64OpCimm' operands
    | Fp Double -- ^ floating point value for 'Arm64OpFp' operands
    | Mem Arm64OpMemStruct -- ^ base,index,disp value for 'Arm64OpMem' operands
    | Pstate Arm64Pstate -- ^ PState field of MSR instructions
    | Sys Word32 -- ^ IC/DC/AT/TLBI operation (see 'Arm64IcOp', 'Arm64DcOp',
                 -- 'Arm64AtOp', 'Arm64TlbiOp'), for 'Arm64OpSys' operands
    | Prefetch Arm64PrefetchOp -- ^ PRFM operation for 'Arm64OpPrefetch'
                               -- operands
    | Barrier Arm64BarrierOp -- ^ memory barrier operation (ISB/DMB/DSB
                             -- instructions), for 'Arm64OpBarrier' operands
    | Undefined -- ^ invalid operand value, for 'Arm64OpInvalid' operand
    deriving (Show, Eq)

-- | instruction operand
data CsArm64Op = CsArm64Op
    { vectorIndex :: Int32 -- ^ vector index for some vector operands, else -1
    , vas :: Arm64Vas -- ^ vector arrangement specifier
    , vess :: Arm64Vess -- ^ vector element size specifier
    , shift :: (Arm64Shifter, Word32) -- ^ shifter type and value
    , ext :: Arm64Extender -- ^ extender type
    , value :: CsArm64OpValue -- ^ operand type and value
    , access :: Word8 -- ^ the access mode TODO
    } deriving (Show, Eq)

instance Storable CsArm64Op where
    sizeOf _ = 48
    alignment _ = 8
    peek p = CsArm64Op
        <$> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) p)
        <*> ((,) <$>
            ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) p) <*>
            (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CUInt}) p))
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 20 :: IO C2HSImp.CInt}) p)
        <*> do
            t <- fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CInt}) p
            let bP = plusPtr p 32
            case toEnum t of
              Arm64OpReg -> (Reg . toEnum . fromIntegral) <$>
                  (peek bP :: IO CUInt)
              Arm64OpImm -> (Imm . fromIntegral) <$> (peek bP :: IO Int64)
              Arm64OpCimm -> (CImm . fromIntegral) <$> (peek bP :: IO Int64)
              Arm64OpFp -> (Fp . realToFrac) <$> (peek bP :: IO CDouble)
              Arm64OpMem -> Mem <$> peek bP
              Arm64OpRegMsr -> (Pstate . toEnum . fromIntegral) <$>
                 (peek bP :: IO CInt)
              Arm64OpSys -> (Sys . fromIntegral) <$> (peek bP :: IO CUInt)
              Arm64OpPrefetch -> (Prefetch . toEnum . fromIntegral) <$>
                 (peek bP :: IO CInt)
              Arm64OpBarrier -> (Barrier . toEnum . fromIntegral) <$>
                 (peek bP :: IO CInt)
              _ -> return Undefined
        <*> (peekByteOff p 44 :: IO Word8) -- access
    poke p (CsArm64Op vI va ve (sh, shV) ext val acc) = do
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p (fromIntegral vI)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum va)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum ve)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum sh)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: C2HSImp.CUInt)}) p (fromIntegral shV)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 20 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum ext)
        let bP = plusPtr p 32
            setType = (\ptr val -> do {C2HSImp.pokeByteOff ptr 24 (val :: C2HSImp.CInt)}) p . fromIntegral . fromEnum
        case val of
          Reg r -> do
              poke bP (fromIntegral $ fromEnum r :: CUInt)
              setType Arm64OpReg
          Imm i -> do
              poke bP (fromIntegral i :: Int64)
              setType Arm64OpImm
          CImm i -> do
              poke bP (fromIntegral i :: Int64)
              setType Arm64OpCimm
          Fp f -> do
              poke bP (realToFrac f :: CDouble)
              setType Arm64OpFp
          Mem m -> do
              poke bP m
              setType Arm64OpMem
          Pstate p -> do
              poke bP (fromIntegral $ fromEnum p :: CInt)
              setType Arm64OpRegMsr
          Sys s -> do
              poke bP (fromIntegral s :: CUInt)
              setType Arm64OpSys
          Prefetch p -> do
              poke bP (fromIntegral $ fromEnum p :: CInt)
              setType Arm64OpPrefetch
          Barrier b -> do
              poke bP (fromIntegral $ fromEnum b :: CInt)
              setType Arm64OpBarrier
          _ -> setType Arm64OpInvalid
        pokeByteOff p 44 acc

-- | instruction datatype
data CsArm64 = CsArm64
    { cc :: Arm64ConditionCode -- ^ condition code
    , updateFlags :: Bool -- ^ does this instruction update flags?
    , writeback :: Bool -- ^ does this instruction request writeback?
    , operands :: [CsArm64Op] -- ^ operand list of this instruction,
                              -- *MUST* have <= 8 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 CsArm64 where
    sizeOf _ = 392
    alignment _ = 12
    peek p = CsArm64
        <$> (toEnum . fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
        <*> (toBool <$> (peekByteOff p 4 :: IO Word8)) -- update_flags
        <*> (toBool <$> (peekByteOff p 5 :: IO Word8)) -- writeback
        <*> do num <- fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 6 :: IO C2HSImp.CUChar}) p
               let ptr = plusPtr p (8)
{-# LINE 224 "src/Hapstone/Internal/Arm64.chs" #-}

               peekArray num ptr
    poke p (CsArm64 cc uF w o) = do
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum cc)
        pokeByteOff p 4 (fromBool uF :: Word8) -- update_flags
        pokeByteOff p 5 (fromBool w :: Word8) -- writeback
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 6 (val :: C2HSImp.CUChar)}) p (fromIntegral $ length o)
        if length o > 8
           then error "operands overflew 8 elements"
           else pokeArray (plusPtr p (8)) o

-- | ARM64 instructions
data Arm64Insn = Arm64InsInvalid
               | Arm64InsAbs
               | Arm64InsAdc
               | Arm64InsAddhn
               | Arm64InsAddhn2
               | Arm64InsAddp
               | Arm64InsAdd
               | Arm64InsAddv
               | Arm64InsAdr
               | Arm64InsAdrp
               | Arm64InsAesd
               | Arm64InsAese
               | Arm64InsAesimc
               | Arm64InsAesmc
               | Arm64InsAnd
               | Arm64InsAsr
               | Arm64InsB
               | Arm64InsBfm
               | Arm64InsBic
               | Arm64InsBif
               | Arm64InsBit
               | Arm64InsBl
               | Arm64InsBlr
               | Arm64InsBr
               | Arm64InsBrk
               | Arm64InsBsl
               | Arm64InsCbnz
               | Arm64InsCbz
               | Arm64InsCcmn
               | Arm64InsCcmp
               | Arm64InsClrex
               | Arm64InsCls
               | Arm64InsClz
               | Arm64InsCmeq
               | Arm64InsCmge
               | Arm64InsCmgt
               | Arm64InsCmhi
               | Arm64InsCmhs
               | Arm64InsCmle
               | Arm64InsCmlt
               | Arm64InsCmtst
               | Arm64InsCnt
               | Arm64InsMov
               | Arm64InsCrc32b
               | Arm64InsCrc32cb
               | Arm64InsCrc32ch
               | Arm64InsCrc32cw
               | Arm64InsCrc32cx
               | Arm64InsCrc32h
               | Arm64InsCrc32w
               | Arm64InsCrc32x
               | Arm64InsCsel
               | Arm64InsCsinc
               | Arm64InsCsinv
               | Arm64InsCsneg
               | Arm64InsDcps1
               | Arm64InsDcps2
               | Arm64InsDcps3
               | Arm64InsDmb
               | Arm64InsDrps
               | Arm64InsDsb
               | Arm64InsDup
               | Arm64InsEon
               | Arm64InsEor
               | Arm64InsEret
               | Arm64InsExtr
               | Arm64InsExt
               | Arm64InsFabd
               | Arm64InsFabs
               | Arm64InsFacge
               | Arm64InsFacgt
               | Arm64InsFadd
               | Arm64InsFaddp
               | Arm64InsFccmp
               | Arm64InsFccmpe
               | Arm64InsFcmeq
               | Arm64InsFcmge
               | Arm64InsFcmgt
               | Arm64InsFcmle
               | Arm64InsFcmlt
               | Arm64InsFcmp
               | Arm64InsFcmpe
               | Arm64InsFcsel
               | Arm64InsFcvtas
               | Arm64InsFcvtau
               | Arm64InsFcvt
               | Arm64InsFcvtl
               | Arm64InsFcvtl2
               | Arm64InsFcvtms
               | Arm64InsFcvtmu
               | Arm64InsFcvtns
               | Arm64InsFcvtnu
               | Arm64InsFcvtn
               | Arm64InsFcvtn2
               | Arm64InsFcvtps
               | Arm64InsFcvtpu
               | Arm64InsFcvtxn
               | Arm64InsFcvtxn2
               | Arm64InsFcvtzs
               | Arm64InsFcvtzu
               | Arm64InsFdiv
               | Arm64InsFmadd
               | Arm64InsFmax
               | Arm64InsFmaxnm
               | Arm64InsFmaxnmp
               | Arm64InsFmaxnmv
               | Arm64InsFmaxp
               | Arm64InsFmaxv
               | Arm64InsFmin
               | Arm64InsFminnm
               | Arm64InsFminnmp
               | Arm64InsFminnmv
               | Arm64InsFminp
               | Arm64InsFminv
               | Arm64InsFmla
               | Arm64InsFmls
               | Arm64InsFmov
               | Arm64InsFmsub
               | Arm64InsFmul
               | Arm64InsFmulx
               | Arm64InsFneg
               | Arm64InsFnmadd
               | Arm64InsFnmsub
               | Arm64InsFnmul
               | Arm64InsFrecpe
               | Arm64InsFrecps
               | Arm64InsFrecpx
               | Arm64InsFrinta
               | Arm64InsFrinti
               | Arm64InsFrintm
               | Arm64InsFrintn
               | Arm64InsFrintp
               | Arm64InsFrintx
               | Arm64InsFrintz
               | Arm64InsFrsqrte
               | Arm64InsFrsqrts
               | Arm64InsFsqrt
               | Arm64InsFsub
               | Arm64InsHint
               | Arm64InsHlt
               | Arm64InsHvc
               | Arm64InsIns
               | Arm64InsIsb
               | Arm64InsLd1
               | Arm64InsLd1r
               | Arm64InsLd2r
               | Arm64InsLd2
               | Arm64InsLd3r
               | Arm64InsLd3
               | Arm64InsLd4
               | Arm64InsLd4r
               | Arm64InsLdarb
               | Arm64InsLdarh
               | Arm64InsLdar
               | Arm64InsLdaxp
               | Arm64InsLdaxrb
               | Arm64InsLdaxrh
               | Arm64InsLdaxr
               | Arm64InsLdnp
               | Arm64InsLdp
               | Arm64InsLdpsw
               | Arm64InsLdrb
               | Arm64InsLdr
               | Arm64InsLdrh
               | Arm64InsLdrsb
               | Arm64InsLdrsh
               | Arm64InsLdrsw
               | Arm64InsLdtrb
               | Arm64InsLdtrh
               | Arm64InsLdtrsb
               | Arm64InsLdtrsh
               | Arm64InsLdtrsw
               | Arm64InsLdtr
               | Arm64InsLdurb
               | Arm64InsLdur
               | Arm64InsLdurh
               | Arm64InsLdursb
               | Arm64InsLdursh
               | Arm64InsLdursw
               | Arm64InsLdxp
               | Arm64InsLdxrb
               | Arm64InsLdxrh
               | Arm64InsLdxr
               | Arm64InsLsl
               | Arm64InsLsr
               | Arm64InsMadd
               | Arm64InsMla
               | Arm64InsMls
               | Arm64InsMovi
               | Arm64InsMovk
               | Arm64InsMovn
               | Arm64InsMovz
               | Arm64InsMrs
               | Arm64InsMsr
               | Arm64InsMsub
               | Arm64InsMul
               | Arm64InsMvni
               | Arm64InsNeg
               | Arm64InsNot
               | Arm64InsOrn
               | Arm64InsOrr
               | Arm64InsPmull2
               | Arm64InsPmull
               | Arm64InsPmul
               | Arm64InsPrfm
               | Arm64InsPrfum
               | Arm64InsRaddhn
               | Arm64InsRaddhn2
               | Arm64InsRbit
               | Arm64InsRet
               | Arm64InsRev16
               | Arm64InsRev32
               | Arm64InsRev64
               | Arm64InsRev
               | Arm64InsRor
               | Arm64InsRshrn2
               | Arm64InsRshrn
               | Arm64InsRsubhn
               | Arm64InsRsubhn2
               | Arm64InsSabal2
               | Arm64InsSabal
               | Arm64InsSaba
               | Arm64InsSabdl2
               | Arm64InsSabdl
               | Arm64InsSabd
               | Arm64InsSadalp
               | Arm64InsSaddlp
               | Arm64InsSaddlv
               | Arm64InsSaddl2
               | Arm64InsSaddl
               | Arm64InsSaddw2
               | Arm64InsSaddw
               | Arm64InsSbc
               | Arm64InsSbfm
               | Arm64InsScvtf
               | Arm64InsSdiv
               | Arm64InsSha1c
               | Arm64InsSha1h
               | Arm64InsSha1m
               | Arm64InsSha1p
               | Arm64InsSha1su0
               | Arm64InsSha1su1
               | Arm64InsSha256h2
               | Arm64InsSha256h
               | Arm64InsSha256su0
               | Arm64InsSha256su1
               | Arm64InsShadd
               | Arm64InsShll2
               | Arm64InsShll
               | Arm64InsShl
               | Arm64InsShrn2
               | Arm64InsShrn
               | Arm64InsShsub
               | Arm64InsSli
               | Arm64InsSmaddl
               | Arm64InsSmaxp
               | Arm64InsSmaxv
               | Arm64InsSmax
               | Arm64InsSmc
               | Arm64InsSminp
               | Arm64InsSminv
               | Arm64InsSmin
               | Arm64InsSmlal2
               | Arm64InsSmlal
               | Arm64InsSmlsl2
               | Arm64InsSmlsl
               | Arm64InsSmov
               | Arm64InsSmsubl
               | Arm64InsSmulh
               | Arm64InsSmull2
               | Arm64InsSmull
               | Arm64InsSqabs
               | Arm64InsSqadd
               | Arm64InsSqdmlal
               | Arm64InsSqdmlal2
               | Arm64InsSqdmlsl
               | Arm64InsSqdmlsl2
               | Arm64InsSqdmulh
               | Arm64InsSqdmull
               | Arm64InsSqdmull2
               | Arm64InsSqneg
               | Arm64InsSqrdmulh
               | Arm64InsSqrshl
               | Arm64InsSqrshrn
               | Arm64InsSqrshrn2
               | Arm64InsSqrshrun
               | Arm64InsSqrshrun2
               | Arm64InsSqshlu
               | Arm64InsSqshl
               | Arm64InsSqshrn
               | Arm64InsSqshrn2
               | Arm64InsSqshrun
               | Arm64InsSqshrun2
               | Arm64InsSqsub
               | Arm64InsSqxtn2
               | Arm64InsSqxtn
               | Arm64InsSqxtun2
               | Arm64InsSqxtun
               | Arm64InsSrhadd
               | Arm64InsSri
               | Arm64InsSrshl
               | Arm64InsSrshr
               | Arm64InsSrsra
               | Arm64InsSshll2
               | Arm64InsSshll
               | Arm64InsSshl
               | Arm64InsSshr
               | Arm64InsSsra
               | Arm64InsSsubl2
               | Arm64InsSsubl
               | Arm64InsSsubw2
               | Arm64InsSsubw
               | Arm64InsSt1
               | Arm64InsSt2
               | Arm64InsSt3
               | Arm64InsSt4
               | Arm64InsStlrb
               | Arm64InsStlrh
               | Arm64InsStlr
               | Arm64InsStlxp
               | Arm64InsStlxrb
               | Arm64InsStlxrh
               | Arm64InsStlxr
               | Arm64InsStnp
               | Arm64InsStp
               | Arm64InsStrb
               | Arm64InsStr
               | Arm64InsStrh
               | Arm64InsSttrb
               | Arm64InsSttrh
               | Arm64InsSttr
               | Arm64InsSturb
               | Arm64InsStur
               | Arm64InsSturh
               | Arm64InsStxp
               | Arm64InsStxrb
               | Arm64InsStxrh
               | Arm64InsStxr
               | Arm64InsSubhn
               | Arm64InsSubhn2
               | Arm64InsSub
               | Arm64InsSuqadd
               | Arm64InsSvc
               | Arm64InsSysl
               | Arm64InsSys
               | Arm64InsTbl
               | Arm64InsTbnz
               | Arm64InsTbx
               | Arm64InsTbz
               | Arm64InsTrn1
               | Arm64InsTrn2
               | Arm64InsUabal2
               | Arm64InsUabal
               | Arm64InsUaba
               | Arm64InsUabdl2
               | Arm64InsUabdl
               | Arm64InsUabd
               | Arm64InsUadalp
               | Arm64InsUaddlp
               | Arm64InsUaddlv
               | Arm64InsUaddl2
               | Arm64InsUaddl
               | Arm64InsUaddw2
               | Arm64InsUaddw
               | Arm64InsUbfm
               | Arm64InsUcvtf
               | Arm64InsUdiv
               | Arm64InsUhadd
               | Arm64InsUhsub
               | Arm64InsUmaddl
               | Arm64InsUmaxp
               | Arm64InsUmaxv
               | Arm64InsUmax
               | Arm64InsUminp
               | Arm64InsUminv
               | Arm64InsUmin
               | Arm64InsUmlal2
               | Arm64InsUmlal
               | Arm64InsUmlsl2
               | Arm64InsUmlsl
               | Arm64InsUmov
               | Arm64InsUmsubl
               | Arm64InsUmulh
               | Arm64InsUmull2
               | Arm64InsUmull
               | Arm64InsUqadd
               | Arm64InsUqrshl
               | Arm64InsUqrshrn
               | Arm64InsUqrshrn2
               | Arm64InsUqshl
               | Arm64InsUqshrn
               | Arm64InsUqshrn2
               | Arm64InsUqsub
               | Arm64InsUqxtn2
               | Arm64InsUqxtn
               | Arm64InsUrecpe
               | Arm64InsUrhadd
               | Arm64InsUrshl
               | Arm64InsUrshr
               | Arm64InsUrsqrte
               | Arm64InsUrsra
               | Arm64InsUshll2
               | Arm64InsUshll
               | Arm64InsUshl
               | Arm64InsUshr
               | Arm64InsUsqadd
               | Arm64InsUsra
               | Arm64InsUsubl2
               | Arm64InsUsubl
               | Arm64InsUsubw2
               | Arm64InsUsubw
               | Arm64InsUzp1
               | Arm64InsUzp2
               | Arm64InsXtn2
               | Arm64InsXtn
               | Arm64InsZip1
               | Arm64InsZip2
               | Arm64InsMneg
               | Arm64InsUmnegl
               | Arm64InsSmnegl
               | Arm64InsNop
               | Arm64InsYield
               | Arm64InsWfe
               | Arm64InsWfi
               | Arm64InsSev
               | Arm64InsSevl
               | Arm64InsNgc
               | Arm64InsSbfiz
               | Arm64InsUbfiz
               | Arm64InsSbfx
               | Arm64InsUbfx
               | Arm64InsBfi
               | Arm64InsBfxil
               | Arm64InsCmn
               | Arm64InsMvn
               | Arm64InsTst
               | Arm64InsCset
               | Arm64InsCinc
               | Arm64InsCsetm
               | Arm64InsCinv
               | Arm64InsCneg
               | Arm64InsSxtb
               | Arm64InsSxth
               | Arm64InsSxtw
               | Arm64InsCmp
               | Arm64InsUxtb
               | Arm64InsUxth
               | Arm64InsUxtw
               | Arm64InsIc
               | Arm64InsDc
               | Arm64InsAt
               | Arm64InsTlbi
               | Arm64InsNegs
               | Arm64InsNgcs
               | Arm64InsEnding
  deriving (Show,Eq,Bounded)
instance Enum Arm64Insn where
  succ Arm64InsInvalid = Arm64InsAbs
  succ Arm64InsAbs = Arm64InsAdc
  succ Arm64InsAdc = Arm64InsAddhn
  succ Arm64InsAddhn = Arm64InsAddhn2
  succ Arm64InsAddhn2 = Arm64InsAddp
  succ Arm64InsAddp = Arm64InsAdd
  succ Arm64InsAdd = Arm64InsAddv
  succ Arm64InsAddv = Arm64InsAdr
  succ Arm64InsAdr = Arm64InsAdrp
  succ Arm64InsAdrp = Arm64InsAesd
  succ Arm64InsAesd = Arm64InsAese
  succ Arm64InsAese = Arm64InsAesimc
  succ Arm64InsAesimc = Arm64InsAesmc
  succ Arm64InsAesmc = Arm64InsAnd
  succ Arm64InsAnd = Arm64InsAsr
  succ Arm64InsAsr = Arm64InsB
  succ Arm64InsB = Arm64InsBfm
  succ Arm64InsBfm = Arm64InsBic
  succ Arm64InsBic = Arm64InsBif
  succ Arm64InsBif = Arm64InsBit
  succ Arm64InsBit = Arm64InsBl
  succ Arm64InsBl = Arm64InsBlr
  succ Arm64InsBlr = Arm64InsBr
  succ Arm64InsBr = Arm64InsBrk
  succ Arm64InsBrk = Arm64InsBsl
  succ Arm64InsBsl = Arm64InsCbnz
  succ Arm64InsCbnz = Arm64InsCbz
  succ Arm64InsCbz = Arm64InsCcmn
  succ Arm64InsCcmn = Arm64InsCcmp
  succ Arm64InsCcmp = Arm64InsClrex
  succ Arm64InsClrex = Arm64InsCls
  succ Arm64InsCls = Arm64InsClz
  succ Arm64InsClz = Arm64InsCmeq
  succ Arm64InsCmeq = Arm64InsCmge
  succ Arm64InsCmge = Arm64InsCmgt
  succ Arm64InsCmgt = Arm64InsCmhi
  succ Arm64InsCmhi = Arm64InsCmhs
  succ Arm64InsCmhs = Arm64InsCmle
  succ Arm64InsCmle = Arm64InsCmlt
  succ Arm64InsCmlt = Arm64InsCmtst
  succ Arm64InsCmtst = Arm64InsCnt
  succ Arm64InsCnt = Arm64InsMov
  succ Arm64InsMov = Arm64InsCrc32b
  succ Arm64InsCrc32b = Arm64InsCrc32cb
  succ Arm64InsCrc32cb = Arm64InsCrc32ch
  succ Arm64InsCrc32ch = Arm64InsCrc32cw
  succ Arm64InsCrc32cw = Arm64InsCrc32cx
  succ Arm64InsCrc32cx = Arm64InsCrc32h
  succ Arm64InsCrc32h = Arm64InsCrc32w
  succ Arm64InsCrc32w = Arm64InsCrc32x
  succ Arm64InsCrc32x = Arm64InsCsel
  succ Arm64InsCsel = Arm64InsCsinc
  succ Arm64InsCsinc = Arm64InsCsinv
  succ Arm64InsCsinv = Arm64InsCsneg
  succ Arm64InsCsneg = Arm64InsDcps1
  succ Arm64InsDcps1 = Arm64InsDcps2
  succ Arm64InsDcps2 = Arm64InsDcps3
  succ Arm64InsDcps3 = Arm64InsDmb
  succ Arm64InsDmb = Arm64InsDrps
  succ Arm64InsDrps = Arm64InsDsb
  succ Arm64InsDsb = Arm64InsDup
  succ Arm64InsDup = Arm64InsEon
  succ Arm64InsEon = Arm64InsEor
  succ Arm64InsEor = Arm64InsEret
  succ Arm64InsEret = Arm64InsExtr
  succ Arm64InsExtr = Arm64InsExt
  succ Arm64InsExt = Arm64InsFabd
  succ Arm64InsFabd = Arm64InsFabs
  succ Arm64InsFabs = Arm64InsFacge
  succ Arm64InsFacge = Arm64InsFacgt
  succ Arm64InsFacgt = Arm64InsFadd
  succ Arm64InsFadd = Arm64InsFaddp
  succ Arm64InsFaddp = Arm64InsFccmp
  succ Arm64InsFccmp = Arm64InsFccmpe
  succ Arm64InsFccmpe = Arm64InsFcmeq
  succ Arm64InsFcmeq = Arm64InsFcmge
  succ Arm64InsFcmge = Arm64InsFcmgt
  succ Arm64InsFcmgt = Arm64InsFcmle
  succ Arm64InsFcmle = Arm64InsFcmlt
  succ Arm64InsFcmlt = Arm64InsFcmp
  succ Arm64InsFcmp = Arm64InsFcmpe
  succ Arm64InsFcmpe = Arm64InsFcsel
  succ Arm64InsFcsel = Arm64InsFcvtas
  succ Arm64InsFcvtas = Arm64InsFcvtau
  succ Arm64InsFcvtau = Arm64InsFcvt
  succ Arm64InsFcvt = Arm64InsFcvtl
  succ Arm64InsFcvtl = Arm64InsFcvtl2
  succ Arm64InsFcvtl2 = Arm64InsFcvtms
  succ Arm64InsFcvtms = Arm64InsFcvtmu
  succ Arm64InsFcvtmu = Arm64InsFcvtns
  succ Arm64InsFcvtns = Arm64InsFcvtnu
  succ Arm64InsFcvtnu = Arm64InsFcvtn
  succ Arm64InsFcvtn = Arm64InsFcvtn2
  succ Arm64InsFcvtn2 = Arm64InsFcvtps
  succ Arm64InsFcvtps = Arm64InsFcvtpu
  succ Arm64InsFcvtpu = Arm64InsFcvtxn
  succ Arm64InsFcvtxn = Arm64InsFcvtxn2
  succ Arm64InsFcvtxn2 = Arm64InsFcvtzs
  succ Arm64InsFcvtzs = Arm64InsFcvtzu
  succ Arm64InsFcvtzu = Arm64InsFdiv
  succ Arm64InsFdiv = Arm64InsFmadd
  succ Arm64InsFmadd = Arm64InsFmax
  succ Arm64InsFmax = Arm64InsFmaxnm
  succ Arm64InsFmaxnm = Arm64InsFmaxnmp
  succ Arm64InsFmaxnmp = Arm64InsFmaxnmv
  succ Arm64InsFmaxnmv = Arm64InsFmaxp
  succ Arm64InsFmaxp = Arm64InsFmaxv
  succ Arm64InsFmaxv = Arm64InsFmin
  succ Arm64InsFmin = Arm64InsFminnm
  succ Arm64InsFminnm = Arm64InsFminnmp
  succ Arm64InsFminnmp = Arm64InsFminnmv
  succ Arm64InsFminnmv = Arm64InsFminp
  succ Arm64InsFminp = Arm64InsFminv
  succ Arm64InsFminv = Arm64InsFmla
  succ Arm64InsFmla = Arm64InsFmls
  succ Arm64InsFmls = Arm64InsFmov
  succ Arm64InsFmov = Arm64InsFmsub
  succ Arm64InsFmsub = Arm64InsFmul
  succ Arm64InsFmul = Arm64InsFmulx
  succ Arm64InsFmulx = Arm64InsFneg
  succ Arm64InsFneg = Arm64InsFnmadd
  succ Arm64InsFnmadd = Arm64InsFnmsub
  succ Arm64InsFnmsub = Arm64InsFnmul
  succ Arm64InsFnmul = Arm64InsFrecpe
  succ Arm64InsFrecpe = Arm64InsFrecps
  succ Arm64InsFrecps = Arm64InsFrecpx
  succ Arm64InsFrecpx = Arm64InsFrinta
  succ Arm64InsFrinta = Arm64InsFrinti
  succ Arm64InsFrinti = Arm64InsFrintm
  succ Arm64InsFrintm = Arm64InsFrintn
  succ Arm64InsFrintn = Arm64InsFrintp
  succ Arm64InsFrintp = Arm64InsFrintx
  succ Arm64InsFrintx = Arm64InsFrintz
  succ Arm64InsFrintz = Arm64InsFrsqrte
  succ Arm64InsFrsqrte = Arm64InsFrsqrts
  succ Arm64InsFrsqrts = Arm64InsFsqrt
  succ Arm64InsFsqrt = Arm64InsFsub
  succ Arm64InsFsub = Arm64InsHint
  succ Arm64InsHint = Arm64InsHlt
  succ Arm64InsHlt = Arm64InsHvc
  succ Arm64InsHvc = Arm64InsIns
  succ Arm64InsIns = Arm64InsIsb
  succ Arm64InsIsb = Arm64InsLd1
  succ Arm64InsLd1 = Arm64InsLd1r
  succ Arm64InsLd1r = Arm64InsLd2r
  succ Arm64InsLd2r = Arm64InsLd2
  succ Arm64InsLd2 = Arm64InsLd3r
  succ Arm64InsLd3r = Arm64InsLd3
  succ Arm64InsLd3 = Arm64InsLd4
  succ Arm64InsLd4 = Arm64InsLd4r
  succ Arm64InsLd4r = Arm64InsLdarb
  succ Arm64InsLdarb = Arm64InsLdarh
  succ Arm64InsLdarh = Arm64InsLdar
  succ Arm64InsLdar = Arm64InsLdaxp
  succ Arm64InsLdaxp = Arm64InsLdaxrb
  succ Arm64InsLdaxrb = Arm64InsLdaxrh
  succ Arm64InsLdaxrh = Arm64InsLdaxr
  succ Arm64InsLdaxr = Arm64InsLdnp
  succ Arm64InsLdnp = Arm64InsLdp
  succ Arm64InsLdp = Arm64InsLdpsw
  succ Arm64InsLdpsw = Arm64InsLdrb
  succ Arm64InsLdrb = Arm64InsLdr
  succ Arm64InsLdr = Arm64InsLdrh
  succ Arm64InsLdrh = Arm64InsLdrsb
  succ Arm64InsLdrsb = Arm64InsLdrsh
  succ Arm64InsLdrsh = Arm64InsLdrsw
  succ Arm64InsLdrsw = Arm64InsLdtrb
  succ Arm64InsLdtrb = Arm64InsLdtrh
  succ Arm64InsLdtrh = Arm64InsLdtrsb
  succ Arm64InsLdtrsb = Arm64InsLdtrsh
  succ Arm64InsLdtrsh = Arm64InsLdtrsw
  succ Arm64InsLdtrsw = Arm64InsLdtr
  succ Arm64InsLdtr = Arm64InsLdurb
  succ Arm64InsLdurb = Arm64InsLdur
  succ Arm64InsLdur = Arm64InsLdurh
  succ Arm64InsLdurh = Arm64InsLdursb
  succ Arm64InsLdursb = Arm64InsLdursh
  succ Arm64InsLdursh = Arm64InsLdursw
  succ Arm64InsLdursw = Arm64InsLdxp
  succ Arm64InsLdxp = Arm64InsLdxrb
  succ Arm64InsLdxrb = Arm64InsLdxrh
  succ Arm64InsLdxrh = Arm64InsLdxr
  succ Arm64InsLdxr = Arm64InsLsl
  succ Arm64InsLsl = Arm64InsLsr
  succ Arm64InsLsr = Arm64InsMadd
  succ Arm64InsMadd = Arm64InsMla
  succ Arm64InsMla = Arm64InsMls
  succ Arm64InsMls = Arm64InsMovi
  succ Arm64InsMovi = Arm64InsMovk
  succ Arm64InsMovk = Arm64InsMovn
  succ Arm64InsMovn = Arm64InsMovz
  succ Arm64InsMovz = Arm64InsMrs
  succ Arm64InsMrs = Arm64InsMsr
  succ Arm64InsMsr = Arm64InsMsub
  succ Arm64InsMsub = Arm64InsMul
  succ Arm64InsMul = Arm64InsMvni
  succ Arm64InsMvni = Arm64InsNeg
  succ Arm64InsNeg = Arm64InsNot
  succ Arm64InsNot = Arm64InsOrn
  succ Arm64InsOrn = Arm64InsOrr
  succ Arm64InsOrr = Arm64InsPmull2
  succ Arm64InsPmull2 = Arm64InsPmull
  succ Arm64InsPmull = Arm64InsPmul
  succ Arm64InsPmul = Arm64InsPrfm
  succ Arm64InsPrfm = Arm64InsPrfum
  succ Arm64InsPrfum = Arm64InsRaddhn
  succ Arm64InsRaddhn = Arm64InsRaddhn2
  succ Arm64InsRaddhn2 = Arm64InsRbit
  succ Arm64InsRbit = Arm64InsRet
  succ Arm64InsRet = Arm64InsRev16
  succ Arm64InsRev16 = Arm64InsRev32
  succ Arm64InsRev32 = Arm64InsRev64
  succ Arm64InsRev64 = Arm64InsRev
  succ Arm64InsRev = Arm64InsRor
  succ Arm64InsRor = Arm64InsRshrn2
  succ Arm64InsRshrn2 = Arm64InsRshrn
  succ Arm64InsRshrn = Arm64InsRsubhn
  succ Arm64InsRsubhn = Arm64InsRsubhn2
  succ Arm64InsRsubhn2 = Arm64InsSabal2
  succ Arm64InsSabal2 = Arm64InsSabal
  succ Arm64InsSabal = Arm64InsSaba
  succ Arm64InsSaba = Arm64InsSabdl2
  succ Arm64InsSabdl2 = Arm64InsSabdl
  succ Arm64InsSabdl = Arm64InsSabd
  succ Arm64InsSabd = Arm64InsSadalp
  succ Arm64InsSadalp = Arm64InsSaddlp
  succ Arm64InsSaddlp = Arm64InsSaddlv
  succ Arm64InsSaddlv = Arm64InsSaddl2
  succ Arm64InsSaddl2 = Arm64InsSaddl
  succ Arm64InsSaddl = Arm64InsSaddw2
  succ Arm64InsSaddw2 = Arm64InsSaddw
  succ Arm64InsSaddw = Arm64InsSbc
  succ Arm64InsSbc = Arm64InsSbfm
  succ Arm64InsSbfm = Arm64InsScvtf
  succ Arm64InsScvtf = Arm64InsSdiv
  succ Arm64InsSdiv = Arm64InsSha1c
  succ Arm64InsSha1c = Arm64InsSha1h
  succ Arm64InsSha1h = Arm64InsSha1m
  succ Arm64InsSha1m = Arm64InsSha1p
  succ Arm64InsSha1p = Arm64InsSha1su0
  succ Arm64InsSha1su0 = Arm64InsSha1su1
  succ Arm64InsSha1su1 = Arm64InsSha256h2
  succ Arm64InsSha256h2 = Arm64InsSha256h
  succ Arm64InsSha256h = Arm64InsSha256su0
  succ Arm64InsSha256su0 = Arm64InsSha256su1
  succ Arm64InsSha256su1 = Arm64InsShadd
  succ Arm64InsShadd = Arm64InsShll2
  succ Arm64InsShll2 = Arm64InsShll
  succ Arm64InsShll = Arm64InsShl
  succ Arm64InsShl = Arm64InsShrn2
  succ Arm64InsShrn2 = Arm64InsShrn
  succ Arm64InsShrn = Arm64InsShsub
  succ Arm64InsShsub = Arm64InsSli
  succ Arm64InsSli = Arm64InsSmaddl
  succ Arm64InsSmaddl = Arm64InsSmaxp
  succ Arm64InsSmaxp = Arm64InsSmaxv
  succ Arm64InsSmaxv = Arm64InsSmax
  succ Arm64InsSmax = Arm64InsSmc
  succ Arm64InsSmc = Arm64InsSminp
  succ Arm64InsSminp = Arm64InsSminv
  succ Arm64InsSminv = Arm64InsSmin
  succ Arm64InsSmin = Arm64InsSmlal2
  succ Arm64InsSmlal2 = Arm64InsSmlal
  succ Arm64InsSmlal = Arm64InsSmlsl2
  succ Arm64InsSmlsl2 = Arm64InsSmlsl
  succ Arm64InsSmlsl = Arm64InsSmov
  succ Arm64InsSmov = Arm64InsSmsubl
  succ Arm64InsSmsubl = Arm64InsSmulh
  succ Arm64InsSmulh = Arm64InsSmull2
  succ Arm64InsSmull2 = Arm64InsSmull
  succ Arm64InsSmull = Arm64InsSqabs
  succ Arm64InsSqabs = Arm64InsSqadd
  succ Arm64InsSqadd = Arm64InsSqdmlal
  succ Arm64InsSqdmlal = Arm64InsSqdmlal2
  succ Arm64InsSqdmlal2 = Arm64InsSqdmlsl
  succ Arm64InsSqdmlsl = Arm64InsSqdmlsl2
  succ Arm64InsSqdmlsl2 = Arm64InsSqdmulh
  succ Arm64InsSqdmulh = Arm64InsSqdmull
  succ Arm64InsSqdmull = Arm64InsSqdmull2
  succ Arm64InsSqdmull2 = Arm64InsSqneg
  succ Arm64InsSqneg = Arm64InsSqrdmulh
  succ Arm64InsSqrdmulh = Arm64InsSqrshl
  succ Arm64InsSqrshl = Arm64InsSqrshrn
  succ Arm64InsSqrshrn = Arm64InsSqrshrn2
  succ Arm64InsSqrshrn2 = Arm64InsSqrshrun
  succ Arm64InsSqrshrun = Arm64InsSqrshrun2
  succ Arm64InsSqrshrun2 = Arm64InsSqshlu
  succ Arm64InsSqshlu = Arm64InsSqshl
  succ Arm64InsSqshl = Arm64InsSqshrn
  succ Arm64InsSqshrn = Arm64InsSqshrn2
  succ Arm64InsSqshrn2 = Arm64InsSqshrun
  succ Arm64InsSqshrun = Arm64InsSqshrun2
  succ Arm64InsSqshrun2 = Arm64InsSqsub
  succ Arm64InsSqsub = Arm64InsSqxtn2
  succ Arm64InsSqxtn2 = Arm64InsSqxtn
  succ Arm64InsSqxtn = Arm64InsSqxtun2
  succ Arm64InsSqxtun2 = Arm64InsSqxtun
  succ Arm64InsSqxtun = Arm64InsSrhadd
  succ Arm64InsSrhadd = Arm64InsSri
  succ Arm64InsSri = Arm64InsSrshl
  succ Arm64InsSrshl = Arm64InsSrshr
  succ Arm64InsSrshr = Arm64InsSrsra
  succ Arm64InsSrsra = Arm64InsSshll2
  succ Arm64InsSshll2 = Arm64InsSshll
  succ Arm64InsSshll = Arm64InsSshl
  succ Arm64InsSshl = Arm64InsSshr
  succ Arm64InsSshr = Arm64InsSsra
  succ Arm64InsSsra = Arm64InsSsubl2
  succ Arm64InsSsubl2 = Arm64InsSsubl
  succ Arm64InsSsubl = Arm64InsSsubw2
  succ Arm64InsSsubw2 = Arm64InsSsubw
  succ Arm64InsSsubw = Arm64InsSt1
  succ Arm64InsSt1 = Arm64InsSt2
  succ Arm64InsSt2 = Arm64InsSt3
  succ Arm64InsSt3 = Arm64InsSt4
  succ Arm64InsSt4 = Arm64InsStlrb
  succ Arm64InsStlrb = Arm64InsStlrh
  succ Arm64InsStlrh = Arm64InsStlr
  succ Arm64InsStlr = Arm64InsStlxp
  succ Arm64InsStlxp = Arm64InsStlxrb
  succ Arm64InsStlxrb = Arm64InsStlxrh
  succ Arm64InsStlxrh = Arm64InsStlxr
  succ Arm64InsStlxr = Arm64InsStnp
  succ Arm64InsStnp = Arm64InsStp
  succ Arm64InsStp = Arm64InsStrb
  succ Arm64InsStrb = Arm64InsStr
  succ Arm64InsStr = Arm64InsStrh
  succ Arm64InsStrh = Arm64InsSttrb
  succ Arm64InsSttrb = Arm64InsSttrh
  succ Arm64InsSttrh = Arm64InsSttr
  succ Arm64InsSttr = Arm64InsSturb
  succ Arm64InsSturb = Arm64InsStur
  succ Arm64InsStur = Arm64InsSturh
  succ Arm64InsSturh = Arm64InsStxp
  succ Arm64InsStxp = Arm64InsStxrb
  succ Arm64InsStxrb = Arm64InsStxrh
  succ Arm64InsStxrh = Arm64InsStxr
  succ Arm64InsStxr = Arm64InsSubhn
  succ Arm64InsSubhn = Arm64InsSubhn2
  succ Arm64InsSubhn2 = Arm64InsSub
  succ Arm64InsSub = Arm64InsSuqadd
  succ Arm64InsSuqadd = Arm64InsSvc
  succ Arm64InsSvc = Arm64InsSysl
  succ Arm64InsSysl = Arm64InsSys
  succ Arm64InsSys = Arm64InsTbl
  succ Arm64InsTbl = Arm64InsTbnz
  succ Arm64InsTbnz = Arm64InsTbx
  succ Arm64InsTbx = Arm64InsTbz
  succ Arm64InsTbz = Arm64InsTrn1
  succ Arm64InsTrn1 = Arm64InsTrn2
  succ Arm64InsTrn2 = Arm64InsUabal2
  succ Arm64InsUabal2 = Arm64InsUabal
  succ Arm64InsUabal = Arm64InsUaba
  succ Arm64InsUaba = Arm64InsUabdl2
  succ Arm64InsUabdl2 = Arm64InsUabdl
  succ Arm64InsUabdl = Arm64InsUabd
  succ Arm64InsUabd = Arm64InsUadalp
  succ Arm64InsUadalp = Arm64InsUaddlp
  succ Arm64InsUaddlp = Arm64InsUaddlv
  succ Arm64InsUaddlv = Arm64InsUaddl2
  succ Arm64InsUaddl2 = Arm64InsUaddl
  succ Arm64InsUaddl = Arm64InsUaddw2
  succ Arm64InsUaddw2 = Arm64InsUaddw
  succ Arm64InsUaddw = Arm64InsUbfm
  succ Arm64InsUbfm = Arm64InsUcvtf
  succ Arm64InsUcvtf = Arm64InsUdiv
  succ Arm64InsUdiv = Arm64InsUhadd
  succ Arm64InsUhadd = Arm64InsUhsub
  succ Arm64InsUhsub = Arm64InsUmaddl
  succ Arm64InsUmaddl = Arm64InsUmaxp
  succ Arm64InsUmaxp = Arm64InsUmaxv
  succ Arm64InsUmaxv = Arm64InsUmax
  succ Arm64InsUmax = Arm64InsUminp
  succ Arm64InsUminp = Arm64InsUminv
  succ Arm64InsUminv = Arm64InsUmin
  succ Arm64InsUmin = Arm64InsUmlal2
  succ Arm64InsUmlal2 = Arm64InsUmlal
  succ Arm64InsUmlal = Arm64InsUmlsl2
  succ Arm64InsUmlsl2 = Arm64InsUmlsl
  succ Arm64InsUmlsl = Arm64InsUmov
  succ Arm64InsUmov = Arm64InsUmsubl
  succ Arm64InsUmsubl = Arm64InsUmulh
  succ Arm64InsUmulh = Arm64InsUmull2
  succ Arm64InsUmull2 = Arm64InsUmull
  succ Arm64InsUmull = Arm64InsUqadd
  succ Arm64InsUqadd = Arm64InsUqrshl
  succ Arm64InsUqrshl = Arm64InsUqrshrn
  succ Arm64InsUqrshrn = Arm64InsUqrshrn2
  succ Arm64InsUqrshrn2 = Arm64InsUqshl
  succ Arm64InsUqshl = Arm64InsUqshrn
  succ Arm64InsUqshrn = Arm64InsUqshrn2
  succ Arm64InsUqshrn2 = Arm64InsUqsub
  succ Arm64InsUqsub = Arm64InsUqxtn2
  succ Arm64InsUqxtn2 = Arm64InsUqxtn
  succ Arm64InsUqxtn = Arm64InsUrecpe
  succ Arm64InsUrecpe = Arm64InsUrhadd
  succ Arm64InsUrhadd = Arm64InsUrshl
  succ Arm64InsUrshl = Arm64InsUrshr
  succ Arm64InsUrshr = Arm64InsUrsqrte
  succ Arm64InsUrsqrte = Arm64InsUrsra
  succ Arm64InsUrsra = Arm64InsUshll2
  succ Arm64InsUshll2 = Arm64InsUshll
  succ Arm64InsUshll = Arm64InsUshl
  succ Arm64InsUshl = Arm64InsUshr
  succ Arm64InsUshr = Arm64InsUsqadd
  succ Arm64InsUsqadd = Arm64InsUsra
  succ Arm64InsUsra = Arm64InsUsubl2
  succ Arm64InsUsubl2 = Arm64InsUsubl
  succ Arm64InsUsubl = Arm64InsUsubw2
  succ Arm64InsUsubw2 = Arm64InsUsubw
  succ Arm64InsUsubw = Arm64InsUzp1
  succ Arm64InsUzp1 = Arm64InsUzp2
  succ Arm64InsUzp2 = Arm64InsXtn2
  succ Arm64InsXtn2 = Arm64InsXtn
  succ Arm64InsXtn = Arm64InsZip1
  succ Arm64InsZip1 = Arm64InsZip2
  succ Arm64InsZip2 = Arm64InsMneg
  succ Arm64InsMneg = Arm64InsUmnegl
  succ Arm64InsUmnegl = Arm64InsSmnegl
  succ Arm64InsSmnegl = Arm64InsNop
  succ Arm64InsNop = Arm64InsYield
  succ Arm64InsYield = Arm64InsWfe
  succ Arm64InsWfe = Arm64InsWfi
  succ Arm64InsWfi = Arm64InsSev
  succ Arm64InsSev = Arm64InsSevl
  succ Arm64InsSevl = Arm64InsNgc
  succ Arm64InsNgc = Arm64InsSbfiz
  succ Arm64InsSbfiz = Arm64InsUbfiz
  succ Arm64InsUbfiz = Arm64InsSbfx
  succ Arm64InsSbfx = Arm64InsUbfx
  succ Arm64InsUbfx = Arm64InsBfi
  succ Arm64InsBfi = Arm64InsBfxil
  succ Arm64InsBfxil = Arm64InsCmn
  succ Arm64InsCmn = Arm64InsMvn
  succ Arm64InsMvn = Arm64InsTst
  succ Arm64InsTst = Arm64InsCset
  succ Arm64InsCset = Arm64InsCinc
  succ Arm64InsCinc = Arm64InsCsetm
  succ Arm64InsCsetm = Arm64InsCinv
  succ Arm64InsCinv = Arm64InsCneg
  succ Arm64InsCneg = Arm64InsSxtb
  succ Arm64InsSxtb = Arm64InsSxth
  succ Arm64InsSxth = Arm64InsSxtw
  succ Arm64InsSxtw = Arm64InsCmp
  succ Arm64InsCmp = Arm64InsUxtb
  succ Arm64InsUxtb = Arm64InsUxth
  succ Arm64InsUxth = Arm64InsUxtw
  succ Arm64InsUxtw = Arm64InsIc
  succ Arm64InsIc = Arm64InsDc
  succ Arm64InsDc = Arm64InsAt
  succ Arm64InsAt = Arm64InsTlbi
  succ Arm64InsTlbi = Arm64InsNegs
  succ Arm64InsNegs = Arm64InsNgcs
  succ Arm64InsNgcs = Arm64InsEnding
  succ Arm64InsEnding = error "Arm64Insn.succ: Arm64InsEnding has no successor"

  pred Arm64InsAbs = Arm64InsInvalid
  pred Arm64InsAdc = Arm64InsAbs
  pred Arm64InsAddhn = Arm64InsAdc
  pred Arm64InsAddhn2 = Arm64InsAddhn
  pred Arm64InsAddp = Arm64InsAddhn2
  pred Arm64InsAdd = Arm64InsAddp
  pred Arm64InsAddv = Arm64InsAdd
  pred Arm64InsAdr = Arm64InsAddv
  pred Arm64InsAdrp = Arm64InsAdr
  pred Arm64InsAesd = Arm64InsAdrp
  pred Arm64InsAese = Arm64InsAesd
  pred Arm64InsAesimc = Arm64InsAese
  pred Arm64InsAesmc = Arm64InsAesimc
  pred Arm64InsAnd = Arm64InsAesmc
  pred Arm64InsAsr = Arm64InsAnd
  pred Arm64InsB = Arm64InsAsr
  pred Arm64InsBfm = Arm64InsB
  pred Arm64InsBic = Arm64InsBfm
  pred Arm64InsBif = Arm64InsBic
  pred Arm64InsBit = Arm64InsBif
  pred Arm64InsBl = Arm64InsBit
  pred Arm64InsBlr = Arm64InsBl
  pred Arm64InsBr = Arm64InsBlr
  pred Arm64InsBrk = Arm64InsBr
  pred Arm64InsBsl = Arm64InsBrk
  pred Arm64InsCbnz = Arm64InsBsl
  pred Arm64InsCbz = Arm64InsCbnz
  pred Arm64InsCcmn = Arm64InsCbz
  pred Arm64InsCcmp = Arm64InsCcmn
  pred Arm64InsClrex = Arm64InsCcmp
  pred Arm64InsCls = Arm64InsClrex
  pred Arm64InsClz = Arm64InsCls
  pred Arm64InsCmeq = Arm64InsClz
  pred Arm64InsCmge = Arm64InsCmeq
  pred Arm64InsCmgt = Arm64InsCmge
  pred Arm64InsCmhi = Arm64InsCmgt
  pred Arm64InsCmhs = Arm64InsCmhi
  pred Arm64InsCmle = Arm64InsCmhs
  pred Arm64InsCmlt = Arm64InsCmle
  pred Arm64InsCmtst = Arm64InsCmlt
  pred Arm64InsCnt = Arm64InsCmtst
  pred Arm64InsMov = Arm64InsCnt
  pred Arm64InsCrc32b = Arm64InsMov
  pred Arm64InsCrc32cb = Arm64InsCrc32b
  pred Arm64InsCrc32ch = Arm64InsCrc32cb
  pred Arm64InsCrc32cw = Arm64InsCrc32ch
  pred Arm64InsCrc32cx = Arm64InsCrc32cw
  pred Arm64InsCrc32h = Arm64InsCrc32cx
  pred Arm64InsCrc32w = Arm64InsCrc32h
  pred Arm64InsCrc32x = Arm64InsCrc32w
  pred Arm64InsCsel = Arm64InsCrc32x
  pred Arm64InsCsinc = Arm64InsCsel
  pred Arm64InsCsinv = Arm64InsCsinc
  pred Arm64InsCsneg = Arm64InsCsinv
  pred Arm64InsDcps1 = Arm64InsCsneg
  pred Arm64InsDcps2 = Arm64InsDcps1
  pred Arm64InsDcps3 = Arm64InsDcps2
  pred Arm64InsDmb = Arm64InsDcps3
  pred Arm64InsDrps = Arm64InsDmb
  pred Arm64InsDsb = Arm64InsDrps
  pred Arm64InsDup = Arm64InsDsb
  pred Arm64InsEon = Arm64InsDup
  pred Arm64InsEor = Arm64InsEon
  pred Arm64InsEret = Arm64InsEor
  pred Arm64InsExtr = Arm64InsEret
  pred Arm64InsExt = Arm64InsExtr
  pred Arm64InsFabd = Arm64InsExt
  pred Arm64InsFabs = Arm64InsFabd
  pred Arm64InsFacge = Arm64InsFabs
  pred Arm64InsFacgt = Arm64InsFacge
  pred Arm64InsFadd = Arm64InsFacgt
  pred Arm64InsFaddp = Arm64InsFadd
  pred Arm64InsFccmp = Arm64InsFaddp
  pred Arm64InsFccmpe = Arm64InsFccmp
  pred Arm64InsFcmeq = Arm64InsFccmpe
  pred Arm64InsFcmge = Arm64InsFcmeq
  pred Arm64InsFcmgt = Arm64InsFcmge
  pred Arm64InsFcmle = Arm64InsFcmgt
  pred Arm64InsFcmlt = Arm64InsFcmle
  pred Arm64InsFcmp = Arm64InsFcmlt
  pred Arm64InsFcmpe = Arm64InsFcmp
  pred Arm64InsFcsel = Arm64InsFcmpe
  pred Arm64InsFcvtas = Arm64InsFcsel
  pred Arm64InsFcvtau = Arm64InsFcvtas
  pred Arm64InsFcvt = Arm64InsFcvtau
  pred Arm64InsFcvtl = Arm64InsFcvt
  pred Arm64InsFcvtl2 = Arm64InsFcvtl
  pred Arm64InsFcvtms = Arm64InsFcvtl2
  pred Arm64InsFcvtmu = Arm64InsFcvtms
  pred Arm64InsFcvtns = Arm64InsFcvtmu
  pred Arm64InsFcvtnu = Arm64InsFcvtns
  pred Arm64InsFcvtn = Arm64InsFcvtnu
  pred Arm64InsFcvtn2 = Arm64InsFcvtn
  pred Arm64InsFcvtps = Arm64InsFcvtn2
  pred Arm64InsFcvtpu = Arm64InsFcvtps
  pred Arm64InsFcvtxn = Arm64InsFcvtpu
  pred Arm64InsFcvtxn2 = Arm64InsFcvtxn
  pred Arm64InsFcvtzs = Arm64InsFcvtxn2
  pred Arm64InsFcvtzu = Arm64InsFcvtzs
  pred Arm64InsFdiv = Arm64InsFcvtzu
  pred Arm64InsFmadd = Arm64InsFdiv
  pred Arm64InsFmax = Arm64InsFmadd
  pred Arm64InsFmaxnm = Arm64InsFmax
  pred Arm64InsFmaxnmp = Arm64InsFmaxnm
  pred Arm64InsFmaxnmv = Arm64InsFmaxnmp
  pred Arm64InsFmaxp = Arm64InsFmaxnmv
  pred Arm64InsFmaxv = Arm64InsFmaxp
  pred Arm64InsFmin = Arm64InsFmaxv
  pred Arm64InsFminnm = Arm64InsFmin
  pred Arm64InsFminnmp = Arm64InsFminnm
  pred Arm64InsFminnmv = Arm64InsFminnmp
  pred Arm64InsFminp = Arm64InsFminnmv
  pred Arm64InsFminv = Arm64InsFminp
  pred Arm64InsFmla = Arm64InsFminv
  pred Arm64InsFmls = Arm64InsFmla
  pred Arm64InsFmov = Arm64InsFmls
  pred Arm64InsFmsub = Arm64InsFmov
  pred Arm64InsFmul = Arm64InsFmsub
  pred Arm64InsFmulx = Arm64InsFmul
  pred Arm64InsFneg = Arm64InsFmulx
  pred Arm64InsFnmadd = Arm64InsFneg
  pred Arm64InsFnmsub = Arm64InsFnmadd
  pred Arm64InsFnmul = Arm64InsFnmsub
  pred Arm64InsFrecpe = Arm64InsFnmul
  pred Arm64InsFrecps = Arm64InsFrecpe
  pred Arm64InsFrecpx = Arm64InsFrecps
  pred Arm64InsFrinta = Arm64InsFrecpx
  pred Arm64InsFrinti = Arm64InsFrinta
  pred Arm64InsFrintm = Arm64InsFrinti
  pred Arm64InsFrintn = Arm64InsFrintm
  pred Arm64InsFrintp = Arm64InsFrintn
  pred Arm64InsFrintx = Arm64InsFrintp
  pred Arm64InsFrintz = Arm64InsFrintx
  pred Arm64InsFrsqrte = Arm64InsFrintz
  pred Arm64InsFrsqrts = Arm64InsFrsqrte
  pred Arm64InsFsqrt = Arm64InsFrsqrts
  pred Arm64InsFsub = Arm64InsFsqrt
  pred Arm64InsHint = Arm64InsFsub
  pred Arm64InsHlt = Arm64InsHint
  pred Arm64InsHvc = Arm64InsHlt
  pred Arm64InsIns = Arm64InsHvc
  pred Arm64InsIsb = Arm64InsIns
  pred Arm64InsLd1 = Arm64InsIsb
  pred Arm64InsLd1r = Arm64InsLd1
  pred Arm64InsLd2r = Arm64InsLd1r
  pred Arm64InsLd2 = Arm64InsLd2r
  pred Arm64InsLd3r = Arm64InsLd2
  pred Arm64InsLd3 = Arm64InsLd3r
  pred Arm64InsLd4 = Arm64InsLd3
  pred Arm64InsLd4r = Arm64InsLd4
  pred Arm64InsLdarb = Arm64InsLd4r
  pred Arm64InsLdarh = Arm64InsLdarb
  pred Arm64InsLdar = Arm64InsLdarh
  pred Arm64InsLdaxp = Arm64InsLdar
  pred Arm64InsLdaxrb = Arm64InsLdaxp
  pred Arm64InsLdaxrh = Arm64InsLdaxrb
  pred Arm64InsLdaxr = Arm64InsLdaxrh
  pred Arm64InsLdnp = Arm64InsLdaxr
  pred Arm64InsLdp = Arm64InsLdnp
  pred Arm64InsLdpsw = Arm64InsLdp
  pred Arm64InsLdrb = Arm64InsLdpsw
  pred Arm64InsLdr = Arm64InsLdrb
  pred Arm64InsLdrh = Arm64InsLdr
  pred Arm64InsLdrsb = Arm64InsLdrh
  pred Arm64InsLdrsh = Arm64InsLdrsb
  pred Arm64InsLdrsw = Arm64InsLdrsh
  pred Arm64InsLdtrb = Arm64InsLdrsw
  pred Arm64InsLdtrh = Arm64InsLdtrb
  pred Arm64InsLdtrsb = Arm64InsLdtrh
  pred Arm64InsLdtrsh = Arm64InsLdtrsb
  pred Arm64InsLdtrsw = Arm64InsLdtrsh
  pred Arm64InsLdtr = Arm64InsLdtrsw
  pred Arm64InsLdurb = Arm64InsLdtr
  pred Arm64InsLdur = Arm64InsLdurb
  pred Arm64InsLdurh = Arm64InsLdur
  pred Arm64InsLdursb = Arm64InsLdurh
  pred Arm64InsLdursh = Arm64InsLdursb
  pred Arm64InsLdursw = Arm64InsLdursh
  pred Arm64InsLdxp = Arm64InsLdursw
  pred Arm64InsLdxrb = Arm64InsLdxp
  pred Arm64InsLdxrh = Arm64InsLdxrb
  pred Arm64InsLdxr = Arm64InsLdxrh
  pred Arm64InsLsl = Arm64InsLdxr
  pred Arm64InsLsr = Arm64InsLsl
  pred Arm64InsMadd = Arm64InsLsr
  pred Arm64InsMla = Arm64InsMadd
  pred Arm64InsMls = Arm64InsMla
  pred Arm64InsMovi = Arm64InsMls
  pred Arm64InsMovk = Arm64InsMovi
  pred Arm64InsMovn = Arm64InsMovk
  pred Arm64InsMovz = Arm64InsMovn
  pred Arm64InsMrs = Arm64InsMovz
  pred Arm64InsMsr = Arm64InsMrs
  pred Arm64InsMsub = Arm64InsMsr
  pred Arm64InsMul = Arm64InsMsub
  pred Arm64InsMvni = Arm64InsMul
  pred Arm64InsNeg = Arm64InsMvni
  pred Arm64InsNot = Arm64InsNeg
  pred Arm64InsOrn = Arm64InsNot
  pred Arm64InsOrr = Arm64InsOrn
  pred Arm64InsPmull2 = Arm64InsOrr
  pred Arm64InsPmull = Arm64InsPmull2
  pred Arm64InsPmul = Arm64InsPmull
  pred Arm64InsPrfm = Arm64InsPmul
  pred Arm64InsPrfum = Arm64InsPrfm
  pred Arm64InsRaddhn = Arm64InsPrfum
  pred Arm64InsRaddhn2 = Arm64InsRaddhn
  pred Arm64InsRbit = Arm64InsRaddhn2
  pred Arm64InsRet = Arm64InsRbit
  pred Arm64InsRev16 = Arm64InsRet
  pred Arm64InsRev32 = Arm64InsRev16
  pred Arm64InsRev64 = Arm64InsRev32
  pred Arm64InsRev = Arm64InsRev64
  pred Arm64InsRor = Arm64InsRev
  pred Arm64InsRshrn2 = Arm64InsRor
  pred Arm64InsRshrn = Arm64InsRshrn2
  pred Arm64InsRsubhn = Arm64InsRshrn
  pred Arm64InsRsubhn2 = Arm64InsRsubhn
  pred Arm64InsSabal2 = Arm64InsRsubhn2
  pred Arm64InsSabal = Arm64InsSabal2
  pred Arm64InsSaba = Arm64InsSabal
  pred Arm64InsSabdl2 = Arm64InsSaba
  pred Arm64InsSabdl = Arm64InsSabdl2
  pred Arm64InsSabd = Arm64InsSabdl
  pred Arm64InsSadalp = Arm64InsSabd
  pred Arm64InsSaddlp = Arm64InsSadalp
  pred Arm64InsSaddlv = Arm64InsSaddlp
  pred Arm64InsSaddl2 = Arm64InsSaddlv
  pred Arm64InsSaddl = Arm64InsSaddl2
  pred Arm64InsSaddw2 = Arm64InsSaddl
  pred Arm64InsSaddw = Arm64InsSaddw2
  pred Arm64InsSbc = Arm64InsSaddw
  pred Arm64InsSbfm = Arm64InsSbc
  pred Arm64InsScvtf = Arm64InsSbfm
  pred Arm64InsSdiv = Arm64InsScvtf
  pred Arm64InsSha1c = Arm64InsSdiv
  pred Arm64InsSha1h = Arm64InsSha1c
  pred Arm64InsSha1m = Arm64InsSha1h
  pred Arm64InsSha1p = Arm64InsSha1m
  pred Arm64InsSha1su0 = Arm64InsSha1p
  pred Arm64InsSha1su1 = Arm64InsSha1su0
  pred Arm64InsSha256h2 = Arm64InsSha1su1
  pred Arm64InsSha256h = Arm64InsSha256h2
  pred Arm64InsSha256su0 = Arm64InsSha256h
  pred Arm64InsSha256su1 = Arm64InsSha256su0
  pred Arm64InsShadd = Arm64InsSha256su1
  pred Arm64InsShll2 = Arm64InsShadd
  pred Arm64InsShll = Arm64InsShll2
  pred Arm64InsShl = Arm64InsShll
  pred Arm64InsShrn2 = Arm64InsShl
  pred Arm64InsShrn = Arm64InsShrn2
  pred Arm64InsShsub = Arm64InsShrn
  pred Arm64InsSli = Arm64InsShsub
  pred Arm64InsSmaddl = Arm64InsSli
  pred Arm64InsSmaxp = Arm64InsSmaddl
  pred Arm64InsSmaxv = Arm64InsSmaxp
  pred Arm64InsSmax = Arm64InsSmaxv
  pred Arm64InsSmc = Arm64InsSmax
  pred Arm64InsSminp = Arm64InsSmc
  pred Arm64InsSminv = Arm64InsSminp
  pred Arm64InsSmin = Arm64InsSminv
  pred Arm64InsSmlal2 = Arm64InsSmin
  pred Arm64InsSmlal = Arm64InsSmlal2
  pred Arm64InsSmlsl2 = Arm64InsSmlal
  pred Arm64InsSmlsl = Arm64InsSmlsl2
  pred Arm64InsSmov = Arm64InsSmlsl
  pred Arm64InsSmsubl = Arm64InsSmov
  pred Arm64InsSmulh = Arm64InsSmsubl
  pred Arm64InsSmull2 = Arm64InsSmulh
  pred Arm64InsSmull = Arm64InsSmull2
  pred Arm64InsSqabs = Arm64InsSmull
  pred Arm64InsSqadd = Arm64InsSqabs
  pred Arm64InsSqdmlal = Arm64InsSqadd
  pred Arm64InsSqdmlal2 = Arm64InsSqdmlal
  pred Arm64InsSqdmlsl = Arm64InsSqdmlal2
  pred Arm64InsSqdmlsl2 = Arm64InsSqdmlsl
  pred Arm64InsSqdmulh = Arm64InsSqdmlsl2
  pred Arm64InsSqdmull = Arm64InsSqdmulh
  pred Arm64InsSqdmull2 = Arm64InsSqdmull
  pred Arm64InsSqneg = Arm64InsSqdmull2
  pred Arm64InsSqrdmulh = Arm64InsSqneg
  pred Arm64InsSqrshl = Arm64InsSqrdmulh
  pred Arm64InsSqrshrn = Arm64InsSqrshl
  pred Arm64InsSqrshrn2 = Arm64InsSqrshrn
  pred Arm64InsSqrshrun = Arm64InsSqrshrn2
  pred Arm64InsSqrshrun2 = Arm64InsSqrshrun
  pred Arm64InsSqshlu = Arm64InsSqrshrun2
  pred Arm64InsSqshl = Arm64InsSqshlu
  pred Arm64InsSqshrn = Arm64InsSqshl
  pred Arm64InsSqshrn2 = Arm64InsSqshrn
  pred Arm64InsSqshrun = Arm64InsSqshrn2
  pred Arm64InsSqshrun2 = Arm64InsSqshrun
  pred Arm64InsSqsub = Arm64InsSqshrun2
  pred Arm64InsSqxtn2 = Arm64InsSqsub
  pred Arm64InsSqxtn = Arm64InsSqxtn2
  pred Arm64InsSqxtun2 = Arm64InsSqxtn
  pred Arm64InsSqxtun = Arm64InsSqxtun2
  pred Arm64InsSrhadd = Arm64InsSqxtun
  pred Arm64InsSri = Arm64InsSrhadd
  pred Arm64InsSrshl = Arm64InsSri
  pred Arm64InsSrshr = Arm64InsSrshl
  pred Arm64InsSrsra = Arm64InsSrshr
  pred Arm64InsSshll2 = Arm64InsSrsra
  pred Arm64InsSshll = Arm64InsSshll2
  pred Arm64InsSshl = Arm64InsSshll
  pred Arm64InsSshr = Arm64InsSshl
  pred Arm64InsSsra = Arm64InsSshr
  pred Arm64InsSsubl2 = Arm64InsSsra
  pred Arm64InsSsubl = Arm64InsSsubl2
  pred Arm64InsSsubw2 = Arm64InsSsubl
  pred Arm64InsSsubw = Arm64InsSsubw2
  pred Arm64InsSt1 = Arm64InsSsubw
  pred Arm64InsSt2 = Arm64InsSt1
  pred Arm64InsSt3 = Arm64InsSt2
  pred Arm64InsSt4 = Arm64InsSt3
  pred Arm64InsStlrb = Arm64InsSt4
  pred Arm64InsStlrh = Arm64InsStlrb
  pred Arm64InsStlr = Arm64InsStlrh
  pred Arm64InsStlxp = Arm64InsStlr
  pred Arm64InsStlxrb = Arm64InsStlxp
  pred Arm64InsStlxrh = Arm64InsStlxrb
  pred Arm64InsStlxr = Arm64InsStlxrh
  pred Arm64InsStnp = Arm64InsStlxr
  pred Arm64InsStp = Arm64InsStnp
  pred Arm64InsStrb = Arm64InsStp
  pred Arm64InsStr = Arm64InsStrb
  pred Arm64InsStrh = Arm64InsStr
  pred Arm64InsSttrb = Arm64InsStrh
  pred Arm64InsSttrh = Arm64InsSttrb
  pred Arm64InsSttr = Arm64InsSttrh
  pred Arm64InsSturb = Arm64InsSttr
  pred Arm64InsStur = Arm64InsSturb
  pred Arm64InsSturh = Arm64InsStur
  pred Arm64InsStxp = Arm64InsSturh
  pred Arm64InsStxrb = Arm64InsStxp
  pred Arm64InsStxrh = Arm64InsStxrb
  pred Arm64InsStxr = Arm64InsStxrh
  pred Arm64InsSubhn = Arm64InsStxr
  pred Arm64InsSubhn2 = Arm64InsSubhn
  pred Arm64InsSub = Arm64InsSubhn2
  pred Arm64InsSuqadd = Arm64InsSub
  pred Arm64InsSvc = Arm64InsSuqadd
  pred Arm64InsSysl = Arm64InsSvc
  pred Arm64InsSys = Arm64InsSysl
  pred Arm64InsTbl = Arm64InsSys
  pred Arm64InsTbnz = Arm64InsTbl
  pred Arm64InsTbx = Arm64InsTbnz
  pred Arm64InsTbz = Arm64InsTbx
  pred Arm64InsTrn1 = Arm64InsTbz
  pred Arm64InsTrn2 = Arm64InsTrn1
  pred Arm64InsUabal2 = Arm64InsTrn2
  pred Arm64InsUabal = Arm64InsUabal2
  pred Arm64InsUaba = Arm64InsUabal
  pred Arm64InsUabdl2 = Arm64InsUaba
  pred Arm64InsUabdl = Arm64InsUabdl2
  pred Arm64InsUabd = Arm64InsUabdl
  pred Arm64InsUadalp = Arm64InsUabd
  pred Arm64InsUaddlp = Arm64InsUadalp
  pred Arm64InsUaddlv = Arm64InsUaddlp
  pred Arm64InsUaddl2 = Arm64InsUaddlv
  pred Arm64InsUaddl = Arm64InsUaddl2
  pred Arm64InsUaddw2 = Arm64InsUaddl
  pred Arm64InsUaddw = Arm64InsUaddw2
  pred Arm64InsUbfm = Arm64InsUaddw
  pred Arm64InsUcvtf = Arm64InsUbfm
  pred Arm64InsUdiv = Arm64InsUcvtf
  pred Arm64InsUhadd = Arm64InsUdiv
  pred Arm64InsUhsub = Arm64InsUhadd
  pred Arm64InsUmaddl = Arm64InsUhsub
  pred Arm64InsUmaxp = Arm64InsUmaddl
  pred Arm64InsUmaxv = Arm64InsUmaxp
  pred Arm64InsUmax = Arm64InsUmaxv
  pred Arm64InsUminp = Arm64InsUmax
  pred Arm64InsUminv = Arm64InsUminp
  pred Arm64InsUmin = Arm64InsUminv
  pred Arm64InsUmlal2 = Arm64InsUmin
  pred Arm64InsUmlal = Arm64InsUmlal2
  pred Arm64InsUmlsl2 = Arm64InsUmlal
  pred Arm64InsUmlsl = Arm64InsUmlsl2
  pred Arm64InsUmov = Arm64InsUmlsl
  pred Arm64InsUmsubl = Arm64InsUmov
  pred Arm64InsUmulh = Arm64InsUmsubl
  pred Arm64InsUmull2 = Arm64InsUmulh
  pred Arm64InsUmull = Arm64InsUmull2
  pred Arm64InsUqadd = Arm64InsUmull
  pred Arm64InsUqrshl = Arm64InsUqadd
  pred Arm64InsUqrshrn = Arm64InsUqrshl
  pred Arm64InsUqrshrn2 = Arm64InsUqrshrn
  pred Arm64InsUqshl = Arm64InsUqrshrn2
  pred Arm64InsUqshrn = Arm64InsUqshl
  pred Arm64InsUqshrn2 = Arm64InsUqshrn
  pred Arm64InsUqsub = Arm64InsUqshrn2
  pred Arm64InsUqxtn2 = Arm64InsUqsub
  pred Arm64InsUqxtn = Arm64InsUqxtn2
  pred Arm64InsUrecpe = Arm64InsUqxtn
  pred Arm64InsUrhadd = Arm64InsUrecpe
  pred Arm64InsUrshl = Arm64InsUrhadd
  pred Arm64InsUrshr = Arm64InsUrshl
  pred Arm64InsUrsqrte = Arm64InsUrshr
  pred Arm64InsUrsra = Arm64InsUrsqrte
  pred Arm64InsUshll2 = Arm64InsUrsra
  pred Arm64InsUshll = Arm64InsUshll2
  pred Arm64InsUshl = Arm64InsUshll
  pred Arm64InsUshr = Arm64InsUshl
  pred Arm64InsUsqadd = Arm64InsUshr
  pred Arm64InsUsra = Arm64InsUsqadd
  pred Arm64InsUsubl2 = Arm64InsUsra
  pred Arm64InsUsubl = Arm64InsUsubl2
  pred Arm64InsUsubw2 = Arm64InsUsubl
  pred Arm64InsUsubw = Arm64InsUsubw2
  pred Arm64InsUzp1 = Arm64InsUsubw
  pred Arm64InsUzp2 = Arm64InsUzp1
  pred Arm64InsXtn2 = Arm64InsUzp2
  pred Arm64InsXtn = Arm64InsXtn2
  pred Arm64InsZip1 = Arm64InsXtn
  pred Arm64InsZip2 = Arm64InsZip1
  pred Arm64InsMneg = Arm64InsZip2
  pred Arm64InsUmnegl = Arm64InsMneg
  pred Arm64InsSmnegl = Arm64InsUmnegl
  pred Arm64InsNop = Arm64InsSmnegl
  pred Arm64InsYield = Arm64InsNop
  pred Arm64InsWfe = Arm64InsYield
  pred Arm64InsWfi = Arm64InsWfe
  pred Arm64InsSev = Arm64InsWfi
  pred Arm64InsSevl = Arm64InsSev
  pred Arm64InsNgc = Arm64InsSevl
  pred Arm64InsSbfiz = Arm64InsNgc
  pred Arm64InsUbfiz = Arm64InsSbfiz
  pred Arm64InsSbfx = Arm64InsUbfiz
  pred Arm64InsUbfx = Arm64InsSbfx
  pred Arm64InsBfi = Arm64InsUbfx
  pred Arm64InsBfxil = Arm64InsBfi
  pred Arm64InsCmn = Arm64InsBfxil
  pred Arm64InsMvn = Arm64InsCmn
  pred Arm64InsTst = Arm64InsMvn
  pred Arm64InsCset = Arm64InsTst
  pred Arm64InsCinc = Arm64InsCset
  pred Arm64InsCsetm = Arm64InsCinc
  pred Arm64InsCinv = Arm64InsCsetm
  pred Arm64InsCneg = Arm64InsCinv
  pred Arm64InsSxtb = Arm64InsCneg
  pred Arm64InsSxth = Arm64InsSxtb
  pred Arm64InsSxtw = Arm64InsSxth
  pred Arm64InsCmp = Arm64InsSxtw
  pred Arm64InsUxtb = Arm64InsCmp
  pred Arm64InsUxth = Arm64InsUxtb
  pred Arm64InsUxtw = Arm64InsUxth
  pred Arm64InsIc = Arm64InsUxtw
  pred Arm64InsDc = Arm64InsIc
  pred Arm64InsAt = Arm64InsDc
  pred Arm64InsTlbi = Arm64InsAt
  pred Arm64InsNegs = Arm64InsTlbi
  pred Arm64InsNgcs = Arm64InsNegs
  pred Arm64InsEnding = Arm64InsNgcs
  pred Arm64InsInvalid = error "Arm64Insn.pred: Arm64InsInvalid has no predecessor"

  enumFromTo :: Arm64Insn -> Arm64Insn -> [Arm64Insn]
enumFromTo Arm64Insn
from Arm64Insn
to = Arm64Insn -> [Arm64Insn]
forall t. Enum t => t -> [t]
go Arm64Insn
from
    where
      end :: Int
end = Arm64Insn -> Int
forall a. Enum a => a -> Int
fromEnum Arm64Insn
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 :: Arm64Insn -> [Arm64Insn]
enumFrom Arm64Insn
from = Arm64Insn -> Arm64Insn -> [Arm64Insn]
forall a. Enum a => a -> a -> [a]
enumFromTo Arm64Insn
from Arm64Insn
Arm64InsEnding

  fromEnum :: Arm64Insn -> Int
fromEnum Arm64Insn
Arm64InsInvalid = Int
0
  fromEnum Arm64Insn
Arm64InsAbs = Int
1
  fromEnum Arm64Insn
Arm64InsAdc = Int
2
  fromEnum Arm64Insn
Arm64InsAddhn = Int
3
  fromEnum Arm64Insn
Arm64InsAddhn2 = Int
4
  fromEnum Arm64Insn
Arm64InsAddp = Int
5
  fromEnum Arm64Insn
Arm64InsAdd = Int
6
  fromEnum Arm64Insn
Arm64InsAddv = Int
7
  fromEnum Arm64Insn
Arm64InsAdr = Int
8
  fromEnum Arm64Insn
Arm64InsAdrp = Int
9
  fromEnum Arm64Insn
Arm64InsAesd = Int
10
  fromEnum Arm64Insn
Arm64InsAese = Int
11
  fromEnum Arm64Insn
Arm64InsAesimc = Int
12
  fromEnum Arm64Insn
Arm64InsAesmc = Int
13
  fromEnum Arm64Insn
Arm64InsAnd = Int
14
  fromEnum Arm64Insn
Arm64InsAsr = Int
15
  fromEnum Arm64Insn
Arm64InsB = Int
16
  fromEnum Arm64Insn
Arm64InsBfm = Int
17
  fromEnum Arm64Insn
Arm64InsBic = Int
18
  fromEnum Arm64Insn
Arm64InsBif = Int
19
  fromEnum Arm64Insn
Arm64InsBit = Int
20
  fromEnum Arm64Insn
Arm64InsBl = Int
21
  fromEnum Arm64Insn
Arm64InsBlr = Int
22
  fromEnum Arm64Insn
Arm64InsBr = Int
23
  fromEnum Arm64Insn
Arm64InsBrk = Int
24
  fromEnum Arm64Insn
Arm64InsBsl = Int
25
  fromEnum Arm64Insn
Arm64InsCbnz = Int
26
  fromEnum Arm64Insn
Arm64InsCbz = Int
27
  fromEnum Arm64Insn
Arm64InsCcmn = Int
28
  fromEnum Arm64Insn
Arm64InsCcmp = Int
29
  fromEnum Arm64Insn
Arm64InsClrex = Int
30
  fromEnum Arm64Insn
Arm64InsCls = Int
31
  fromEnum Arm64Insn
Arm64InsClz = Int
32
  fromEnum Arm64Insn
Arm64InsCmeq = Int
33
  fromEnum Arm64Insn
Arm64InsCmge = Int
34
  fromEnum Arm64Insn
Arm64InsCmgt = Int
35
  fromEnum Arm64Insn
Arm64InsCmhi = Int
36
  fromEnum Arm64Insn
Arm64InsCmhs = Int
37
  fromEnum Arm64Insn
Arm64InsCmle = Int
38
  fromEnum Arm64Insn
Arm64InsCmlt = Int
39
  fromEnum Arm64Insn
Arm64InsCmtst = Int
40
  fromEnum Arm64Insn
Arm64InsCnt = Int
41
  fromEnum Arm64Insn
Arm64InsMov = Int
42
  fromEnum Arm64Insn
Arm64InsCrc32b = Int
43
  fromEnum Arm64Insn
Arm64InsCrc32cb = Int
44
  fromEnum Arm64Insn
Arm64InsCrc32ch = Int
45
  fromEnum Arm64Insn
Arm64InsCrc32cw = Int
46
  fromEnum Arm64Insn
Arm64InsCrc32cx = Int
47
  fromEnum Arm64Insn
Arm64InsCrc32h = Int
48
  fromEnum Arm64Insn
Arm64InsCrc32w = Int
49
  fromEnum Arm64Insn
Arm64InsCrc32x = Int
50
  fromEnum Arm64Insn
Arm64InsCsel = Int
51
  fromEnum Arm64Insn
Arm64InsCsinc = Int
52
  fromEnum Arm64Insn
Arm64InsCsinv = Int
53
  fromEnum Arm64Insn
Arm64InsCsneg = Int
54
  fromEnum Arm64Insn
Arm64InsDcps1 = Int
55
  fromEnum Arm64Insn
Arm64InsDcps2 = Int
56
  fromEnum Arm64Insn
Arm64InsDcps3 = Int
57
  fromEnum Arm64Insn
Arm64InsDmb = Int
58
  fromEnum Arm64Insn
Arm64InsDrps = Int
59
  fromEnum Arm64Insn
Arm64InsDsb = Int
60
  fromEnum Arm64Insn
Arm64InsDup = Int
61
  fromEnum Arm64Insn
Arm64InsEon = Int
62
  fromEnum Arm64Insn
Arm64InsEor = Int
63
  fromEnum Arm64Insn
Arm64InsEret = Int
64
  fromEnum Arm64Insn
Arm64InsExtr = Int
65
  fromEnum Arm64Insn
Arm64InsExt = Int
66
  fromEnum Arm64Insn
Arm64InsFabd = Int
67
  fromEnum Arm64Insn
Arm64InsFabs = Int
68
  fromEnum Arm64Insn
Arm64InsFacge = Int
69
  fromEnum Arm64Insn
Arm64InsFacgt = Int
70
  fromEnum Arm64Insn
Arm64InsFadd = Int
71
  fromEnum Arm64Insn
Arm64InsFaddp = Int
72
  fromEnum Arm64Insn
Arm64InsFccmp = Int
73
  fromEnum Arm64Insn
Arm64InsFccmpe = Int
74
  fromEnum Arm64Insn
Arm64InsFcmeq = Int
75
  fromEnum Arm64Insn
Arm64InsFcmge = Int
76
  fromEnum Arm64Insn
Arm64InsFcmgt = Int
77
  fromEnum Arm64Insn
Arm64InsFcmle = Int
78
  fromEnum Arm64Insn
Arm64InsFcmlt = Int
79
  fromEnum Arm64Insn
Arm64InsFcmp = Int
80
  fromEnum Arm64Insn
Arm64InsFcmpe = Int
81
  fromEnum Arm64Insn
Arm64InsFcsel = Int
82
  fromEnum Arm64Insn
Arm64InsFcvtas = Int
83
  fromEnum Arm64Insn
Arm64InsFcvtau = Int
84
  fromEnum Arm64Insn
Arm64InsFcvt = Int
85
  fromEnum Arm64Insn
Arm64InsFcvtl = Int
86
  fromEnum Arm64Insn
Arm64InsFcvtl2 = Int
87
  fromEnum Arm64Insn
Arm64InsFcvtms = Int
88
  fromEnum Arm64Insn
Arm64InsFcvtmu = Int
89
  fromEnum Arm64Insn
Arm64InsFcvtns = Int
90
  fromEnum Arm64Insn
Arm64InsFcvtnu = Int
91
  fromEnum Arm64Insn
Arm64InsFcvtn = Int
92
  fromEnum Arm64Insn
Arm64InsFcvtn2 = Int
93
  fromEnum Arm64Insn
Arm64InsFcvtps = Int
94
  fromEnum Arm64Insn
Arm64InsFcvtpu = Int
95
  fromEnum Arm64Insn
Arm64InsFcvtxn = Int
96
  fromEnum Arm64Insn
Arm64InsFcvtxn2 = Int
97
  fromEnum Arm64Insn
Arm64InsFcvtzs = Int
98
  fromEnum Arm64Insn
Arm64InsFcvtzu = Int
99
  fromEnum Arm64Insn
Arm64InsFdiv = Int
100
  fromEnum Arm64Insn
Arm64InsFmadd = Int
101
  fromEnum Arm64Insn
Arm64InsFmax = Int
102
  fromEnum Arm64Insn
Arm64InsFmaxnm = Int
103
  fromEnum Arm64Insn
Arm64InsFmaxnmp = Int
104
  fromEnum Arm64Insn
Arm64InsFmaxnmv = Int
105
  fromEnum Arm64Insn
Arm64InsFmaxp = Int
106
  fromEnum Arm64Insn
Arm64InsFmaxv = Int
107
  fromEnum Arm64Insn
Arm64InsFmin = Int
108
  fromEnum Arm64Insn
Arm64InsFminnm = Int
109
  fromEnum Arm64Insn
Arm64InsFminnmp = Int
110
  fromEnum Arm64Insn
Arm64InsFminnmv = Int
111
  fromEnum Arm64Insn
Arm64InsFminp = Int
112
  fromEnum Arm64Insn
Arm64InsFminv = Int
113
  fromEnum Arm64Insn
Arm64InsFmla = Int
114
  fromEnum Arm64Insn
Arm64InsFmls = Int
115
  fromEnum Arm64Insn
Arm64InsFmov = Int
116
  fromEnum Arm64Insn
Arm64InsFmsub = Int
117
  fromEnum Arm64Insn
Arm64InsFmul = Int
118
  fromEnum Arm64Insn
Arm64InsFmulx = Int
119
  fromEnum Arm64Insn
Arm64InsFneg = Int
120
  fromEnum Arm64Insn
Arm64InsFnmadd = Int
121
  fromEnum Arm64Insn
Arm64InsFnmsub = Int
122
  fromEnum Arm64Insn
Arm64InsFnmul = Int
123
  fromEnum Arm64Insn
Arm64InsFrecpe = Int
124
  fromEnum Arm64Insn
Arm64InsFrecps = Int
125
  fromEnum Arm64Insn
Arm64InsFrecpx = Int
126
  fromEnum Arm64Insn
Arm64InsFrinta = Int
127
  fromEnum Arm64Insn
Arm64InsFrinti = Int
128
  fromEnum Arm64Insn
Arm64InsFrintm = Int
129
  fromEnum Arm64Insn
Arm64InsFrintn = Int
130
  fromEnum Arm64Insn
Arm64InsFrintp = Int
131
  fromEnum Arm64Insn
Arm64InsFrintx = Int
132
  fromEnum Arm64Insn
Arm64InsFrintz = Int
133
  fromEnum Arm64Insn
Arm64InsFrsqrte = Int
134
  fromEnum Arm64Insn
Arm64InsFrsqrts = Int
135
  fromEnum Arm64Insn
Arm64InsFsqrt = Int
136
  fromEnum Arm64Insn
Arm64InsFsub = Int
137
  fromEnum Arm64Insn
Arm64InsHint = Int
138
  fromEnum Arm64Insn
Arm64InsHlt = Int
139
  fromEnum Arm64Insn
Arm64InsHvc = Int
140
  fromEnum Arm64Insn
Arm64InsIns = Int
141
  fromEnum Arm64Insn
Arm64InsIsb = Int
142
  fromEnum Arm64Insn
Arm64InsLd1 = Int
143
  fromEnum Arm64Insn
Arm64InsLd1r = Int
144
  fromEnum Arm64Insn
Arm64InsLd2r = Int
145
  fromEnum Arm64Insn
Arm64InsLd2 = Int
146
  fromEnum Arm64Insn
Arm64InsLd3r = Int
147
  fromEnum Arm64Insn
Arm64InsLd3 = Int
148
  fromEnum Arm64Insn
Arm64InsLd4 = Int
149
  fromEnum Arm64Insn
Arm64InsLd4r = Int
150
  fromEnum Arm64Insn
Arm64InsLdarb = Int
151
  fromEnum Arm64Insn
Arm64InsLdarh = Int
152
  fromEnum Arm64Insn
Arm64InsLdar = Int
153
  fromEnum Arm64Insn
Arm64InsLdaxp = Int
154
  fromEnum Arm64Insn
Arm64InsLdaxrb = Int
155
  fromEnum Arm64Insn
Arm64InsLdaxrh = Int
156
  fromEnum Arm64Insn
Arm64InsLdaxr = Int
157
  fromEnum Arm64Insn
Arm64InsLdnp = Int
158
  fromEnum Arm64Insn
Arm64InsLdp = Int
159
  fromEnum Arm64Insn
Arm64InsLdpsw = Int
160
  fromEnum Arm64Insn
Arm64InsLdrb = Int
161
  fromEnum Arm64Insn
Arm64InsLdr = Int
162
  fromEnum Arm64Insn
Arm64InsLdrh = Int
163
  fromEnum Arm64Insn
Arm64InsLdrsb = Int
164
  fromEnum Arm64Insn
Arm64InsLdrsh = Int
165
  fromEnum Arm64Insn
Arm64InsLdrsw = Int
166
  fromEnum Arm64Insn
Arm64InsLdtrb = Int
167
  fromEnum Arm64Insn
Arm64InsLdtrh = Int
168
  fromEnum Arm64Insn
Arm64InsLdtrsb = Int
169
  fromEnum Arm64Insn
Arm64InsLdtrsh = Int
170
  fromEnum Arm64Insn
Arm64InsLdtrsw = Int
171
  fromEnum Arm64Insn
Arm64InsLdtr = Int
172
  fromEnum Arm64Insn
Arm64InsLdurb = Int
173
  fromEnum Arm64Insn
Arm64InsLdur = Int
174
  fromEnum Arm64Insn
Arm64InsLdurh = Int
175
  fromEnum Arm64Insn
Arm64InsLdursb = Int
176
  fromEnum Arm64Insn
Arm64InsLdursh = Int
177
  fromEnum Arm64Insn
Arm64InsLdursw = Int
178
  fromEnum Arm64Insn
Arm64InsLdxp = Int
179
  fromEnum Arm64Insn
Arm64InsLdxrb = Int
180
  fromEnum Arm64Insn
Arm64InsLdxrh = Int
181
  fromEnum Arm64Insn
Arm64InsLdxr = Int
182
  fromEnum Arm64Insn
Arm64InsLsl = Int
183
  fromEnum Arm64Insn
Arm64InsLsr = Int
184
  fromEnum Arm64Insn
Arm64InsMadd = Int
185
  fromEnum Arm64Insn
Arm64InsMla = Int
186
  fromEnum Arm64Insn
Arm64InsMls = Int
187
  fromEnum Arm64Insn
Arm64InsMovi = Int
188
  fromEnum Arm64Insn
Arm64InsMovk = Int
189
  fromEnum Arm64Insn
Arm64InsMovn = Int
190
  fromEnum Arm64Insn
Arm64InsMovz = Int
191
  fromEnum Arm64Insn
Arm64InsMrs = Int
192
  fromEnum Arm64Insn
Arm64InsMsr = Int
193
  fromEnum Arm64Insn
Arm64InsMsub = Int
194
  fromEnum Arm64Insn
Arm64InsMul = Int
195
  fromEnum Arm64Insn
Arm64InsMvni = Int
196
  fromEnum Arm64Insn
Arm64InsNeg = Int
197
  fromEnum Arm64Insn
Arm64InsNot = Int
198
  fromEnum Arm64Insn
Arm64InsOrn = Int
199
  fromEnum Arm64Insn
Arm64InsOrr = Int
200
  fromEnum Arm64Insn
Arm64InsPmull2 = Int
201
  fromEnum Arm64Insn
Arm64InsPmull = Int
202
  fromEnum Arm64Insn
Arm64InsPmul = Int
203
  fromEnum Arm64Insn
Arm64InsPrfm = Int
204
  fromEnum Arm64Insn
Arm64InsPrfum = Int
205
  fromEnum Arm64Insn
Arm64InsRaddhn = Int
206
  fromEnum Arm64Insn
Arm64InsRaddhn2 = Int
207
  fromEnum Arm64Insn
Arm64InsRbit = Int
208
  fromEnum Arm64Insn
Arm64InsRet = Int
209
  fromEnum Arm64Insn
Arm64InsRev16 = Int
210
  fromEnum Arm64Insn
Arm64InsRev32 = Int
211
  fromEnum Arm64Insn
Arm64InsRev64 = Int
212
  fromEnum Arm64Insn
Arm64InsRev = Int
213
  fromEnum Arm64Insn
Arm64InsRor = Int
214
  fromEnum Arm64Insn
Arm64InsRshrn2 = Int
215
  fromEnum Arm64Insn
Arm64InsRshrn = Int
216
  fromEnum Arm64Insn
Arm64InsRsubhn = Int
217
  fromEnum Arm64Insn
Arm64InsRsubhn2 = Int
218
  fromEnum Arm64Insn
Arm64InsSabal2 = Int
219
  fromEnum Arm64Insn
Arm64InsSabal = Int
220
  fromEnum Arm64Insn
Arm64InsSaba = Int
221
  fromEnum Arm64Insn
Arm64InsSabdl2 = Int
222
  fromEnum Arm64Insn
Arm64InsSabdl = Int
223
  fromEnum Arm64Insn
Arm64InsSabd = Int
224
  fromEnum Arm64Insn
Arm64InsSadalp = Int
225
  fromEnum Arm64Insn
Arm64InsSaddlp = Int
226
  fromEnum Arm64Insn
Arm64InsSaddlv = Int
227
  fromEnum Arm64Insn
Arm64InsSaddl2 = Int
228
  fromEnum Arm64Insn
Arm64InsSaddl = Int
229
  fromEnum Arm64Insn
Arm64InsSaddw2 = Int
230
  fromEnum Arm64Insn
Arm64InsSaddw = Int
231
  fromEnum Arm64Insn
Arm64InsSbc = Int
232
  fromEnum Arm64Insn
Arm64InsSbfm = Int
233
  fromEnum Arm64Insn
Arm64InsScvtf = Int
234
  fromEnum Arm64Insn
Arm64InsSdiv = Int
235
  fromEnum Arm64Insn
Arm64InsSha1c = Int
236
  fromEnum Arm64Insn
Arm64InsSha1h = Int
237
  fromEnum Arm64Insn
Arm64InsSha1m = Int
238
  fromEnum Arm64Insn
Arm64InsSha1p = Int
239
  fromEnum Arm64Insn
Arm64InsSha1su0 = Int
240
  fromEnum Arm64Insn
Arm64InsSha1su1 = Int
241
  fromEnum Arm64Insn
Arm64InsSha256h2 = Int
242
  fromEnum Arm64Insn
Arm64InsSha256h = Int
243
  fromEnum Arm64Insn
Arm64InsSha256su0 = Int
244
  fromEnum Arm64Insn
Arm64InsSha256su1 = Int
245
  fromEnum Arm64Insn
Arm64InsShadd = Int
246
  fromEnum Arm64Insn
Arm64InsShll2 = Int
247
  fromEnum Arm64Insn
Arm64InsShll = Int
248
  fromEnum Arm64Insn
Arm64InsShl = Int
249
  fromEnum Arm64Insn
Arm64InsShrn2 = Int
250
  fromEnum Arm64Insn
Arm64InsShrn = Int
251
  fromEnum Arm64Insn
Arm64InsShsub = Int
252
  fromEnum Arm64Insn
Arm64InsSli = Int
253
  fromEnum Arm64Insn
Arm64InsSmaddl = Int
254
  fromEnum Arm64Insn
Arm64InsSmaxp = Int
255
  fromEnum Arm64Insn
Arm64InsSmaxv = Int
256
  fromEnum Arm64Insn
Arm64InsSmax = Int
257
  fromEnum Arm64Insn
Arm64InsSmc = Int
258
  fromEnum Arm64Insn
Arm64InsSminp = Int
259
  fromEnum Arm64Insn
Arm64InsSminv = Int
260
  fromEnum Arm64Insn
Arm64InsSmin = Int
261
  fromEnum Arm64Insn
Arm64InsSmlal2 = Int
262
  fromEnum Arm64Insn
Arm64InsSmlal = Int
263
  fromEnum Arm64Insn
Arm64InsSmlsl2 = Int
264
  fromEnum Arm64Insn
Arm64InsSmlsl = Int
265
  fromEnum Arm64Insn
Arm64InsSmov = Int
266
  fromEnum Arm64Insn
Arm64InsSmsubl = Int
267
  fromEnum Arm64Insn
Arm64InsSmulh = Int
268
  fromEnum Arm64Insn
Arm64InsSmull2 = Int
269
  fromEnum Arm64Insn
Arm64InsSmull = Int
270
  fromEnum Arm64Insn
Arm64InsSqabs = Int
271
  fromEnum Arm64Insn
Arm64InsSqadd = Int
272
  fromEnum Arm64Insn
Arm64InsSqdmlal = Int
273
  fromEnum Arm64Insn
Arm64InsSqdmlal2 = Int
274
  fromEnum Arm64Insn
Arm64InsSqdmlsl = Int
275
  fromEnum Arm64Insn
Arm64InsSqdmlsl2 = Int
276
  fromEnum Arm64Insn
Arm64InsSqdmulh = Int
277
  fromEnum Arm64Insn
Arm64InsSqdmull = Int
278
  fromEnum Arm64Insn
Arm64InsSqdmull2 = Int
279
  fromEnum Arm64Insn
Arm64InsSqneg = Int
280
  fromEnum Arm64Insn
Arm64InsSqrdmulh = Int
281
  fromEnum Arm64Insn
Arm64InsSqrshl = Int
282
  fromEnum Arm64Insn
Arm64InsSqrshrn = Int
283
  fromEnum Arm64Insn
Arm64InsSqrshrn2 = Int
284
  fromEnum Arm64Insn
Arm64InsSqrshrun = Int
285
  fromEnum Arm64Insn
Arm64InsSqrshrun2 = Int
286
  fromEnum Arm64Insn
Arm64InsSqshlu = Int
287
  fromEnum Arm64Insn
Arm64InsSqshl = Int
288
  fromEnum Arm64Insn
Arm64InsSqshrn = Int
289
  fromEnum Arm64Insn
Arm64InsSqshrn2 = Int
290
  fromEnum Arm64Insn
Arm64InsSqshrun = Int
291
  fromEnum Arm64Insn
Arm64InsSqshrun2 = Int
292
  fromEnum Arm64Insn
Arm64InsSqsub = Int
293
  fromEnum Arm64Insn
Arm64InsSqxtn2 = Int
294
  fromEnum Arm64Insn
Arm64InsSqxtn = Int
295
  fromEnum Arm64Insn
Arm64InsSqxtun2 = Int
296
  fromEnum Arm64Insn
Arm64InsSqxtun = Int
297
  fromEnum Arm64Insn
Arm64InsSrhadd = Int
298
  fromEnum Arm64Insn
Arm64InsSri = Int
299
  fromEnum Arm64Insn
Arm64InsSrshl = Int
300
  fromEnum Arm64Insn
Arm64InsSrshr = Int
301
  fromEnum Arm64Insn
Arm64InsSrsra = Int
302
  fromEnum Arm64Insn
Arm64InsSshll2 = Int
303
  fromEnum Arm64Insn
Arm64InsSshll = Int
304
  fromEnum Arm64Insn
Arm64InsSshl = Int
305
  fromEnum Arm64Insn
Arm64InsSshr = Int
306
  fromEnum Arm64Insn
Arm64InsSsra = Int
307
  fromEnum Arm64Insn
Arm64InsSsubl2 = Int
308
  fromEnum Arm64Insn
Arm64InsSsubl = Int
309
  fromEnum Arm64Insn
Arm64InsSsubw2 = Int
310
  fromEnum Arm64Insn
Arm64InsSsubw = Int
311
  fromEnum Arm64Insn
Arm64InsSt1 = Int
312
  fromEnum Arm64Insn
Arm64InsSt2 = Int
313
  fromEnum Arm64Insn
Arm64InsSt3 = Int
314
  fromEnum Arm64Insn
Arm64InsSt4 = Int
315
  fromEnum Arm64Insn
Arm64InsStlrb = Int
316
  fromEnum Arm64Insn
Arm64InsStlrh = Int
317
  fromEnum Arm64Insn
Arm64InsStlr = Int
318
  fromEnum Arm64Insn
Arm64InsStlxp = Int
319
  fromEnum Arm64Insn
Arm64InsStlxrb = Int
320
  fromEnum Arm64Insn
Arm64InsStlxrh = Int
321
  fromEnum Arm64Insn
Arm64InsStlxr = Int
322
  fromEnum Arm64Insn
Arm64InsStnp = Int
323
  fromEnum Arm64Insn
Arm64InsStp = Int
324
  fromEnum Arm64Insn
Arm64InsStrb = Int
325
  fromEnum Arm64Insn
Arm64InsStr = Int
326
  fromEnum Arm64Insn
Arm64InsStrh = Int
327
  fromEnum Arm64Insn
Arm64InsSttrb = Int
328
  fromEnum Arm64Insn
Arm64InsSttrh = Int
329
  fromEnum Arm64Insn
Arm64InsSttr = Int
330
  fromEnum Arm64Insn
Arm64InsSturb = Int
331
  fromEnum Arm64Insn
Arm64InsStur = Int
332
  fromEnum Arm64Insn
Arm64InsSturh = Int
333
  fromEnum Arm64Insn
Arm64InsStxp = Int
334
  fromEnum Arm64Insn
Arm64InsStxrb = Int
335
  fromEnum Arm64Insn
Arm64InsStxrh = Int
336
  fromEnum Arm64Insn
Arm64InsStxr = Int
337
  fromEnum Arm64Insn
Arm64InsSubhn = Int
338
  fromEnum Arm64Insn
Arm64InsSubhn2 = Int
339
  fromEnum Arm64Insn
Arm64InsSub = Int
340
  fromEnum Arm64Insn
Arm64InsSuqadd = Int
341
  fromEnum Arm64Insn
Arm64InsSvc = Int
342
  fromEnum Arm64Insn
Arm64InsSysl = Int
343
  fromEnum Arm64Insn
Arm64InsSys = Int
344
  fromEnum Arm64Insn
Arm64InsTbl = Int
345
  fromEnum Arm64Insn
Arm64InsTbnz = Int
346
  fromEnum Arm64Insn
Arm64InsTbx = Int
347
  fromEnum Arm64Insn
Arm64InsTbz = Int
348
  fromEnum Arm64Insn
Arm64InsTrn1 = Int
349
  fromEnum Arm64Insn
Arm64InsTrn2 = Int
350
  fromEnum Arm64Insn
Arm64InsUabal2 = Int
351
  fromEnum Arm64Insn
Arm64InsUabal = Int
352
  fromEnum Arm64Insn
Arm64InsUaba = Int
353
  fromEnum Arm64Insn
Arm64InsUabdl2 = Int
354
  fromEnum Arm64Insn
Arm64InsUabdl = Int
355
  fromEnum Arm64Insn
Arm64InsUabd = Int
356
  fromEnum Arm64Insn
Arm64InsUadalp = Int
357
  fromEnum Arm64Insn
Arm64InsUaddlp = Int
358
  fromEnum Arm64Insn
Arm64InsUaddlv = Int
359
  fromEnum Arm64Insn
Arm64InsUaddl2 = Int
360
  fromEnum Arm64Insn
Arm64InsUaddl = Int
361
  fromEnum Arm64Insn
Arm64InsUaddw2 = Int
362
  fromEnum Arm64Insn
Arm64InsUaddw = Int
363
  fromEnum Arm64Insn
Arm64InsUbfm = Int
364
  fromEnum Arm64Insn
Arm64InsUcvtf = Int
365
  fromEnum Arm64Insn
Arm64InsUdiv = Int
366
  fromEnum Arm64Insn
Arm64InsUhadd = Int
367
  fromEnum Arm64Insn
Arm64InsUhsub = Int
368
  fromEnum Arm64Insn
Arm64InsUmaddl = Int
369
  fromEnum Arm64Insn
Arm64InsUmaxp = Int
370
  fromEnum Arm64Insn
Arm64InsUmaxv = Int
371
  fromEnum Arm64Insn
Arm64InsUmax = Int
372
  fromEnum Arm64Insn
Arm64InsUminp = Int
373
  fromEnum Arm64Insn
Arm64InsUminv = Int
374
  fromEnum Arm64Insn
Arm64InsUmin = Int
375
  fromEnum Arm64Insn
Arm64InsUmlal2 = Int
376
  fromEnum Arm64Insn
Arm64InsUmlal = Int
377
  fromEnum Arm64Insn
Arm64InsUmlsl2 = Int
378
  fromEnum Arm64Insn
Arm64InsUmlsl = Int
379
  fromEnum Arm64Insn
Arm64InsUmov = Int
380
  fromEnum Arm64Insn
Arm64InsUmsubl = Int
381
  fromEnum Arm64Insn
Arm64InsUmulh = Int
382
  fromEnum Arm64Insn
Arm64InsUmull2 = Int
383
  fromEnum Arm64Insn
Arm64InsUmull = Int
384
  fromEnum Arm64Insn
Arm64InsUqadd = Int
385
  fromEnum Arm64Insn
Arm64InsUqrshl = Int
386
  fromEnum Arm64Insn
Arm64InsUqrshrn = Int
387
  fromEnum Arm64Insn
Arm64InsUqrshrn2 = Int
388
  fromEnum Arm64Insn
Arm64InsUqshl = Int
389
  fromEnum Arm64Insn
Arm64InsUqshrn = Int
390
  fromEnum Arm64Insn
Arm64InsUqshrn2 = Int
391
  fromEnum Arm64Insn
Arm64InsUqsub = Int
392
  fromEnum Arm64Insn
Arm64InsUqxtn2 = Int
393
  fromEnum Arm64Insn
Arm64InsUqxtn = Int
394
  fromEnum Arm64Insn
Arm64InsUrecpe = Int
395
  fromEnum Arm64Insn
Arm64InsUrhadd = Int
396
  fromEnum Arm64Insn
Arm64InsUrshl = Int
397
  fromEnum Arm64Insn
Arm64InsUrshr = Int
398
  fromEnum Arm64Insn
Arm64InsUrsqrte = Int
399
  fromEnum Arm64Insn
Arm64InsUrsra = Int
400
  fromEnum Arm64Insn
Arm64InsUshll2 = Int
401
  fromEnum Arm64Insn
Arm64InsUshll = Int
402
  fromEnum Arm64Insn
Arm64InsUshl = Int
403
  fromEnum Arm64Insn
Arm64InsUshr = Int
404
  fromEnum Arm64Insn
Arm64InsUsqadd = Int
405
  fromEnum Arm64Insn
Arm64InsUsra = Int
406
  fromEnum Arm64Insn
Arm64InsUsubl2 = Int
407
  fromEnum Arm64Insn
Arm64InsUsubl = Int
408
  fromEnum Arm64Insn
Arm64InsUsubw2 = Int
409
  fromEnum Arm64Insn
Arm64InsUsubw = Int
410
  fromEnum Arm64Insn
Arm64InsUzp1 = Int
411
  fromEnum Arm64Insn
Arm64InsUzp2 = Int
412
  fromEnum Arm64Insn
Arm64InsXtn2 = Int
413
  fromEnum Arm64Insn
Arm64InsXtn = Int
414
  fromEnum Arm64Insn
Arm64InsZip1 = Int
415
  fromEnum Arm64Insn
Arm64InsZip2 = Int
416
  fromEnum Arm64Insn
Arm64InsMneg = Int
417
  fromEnum Arm64Insn
Arm64InsUmnegl = Int
418
  fromEnum Arm64Insn
Arm64InsSmnegl = Int
419
  fromEnum Arm64Insn
Arm64InsNop = Int
420
  fromEnum Arm64Insn
Arm64InsYield = Int
421
  fromEnum Arm64Insn
Arm64InsWfe = Int
422
  fromEnum Arm64Insn
Arm64InsWfi = Int
423
  fromEnum Arm64Insn
Arm64InsSev = Int
424
  fromEnum Arm64Insn
Arm64InsSevl = Int
425
  fromEnum Arm64Insn
Arm64InsNgc = Int
426
  fromEnum Arm64Insn
Arm64InsSbfiz = Int
427
  fromEnum Arm64Insn
Arm64InsUbfiz = Int
428
  fromEnum Arm64Insn
Arm64InsSbfx = Int
429
  fromEnum Arm64Insn
Arm64InsUbfx = Int
430
  fromEnum Arm64Insn
Arm64InsBfi = Int
431
  fromEnum Arm64Insn
Arm64InsBfxil = Int
432
  fromEnum Arm64Insn
Arm64InsCmn = Int
433
  fromEnum Arm64Insn
Arm64InsMvn = Int
434
  fromEnum Arm64Insn
Arm64InsTst = Int
435
  fromEnum Arm64Insn
Arm64InsCset = Int
436
  fromEnum Arm64Insn
Arm64InsCinc = Int
437
  fromEnum Arm64Insn
Arm64InsCsetm = Int
438
  fromEnum Arm64Insn
Arm64InsCinv = Int
439
  fromEnum Arm64Insn
Arm64InsCneg = Int
440
  fromEnum Arm64Insn
Arm64InsSxtb = Int
441
  fromEnum Arm64Insn
Arm64InsSxth = Int
442
  fromEnum Arm64Insn
Arm64InsSxtw = Int
443
  fromEnum Arm64Insn
Arm64InsCmp = Int
444
  fromEnum Arm64Insn
Arm64InsUxtb = Int
445
  fromEnum Arm64Insn
Arm64InsUxth = Int
446
  fromEnum Arm64Insn
Arm64InsUxtw = Int
447
  fromEnum Arm64Insn
Arm64InsIc = Int
448
  fromEnum Arm64Insn
Arm64InsDc = Int
449
  fromEnum Arm64Insn
Arm64InsAt = Int
450
  fromEnum Arm64Insn
Arm64InsTlbi = Int
451
  fromEnum Arm64Insn
Arm64InsNegs = Int
452
  fromEnum Arm64Insn
Arm64InsNgcs = Int
453
  fromEnum Arm64Insn
Arm64InsEnding = Int
454

  toEnum :: Int -> Arm64Insn
toEnum Int
0 = Arm64Insn
Arm64InsInvalid
  toEnum Int
1 = Arm64Insn
Arm64InsAbs
  toEnum Int
2 = Arm64Insn
Arm64InsAdc
  toEnum Int
3 = Arm64Insn
Arm64InsAddhn
  toEnum Int
4 = Arm64Insn
Arm64InsAddhn2
  toEnum Int
5 = Arm64Insn
Arm64InsAddp
  toEnum Int
6 = Arm64Insn
Arm64InsAdd
  toEnum Int
7 = Arm64Insn
Arm64InsAddv
  toEnum Int
8 = Arm64Insn
Arm64InsAdr
  toEnum Int
9 = Arm64Insn
Arm64InsAdrp
  toEnum Int
10 = Arm64Insn
Arm64InsAesd
  toEnum Int
11 = Arm64Insn
Arm64InsAese
  toEnum Int
12 = Arm64Insn
Arm64InsAesimc
  toEnum Int
13 = Arm64Insn
Arm64InsAesmc
  toEnum Int
14 = Arm64Insn
Arm64InsAnd
  toEnum Int
15 = Arm64Insn
Arm64InsAsr
  toEnum Int
16 = Arm64Insn
Arm64InsB
  toEnum Int
17 = Arm64Insn
Arm64InsBfm
  toEnum Int
18 = Arm64Insn
Arm64InsBic
  toEnum Int
19 = Arm64Insn
Arm64InsBif
  toEnum Int
20 = Arm64Insn
Arm64InsBit
  toEnum Int
21 = Arm64Insn
Arm64InsBl
  toEnum Int
22 = Arm64Insn
Arm64InsBlr
  toEnum Int
23 = Arm64Insn
Arm64InsBr
  toEnum Int
24 = Arm64Insn
Arm64InsBrk
  toEnum Int
25 = Arm64Insn
Arm64InsBsl
  toEnum Int
26 = Arm64Insn
Arm64InsCbnz
  toEnum Int
27 = Arm64Insn
Arm64InsCbz
  toEnum Int
28 = Arm64Insn
Arm64InsCcmn
  toEnum Int
29 = Arm64Insn
Arm64InsCcmp
  toEnum Int
30 = Arm64Insn
Arm64InsClrex
  toEnum Int
31 = Arm64Insn
Arm64InsCls
  toEnum Int
32 = Arm64Insn
Arm64InsClz
  toEnum Int
33 = Arm64Insn
Arm64InsCmeq
  toEnum Int
34 = Arm64Insn
Arm64InsCmge
  toEnum Int
35 = Arm64Insn
Arm64InsCmgt
  toEnum Int
36 = Arm64Insn
Arm64InsCmhi
  toEnum Int
37 = Arm64Insn
Arm64InsCmhs
  toEnum Int
38 = Arm64Insn
Arm64InsCmle
  toEnum Int
39 = Arm64Insn
Arm64InsCmlt
  toEnum Int
40 = Arm64Insn
Arm64InsCmtst
  toEnum Int
41 = Arm64Insn
Arm64InsCnt
  toEnum Int
42 = Arm64Insn
Arm64InsMov
  toEnum Int
43 = Arm64Insn
Arm64InsCrc32b
  toEnum Int
44 = Arm64Insn
Arm64InsCrc32cb
  toEnum Int
45 = Arm64Insn
Arm64InsCrc32ch
  toEnum Int
46 = Arm64Insn
Arm64InsCrc32cw
  toEnum Int
47 = Arm64Insn
Arm64InsCrc32cx
  toEnum Int
48 = Arm64Insn
Arm64InsCrc32h
  toEnum Int
49 = Arm64Insn
Arm64InsCrc32w
  toEnum Int
50 = Arm64Insn
Arm64InsCrc32x
  toEnum Int
51 = Arm64Insn
Arm64InsCsel
  toEnum Int
52 = Arm64Insn
Arm64InsCsinc
  toEnum Int
53 = Arm64Insn
Arm64InsCsinv
  toEnum Int
54 = Arm64Insn
Arm64InsCsneg
  toEnum Int
55 = Arm64Insn
Arm64InsDcps1
  toEnum Int
56 = Arm64Insn
Arm64InsDcps2
  toEnum Int
57 = Arm64Insn
Arm64InsDcps3
  toEnum Int
58 = Arm64Insn
Arm64InsDmb
  toEnum Int
59 = Arm64Insn
Arm64InsDrps
  toEnum Int
60 = Arm64Insn
Arm64InsDsb
  toEnum Int
61 = Arm64Insn
Arm64InsDup
  toEnum Int
62 = Arm64Insn
Arm64InsEon
  toEnum Int
63 = Arm64Insn
Arm64InsEor
  toEnum Int
64 = Arm64Insn
Arm64InsEret
  toEnum Int
65 = Arm64Insn
Arm64InsExtr
  toEnum Int
66 = Arm64Insn
Arm64InsExt
  toEnum Int
67 = Arm64Insn
Arm64InsFabd
  toEnum Int
68 = Arm64Insn
Arm64InsFabs
  toEnum Int
69 = Arm64Insn
Arm64InsFacge
  toEnum Int
70 = Arm64Insn
Arm64InsFacgt
  toEnum Int
71 = Arm64Insn
Arm64InsFadd
  toEnum Int
72 = Arm64Insn
Arm64InsFaddp
  toEnum Int
73 = Arm64Insn
Arm64InsFccmp
  toEnum Int
74 = Arm64Insn
Arm64InsFccmpe
  toEnum Int
75 = Arm64Insn
Arm64InsFcmeq
  toEnum Int
76 = Arm64Insn
Arm64InsFcmge
  toEnum Int
77 = Arm64Insn
Arm64InsFcmgt
  toEnum Int
78 = Arm64Insn
Arm64InsFcmle
  toEnum Int
79 = Arm64Insn
Arm64InsFcmlt
  toEnum Int
80 = Arm64Insn
Arm64InsFcmp
  toEnum Int
81 = Arm64Insn
Arm64InsFcmpe
  toEnum Int
82 = Arm64Insn
Arm64InsFcsel
  toEnum Int
83 = Arm64Insn
Arm64InsFcvtas
  toEnum Int
84 = Arm64Insn
Arm64InsFcvtau
  toEnum Int
85 = Arm64Insn
Arm64InsFcvt
  toEnum Int
86 = Arm64Insn
Arm64InsFcvtl
  toEnum Int
87 = Arm64Insn
Arm64InsFcvtl2
  toEnum Int
88 = Arm64Insn
Arm64InsFcvtms
  toEnum Int
89 = Arm64Insn
Arm64InsFcvtmu
  toEnum Int
90 = Arm64Insn
Arm64InsFcvtns
  toEnum Int
91 = Arm64Insn
Arm64InsFcvtnu
  toEnum Int
92 = Arm64Insn
Arm64InsFcvtn
  toEnum Int
93 = Arm64Insn
Arm64InsFcvtn2
  toEnum Int
94 = Arm64Insn
Arm64InsFcvtps
  toEnum Int
95 = Arm64Insn
Arm64InsFcvtpu
  toEnum Int
96 = Arm64Insn
Arm64InsFcvtxn
  toEnum Int
97 = Arm64Insn
Arm64InsFcvtxn2
  toEnum Int
98 = Arm64Insn
Arm64InsFcvtzs
  toEnum Int
99 = Arm64Insn
Arm64InsFcvtzu
  toEnum Int
100 = Arm64Insn
Arm64InsFdiv
  toEnum Int
101 = Arm64Insn
Arm64InsFmadd
  toEnum Int
102 = Arm64Insn
Arm64InsFmax
  toEnum Int
103 = Arm64Insn
Arm64InsFmaxnm
  toEnum Int
104 = Arm64Insn
Arm64InsFmaxnmp
  toEnum Int
105 = Arm64Insn
Arm64InsFmaxnmv
  toEnum Int
106 = Arm64Insn
Arm64InsFmaxp
  toEnum Int
107 = Arm64Insn
Arm64InsFmaxv
  toEnum Int
108 = Arm64Insn
Arm64InsFmin
  toEnum Int
109 = Arm64Insn
Arm64InsFminnm
  toEnum Int
110 = Arm64Insn
Arm64InsFminnmp
  toEnum Int
111 = Arm64Insn
Arm64InsFminnmv
  toEnum Int
112 = Arm64Insn
Arm64InsFminp
  toEnum Int
113 = Arm64Insn
Arm64InsFminv
  toEnum Int
114 = Arm64Insn
Arm64InsFmla
  toEnum Int
115 = Arm64Insn
Arm64InsFmls
  toEnum Int
116 = Arm64Insn
Arm64InsFmov
  toEnum Int
117 = Arm64Insn
Arm64InsFmsub
  toEnum Int
118 = Arm64Insn
Arm64InsFmul
  toEnum Int
119 = Arm64Insn
Arm64InsFmulx
  toEnum Int
120 = Arm64Insn
Arm64InsFneg
  toEnum Int
121 = Arm64Insn
Arm64InsFnmadd
  toEnum Int
122 = Arm64Insn
Arm64InsFnmsub
  toEnum Int
123 = Arm64Insn
Arm64InsFnmul
  toEnum Int
124 = Arm64Insn
Arm64InsFrecpe
  toEnum Int
125 = Arm64Insn
Arm64InsFrecps
  toEnum Int
126 = Arm64Insn
Arm64InsFrecpx
  toEnum Int
127 = Arm64Insn
Arm64InsFrinta
  toEnum Int
128 = Arm64Insn
Arm64InsFrinti
  toEnum Int
129 = Arm64Insn
Arm64InsFrintm
  toEnum Int
130 = Arm64Insn
Arm64InsFrintn
  toEnum Int
131 = Arm64Insn
Arm64InsFrintp
  toEnum Int
132 = Arm64Insn
Arm64InsFrintx
  toEnum Int
133 = Arm64Insn
Arm64InsFrintz
  toEnum Int
134 = Arm64Insn
Arm64InsFrsqrte
  toEnum Int
135 = Arm64Insn
Arm64InsFrsqrts
  toEnum Int
136 = Arm64Insn
Arm64InsFsqrt
  toEnum Int
137 = Arm64Insn
Arm64InsFsub
  toEnum Int
138 = Arm64Insn
Arm64InsHint
  toEnum Int
139 = Arm64Insn
Arm64InsHlt
  toEnum Int
140 = Arm64Insn
Arm64InsHvc
  toEnum Int
141 = Arm64Insn
Arm64InsIns
  toEnum Int
142 = Arm64Insn
Arm64InsIsb
  toEnum Int
143 = Arm64Insn
Arm64InsLd1
  toEnum Int
144 = Arm64Insn
Arm64InsLd1r
  toEnum Int
145 = Arm64Insn
Arm64InsLd2r
  toEnum Int
146 = Arm64Insn
Arm64InsLd2
  toEnum Int
147 = Arm64Insn
Arm64InsLd3r
  toEnum Int
148 = Arm64Insn
Arm64InsLd3
  toEnum Int
149 = Arm64Insn
Arm64InsLd4
  toEnum Int
150 = Arm64Insn
Arm64InsLd4r
  toEnum Int
151 = Arm64Insn
Arm64InsLdarb
  toEnum Int
152 = Arm64Insn
Arm64InsLdarh
  toEnum Int
153 = Arm64Insn
Arm64InsLdar
  toEnum Int
154 = Arm64Insn
Arm64InsLdaxp
  toEnum Int
155 = Arm64Insn
Arm64InsLdaxrb
  toEnum Int
156 = Arm64Insn
Arm64InsLdaxrh
  toEnum Int
157 = Arm64Insn
Arm64InsLdaxr
  toEnum Int
158 = Arm64Insn
Arm64InsLdnp
  toEnum Int
159 = Arm64Insn
Arm64InsLdp
  toEnum Int
160 = Arm64Insn
Arm64InsLdpsw
  toEnum Int
161 = Arm64Insn
Arm64InsLdrb
  toEnum Int
162 = Arm64Insn
Arm64InsLdr
  toEnum Int
163 = Arm64Insn
Arm64InsLdrh
  toEnum Int
164 = Arm64Insn
Arm64InsLdrsb
  toEnum Int
165 = Arm64Insn
Arm64InsLdrsh
  toEnum Int
166 = Arm64Insn
Arm64InsLdrsw
  toEnum Int
167 = Arm64Insn
Arm64InsLdtrb
  toEnum Int
168 = Arm64Insn
Arm64InsLdtrh
  toEnum Int
169 = Arm64Insn
Arm64InsLdtrsb
  toEnum Int
170 = Arm64Insn
Arm64InsLdtrsh
  toEnum Int
171 = Arm64Insn
Arm64InsLdtrsw
  toEnum Int
172 = Arm64Insn
Arm64InsLdtr
  toEnum Int
173 = Arm64Insn
Arm64InsLdurb
  toEnum Int
174 = Arm64Insn
Arm64InsLdur
  toEnum Int
175 = Arm64Insn
Arm64InsLdurh
  toEnum Int
176 = Arm64Insn
Arm64InsLdursb
  toEnum Int
177 = Arm64Insn
Arm64InsLdursh
  toEnum Int
178 = Arm64Insn
Arm64InsLdursw
  toEnum Int
179 = Arm64Insn
Arm64InsLdxp
  toEnum Int
180 = Arm64Insn
Arm64InsLdxrb
  toEnum Int
181 = Arm64Insn
Arm64InsLdxrh
  toEnum Int
182 = Arm64Insn
Arm64InsLdxr
  toEnum Int
183 = Arm64Insn
Arm64InsLsl
  toEnum Int
184 = Arm64Insn
Arm64InsLsr
  toEnum Int
185 = Arm64Insn
Arm64InsMadd
  toEnum Int
186 = Arm64Insn
Arm64InsMla
  toEnum Int
187 = Arm64Insn
Arm64InsMls
  toEnum Int
188 = Arm64Insn
Arm64InsMovi
  toEnum Int
189 = Arm64Insn
Arm64InsMovk
  toEnum Int
190 = Arm64Insn
Arm64InsMovn
  toEnum Int
191 = Arm64Insn
Arm64InsMovz
  toEnum Int
192 = Arm64Insn
Arm64InsMrs
  toEnum Int
193 = Arm64Insn
Arm64InsMsr
  toEnum Int
194 = Arm64Insn
Arm64InsMsub
  toEnum Int
195 = Arm64Insn
Arm64InsMul
  toEnum Int
196 = Arm64Insn
Arm64InsMvni
  toEnum Int
197 = Arm64Insn
Arm64InsNeg
  toEnum Int
198 = Arm64Insn
Arm64InsNot
  toEnum Int
199 = Arm64Insn
Arm64InsOrn
  toEnum Int
200 = Arm64Insn
Arm64InsOrr
  toEnum Int
201 = Arm64Insn
Arm64InsPmull2
  toEnum Int
202 = Arm64Insn
Arm64InsPmull
  toEnum Int
203 = Arm64Insn
Arm64InsPmul
  toEnum Int
204 = Arm64Insn
Arm64InsPrfm
  toEnum Int
205 = Arm64Insn
Arm64InsPrfum
  toEnum Int
206 = Arm64Insn
Arm64InsRaddhn
  toEnum Int
207 = Arm64Insn
Arm64InsRaddhn2
  toEnum Int
208 = Arm64Insn
Arm64InsRbit
  toEnum Int
209 = Arm64Insn
Arm64InsRet
  toEnum Int
210 = Arm64Insn
Arm64InsRev16
  toEnum Int
211 = Arm64Insn
Arm64InsRev32
  toEnum Int
212 = Arm64Insn
Arm64InsRev64
  toEnum Int
213 = Arm64Insn
Arm64InsRev
  toEnum Int
214 = Arm64Insn
Arm64InsRor
  toEnum Int
215 = Arm64Insn
Arm64InsRshrn2
  toEnum Int
216 = Arm64Insn
Arm64InsRshrn
  toEnum Int
217 = Arm64Insn
Arm64InsRsubhn
  toEnum Int
218 = Arm64Insn
Arm64InsRsubhn2
  toEnum Int
219 = Arm64Insn
Arm64InsSabal2
  toEnum Int
220 = Arm64Insn
Arm64InsSabal
  toEnum Int
221 = Arm64Insn
Arm64InsSaba
  toEnum Int
222 = Arm64Insn
Arm64InsSabdl2
  toEnum Int
223 = Arm64Insn
Arm64InsSabdl
  toEnum Int
224 = Arm64Insn
Arm64InsSabd
  toEnum Int
225 = Arm64Insn
Arm64InsSadalp
  toEnum Int
226 = Arm64Insn
Arm64InsSaddlp
  toEnum Int
227 = Arm64Insn
Arm64InsSaddlv
  toEnum Int
228 = Arm64Insn
Arm64InsSaddl2
  toEnum Int
229 = Arm64Insn
Arm64InsSaddl
  toEnum Int
230 = Arm64Insn
Arm64InsSaddw2
  toEnum Int
231 = Arm64Insn
Arm64InsSaddw
  toEnum Int
232 = Arm64Insn
Arm64InsSbc
  toEnum Int
233 = Arm64Insn
Arm64InsSbfm
  toEnum Int
234 = Arm64Insn
Arm64InsScvtf
  toEnum Int
235 = Arm64Insn
Arm64InsSdiv
  toEnum Int
236 = Arm64Insn
Arm64InsSha1c
  toEnum Int
237 = Arm64Insn
Arm64InsSha1h
  toEnum Int
238 = Arm64Insn
Arm64InsSha1m
  toEnum Int
239 = Arm64Insn
Arm64InsSha1p
  toEnum Int
240 = Arm64Insn
Arm64InsSha1su0
  toEnum Int
241 = Arm64Insn
Arm64InsSha1su1
  toEnum Int
242 = Arm64Insn
Arm64InsSha256h2
  toEnum Int
243 = Arm64Insn
Arm64InsSha256h
  toEnum Int
244 = Arm64Insn
Arm64InsSha256su0
  toEnum Int
245 = Arm64Insn
Arm64InsSha256su1
  toEnum Int
246 = Arm64Insn
Arm64InsShadd
  toEnum Int
247 = Arm64Insn
Arm64InsShll2
  toEnum Int
248 = Arm64Insn
Arm64InsShll
  toEnum Int
249 = Arm64Insn
Arm64InsShl
  toEnum Int
250 = Arm64Insn
Arm64InsShrn2
  toEnum Int
251 = Arm64Insn
Arm64InsShrn
  toEnum Int
252 = Arm64Insn
Arm64InsShsub
  toEnum Int
253 = Arm64Insn
Arm64InsSli
  toEnum Int
254 = Arm64Insn
Arm64InsSmaddl
  toEnum Int
255 = Arm64Insn
Arm64InsSmaxp
  toEnum Int
256 = Arm64Insn
Arm64InsSmaxv
  toEnum Int
257 = Arm64Insn
Arm64InsSmax
  toEnum Int
258 = Arm64Insn
Arm64InsSmc
  toEnum Int
259 = Arm64Insn
Arm64InsSminp
  toEnum Int
260 = Arm64Insn
Arm64InsSminv
  toEnum Int
261 = Arm64Insn
Arm64InsSmin
  toEnum Int
262 = Arm64Insn
Arm64InsSmlal2
  toEnum Int
263 = Arm64Insn
Arm64InsSmlal
  toEnum Int
264 = Arm64Insn
Arm64InsSmlsl2
  toEnum Int
265 = Arm64Insn
Arm64InsSmlsl
  toEnum Int
266 = Arm64Insn
Arm64InsSmov
  toEnum Int
267 = Arm64Insn
Arm64InsSmsubl
  toEnum Int
268 = Arm64Insn
Arm64InsSmulh
  toEnum Int
269 = Arm64Insn
Arm64InsSmull2
  toEnum Int
270 = Arm64Insn
Arm64InsSmull
  toEnum Int
271 = Arm64Insn
Arm64InsSqabs
  toEnum Int
272 = Arm64Insn
Arm64InsSqadd
  toEnum Int
273 = Arm64Insn
Arm64InsSqdmlal
  toEnum Int
274 = Arm64Insn
Arm64InsSqdmlal2
  toEnum Int
275 = Arm64Insn
Arm64InsSqdmlsl
  toEnum Int
276 = Arm64Insn
Arm64InsSqdmlsl2
  toEnum Int
277 = Arm64Insn
Arm64InsSqdmulh
  toEnum Int
278 = Arm64Insn
Arm64InsSqdmull
  toEnum Int
279 = Arm64Insn
Arm64InsSqdmull2
  toEnum Int
280 = Arm64Insn
Arm64InsSqneg
  toEnum Int
281 = Arm64Insn
Arm64InsSqrdmulh
  toEnum Int
282 = Arm64Insn
Arm64InsSqrshl
  toEnum Int
283 = Arm64Insn
Arm64InsSqrshrn
  toEnum Int
284 = Arm64Insn
Arm64InsSqrshrn2
  toEnum Int
285 = Arm64Insn
Arm64InsSqrshrun
  toEnum Int
286 = Arm64Insn
Arm64InsSqrshrun2
  toEnum Int
287 = Arm64Insn
Arm64InsSqshlu
  toEnum Int
288 = Arm64Insn
Arm64InsSqshl
  toEnum Int
289 = Arm64Insn
Arm64InsSqshrn
  toEnum Int
290 = Arm64Insn
Arm64InsSqshrn2
  toEnum Int
291 = Arm64Insn
Arm64InsSqshrun
  toEnum Int
292 = Arm64Insn
Arm64InsSqshrun2
  toEnum Int
293 = Arm64Insn
Arm64InsSqsub
  toEnum Int
294 = Arm64Insn
Arm64InsSqxtn2
  toEnum Int
295 = Arm64Insn
Arm64InsSqxtn
  toEnum Int
296 = Arm64Insn
Arm64InsSqxtun2
  toEnum Int
297 = Arm64Insn
Arm64InsSqxtun
  toEnum Int
298 = Arm64Insn
Arm64InsSrhadd
  toEnum Int
299 = Arm64Insn
Arm64InsSri
  toEnum Int
300 = Arm64Insn
Arm64InsSrshl
  toEnum Int
301 = Arm64Insn
Arm64InsSrshr
  toEnum Int
302 = Arm64Insn
Arm64InsSrsra
  toEnum Int
303 = Arm64Insn
Arm64InsSshll2
  toEnum Int
304 = Arm64Insn
Arm64InsSshll
  toEnum Int
305 = Arm64Insn
Arm64InsSshl
  toEnum Int
306 = Arm64Insn
Arm64InsSshr
  toEnum Int
307 = Arm64Insn
Arm64InsSsra
  toEnum Int
308 = Arm64Insn
Arm64InsSsubl2
  toEnum Int
309 = Arm64Insn
Arm64InsSsubl
  toEnum Int
310 = Arm64Insn
Arm64InsSsubw2
  toEnum Int
311 = Arm64Insn
Arm64InsSsubw
  toEnum Int
312 = Arm64Insn
Arm64InsSt1
  toEnum Int
313 = Arm64Insn
Arm64InsSt2
  toEnum Int
314 = Arm64Insn
Arm64InsSt3
  toEnum Int
315 = Arm64Insn
Arm64InsSt4
  toEnum Int
316 = Arm64Insn
Arm64InsStlrb
  toEnum Int
317 = Arm64Insn
Arm64InsStlrh
  toEnum Int
318 = Arm64Insn
Arm64InsStlr
  toEnum Int
319 = Arm64Insn
Arm64InsStlxp
  toEnum Int
320 = Arm64Insn
Arm64InsStlxrb
  toEnum Int
321 = Arm64Insn
Arm64InsStlxrh
  toEnum Int
322 = Arm64Insn
Arm64InsStlxr
  toEnum Int
323 = Arm64Insn
Arm64InsStnp
  toEnum Int
324 = Arm64Insn
Arm64InsStp
  toEnum Int
325 = Arm64Insn
Arm64InsStrb
  toEnum Int
326 = Arm64Insn
Arm64InsStr
  toEnum Int
327 = Arm64Insn
Arm64InsStrh
  toEnum Int
328 = Arm64Insn
Arm64InsSttrb
  toEnum Int
329 = Arm64Insn
Arm64InsSttrh
  toEnum Int
330 = Arm64Insn
Arm64InsSttr
  toEnum Int
331 = Arm64Insn
Arm64InsSturb
  toEnum Int
332 = Arm64Insn
Arm64InsStur
  toEnum Int
333 = Arm64Insn
Arm64InsSturh
  toEnum Int
334 = Arm64Insn
Arm64InsStxp
  toEnum Int
335 = Arm64Insn
Arm64InsStxrb
  toEnum Int
336 = Arm64Insn
Arm64InsStxrh
  toEnum Int
337 = Arm64Insn
Arm64InsStxr
  toEnum Int
338 = Arm64Insn
Arm64InsSubhn
  toEnum Int
339 = Arm64Insn
Arm64InsSubhn2
  toEnum Int
340 = Arm64Insn
Arm64InsSub
  toEnum Int
341 = Arm64Insn
Arm64InsSuqadd
  toEnum Int
342 = Arm64Insn
Arm64InsSvc
  toEnum Int
343 = Arm64Insn
Arm64InsSysl
  toEnum Int
344 = Arm64Insn
Arm64InsSys
  toEnum Int
345 = Arm64Insn
Arm64InsTbl
  toEnum Int
346 = Arm64Insn
Arm64InsTbnz
  toEnum Int
347 = Arm64Insn
Arm64InsTbx
  toEnum Int
348 = Arm64Insn
Arm64InsTbz
  toEnum Int
349 = Arm64Insn
Arm64InsTrn1
  toEnum Int
350 = Arm64Insn
Arm64InsTrn2
  toEnum Int
351 = Arm64Insn
Arm64InsUabal2
  toEnum Int
352 = Arm64Insn
Arm64InsUabal
  toEnum Int
353 = Arm64Insn
Arm64InsUaba
  toEnum Int
354 = Arm64Insn
Arm64InsUabdl2
  toEnum Int
355 = Arm64Insn
Arm64InsUabdl
  toEnum Int
356 = Arm64Insn
Arm64InsUabd
  toEnum Int
357 = Arm64Insn
Arm64InsUadalp
  toEnum Int
358 = Arm64Insn
Arm64InsUaddlp
  toEnum Int
359 = Arm64Insn
Arm64InsUaddlv
  toEnum Int
360 = Arm64Insn
Arm64InsUaddl2
  toEnum Int
361 = Arm64Insn
Arm64InsUaddl
  toEnum Int
362 = Arm64Insn
Arm64InsUaddw2
  toEnum Int
363 = Arm64Insn
Arm64InsUaddw
  toEnum Int
364 = Arm64Insn
Arm64InsUbfm
  toEnum Int
365 = Arm64Insn
Arm64InsUcvtf
  toEnum Int
366 = Arm64Insn
Arm64InsUdiv
  toEnum Int
367 = Arm64Insn
Arm64InsUhadd
  toEnum Int
368 = Arm64Insn
Arm64InsUhsub
  toEnum Int
369 = Arm64Insn
Arm64InsUmaddl
  toEnum Int
370 = Arm64Insn
Arm64InsUmaxp
  toEnum Int
371 = Arm64Insn
Arm64InsUmaxv
  toEnum Int
372 = Arm64Insn
Arm64InsUmax
  toEnum Int
373 = Arm64Insn
Arm64InsUminp
  toEnum Int
374 = Arm64Insn
Arm64InsUminv
  toEnum Int
375 = Arm64Insn
Arm64InsUmin
  toEnum Int
376 = Arm64Insn
Arm64InsUmlal2
  toEnum Int
377 = Arm64Insn
Arm64InsUmlal
  toEnum Int
378 = Arm64Insn
Arm64InsUmlsl2
  toEnum Int
379 = Arm64Insn
Arm64InsUmlsl
  toEnum Int
380 = Arm64Insn
Arm64InsUmov
  toEnum Int
381 = Arm64Insn
Arm64InsUmsubl
  toEnum Int
382 = Arm64Insn
Arm64InsUmulh
  toEnum Int
383 = Arm64Insn
Arm64InsUmull2
  toEnum Int
384 = Arm64Insn
Arm64InsUmull
  toEnum Int
385 = Arm64Insn
Arm64InsUqadd
  toEnum Int
386 = Arm64Insn
Arm64InsUqrshl
  toEnum Int
387 = Arm64Insn
Arm64InsUqrshrn
  toEnum Int
388 = Arm64Insn
Arm64InsUqrshrn2
  toEnum Int
389 = Arm64Insn
Arm64InsUqshl
  toEnum Int
390 = Arm64Insn
Arm64InsUqshrn
  toEnum Int
391 = Arm64Insn
Arm64InsUqshrn2
  toEnum Int
392 = Arm64Insn
Arm64InsUqsub
  toEnum Int
393 = Arm64Insn
Arm64InsUqxtn2
  toEnum Int
394 = Arm64Insn
Arm64InsUqxtn
  toEnum Int
395 = Arm64Insn
Arm64InsUrecpe
  toEnum Int
396 = Arm64Insn
Arm64InsUrhadd
  toEnum Int
397 = Arm64Insn
Arm64InsUrshl
  toEnum Int
398 = Arm64Insn
Arm64InsUrshr
  toEnum Int
399 = Arm64Insn
Arm64InsUrsqrte
  toEnum Int
400 = Arm64Insn
Arm64InsUrsra
  toEnum Int
401 = Arm64Insn
Arm64InsUshll2
  toEnum Int
402 = Arm64Insn
Arm64InsUshll
  toEnum Int
403 = Arm64Insn
Arm64InsUshl
  toEnum Int
404 = Arm64Insn
Arm64InsUshr
  toEnum Int
405 = Arm64Insn
Arm64InsUsqadd
  toEnum Int
406 = Arm64Insn
Arm64InsUsra
  toEnum Int
407 = Arm64Insn
Arm64InsUsubl2
  toEnum Int
408 = Arm64Insn
Arm64InsUsubl
  toEnum Int
409 = Arm64Insn
Arm64InsUsubw2
  toEnum Int
410 = Arm64Insn
Arm64InsUsubw
  toEnum Int
411 = Arm64Insn
Arm64InsUzp1
  toEnum Int
412 = Arm64Insn
Arm64InsUzp2
  toEnum Int
413 = Arm64Insn
Arm64InsXtn2
  toEnum Int
414 = Arm64Insn
Arm64InsXtn
  toEnum Int
415 = Arm64Insn
Arm64InsZip1
  toEnum Int
416 = Arm64Insn
Arm64InsZip2
  toEnum Int
417 = Arm64Insn
Arm64InsMneg
  toEnum Int
418 = Arm64Insn
Arm64InsUmnegl
  toEnum Int
419 = Arm64Insn
Arm64InsSmnegl
  toEnum Int
420 = Arm64Insn
Arm64InsNop
  toEnum Int
421 = Arm64Insn
Arm64InsYield
  toEnum Int
422 = Arm64Insn
Arm64InsWfe
  toEnum Int
423 = Arm64Insn
Arm64InsWfi
  toEnum Int
424 = Arm64Insn
Arm64InsSev
  toEnum Int
425 = Arm64Insn
Arm64InsSevl
  toEnum Int
426 = Arm64Insn
Arm64InsNgc
  toEnum Int
427 = Arm64Insn
Arm64InsSbfiz
  toEnum Int
428 = Arm64Insn
Arm64InsUbfiz
  toEnum Int
429 = Arm64Insn
Arm64InsSbfx
  toEnum Int
430 = Arm64Insn
Arm64InsUbfx
  toEnum Int
431 = Arm64Insn
Arm64InsBfi
  toEnum Int
432 = Arm64Insn
Arm64InsBfxil
  toEnum Int
433 = Arm64Insn
Arm64InsCmn
  toEnum Int
434 = Arm64Insn
Arm64InsMvn
  toEnum Int
435 = Arm64Insn
Arm64InsTst
  toEnum Int
436 = Arm64Insn
Arm64InsCset
  toEnum Int
437 = Arm64Insn
Arm64InsCinc
  toEnum Int
438 = Arm64Insn
Arm64InsCsetm
  toEnum Int
439 = Arm64Insn
Arm64InsCinv
  toEnum Int
440 = Arm64Insn
Arm64InsCneg
  toEnum Int
441 = Arm64Insn
Arm64InsSxtb
  toEnum Int
442 = Arm64Insn
Arm64InsSxth
  toEnum Int
443 = Arm64Insn
Arm64InsSxtw
  toEnum Int
444 = Arm64Insn
Arm64InsCmp
  toEnum Int
445 = Arm64Insn
Arm64InsUxtb
  toEnum Int
446 = Arm64Insn
Arm64InsUxth
  toEnum Int
447 = Arm64Insn
Arm64InsUxtw
  toEnum Int
448 = Arm64Insn
Arm64InsIc
  toEnum Int
449 = Arm64Insn
Arm64InsDc
  toEnum Int
450 = Arm64Insn
Arm64InsAt
  toEnum Int
451 = Arm64Insn
Arm64InsTlbi
  toEnum Int
452 = Arm64Insn
Arm64InsNegs
  toEnum Int
453 = Arm64Insn
Arm64InsNgcs
  toEnum Int
454 = Arm64Insn
Arm64InsEnding
  toEnum Int
unmatched = String -> Arm64Insn
forall a. HasCallStack => String -> a
error (String
"Arm64Insn.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 237 "src/Hapstone/Internal/Arm64.chs" #-}

-- | ARM64 instruction groups
data Arm64InsnGroup = Arm64GrpInvalid
                    | Arm64GrpJump
                    | Arm64GrpCall
                    | Arm64GrpRet
                    | Arm64GrpInt
                    | Arm64GrpPrivilege
                    | Arm64GrpBranchRelative
                    | Arm64GrpCrypto
                    | Arm64GrpFparmv8
                    | Arm64GrpNeon
                    | Arm64GrpCrc
                    | Arm64GrpEnding
  deriving (Show,Eq,Bounded)
instance Enum Arm64InsnGroup where
  succ Arm64GrpInvalid = Arm64GrpJump
  succ Arm64GrpJump = Arm64GrpCall
  succ Arm64GrpCall = Arm64GrpRet
  succ Arm64GrpRet = Arm64GrpInt
  succ Arm64GrpInt = Arm64GrpPrivilege
  succ Arm64GrpPrivilege = Arm64GrpBranchRelative
  succ Arm64GrpBranchRelative = Arm64GrpCrypto
  succ Arm64GrpCrypto = Arm64GrpFparmv8
  succ Arm64GrpFparmv8 = Arm64GrpNeon
  succ Arm64GrpNeon = Arm64GrpCrc
  succ Arm64GrpCrc = Arm64GrpEnding
  succ Arm64GrpEnding = error "Arm64InsnGroup.succ: Arm64GrpEnding has no successor"

  pred Arm64GrpJump = Arm64GrpInvalid
  pred Arm64GrpCall = Arm64GrpJump
  pred Arm64GrpRet = Arm64GrpCall
  pred Arm64GrpInt = Arm64GrpRet
  pred Arm64GrpPrivilege = Arm64GrpInt
  pred Arm64GrpBranchRelative = Arm64GrpPrivilege
  pred Arm64GrpCrypto = Arm64GrpBranchRelative
  pred Arm64GrpFparmv8 = Arm64GrpCrypto
  pred Arm64GrpNeon = Arm64GrpFparmv8
  pred Arm64GrpCrc = Arm64GrpNeon
  pred Arm64GrpEnding = Arm64GrpCrc
  pred Arm64GrpInvalid = error "Arm64InsnGroup.pred: Arm64GrpInvalid 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 Arm64GrpEnding

  fromEnum Arm64GrpInvalid = 0
  fromEnum Arm64GrpJump = 1
  fromEnum Arm64GrpCall = 2
  fromEnum Arm64GrpRet = 3
  fromEnum Arm64GrpInt = 4
  fromEnum Arm64GrpPrivilege = 6
  fromEnum Arm64GrpBranchRelative = 7
  fromEnum Arm64GrpCrypto = 128
  fromEnum Arm64GrpFparmv8 = 129
  fromEnum Arm64GrpNeon = 130
  fromEnum Arm64GrpCrc = 131
  fromEnum Arm64GrpEnding = 132

  toEnum 0 = Arm64GrpInvalid
  toEnum 1 = Arm64GrpJump
  toEnum 2 = Arm64GrpCall
  toEnum 3 = Arm64GrpRet
  toEnum 4 = Arm64GrpInt
  toEnum 6 = Arm64GrpPrivilege
  toEnum 7 = Arm64GrpBranchRelative
  toEnum 128 = Arm64GrpCrypto
  toEnum 129 = Arm64GrpFparmv8
  toEnum 130 = Arm64GrpNeon
  toEnum 131 = Arm64GrpCrc
  toEnum 132 = Arm64GrpEnding
  toEnum unmatched = error ("Arm64InsnGroup.toEnum: Cannot match " ++ show unmatched)

{-# LINE 240 "src/Hapstone/Internal/Arm64.chs" #-}