What's Changed
- add link to fortran bindings by @vchuravy in #2967
- mlir: add enzyme.atomic_rmw op with ordering attribute by @pengmai in #2950
- mlir: integrate dataflow activity analysis by @pengmai in #2970
- mlir: llvm.select activity interface, zeroInPlace for llvm.alloca by @pengmai in #2972
- mlir: remove dependency on linalg with enzyme.fill_zero op by @pengmai in #2973
- mlir: derivative for maxnumf, pointer handling for arith.select by @pengmai in #2971
- mlir: sink constants into autodiff_region when outlining by @pengmai in #2977
- mlir: add atomic_add attribute to enzyme.autodiff and autodiff_region ops by @pengmai in #2974
- No more linalg dep for enzyme pass (now lowering to fill op) by @wsmoses in #2976
- mlir: pass to split ifs with multi-results into separate ops by @pengmai in #2975
- mlir: support multi-dim gpu allocations in ForLikeEnzymeOpsRemover by @pengmai in #2980
- Use gcp-cache for MLIR build cache by @wsmoses in #2981
- [mlir] Support multi-dim dynamic memref caches by @pengmai in #2982
- mlir: upstream interface implementations by @pengmai in #2983
- [MLIR] Split registerCoreDialectAutodiffInterfaces into its own TU; trim pass deps by @vchuravy in #2988
- Mark custream capture as inactive by @wsmoses in #2992
- mlir: support non-index IVs in loops by @pengmai in #2993
- Disable enzyme lit test ci for macos debug by @wsmoses in #2997
- Add AIR compatibility by @pw0908 in #2934
- Mark profile counter as integral by @wsmoses in #3000
- GCP cache julia action if on relevant machine by @wsmoses in #3006
- [MLIR] Add StoreLikeInterface to decouple activity analysis from stores by @vchuravy in #2978
- Update to later llvm by @wsmoses in #3007
- Fixes for mutable memory in scf.for reverse by @Pangoraw in #3009
- [MLIR][Mincut] Add test for optimality issue for mincut by @wsmoses in #3013
- mlir: mark outlined functions from enzyme.autodiff_region private by @pengmai in #3015
- [MLIR][Mincut] Prefer last equal sized element in chain to cache by @wsmoses in #3017
- mlir: mark loads of read-only pointers as movable during mincut by @pengmai in #2734
- Speed up large constant ta by @wsmoses in #3002
- [mlir] Make non-looping, non-nested RegionBranchOpInterface ops movable by min-cut by @pengmai in #3024
- Prefer OptionalPassInfoMixin by @boomanaiden154 in #2996
- Remove deprecated use of make_scope_exit by @boomanaiden154 in #3034
- Do not use deprecated LLVM Typed pointer functions by @boomanaiden154 in #3033
- mlir: loop-invariant cache for small stack allocas by @pengmai in #3030
- Avoid getTerminator assertion on incomplete derivative block by @krystophny in #3023
- Relax dynamic-loop derivative signature check by @krystophny in #3021
- Don't add non-instructions to the min-cut recompute graph by @wsmoses in #3035
- mlir: fix overly conservative check when marking readonly by @pengmai in #3039
- [TA] Don't recurse infinitely on self-referential constant globals by @wsmoses in #3038
- mlir: Fix Binomial checkpointing schedule and support for mutable memory + memory space by @wsmoses in #3042
- Make IR emission order independent of C++ argument evaluation order by @wsmoses in #3044
- Add a lint job for order-dependent IR emission by @wsmoses in #3045
- Bind IRBuilder calls that share an argument list to locals by @wsmoses in #3046
- Properly consider ptrsizehit addr by @wsmoses in #3047
- mlir: Only delegate loop-carried caches to the loop remover by @wsmoses in #3049
- mlir: Simplify enzyme ops before each remover, not only once per function by @wsmoses in #3050
- Make the min cut graph's adjacency iteration deterministic by @wsmoses in #3058
- MLIR fast math derivatives by @wsmoses in #3057
- Preserve attributes on loops built while differentiating by @wsmoses in #3059
- Add pass to hoist allocations by @Pangoraw in #3051
- Flang llvm plugin by @vchuravy in #3056
- Add more Fortran tests by @joewallwork in #3020
- Separate out Fortran tests at different optimisation levels by @joewallwork in #3054
- Add batch mode test by @joewallwork in #3053
- Fix compilation warnings by @Pangoraw in #3068
- Serialize TypeTree offsets as signed constants by @wsmoses in #3070
- Use Utils.h wrappers for version-sensitive LLVM APIs, and lint for it by @wsmoses in #3071
- Drop identity address-space casts in the Julia alloca lowering by @wsmoses in #3074
- Report mismatched activity as a warning, not just an -Rpass remark by @wsmoses in #3076
- Add exp10 intrinsic for LLVM >=18 (#2998) by @SpeedyTurtle599 in #3001
- Give math.fma a derivative by @wsmoses in #3077
- Load adjoint: a mutable type takes a shadow, not an accumulation by @wsmoses in #3078
- Differentiate an llvm.func in forward mode by @wsmoses in #3087
- Provide a fpm.toml for the Fortran interface by @vchuravy in #3080
- A result nothing differentiates has no shadow to be given by @wsmoses in #3088
- Prefer annotations for Enzyme's registration attributes, fixing templates by @wsmoses in #3085
- Join a map of sets by what the other side has by @wsmoses in #3090
- Give each differentiated function its own dataflow solver by @wsmoses in #3091
- Do not walk one map while inserting into it by @wsmoses in #3094
- Give lifetime markers a forward-mode rule by @wsmoses in #3093
- Decide whether to skip an op with the analyzer everything else uses by @wsmoses in #3095
- Say an unknown summary set the way the readers of summaries read it by @wsmoses in #3097
- Keep a branch's condition when neither successor takes an argument by @wsmoses in #3096
- Give llvm.intr.memset a forward-mode rule by @wsmoses in #3098
- Remove a pop nobody reads when its cache has no other pop by @wsmoses in #3099
- Give the derivative its own comdat rather than the primal's by @wsmoses in #3100
- MLIR dataflow activity: a summarized function still needs its own analysis by @wsmoses in #3105
- MLIR: forward-mode tangent for arith.select by @wsmoses in #3107
- MLIR: differentiating a bodyless function is an error, not a crash or a zero by @wsmoses in #3104
- Describe the _enzyme* call markers in one place by @wsmoses in #3086
- mlir: unify checkpointing implementations by @Pangoraw in #3092
- Size a cloned or zeroed alloca from its type by @wsmoses in #3108
New Contributors
- @pw0908 made their first contribution in #2934
- @boomanaiden154 made their first contribution in #2996
- @krystophny made their first contribution in #3023
- @SpeedyTurtle599 made their first contribution in #3001
Full Changelog: v0.0.289...v0.0.290