"""
Intel definitions.

Commonly used definitions.
"""
from __future__ import absolute_import
from cdsl.isa import TargetISA, CPUMode
import base.instructions
from . import instructions as x86

ISA = TargetISA('intel', [base.instructions.GROUP, x86.GROUP])

# CPU modes for 32-bit and 64-bit operation.
I32 = CPUMode('I32', ISA)
I64 = CPUMode('I64', ISA)

"""
Intel definitions.

Commonly used definitions.
"""
from __future__ import absolute_import
from cdsl.isa import TargetISA, CPUMode
import base.instructions
from . import instructions as x86

ISA = TargetISA('intel', [base.instructions.GROUP, x86.GROUP])

# CPU modes for 32-bit and 64-bit operation.
I64 = CPUMode('I64', ISA)
I32 = CPUMode('I32', ISA)

Define I64 before I32 for better encoding table compression.
Define I64 before I32 for better encoding table compression.

The encoding list compression algorithm is not the sharpest knife in the
drawer. It can reuse subsets of I64 encoding lists for I32 instructions,
but only when the I64 lists are defined first.

With this change and the previous change to the encoding list format, we
get the following table sizes for the Intel ISA:

ENCLISTS: 1478 B ->  662 B
LEVEL2:             1072 B (unchanged)
LEVEL1:     32 B ->   48 B
Total:    2582 B -> 1782 B (-31%)
