Skip to content
Snippets Groups Projects

Address of SymPy-Function `address_of`

Merged Stephan Seitz requested to merge seitz/pystencils:address_of-function into master
1 file
+ 58
0
Compare changes
  • Side-by-side
  • Inline
+ 58
0
"""
Test of pystencils.data_types.address_of
"""
from pystencils.data_types import address_of, cast_func, PointerType
import pystencils
from pystencils.simp.simplifications import sympy_cse
import sympy
def test_address_of():
x, y = pystencils.fields('x,y: int64[2d]')
s = pystencils.TypedSymbol('s', PointerType('int64'))
assignments = pystencils.AssignmentCollection({
s: address_of(x[0, 0]),
y[0, 0]: cast_func(s, 'int64')
}, {})
ast = pystencils.create_kernel(assignments)
code = pystencils.show_code(ast)
print(code)
assignments = pystencils.AssignmentCollection({
y[0, 0]: cast_func(address_of(x[0, 0]), 'int64')
}, {})
ast = pystencils.create_kernel(assignments)
code = pystencils.show_code(ast)
print(code)
def test_address_of_with_cse():
x, y = pystencils.fields('x,y: int64[2d]')
s = pystencils.TypedSymbol('s', PointerType('int64'))
assignments = pystencils.AssignmentCollection({
y[0, 0]: cast_func(address_of(x[0, 0]), 'int64'),
x[0, 0]: cast_func(address_of(x[0, 0]), 'int64') + 1
}, {})
ast = pystencils.create_kernel(assignments)
code = pystencils.show_code(ast)
assignments_cse = sympy_cse(assignments)
ast = pystencils.create_kernel(assignments_cse)
code = pystencils.show_code(ast)
print(code)
def main():
test_address_of()
test_address_of_with_cse()
if __name__ == '__main__':
main()
Loading