Add OperandKind to the meta language.

We have a two-level type system: OperandKinds and ValueTypes. The value types
only apply to value operands, but there are many more kinds of operands:
immediate numbers, condition codes, basic block references, etc.
This commit is contained in:
Jakob Stoklund Olesen
2016-05-12 15:59:40 -07:00
parent f1e2dffa81
commit 814231245c
4 changed files with 120 additions and 62 deletions

View File

@@ -1,25 +1,25 @@
"""
The cretonne.immdiates module predefines all the Cretonne immediate operand
The cretonne.immediates module predefines all the Cretonne immediate operand
types.
"""
from . import ImmediateType
from . import ImmediateKind
#: A 64-bit immediate integer operand.
#:
#: This type of immediate integer can interact with SSA values with any
#: :py:class:`cretonne.IntType` type.
imm64 = ImmediateType('imm64', 'A 64-bit immediate integer.')
imm64 = ImmediateKind('imm64', 'A 64-bit immediate integer.')
#: A 32-bit immediate floating point operand.
#:
#: IEEE 754-2008 binary32 interchange format.
ieee32 = ImmediateType('ieee32', 'A 32-bit immediate floating point number.')
ieee32 = ImmediateKind('ieee32', 'A 32-bit immediate floating point number.')
#: A 64-bit immediate floating point operand.
#:
#: IEEE 754-2008 binary64 interchange format.
ieee64 = ImmediateType('ieee64', 'A 64-bit immediate floating point number.')
ieee64 = ImmediateKind('ieee64', 'A 64-bit immediate floating point number.')
#: A large SIMD vector constant.
immvector = ImmediateType('immvector', 'An immediate SIMD vector.')
immvector = ImmediateKind('immvector', 'An immediate SIMD vector.')