Skip to content
Snippets Groups Projects
Commit 130619f9 authored by Jan Hönig's avatar Jan Hönig
Browse files

WIP

parent 354fede8
No related branches found
No related tags found
No related merge requests found
Pipeline #40439 failed
...@@ -70,6 +70,32 @@ def get_code_obj(ast: Union[KernelFunction, KernelWrapper], custom_backend=None) ...@@ -70,6 +70,32 @@ def get_code_obj(ast: Union[KernelFunction, KernelWrapper], custom_backend=None)
return CodeDisplay(ast) return CodeDisplay(ast)
def get_assembly_obj(ast: Union[KernelFunction, KernelWrapper]):
"""Returns an object to display generated assembly code (C/C++)
Can either be displayed as HTML in Jupyter notebooks or printed as normal string.
"""
from pystencils.backends.cbackend import generate_c
if isinstance(ast, KernelWrapper):
ast = ast.ast
code = generate_c(ast, dialect=ast.backend)
class AssemlbyDisplay:
def __init__(self, assembly):
self.assembly = assembly
def _repr_html(self):
return ''
def __str__(self):
return ''
def __repr__(self):
return ''
return AssemlbyDisplay(assembly)
def get_code_str(ast, custom_backend=None): def get_code_str(ast, custom_backend=None):
return str(get_code_obj(ast, custom_backend)) return str(get_code_obj(ast, custom_backend))
...@@ -102,3 +128,20 @@ def show_code(ast: Union[KernelFunction, KernelWrapper], custom_backend=None): ...@@ -102,3 +128,20 @@ def show_code(ast: Union[KernelFunction, KernelWrapper], custom_backend=None):
console.print(syntax) console.print(syntax)
except ImportError: except ImportError:
print(code) print(code)
def show_assembly(ast: Union[KernelFunction, KernelWrapper]):
code = get_assembly_obj(ast)
if _isnotebook():
from IPython.display import display
display(code)
else:
try:
import rich.syntax
import rich.console
syntax = rich.syntax.Syntax(str(code), "c++", theme="monokai", line_numbers=True)
console = rich.console.Console()
console.print(syntax)
except ImportError:
print(code)
import pytest
import sympy as sp
import pystencils as ps
def test_simple():
pass
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment