Browse Source

Add ImmediateType for declaring immediate operands.

pull/3/head
Jakob Stoklund Olesen 9 years ago
parent
commit
10903503c4
  1. 12
      docs/langref.rst
  2. 17
      docs/metaref.rst
  3. 20
      meta/cretonne/__init__.py
  4. 12
      meta/cretonne/immediates.py

12
docs/langref.rst

@ -200,6 +200,18 @@ in this reference.
Either :type:`bool` or :type:`iN`.
Immediate operand types
-----------------------
These types are not part of the normal SSA type system. They are used to
indicate the different kinds of immediate operands on an instruction.
.. type:: imm64
A 64-bit immediate integer. The value of this operand is interpreted as a
signed two's complement integer. Instruction encodings may limit the valid
range.
Control flow
============

17
docs/metaref.rst

@ -38,13 +38,28 @@ Predefined types
.. automodule:: cretonne.types
:members:
.. currentmodule:: cretonne
Parametric polymorphism
-----------------------
.. currentmodule:: cretonne
Instruction operands can be defined with *type variables* instead of concrete
types for their operands. This makes the instructions polymorphic.
.. autoclass:: TypeVar
Immediates
----------
Immediate instruction operands don't correspond to SSA values, but have values
that are encoded directly in the instruction. Immediate operands don't
have types from the :class:`cretonne.Type` type system; they often have
enumerated values of a specific type. The type of an immediate operand is
indicated with an instance of :class:`ImmediateType`.
.. autoclass:: ImmediateType
.. automodule:: cretonne.immediates
:members:
.. currentmodule:: cretonne

20
meta/cretonne/__init__.py

@ -110,3 +110,23 @@ class TypeVar(object):
def __init__(self, name):
self.name = name
#
# Immediate operands.
#
# Instances of immediate operand types are provided in the cretonne.immediates
# module.
class ImmediateType(object):
"""
The type of an immediate instruction operand.
"""
def __init__(self, name, doc):
self.name = name
self.__doc__ = doc
def __str__(self):
return self.name
def __repr__(self):
return 'ImmediateType({})'.format(self.name)

12
meta/cretonne/immediates.py

@ -0,0 +1,12 @@
"""
The cretonne.immdiates module predefines all the Cretonne immediate operand
types.
"""
from . import ImmediateType
#: 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.')
Loading…
Cancel
Save