Skip to content

Conversation

@dk949
Copy link
Collaborator

@dk949 dk949 commented Oct 31, 2025

Commits from those PRs were cherry-picked on top of main

Warning

The changes in this PR work with xDSL v0.54.4, last release before xdsl 873c48a9afe2b0ce6e8413d29f8c1456288f3fc7, which moves to LLVM21.

#13 Make apply-target extensible with new targets

It should now be possible to inherit from ApplyTargetConfig and
override the _get_config member function to return a new config.

#14 Fix the else condition for sending implicitly mapped data

If the data is already present on the device, instead of sending it again, just return an element count of 2^64. When waiting for data, check if element count is 2^64 and if so, don't wait.

#17 Replaced uses of -1 as the dynamic index marker

xDSL now uses a different value for the dynamic index marker - builtin.DYNAMIC_INDEX with value -(2**63), which matches the value MLIR uses for this.

Now memrefs, and tensors that use -1 as the dynamic index get printed with a literal -1, rather than ?.

Closes #16

Additional changes

Replaced the use of LLVMPointerType.opaque() with LLVMPointerType() as typed llvm pointers have been removed from xDSL

Set xDSL version in pyproject.toml to latest supported.

Correctness test results
-------------------------------
Building dependencies
-------------------------------
Built assertion

-------------------------------
Building tests
-------------------------------
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/do_loops.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/procedures.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/conditionals.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/while_loops.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/array_ops.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/arrays.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/allocatables.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/intrinsics.F90'
Built source file '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/pointers.F90'

-------------------------------
Running tests
-------------------------------
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/allocatables.F90' Passes: 1041
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/do_loops.F90' Passes: 8
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/conditionals.F90' Passes: 3
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/procedures.F90' Passes: 12
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/intrinsics.F90' Passes: 389
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/arrays.F90' Passes: 839
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/array_ops.F90' Passes: 640
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/while_loops.F90' Passes: 6
[PASS] '/home/davidk/Uni/code/xdsl/ftn/examples/fragments/pointers.F90' Passes: 787

-------------------------------
Cleaning up successful tests
-------------------------------
Done

===============================
All tests passed
===============================
Filecheck results
-- Testing: 25 tests, 16 workers --
PASS: xftn :: omp/offload/ex6.test (1 of 25)
PASS: xftn :: omp/offload/ex8.test (2 of 25)
PASS: xftn :: omp/offload/ex3.test (3 of 25)
PASS: xftn :: omp/offload/ex2.test (4 of 25)
PASS: xftn :: omp/offload/ex5.test (5 of 25)
PASS: xftn :: omp/offload/ex4.test (6 of 25)
PASS: xftn :: omp/offload/ex1.test (7 of 25)
PASS: xftn :: omp/offload/ex7.test (8 of 25)
PASS: xftn :: fragments/procedures.test (9 of 25)
PASS: xftn :: solvers/jacobi.test (10 of 25)
PASS: xftn :: fragments/array_ops.test (11 of 25)
PASS: xftn :: fragments/arrays.test (12 of 25)
PASS: xftn :: omp/ex3.test (13 of 25)
PASS: xftn :: util/assertion.test (14 of 25)
PASS: xftn :: omp/ex2.test (15 of 25)
PASS: xftn :: fragments/conditionals.test (16 of 25)
PASS: xftn :: omp/ex1.test (17 of 25)
PASS: xftn :: solvers/gauss_seidel_stack.test (18 of 25)
PASS: xftn :: fragments/allocatables.test (19 of 25)
PASS: xftn :: fragments/do_loops.test (20 of 25)
PASS: xftn :: fragments/while_loops.test (21 of 25)
PASS: xftn :: solvers/gauss_seidel_heap.test (22 of 25)
PASS: xftn :: advection/pwadvection.test (23 of 25)
PASS: xftn :: fragments/pointers.test (24 of 25)
PASS: xftn :: advection/tra_adv.test (25 of 25)

Testing Time: 5.89s

Total Discovered Tests: 25
  Passed: 25 (100.00%)

dk949 added 9 commits October 31, 2025 23:06
It should now be possible to inherit from `ApplyTargetConfig` and
override the `_get_config` member function to return a new config.
xDSL now uses a different value for the dynamic index marker -
`builtin.DYNAMIC_INDEX` with value `-(2**63)`, which matches the value
MLIR uses for this.

Now `memref`s, and `tensor`s that use `-1` as the dynamic index get
printed with a literal `-1`, rather than `?`.
xDSL has dropped support for typed llvm pointers, so the default ctor
now produces the equivalent of the old `LLVMPointerType.opaque()`.
@dk949 dk949 marked this pull request as ready for review November 1, 2025 00:01
@dk949 dk949 requested a review from mesham November 1, 2025 00:01
@dk949 dk949 self-assigned this Nov 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ftn uses -1 as the dynamic index marker for memref

2 participants