fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix: emit canonical two-binding TSEL and restore check closure - #41

Open
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates
Open

fix: emit canonical two-binding TSEL and restore check closure#41
zhoubot wants to merge 3 commits into
linxfrom
codex/fix-tsel-contract-and-doc-gates

Conversation

@zhoubot

Copy link
Copy Markdown
Collaborator

Summary

  • emit canonical PTO TSEL as two ordered B.IOT bindings:
    1. predicate + true source, without last or destination;
    2. prior destination as explicit false source, with last and the new destination;
  • tie the prior destination to the output with an inline-asm matching constraint so source/destination aliasing observes the old value;
  • add a real Linx target compile/disassembly regression for TSEL;
  • make the target frontend gate validate the current checkout instead of silently preferring TileOP headers already installed in Clang's resource directory;
  • restore generated engine-index closure and document that B.IOR.RegSrc1 row stride is expressed in bytes.

The PTO ISA contract is unchanged. The model's rejection of the previous single-B.IOT bundle remains correct fail-closed behavior.

Root cause

The public in-place API TSEL(dst, mask, true_src) emitted one terminating B.IOT and implicitly treated the destination's prior value as the false source. Current PTO-SPEC requires that false source to be bound explicitly. SuperScalarModel therefore rejected the generated ELF before execution.

The existing target frontend script also loaded the packaged TileOP API before the checkout under test, so it could not prove source changes. The resource overlay in this PR preserves Clang builtin headers while replacing only tileop-api with the current repository.

Validation

make check
35 Python contract tests: PASS
host C++ syntax gates: PASS
shell syntax gates: PASS
TC_DIR=<linx-toolchain-build run 33332380437, LLVM adcb879> \
MC_TRIPLE=linx64v5 \
bash test/tileop_api/verify_pto0583_asm.sh
PASS
TC_DIR=<same toolchain>/bin \
LINX_SYSROOT=<same toolchain>/sysroot/usr \
LINX_TARGET=linx64v5-unknown-linux-musl \
bash test/tileop_api/verify_target_cxx_frontend.sh
PASS

The TSEL probe disassembles to:

B.IOT t#2, t#1, mask=1111B.IOT n#1, mask=1111, last,->n<512B>

Tracking

Fixes#39.
Related to #31.
Cross-repository context:

@zhoubot

Copy link
Copy Markdown
CollaboratorAuthor

Hosted gate result

Required check is green on run 33359574673:
https://github.com/LinxISA/Linx-TileOP-API/actions/runs/33359574673

Exact evidence from the run:

LLVM SHA: adcb879481d8feb73e17a4134f8ae955bd21ee32
Python contract tests: 35/35 PASS
Linx target object gate: 54/54 PASS
PTO ISA 0.58.4 MC/disassembly/negative contract: PASS
Linx target C++ frontend and TSEL disassembly contract: PASS

The first run exposed a pre-existing cache correctness bug: the cache key included only LLVM SHA but also restored installed TileOP headers. Commit 3f91e39 now mirrors the candidate headers into the cached compiler resource directory before target compilation, so the required gate validates the PR checkout rather than stale packaged headers.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PTO v0.58][TSEL] API emits single-B.IOT but spec requires an explicit false-source binding

1 participant

@zhoubot