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(" %dbit = select i1 %isdecl, i64 549755813888, i64 0\n")
emith(" %v = or i64 %v0, %dbit\n") emith(" %v = or i64 %v0, %dbit\n")
emith(" store i64 %v, ptr %ev\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(" %tn = load i64, ptr @lp_tabn\n")
emith(" %tn1 = add i64 %tn, 1\n") emith(" %tn1 = add i64 %tn, 1\n")
emith(" store i64 %tn1, ptr @lp_tabn\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(" %sl = load i64, ptr @lp_slive\n")
emith(" %pr = load i64, ptr @lp_pre\n") emith(" %pr = load i64, ptr @lp_pre\n")
emith(" %sp = load i64, ptr @lp_spre\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(" %b = sub i64 %pr, %sp\n")
emith(" %k = sub i64 %a, %b\n") emith(" %k = sub i64 %a, %b\n")
emith(" call void @lp_funlock()\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(" %ml = load i64, ptr @lp_mlive\n")
emith(" %pr = load i64, ptr @lp_pre\n") emith(" %pr = load i64, ptr @lp_pre\n")
emith(" %mp = load i64, ptr @lp_mpre\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(" %b = sub i64 %pr, %mp\n")
emith(" %kept = sub i64 %a, %b\n") emith(" %kept = sub i64 %a, %b\n")
emith(" %bad = icmp sgt i64 %kept, 0\n") emith(" %bad = icmp sgt i64 %kept, 0\n")

View file

@ -25278,6 +25278,10 @@ put:
%dbit = select i1 %isdecl, i64 549755813888, i64 0 %dbit = select i1 %isdecl, i64 549755813888, i64 0
%v = or i64 %v0, %dbit %v = or i64 %v0, %dbit
store i64 %v, ptr %ev store i64 %v, ptr %ev
%dl = load i64, ptr @lp_dlive
%dadd = select i1 %isdecl, i64 %n, i64 0
%dl1 = add i64 %dl, %dadd
store i64 %dl1, ptr @lp_dlive
%tn = load i64, ptr @lp_tabn %tn = load i64, ptr @lp_tabn
%tn1 = add i64 %tn, 1 %tn1 = add i64 %tn, 1
store i64 %tn1, ptr @lp_tabn store i64 %tn1, ptr @lp_tabn
@ -25590,7 +25594,11 @@ read:
%sl = load i64, ptr @lp_slive %sl = load i64, ptr @lp_slive
%pr = load i64, ptr @lp_pre %pr = load i64, ptr @lp_pre
%sp = load i64, ptr @lp_spre %sp = load i64, ptr @lp_spre
%a = sub i64 %lv, %sl %a0 = sub i64 %lv, %sl
%dlk = load i64, ptr @lp_dlive
%sdl = load i64, ptr @lp_sdlive
%ddk = sub i64 %dlk, %sdl
%a = sub i64 %a0, %ddk
%b = sub i64 %pr, %sp %b = sub i64 %pr, %sp
%k = sub i64 %a, %b %k = sub i64 %a, %b
call void @lp_funlock() call void @lp_funlock()
@ -26348,7 +26356,11 @@ weigh:
%ml = load i64, ptr @lp_mlive %ml = load i64, ptr @lp_mlive
%pr = load i64, ptr @lp_pre %pr = load i64, ptr @lp_pre
%mp = load i64, ptr @lp_mpre %mp = load i64, ptr @lp_mpre
%a = sub i64 %lv, %ml %a0 = sub i64 %lv, %ml
%dln = load i64, ptr @lp_dlive
%dlmk = load i64, ptr @lp_mdlive
%dd = sub i64 %dln, %dlmk
%a = sub i64 %a0, %dd
%b = sub i64 %pr, %mp %b = sub i64 %pr, %mp
%kept = sub i64 %a, %b %kept = sub i64 %a, %b
%bad = icmp sgt i64 %kept, 0 %bad = icmp sgt i64 %kept, 0
@ -210895,7 +210907,7 @@ ret:
ret void ret void
} }
define void @fn_emit_fs_dir() { define void @fn_emit_fs_normalize() {
entry: entry:
call void @fn_emith(ptr @.str13320) call void @fn_emith(ptr @.str13320)
call void @fn_emith(ptr @.str13321) call void @fn_emith(ptr @.str13321)

View file

@ -213982,7 +213982,7 @@ ret:
ret void ret void
} }
define void @fn_emit_fs_dir() { define void @fn_emit_fs_normalize() {
entry: entry:
call void @fn_emith(ptr @.str13525) call void @fn_emith(ptr @.str13525)
call void @fn_emith(ptr @.str13526) call void @fn_emith(ptr @.str13526)