m2isar.metamodel.utils.expr_simplifier ====================================== .. py:module:: m2isar.metamodel.utils.expr_simplifier .. autoapi-nested-parse:: A transformation module for simplifying M2-ISA-R behavior expressions. The following simplifications are done: * Resolvable :class:`m2isar.metamodel.arch.Constant` s are replaced by `m2isar.metamodel.arch.IntLiteral` s representing their value * Fully resolvable arithmetic operations are carried out and their results represented as a matching :class:`m2isar.metamodel.arch.IntLiteral` * Conditions and loops with fully resolvable conditions are either discarded entirely or transformed into code blocks without any conditions * Ternaries with fully resolvable conditions are transformed into only the matching part * Type conversions of :class:`m2isar.metamodel.arch.IntLiteral` s apply the desired type directly to the :class:`IntLiteral` and discard the type conversion Functions --------- .. autoapisummary:: m2isar.metamodel.utils.expr_simplifier.operation m2isar.metamodel.utils.expr_simplifier.block m2isar.metamodel.utils.expr_simplifier.binary_operation m2isar.metamodel.utils.expr_simplifier.slice_operation m2isar.metamodel.utils.expr_simplifier.concat_operation m2isar.metamodel.utils.expr_simplifier.number_literal m2isar.metamodel.utils.expr_simplifier.int_literal m2isar.metamodel.utils.expr_simplifier.string_literal m2isar.metamodel.utils.expr_simplifier.scalar_definition m2isar.metamodel.utils.expr_simplifier.break_ m2isar.metamodel.utils.expr_simplifier.assignment m2isar.metamodel.utils.expr_simplifier.conditional m2isar.metamodel.utils.expr_simplifier.loop m2isar.metamodel.utils.expr_simplifier.ternary m2isar.metamodel.utils.expr_simplifier.return_ m2isar.metamodel.utils.expr_simplifier.unary_operation m2isar.metamodel.utils.expr_simplifier.named_reference m2isar.metamodel.utils.expr_simplifier.indexed_reference m2isar.metamodel.utils.expr_simplifier.type_conv m2isar.metamodel.utils.expr_simplifier.callable_ m2isar.metamodel.utils.expr_simplifier.procedure_call m2isar.metamodel.utils.expr_simplifier.group Module Contents --------------- .. py:function:: operation(self: m2isar.metamodel.behav.Operation, context) .. py:function:: block(self: m2isar.metamodel.behav.Block, context) .. py:function:: binary_operation(self: m2isar.metamodel.behav.BinaryOperation, context) .. py:function:: slice_operation(self: m2isar.metamodel.behav.SliceOperation, context) .. py:function:: concat_operation(self: m2isar.metamodel.behav.ConcatOperation, context) .. py:function:: number_literal(self: m2isar.metamodel.behav.NumberLiteral, context) .. py:function:: int_literal(self: m2isar.metamodel.behav.IntLiteral, context) .. py:function:: string_literal(self: m2isar.metamodel.behav.StringLiteral, context) .. py:function:: scalar_definition(self: m2isar.metamodel.behav.ScalarDefinition, context) .. py:function:: break_(self: m2isar.metamodel.behav.Break, context) .. py:function:: assignment(self: m2isar.metamodel.behav.Assignment, context) .. py:function:: conditional(self: m2isar.metamodel.behav.Conditional, context) .. py:function:: loop(self: m2isar.metamodel.behav.Loop, context) .. py:function:: ternary(self: m2isar.metamodel.behav.Ternary, context) .. py:function:: return_(self: m2isar.metamodel.behav.Return, context) .. py:function:: unary_operation(self: m2isar.metamodel.behav.UnaryOperation, context) .. py:function:: named_reference(self: m2isar.metamodel.behav.NamedReference, context) .. py:function:: indexed_reference(self: m2isar.metamodel.behav.IndexedReference, context) .. py:function:: type_conv(self: m2isar.metamodel.behav.TypeConv, context) .. py:function:: callable_(self: m2isar.metamodel.behav.Callable, context) .. py:function:: procedure_call(self: m2isar.metamodel.behav.ProcedureCall, context) .. py:function:: group(self: m2isar.metamodel.behav.Group, context)