module Class.E ( E (..) ) where

import qualified Asm.Aarch64 as AArch64
import qualified Asm.X86     as X86

class E a where
    toInt :: a -> Int

instance E X86.X86Reg where
    toInt :: X86Reg -> Int
toInt X86Reg
X86.Rdi = Int
0
    toInt X86Reg
X86.Rsi = Int
1
    toInt X86Reg
X86.Rdx = Int
2
    toInt X86Reg
X86.Rcx = Int
3
    toInt X86Reg
X86.R8  = Int
4
    toInt X86Reg
X86.R9  = Int
5
    toInt X86Reg
X86.Rax = Int
6
    toInt X86Reg
X86.Rsp = Int
7
    toInt X86Reg
X86.R10 = -Int
1
    toInt X86Reg
X86.R11 = -Int
2
    toInt X86Reg
X86.R12 = -Int
3
    toInt X86Reg
X86.R13 = -Int
4
    toInt X86Reg
X86.R14 = -Int
13
    toInt X86Reg
X86.R15 = -Int
14
    toInt X86Reg
X86.Rbx = -Int
15
    toInt X86Reg
X86.Rbp = -Int
16

instance E X86.FX86Reg where
    toInt :: FX86Reg -> Int
toInt FX86Reg
X86.XMM0  = Int
8
    toInt FX86Reg
X86.XMM1  = Int
9
    toInt FX86Reg
X86.XMM2  = Int
10
    toInt FX86Reg
X86.XMM3  = Int
11
    toInt FX86Reg
X86.XMM4  = Int
12
    toInt FX86Reg
X86.XMM5  = Int
13
    toInt FX86Reg
X86.XMM6  = Int
14
    toInt FX86Reg
X86.XMM7  = Int
15
    toInt FX86Reg
X86.XMM8  = -Int
5
    toInt FX86Reg
X86.XMM9  = -Int
6
    toInt FX86Reg
X86.XMM10 = -Int
7
    toInt FX86Reg
X86.XMM11 = -Int
8
    toInt FX86Reg
X86.XMM12 = -Int
9
    toInt FX86Reg
X86.XMM13 = -Int
10
    toInt FX86Reg
X86.XMM14 = -Int
11
    toInt FX86Reg
X86.XMM15 = -Int
12

instance E X86.F2X86 where
    toInt :: F2X86 -> Int
toInt F2X86
X86.YMM0  = Int
8
    toInt F2X86
X86.YMM1  = Int
9
    toInt F2X86
X86.YMM2  = Int
10
    toInt F2X86
X86.YMM3  = Int
11
    toInt F2X86
X86.YMM4  = Int
12
    toInt F2X86
X86.YMM5  = Int
13
    toInt F2X86
X86.YMM6  = Int
14
    toInt F2X86
X86.YMM7  = Int
15
    toInt F2X86
X86.YMM8  = -Int
5
    toInt F2X86
X86.YMM9  = -Int
6
    toInt F2X86
X86.YMM10 = -Int
7
    toInt F2X86
X86.YMM11 = -Int
8
    toInt F2X86
X86.YMM12 = -Int
9
    toInt F2X86
X86.YMM13 = -Int
10
    toInt F2X86
X86.YMM14 = -Int
11
    toInt F2X86
X86.YMM15 = -Int
12

instance E X86.AbsReg where
    toInt :: AbsReg -> Int
toInt = AbsReg -> Int
X86.toInt

instance E X86.FAbsReg where
    toInt :: FAbsReg -> Int
toInt = FAbsReg -> Int
X86.fToInt

instance E AArch64.AReg where
    toInt :: AReg -> Int
toInt AReg
AArch64.X0  = Int
0
    toInt AReg
AArch64.X1  = Int
1
    toInt AReg
AArch64.X2  = Int
2
    toInt AReg
AArch64.X3  = Int
3
    toInt AReg
AArch64.X4  = Int
4
    toInt AReg
AArch64.X5  = Int
5
    toInt AReg
AArch64.X6  = Int
6
    toInt AReg
AArch64.X7  = Int
7
    toInt AReg
AArch64.X8  = -Int
1
    toInt AReg
AArch64.X9  = -Int
2
    toInt AReg
AArch64.X10 = -Int
3
    toInt AReg
AArch64.X11 = -Int
4
    toInt AReg
AArch64.X12 = -Int
5
    toInt AReg
AArch64.X13 = -Int
6
    toInt AReg
AArch64.X14 = -Int
7
    toInt AReg
AArch64.X15 = -Int
8
    toInt AReg
AArch64.X16 = -Int
9
    toInt AReg
AArch64.X17 = -Int
10
    toInt AReg
AArch64.X18 = -Int
11
    toInt AReg
AArch64.X19 = -Int
12
    toInt AReg
AArch64.X20 = -Int
13
    toInt AReg
AArch64.X21 = -Int
14
    toInt AReg
AArch64.X22 = -Int
15
    toInt AReg
AArch64.X23 = -Int
16
    toInt AReg
AArch64.X24 = -Int
17
    toInt AReg
AArch64.X25 = -Int
18
    toInt AReg
AArch64.X26 = -Int
19
    toInt AReg
AArch64.X27 = -Int
20
    toInt AReg
AArch64.X28 = -Int
21
    toInt AReg
AArch64.X29 = Int
18
    toInt AReg
AArch64.X30 = Int
8
    toInt AReg
AArch64.SP  = Int
9

instance E AArch64.FAReg where
    toInt :: FAReg -> Int
toInt FAReg
AArch64.D0  = Int
10
    toInt FAReg
AArch64.D1  = Int
11
    toInt FAReg
AArch64.D2  = Int
12
    toInt FAReg
AArch64.D3  = Int
13
    toInt FAReg
AArch64.D4  = Int
14
    toInt FAReg
AArch64.D5  = Int
15
    toInt FAReg
AArch64.D6  = Int
16
    toInt FAReg
AArch64.D7  = Int
17
    toInt FAReg
AArch64.D8  = -Int
23
    toInt FAReg
AArch64.D9  = -Int
24
    toInt FAReg
AArch64.D10 = -Int
25
    toInt FAReg
AArch64.D11 = -Int
26
    toInt FAReg
AArch64.D12 = -Int
27
    toInt FAReg
AArch64.D13 = -Int
28
    toInt FAReg
AArch64.D14 = -Int
29
    toInt FAReg
AArch64.D15 = -Int
30
    toInt FAReg
AArch64.D16 = -Int
31
    toInt FAReg
AArch64.D17 = -Int
32
    toInt FAReg
AArch64.D18 = -Int
33
    toInt FAReg
AArch64.D19 = -Int
34
    toInt FAReg
AArch64.D20 = -Int
35
    toInt FAReg
AArch64.D21 = -Int
36
    toInt FAReg
AArch64.D22 = -Int
37
    toInt FAReg
AArch64.D23 = -Int
38
    toInt FAReg
AArch64.D24 = -Int
39
    toInt FAReg
AArch64.D25 = -Int
40
    toInt FAReg
AArch64.D26 = -Int
41
    toInt FAReg
AArch64.D27 = -Int
42
    toInt FAReg
AArch64.D28 = -Int
43
    toInt FAReg
AArch64.D29 = -Int
44
    toInt FAReg
AArch64.D30 = -Int
45
    toInt FAReg
AArch64.D31 = -Int
46

instance E AArch64.F2Reg where
    toInt :: F2Reg -> Int
toInt F2Reg
AArch64.V0  = Int
10
    toInt F2Reg
AArch64.V1  = Int
11
    toInt F2Reg
AArch64.V2  = Int
12
    toInt F2Reg
AArch64.V3  = Int
13
    toInt F2Reg
AArch64.V4  = Int
14
    toInt F2Reg
AArch64.V5  = Int
15
    toInt F2Reg
AArch64.V6  = Int
16
    toInt F2Reg
AArch64.V7  = Int
17
    toInt F2Reg
AArch64.V8  = -Int
23
    toInt F2Reg
AArch64.V9  = -Int
24
    toInt F2Reg
AArch64.V10 = -Int
25
    toInt F2Reg
AArch64.V11 = -Int
26
    toInt F2Reg
AArch64.V12 = -Int
27
    toInt F2Reg
AArch64.V13 = -Int
28
    toInt F2Reg
AArch64.V14 = -Int
29
    toInt F2Reg
AArch64.V15 = -Int
30
    toInt F2Reg
AArch64.V16 = -Int
31
    toInt F2Reg
AArch64.V17 = -Int
32
    toInt F2Reg
AArch64.V18 = -Int
33
    toInt F2Reg
AArch64.V19 = -Int
34
    toInt F2Reg
AArch64.V20 = -Int
35
    toInt F2Reg
AArch64.V21 = -Int
36
    toInt F2Reg
AArch64.V22 = -Int
37
    toInt F2Reg
AArch64.V23 = -Int
38
    toInt F2Reg
AArch64.V24 = -Int
39
    toInt F2Reg
AArch64.V25 = -Int
40
    toInt F2Reg
AArch64.V26 = -Int
41
    toInt F2Reg
AArch64.V27 = -Int
42
    toInt F2Reg
AArch64.V28 = -Int
43
    toInt F2Reg
AArch64.V29 = -Int
44
    toInt F2Reg
AArch64.V30 = -Int
45
    toInt F2Reg
AArch64.V31 = -Int
46

instance E AArch64.AbsReg where
    toInt :: AbsReg -> Int
toInt = AbsReg -> Int
AArch64.toInt

instance E AArch64.FAbsReg where
    toInt :: FAbsReg -> Int
toInt = FAbsReg -> Int
AArch64.fToInt

instance E AArch64.F2Abs where
    toInt :: F2Abs -> Int
toInt = F2Abs -> Int
AArch64.f2ToInt