Skip to content

Commit b7630da

Browse files
chore: update deps (#142)
* chore: update deps * fix: instruction combine opt does not check fixed point (llvm 22) * fix: prev fix only for llvm 22 * fix: compile error * fix: broaden libcurses.tbd sed pattern to match full SDK path on macOS * fix: patch libcurses.tbd references in build.rs to handle macOS 26 SDK * fix: install libcurses.tbd symlink in CI instead of patching cmake files * fix: remove duplicate libcurses workaround, keep main branch version * fix: broaden sed pattern to match full SDK path for libcurses
1 parent 602cffd commit b7630da

6 files changed

Lines changed: 43 additions & 25 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ jobs:
4444
- ["19.1", "19-1", "191", "19"]
4545
- ["20.1", "20-1", "201", "20"]
4646
- ["21.1", "21-1", "211", "21"]
47+
- ["22.1", "22-1", "221", "22"]
4748
toolchain:
4849
- stable
4950
os:
@@ -190,7 +191,7 @@ jobs:
190191
LLVM_CMAKE_DIR="$LLVM_PREFIX/lib/cmake/llvm"
191192
if [ -d "$LLVM_CMAKE_DIR" ]; then
192193
grep -rl 'libcurses\.tbd' "$LLVM_CMAKE_DIR" 2>/dev/null | while IFS= read -r f; do
193-
sed -i '' 's|/usr/lib/libcurses\.tbd|/usr/lib/libncurses.tbd|g' "$f"
194+
sed -i '' 's|libcurses\.tbd|libncurses.tbd|g' "$f"
194195
done
195196
fi
196197
# 2. Provide a symlink via CMAKE_PREFIX_PATH so find_library(curses)

diffsl-backend/Cargo.toml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ llvm15-0 = ["diffsl/llvm15-0"]
1212
llvm16-0 = ["diffsl/llvm16-0"]
1313
llvm17-0 = ["diffsl/llvm17-0"]
1414
llvm18-1 = ["diffsl/llvm18-1"]
15+
llvm19-1 = ["diffsl/llvm19-1"]
16+
llvm20-1 = ["diffsl/llvm20-1"]
17+
llvm21-1 = ["diffsl/llvm21-1"]
18+
llvm22-1 = ["diffsl/llvm22-1"]
1519

1620
[dependencies]
17-
axum = "0.8.6"
21+
axum = "0.8.9"
1822
diffsl = { path = "../diffsl", features = [] }

diffsl/Cargo.toml

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ llvm18-1 = ["inkwell-181", "llvm-sys-181", "llvm", "enzyme"]
1919
llvm19-1 = ["inkwell-191", "llvm-sys-191", "llvm", "enzyme"]
2020
llvm20-1 = ["inkwell-201", "llvm-sys-201", "llvm", "enzyme"]
2121
llvm21-1 = ["inkwell-211", "llvm-sys-211", "llvm", "enzyme"]
22+
llvm22-1 = ["inkwell-221", "llvm-sys-221", "llvm", "enzyme"]
2223
enzyme = ["bindgen", "cmake"]
2324
llvm = []
2425
external_f64 = ["external"]
@@ -36,53 +37,56 @@ test_compile = []
3637
rayon = ["dep:rayon"]
3738

3839
[dependencies]
39-
ndarray = { version = "=0.17" }
40+
ndarray = { version = "0.17" }
4041
anyhow = "1.0"
4142
approx = "0.5"
4243
pest = "2.8"
4344
pest_derive = "2.8"
44-
itertools = "0.14.0"
45+
itertools = "0.15"
4546
uid = "0.1.8"
46-
inkwell-150 = { package = "inkwell", version = "0.7.1", features = [
47+
inkwell-150 = { package = "inkwell", version = "0.9.0", features = [
4748
"llvm15-0",
4849
], optional = true }
49-
inkwell-160 = { package = "inkwell", version = "0.7.1", features = [
50+
inkwell-160 = { package = "inkwell", version = "0.9.0", features = [
5051
"llvm16-0",
5152
], optional = true }
52-
inkwell-170 = { package = "inkwell", version = "0.7.1", features = [
53+
inkwell-170 = { package = "inkwell", version = "0.9.0", features = [
5354
"llvm17-0",
5455
], optional = true }
55-
inkwell-181 = { package = "inkwell", version = "0.7.1", features = [
56+
inkwell-181 = { package = "inkwell", version = "0.9.0", features = [
5657
"llvm18-1",
5758
], optional = true }
58-
inkwell-191 = { package = "inkwell", version = "0.7.1", features = [
59+
inkwell-191 = { package = "inkwell", version = "0.9.0", features = [
5960
"llvm19-1",
6061
], optional = true }
61-
inkwell-201 = { package = "inkwell", version = "0.7.1", features = [
62+
inkwell-201 = { package = "inkwell", version = "0.9.0", features = [
6263
"llvm20-1",
6364
], optional = true }
64-
inkwell-211 = { package = "inkwell", version = "0.7.1", features = [
65+
inkwell-211 = { package = "inkwell", version = "0.9.0", features = [
6566
"llvm21-1",
6667
], optional = true }
68+
inkwell-221 = { package = "inkwell", version = "0.9.0", features = [
69+
"llvm22-1",
70+
], optional = true }
6771
llvm-sys-150 = { package = "llvm-sys", version = "150.2.1", optional = true }
6872
llvm-sys-160 = { package = "llvm-sys", version = "160.2.1", optional = true }
6973
llvm-sys-170 = { package = "llvm-sys", version = "170.4.0", optional = true }
7074
llvm-sys-181 = { package = "llvm-sys", version = "181.3.0", optional = true }
7175
llvm-sys-191 = { package = "llvm-sys", version = "191.1.0", optional = true }
7276
llvm-sys-201 = { package = "llvm-sys", version = "201.0.0", optional = true }
7377
llvm-sys-211 = { package = "llvm-sys", version = "211.0.0", optional = true }
74-
inkwell_internals = { version = "0.11.0", optional = true }
75-
cranelift = { version = "0.125", optional = true }
76-
cranelift-module = { version = "0.125", optional = true }
77-
cranelift-object = { version = "0.125", optional = true }
78-
cranelift-jit = { version = "0.125", optional = true }
79-
cranelift-native = { version = "0.125", optional = true }
78+
llvm-sys-221 = { package = "llvm-sys", version = "221.0.0", optional = true }
79+
cranelift = { version = "0.133", optional = true }
80+
cranelift-module = { version = "0.133", optional = true }
81+
cranelift-object = { version = "0.133", optional = true }
82+
cranelift-jit = { version = "0.133", optional = true }
83+
cranelift-native = { version = "0.133", optional = true }
8084
target-lexicon = "0.13"
8185
aliasable = "0.1.3"
8286
rayon = { version = "1.10.0", optional = true }
8387
lazy_static = "1.5.0"
8488
serde = "1.0"
85-
object = "0.37"
89+
object = "0.39"
8690
libc = "0.2"
8791
num-traits = "0.2"
8892
log = "0.4.29"

diffsl/src/execution/cranelift/codegen.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ impl<M: Module> CraneliftModule<M> {
104104
let zero = builder.ins().iconst(self.int_type, 0);
105105
builder
106106
.ins()
107-
.store(MemFlags::new(), zero, thread_counter, 0);
107+
.store(MemFlagsData::new(), zero, thread_counter, 0);
108108

109109
builder.ins().return_(&[]);
110110
builder.finalize();
@@ -157,7 +157,7 @@ impl<M: Module> CraneliftModule<M> {
157157
let one = builder.ins().iconst(self.int_type, 1);
158158
builder.ins().atomic_rmw(
159159
self.int_type,
160-
MemFlags::new(),
160+
MemFlagsData::new(),
161161
AtomicRmwOp::Add,
162162
thread_counter,
163163
one,
@@ -170,7 +170,7 @@ impl<M: Module> CraneliftModule<M> {
170170
let current_value =
171171
builder
172172
.ins()
173-
.atomic_load(self.int_type, MemFlags::new(), thread_counter);
173+
.atomic_load(self.int_type, MemFlagsData::new(), thread_counter);
174174

175175
let all_threads_done = builder.ins().icmp(
176176
IntCC::UnsignedGreaterThanOrEqual,
@@ -1304,7 +1304,7 @@ struct CraneliftCodeGen<'a, M: Module> {
13041304
module: MutexGuard<'a, M>,
13051305
tensor_ptr: Option<Value>,
13061306
variables: HashMap<String, Variable>,
1307-
mem_flags: MemFlags,
1307+
mem_flags: MemFlagsData,
13081308
functions: HashMap<String, FuncRef>,
13091309
layout: &'a DataLayout,
13101310
indices: GlobalValue,
@@ -2805,7 +2805,7 @@ impl<'ctx, M: Module> CraneliftCodeGen<'ctx, M> {
28052805
indices,
28062806
constants,
28072807
variables: HashMap::new(),
2808-
mem_flags: MemFlags::new(),
2808+
mem_flags: MemFlagsData::new(),
28092809
functions: HashMap::new(),
28102810
layout: &module.layout,
28112811
threaded: module.threaded,

diffsl/src/execution/llvm/codegen.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,16 @@ impl LlvmModule {
191191
// .map_err(|e| anyhow!("Failed to print module to file: {:?}", e))?;
192192

193193
//let passes = "default<O2>";
194-
let passes = "annotation2metadata,forceattrs,inferattrs,coro-early,function<eager-inv>(lower-expect,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;no-switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,early-cse<>),openmp-opt,ipsccp,called-value-propagation,globalopt,function(mem2reg),function<eager-inv>(instcombine,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>),require<globals-aa>,function(invalidate<aa>),require<profile-summary>,cgscc(devirt<4>(inline<only-mandatory>,inline,function-attrs,openmp-opt-cgscc,function<eager-inv>(early-cse<memssa>,speculative-execution,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,reassociate,require<opt-remark-emit>,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate,licm<allowspeculation>,simple-loop-unswitch<no-nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,instcombine,loop(loop-idiom,indvars,loop-deletion),vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine,jump-threading,correlated-propagation,adce,memcpyopt,dse,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts>,instcombine),coro-split)),deadargelim,coro-cleanup,globalopt,globaldce,elim-avail-extern,rpo-function-attrs,recompute-globalsaa,function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate,loop-deletion),loop-distribute,inject-tli-mappings,loop-load-elim,instcombine,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts>,vector-combine,instcombine,transform-warning,instcombine,require<opt-remark-emit>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>),globaldce,constmerge,cg-profile,rel-lookup-table-converter,function(annotation-remarks),verify";
194+
let passes_base = "annotation2metadata,forceattrs,inferattrs,coro-early,function<eager-inv>(lower-expect,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;no-switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,early-cse<>),openmp-opt,ipsccp,called-value-propagation,globalopt,function(mem2reg),function<eager-inv>(instcombine,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>),require<globals-aa>,function(invalidate<aa>),require<profile-summary>,cgscc(devirt<4>(inline<only-mandatory>,inline,function-attrs,openmp-opt-cgscc,function<eager-inv>(early-cse<memssa>,speculative-execution,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,reassociate,require<opt-remark-emit>,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate,licm<allowspeculation>,simple-loop-unswitch<no-nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>,instcombine,loop(loop-idiom,indvars,loop-deletion),vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine,jump-threading,correlated-propagation,adce,memcpyopt,dse,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;hoist-common-insts;sink-common-insts>,instcombine),coro-split)),deadargelim,coro-cleanup,globalopt,globaldce,elim-avail-extern,rpo-function-attrs,recompute-globalsaa,function<eager-inv>(float2int,lower-constant-intrinsics,loop(loop-rotate,loop-deletion),loop-distribute,inject-tli-mappings,loop-load-elim,instcombine,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;sink-common-insts>,vector-combine,instcombine,transform-warning,instcombine,require<opt-remark-emit>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-sink-common-insts>),globaldce,constmerge,cg-profile,rel-lookup-table-converter,function(annotation-remarks),verify";
195+
let passes = if cfg!(feature = "inkwell-221") {
196+
passes_base.replace("instcombine", "instcombine<no-verify-fixpoint>")
197+
} else {
198+
passes_base.to_string()
199+
};
195200
let (codegen, machine) = self.codegen_and_machine_mut();
196201
codegen
197202
.module()
198-
.run_passes(passes, machine, pass_options)
203+
.run_passes(&passes, machine, pass_options)
199204
.map_err(|e| anyhow!("Failed to run passes: {:?}", e))
200205

201206
//let path = "jit_module_after_pre_autodiff_opt.ll";

diffsl/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ extern crate inkwell_191 as inkwell;
3939
extern crate inkwell_201 as inkwell;
4040
#[cfg(feature = "inkwell-211")]
4141
extern crate inkwell_211 as inkwell;
42+
#[cfg(feature = "inkwell-221")]
43+
extern crate inkwell_221 as inkwell;
4244

4345
#[cfg(feature = "inkwell-150")]
4446
extern crate llvm_sys_150 as llvm_sys;
@@ -54,3 +56,5 @@ extern crate llvm_sys_191 as llvm_sys;
5456
extern crate llvm_sys_201 as llvm_sys;
5557
#[cfg(feature = "inkwell-211")]
5658
extern crate llvm_sys_211 as llvm_sys;
59+
#[cfg(feature = "inkwell-221")]
60+
extern crate llvm_sys_221 as llvm_sys;

0 commit comments

Comments
 (0)