Merge lang/memory-fence into main (gathering every branch; main's side kept on conflicts)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-30 17:21:20 +03:00
commit 9883008cd1
3 changed files with 30 additions and 6 deletions

View file

@ -659,6 +659,10 @@ function emit_fence_table() -> void {
emith(" %dbit = select i1 %isdecl, i64 549755813888, i64 0\n")
emith(" %v = or i64 %v0, %dbit\n")
emith(" store i64 %v, ptr %ev\n")
emith(" %dl = load i64, ptr @lp_dlive\n")
emith(" %dadd = select i1 %isdecl, i64 %n, i64 0\n")
emith(" %dl1 = add i64 %dl, %dadd\n")
emith(" store i64 %dl1, ptr @lp_dlive\n")
emith(" %tn = load i64, ptr @lp_tabn\n")
emith(" %tn1 = add i64 %tn, 1\n")
emith(" store i64 %tn1, ptr @lp_tabn\n")
@ -973,7 +977,11 @@ function emit_fence_control() -> void {
emith(" %sl = load i64, ptr @lp_slive\n")
emith(" %pr = load i64, ptr @lp_pre\n")
emith(" %sp = load i64, ptr @lp_spre\n")
emith(" %a = sub i64 %lv, %sl\n")
emith(" %a0 = sub i64 %lv, %sl\n")
emith(" %dlk = load i64, ptr @lp_dlive\n")
emith(" %sdl = load i64, ptr @lp_sdlive\n")
emith(" %ddk = sub i64 %dlk, %sdl\n")
emith(" %a = sub i64 %a0, %ddk\n")
emith(" %b = sub i64 %pr, %sp\n")
emith(" %k = sub i64 %a, %b\n")
emith(" call void @lp_funlock()\n")
@ -1735,7 +1743,11 @@ function emit_fence_frame() -> void {
emith(" %ml = load i64, ptr @lp_mlive\n")
emith(" %pr = load i64, ptr @lp_pre\n")
emith(" %mp = load i64, ptr @lp_mpre\n")
emith(" %a = sub i64 %lv, %ml\n")
emith(" %a0 = sub i64 %lv, %ml\n")
emith(" %dln = load i64, ptr @lp_dlive\n")
emith(" %dlmk = load i64, ptr @lp_mdlive\n")
emith(" %dd = sub i64 %dln, %dlmk\n")
emith(" %a = sub i64 %a0, %dd\n")
emith(" %b = sub i64 %pr, %mp\n")
emith(" %kept = sub i64 %a, %b\n")
emith(" %bad = icmp sgt i64 %kept, 0\n")