0 | {--
 1 | Copyright (C) 2025  Joel Berkeley
 2 |
 3 | This program is free software: you can redistribute it and/or modify
 4 | it under the terms of the GNU Affero General Public License as published
 5 | by the Free Software Foundation, either version 3 of the License, or
 6 | (at your option) any later version.
 7 |
 8 | This program is distributed in the hope that it will be useful,
 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 | GNU Affero General Public License for more details.
12 |
13 | You should have received a copy of the GNU Affero General Public License
14 | along with this program.  If not, see <https://www.gnu.org/licenses/>.
15 | --}
16 | ||| For internal spidr use only.
17 | module Compiler.Enzyme.MLIR.Passes.Passes
18 |
19 | import Compiler.MLIR.Pass.PassManager
20 | import Compiler.FFI
21 |
22 | ffi : String -> String
23 | ffi = libxla "c/Enzyme/MLIR/Passes/Passes.h"
24 |
25 | %foreign (ffi "PassManager_addPass_DifferentiatePass")
26 | prim__passManagerAddPassDifferentiatePass : GCAnyPtr -> String -> PrimIO ()
27 |
28 | export
29 | addDifferentiatePass : HasIO io => PassManager -> String -> io ()
30 | addDifferentiatePass (MkPassManager pm) postpass =
31 |   primIO $ prim__passManagerAddPassDifferentiatePass pm postpass
32 |
33 | %foreign (ffi "PassManager_addPass_OutlineEnzymeFromRegionPass")
34 | prim__passManagerAddPassOutlineEnzymeFromRegionPass : GCAnyPtr -> PrimIO ()
35 |
36 | export
37 | addOutlineEnzymeFromRegionPass : HasIO io => PassManager -> io ()
38 | addOutlineEnzymeFromRegionPass (MkPassManager pm) =
39 |   primIO $ prim__passManagerAddPassOutlineEnzymeFromRegionPass pm
40 |
41 | %foreign (ffi "registerRemoveUnusedEnzymeOpsPass")
42 | prim__registerRemoveUnusedEnzymeOpsPass : PrimIO ()
43 |
44 | export
45 | registerRemoveUnusedEnzymeOpsPass : HasIO io => io ()
46 | registerRemoveUnusedEnzymeOpsPass = primIO $ prim__registerRemoveUnusedEnzymeOpsPass
47 |