Skip to content

Remove tage basetable align#696

Merged
jensen-yan merged 6 commits intoxs-devfrom
remove-tage-basetable-align
Jan 9, 2026
Merged

Remove tage basetable align#696
jensen-yan merged 6 commits intoxs-devfrom
remove-tage-basetable-align

Conversation

@CJ362ff
Copy link
Copy Markdown
Contributor

@CJ362ff CJ362ff commented Jan 8, 2026

Summary by CodeRabbit

  • Refactor

    • Removed two public configuration options and the legacy base-table fallback, simplifying branch predictor behavior and consolidating prediction/update paths.
    • Eliminated an internal mode flag to streamline predictor behavior and reduce configurability surface.
  • Tests

    • Updated BTB prediction/update tests to provision and resolve new BTB entries earlier, matching the consolidated update flow.

✏️ Tip: You can customize this high-level summary in your review settings.

Change-Id: Ie31958ef6063bf7e96d8590596ae45b474d407f6
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jan 8, 2026

📝 Walkthrough

Walkthrough

Removed the basetable fallback and its configuration from BTBTAGE/MBTB: deleted basetable data structures and parameters (usingMbtbBaseEiterTage, baseTableSize), removed usingBasetable, and simplified prediction/update logic to stop reading or updating the basetable.

Changes

Cohort / File(s) Summary
Configuration
src/cpu/pred/BranchPredictor.py
Removed public config parameters usingMbtbBaseEiterTage (Bool) and baseTableSize (Unsigned)
BTBTAGE internals
src/cpu/pred/btb/btb_tage.hh, src/cpu/pred/btb/btb_tage.cc
Removed baseTable, baseTableSize, getBaseTableIndex() and usingBasetable; simplified base prediction to use btb_entry.ctr only; removed basetable lookups/updates and related indexing logic
MBTB internals & update flow
src/cpu/pred/btb/mbtb.hh, src/cpu/pred/btb/mbtb.cc
Removed usingBasetable member; unified MBTB::update() to always prepare and apply BTB entry updates (eliminated basetable-conditioned branches)
Fetch stream / Tests
src/cpu/pred/btb/test/btb.test.cc, src/cpu/pred/btb/stream_struct.hh
Adjusted predict/update timing: populate predBTBEntries from stage predictions, added FetchStream::setUpdateBTBEntries(), call getAndSetNewBTBEntry() unconditionally, and mark update entries/new entry resolved consistently

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested labels

align-kmhv3, perf

Suggested reviewers

  • jensen-yan
  • Yakkhini

Poem

🐇
I hopped through code and found a trail,
Cleared the basetable, trimmed the frail.
Branches now bounce on simpler ground,
My tiny paws kept changes sound. 🥕

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 72.73% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'Remove tage basetable align' is cryptic and lacks clarity. While it appears to reference the main change (removing basetable from TAGE), the wording is awkward and 'align' is unexplained, making it difficult for teammates to quickly understand the scope or purpose. Consider revising to a clearer title such as 'Remove basetable mechanism from BTB TAGE predictor' or 'Simplify BTB TAGE predictor by removing basetable fallback' to better communicate the change's purpose.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Change-Id: I9ddfb482893e13965ced6ca192aa58d91067fe14
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @src/cpu/pred/btb/btb_tage.cc:
- Around line 262-264: Remove the misleading comment and the redundant
commented-out duplicate: eliminate the line "// Use base table instead of
btb_entry.ctr" and delete the commented duplicate " //bool base_taken =
btb_entry.ctr >= 0;" so the code retains only the active declaration "bool
base_taken = btb_entry.ctr >= 0;" (or replace the removed comment with a short
accurate note like "determine taken from btb_entry.ctr" if a comment is still
desired).
🧹 Nitpick comments (1)
src/cpu/pred/btb/btb_tage.cc (1)

440-441: Misleading comment after base table removal.

The comment "Use base table instead of entry.ctr for fallback prediction" is now incorrect since the base table has been removed. The code correctly uses entry.ctr directly, so the comment should be updated to reflect this.

📝 Suggested fix: Update the misleading comment
-    // Use base table instead of entry.ctr for fallback prediction
+    // Use BTB entry counter as fallback prediction
     bool base_taken = entry.ctr >= 0;
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e46fe3b and bf70b2b.

📒 Files selected for processing (5)
  • src/cpu/pred/BranchPredictor.py
  • src/cpu/pred/btb/btb_tage.cc
  • src/cpu/pred/btb/btb_tage.hh
  • src/cpu/pred/btb/mbtb.cc
  • src/cpu/pred/btb/mbtb.hh
💤 Files with no reviewable changes (3)
  • src/cpu/pred/btb/mbtb.hh
  • src/cpu/pred/BranchPredictor.py
  • src/cpu/pred/btb/btb_tage.hh
🧰 Additional context used
🧬 Code graph analysis (2)
src/cpu/pred/btb/mbtb.cc (3)
src/cpu/pred/btb/btb_tage.cc (2)
  • prepareUpdateEntries (392-418)
  • prepareUpdateEntries (393-393)
src/cpu/pred/btb/mbtb.hh (6)
  • stream (128-128)
  • stream (164-164)
  • stream (172-172)
  • stream (174-174)
  • stream (277-278)
  • entry (284-284)
src/cpu/pred/btb/abtb.cc (2)
  • updateBTBEntry (494-575)
  • updateBTBEntry (495-496)
src/cpu/pred/btb/btb_tage.cc (1)
src/cpu/pred/btb/btb_tage.hh (6)
  • btb_entry (411-413)
  • entry (88-90)
  • entry (154-154)
  • entry (155-155)
  • entry (156-156)
  • entry (419-422)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Quick Build, Unit Tests & Smoke Test
  • GitHub Check: perf_test / XS-GEM5 - Run performance test (spec06-0.3c)
🔇 Additional comments (2)
src/cpu/pred/btb/mbtb.cc (2)

692-696: LGTM: Simplified update logic by removing conditional basetable path.

The refactored update() method now unconditionally processes entries via prepareUpdateEntries() and updates each entry. This simplification aligns with the PR objective to remove the basetable fallback mechanism.


84-84: and

Comment on lines 262 to 264
// Use base table instead of btb_entry.ctr
Addr base_idx = getBaseTableIndex(startPC);
unsigned branch_idx = getBranchIndexInBlock(btb_entry.pc, startPC);
bool base_taken = getDelay() != 0 ? (usingBasetable ? baseTable[base_idx][branch_idx] >= 0 : btb_entry.ctr >= 0)
: btb_entry.ctr >= 0;
bool base_taken = btb_entry.ctr >= 0;
//bool base_taken = btb_entry.ctr >= 0;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Misleading comment and redundant commented-out code.

  1. The comment on line 262 says "Use base table instead of btb_entry.ctr" but the base table has been removed in this PR, and the code now uses btb_entry.ctr directly. The comment is misleading/incorrect.

  2. Line 264 contains identical code that's commented out, which is redundant and should be removed.

🧹 Suggested fix: Remove misleading comment and duplicate code
-    // Use base table instead of btb_entry.ctr
+    // Use BTB entry counter as fallback prediction
     bool base_taken = btb_entry.ctr >= 0;
-    //bool base_taken = btb_entry.ctr >= 0;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Use base table instead of btb_entry.ctr
Addr base_idx = getBaseTableIndex(startPC);
unsigned branch_idx = getBranchIndexInBlock(btb_entry.pc, startPC);
bool base_taken = getDelay() != 0 ? (usingBasetable ? baseTable[base_idx][branch_idx] >= 0 : btb_entry.ctr >= 0)
: btb_entry.ctr >= 0;
bool base_taken = btb_entry.ctr >= 0;
//bool base_taken = btb_entry.ctr >= 0;
// Use BTB entry counter as fallback prediction
bool base_taken = btb_entry.ctr >= 0;
🤖 Prompt for AI Agents
In @src/cpu/pred/btb/btb_tage.cc around lines 262 - 264, Remove the misleading
comment and the redundant commented-out duplicate: eliminate the line "// Use
base table instead of btb_entry.ctr" and delete the commented duplicate " //bool
base_taken = btb_entry.ctr >= 0;" so the code retains only the active
declaration "bool base_taken = btb_entry.ctr >= 0;" (or replace the removed
comment with a short accurate note like "determine taken from btb_entry.ctr" if
a comment is still desired).

Change-Id: I7330cc7b33c78b56d526ae609131a224a532dc50
@XiangShanRobot
Copy link
Copy Markdown

[Generated by GEM5 Performance Robot]
commit: 2078493
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Master Diff(%)
Score 17.52 17.51 +0.10 🟢

Change-Id: I45cf3e7732c5d614c3be63d6a5d16c5da6a24f7a
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/cpu/pred/btb/test/btb.test.cc (1)

131-140: Duplicate call to getAndSetNewBTBEntry when delay > 0.

Lines 131-133 conditionally call getAndSetNewBTBEntry for L1 BTB (delay > 0), while lines 139-140 now unconditionally call it for all BTBs. This results in a duplicate call for L1 BTB:

  1. First call at line 132 (before marking entries as resolved)
  2. Second call at line 139 (after marking entries as resolved)

The function's documentation (mbtb.cc line 417) states it's "only called in L1 BTB during update," but the new unconditional call breaks this contract by also invoking it for L0 BTB. The duplicate call for L1 BTB causes redundant computation where the second call overwrites the first call's results.

🐛 Proposed fix: Remove the conditional call
-    // Only L1 BTB needs this step
-    if (btb->getDelay() > 0) {
-        btb->getAndSetNewBTBEntry(stream);
-    }
-
     for (auto &entry : stream.updateBTBEntries) {
         entry.resolved = true;
     }
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2078493 and 9658f8b.

📒 Files selected for processing (2)
  • src/cpu/pred/btb/mbtb.cc
  • src/cpu/pred/btb/test/btb.test.cc
🧰 Additional context used
🧬 Code graph analysis (2)
src/cpu/pred/btb/mbtb.cc (1)
src/cpu/pred/btb/mbtb.hh (6)
  • stream (128-128)
  • stream (164-164)
  • stream (172-172)
  • stream (174-174)
  • stream (277-278)
  • entry (284-284)
src/cpu/pred/btb/test/btb.test.cc (1)
src/cpu/pred/btb/mbtb.hh (5)
  • stream (128-128)
  • stream (164-164)
  • stream (172-172)
  • stream (174-174)
  • stream (277-278)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Quick Build, Unit Tests & Smoke Test
  • GitHub Check: perf_test / XS-GEM5 - Run performance test (spec06-0.3c)
🔇 Additional comments (1)
src/cpu/pred/btb/mbtb.cc (1)

691-694: LGTM! Basetable logic successfully removed.

The simplified update flow unconditionally processes entries via prepareUpdateEntries and updates each one, eliminating the previous basetable-branching complexity. This aligns with the PR objective to remove basetable logic and makes the code more maintainable.

jensen-yan
jensen-yan previously approved these changes Jan 9, 2026
@XiangShanRobot
Copy link
Copy Markdown

[Generated by GEM5 Performance Robot]
commit: 9658f8b
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Master Diff(%)
Score 17.52 17.51 +0.10 🟢

[Generated by GEM5 Performance Robot]
commit: 9658f8b
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Previous Commit Diff(%)
Score 17.52 17.52 0.00

Change-Id: I44b96f7caa256edd14053c944597486974d62f10
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In @src/cpu/pred/btb/test/btb.test.cc:
- Around line 129-136: The test currently silently skips assigning
stream.predBTBEntries when btb->getDelay() is >= stagePreds.size(), which can
hide regressions; update the test to check the delay against stagePreds.size()
and fail loudly if out of range (e.g., add an assertion or explicit test failure
referencing btb->getDelay()), otherwise continue to set stream.predBTBEntries
from stagePreds[btb->getDelay()].btbEntries before calling
stream.setUpdateBTBEntries() and btb->getAndSetNewBTBEntry(stream) so unexpected
delays are caught immediately.
- Around line 368-375: The test currently assigns stream.predBTBEntries but must
mirror the unified update flow used by predictUpdateCycle: instead call
stream.setUpdateBTBEntries(...) with tempPreds[mbtb->getDelay()].btbEntries (or
the equivalent entry vector) and mark those update entries as resolved (set the
same resolve flags/pattern that predictUpdateCycle uses, e.g. updateResolved for
each entry) before calling mbtb->getAndSetNewBTBEntry(stream) and
mbtb->update(stream); ensure you still guard with mbtb->getDelay() <
tempPreds.size() and use the same entry set and resolution semantics as
MultipleBranchPrediction/predictUpdateCycle.
- Around line 137-142: The test currently unconditionally sets
stream.updateNewBTBEntry.resolved = true which can let incorrect entries pass
MBTB::prepareUpdateEntries(); change the test so you only set
stream.updateNewBTBEntry.resolved = true when the entry actually matches the
resolved instruction (i.e., check stream.updateNewBTBEntry.pc == resolvedInstPC
before setting resolved), mirroring the production pattern in
decoupled_bpred.cc, then call btb->update(stream) as before.
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9658f8b and 9be27f1.

📒 Files selected for processing (1)
  • src/cpu/pred/btb/test/btb.test.cc
🧰 Additional context used
🧬 Code graph analysis (1)
src/cpu/pred/btb/test/btb.test.cc (4)
src/cpu/pred/btb/mbtb.hh (6)
  • stream (128-128)
  • stream (164-164)
  • stream (172-172)
  • stream (174-174)
  • stream (277-278)
  • entry (284-284)
src/cpu/pred/btb/btb_tage.hh (8)
  • stream (159-159)
  • stream (273-273)
  • stream (416-416)
  • entry (88-90)
  • entry (154-154)
  • entry (155-155)
  • entry (156-156)
  • entry (419-422)
src/cpu/pred/btb/timed_base_pred.hh (8)
  • entry (76-76)
  • entry (76-76)
  • entry (80-80)
  • entry (80-80)
  • entry (81-81)
  • entry (81-81)
  • entry (84-84)
  • entry (84-84)
src/cpu/pred/btb/stream_struct.hh (1)
  • entry (514-536)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Quick Build, Unit Tests & Smoke Test
  • GitHub Check: perf_test / XS-GEM5 - Run performance test (spec06-0.3c)

Comment on lines 368 to 375
FetchStream stream = setupStream(0x1000, branch2, true, meta, 0x1008);
// Populate predicted BTB entries for update from stage predictions
if (mbtb->getDelay() < tempPreds.size()) {
stream.predBTBEntries = tempPreds[mbtb->getDelay()].btbEntries;
}
mbtb->getAndSetNewBTBEntry(stream);
mbtb->update(stream);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

MultipleBranchPrediction should mirror the new update prep (setUpdateBTBEntries + resolve flags), otherwise the test no longer matches the intended unified update flow.

Right now this path populates predBTBEntries, but skips stream.setUpdateBTBEntries() and doesn’t mark update entries as resolved (unlike predictUpdateCycle). If the production update path now depends on these fields, this test can become accidentally permissive or flaky.

Proposed alignment with `predictUpdateCycle`
     FetchStream stream = setupStream(0x1000, branch2, true, meta, 0x1008);
     // Populate predicted BTB entries for update from stage predictions
     if (mbtb->getDelay() < tempPreds.size()) {
         stream.predBTBEntries = tempPreds[mbtb->getDelay()].btbEntries;
     }
+    stream.setUpdateBTBEntries();
     mbtb->getAndSetNewBTBEntry(stream);
+
+    for (auto &entry : stream.updateBTBEntries) {
+        entry.resolved = true;
+    }
+    stream.updateNewBTBEntry.resolved = true;
     mbtb->update(stream);
🤖 Prompt for AI Agents
In @src/cpu/pred/btb/test/btb.test.cc around lines 368 - 375, The test currently
assigns stream.predBTBEntries but must mirror the unified update flow used by
predictUpdateCycle: instead call stream.setUpdateBTBEntries(...) with
tempPreds[mbtb->getDelay()].btbEntries (or the equivalent entry vector) and mark
those update entries as resolved (set the same resolve flags/pattern that
predictUpdateCycle uses, e.g. updateResolved for each entry) before calling
mbtb->getAndSetNewBTBEntry(stream) and mbtb->update(stream); ensure you still
guard with mbtb->getDelay() < tempPreds.size() and use the same entry set and
resolution semantics as MultipleBranchPrediction/predictUpdateCycle.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 9, 2026

🚀 Coremark Smoke Test Results

Branch IPC Change
Base (xs-dev) 2.1662 -
This PR 2.1732 📈 +0.0069 (+0.32%)

✅ Difftest smoke test passed!

@XiangShanRobot
Copy link
Copy Markdown

[Generated by GEM5 Performance Robot]
commit: 9be27f1
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Master Diff(%)
Score 17.52 17.51 +0.10 🟢

[Generated by GEM5 Performance Robot]
commit: 9be27f1
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Previous Commit Diff(%)
Score 17.52 17.52 0.00

Change-Id: I5646aef41beb9be55f47d2bebf7c2cb4956566f5
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/cpu/pred/btb/test/btb.test.cc (1)

363-370: Consider aligning branch2 setup with the updated predictUpdateCycle pattern.

The manual update setup for branch2 doesn't populate stream.predBTBEntries from tempPreds or call stream.setUpdateBTBEntries(), which differs from the updated predictUpdateCycle helper (lines 129-134). Consider either:

  1. Using predictUpdateCycle for both branches for consistency, or
  2. Adding the missing setup steps if this test intentionally exercises a different code path
♻️ Proposed refactor to align with predictUpdateCycle pattern
 FetchStream stream = setupStream(0x1000, branch2, true, meta, 0x1008);
+// Populate predicted BTB entries from stage predictions
+if (mbtb->getDelay() < tempPreds.size()) {
+    stream.predBTBEntries = tempPreds[mbtb->getDelay()].btbEntries;
+}
+stream.setUpdateBTBEntries();
 mbtb->getAndSetNewBTBEntry(stream);
+for (auto &entry : stream.updateBTBEntries) {
+    entry.resolved = true;
+}
+stream.updateNewBTBEntry.resolved = true;
 mbtb->update(stream);
📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9be27f1 and 36ecfd0.

📒 Files selected for processing (1)
  • src/cpu/pred/btb/test/btb.test.cc
🧰 Additional context used
🧬 Code graph analysis (1)
src/cpu/pred/btb/test/btb.test.cc (2)
src/cpu/pred/btb/mbtb.hh (6)
  • stream (128-128)
  • stream (164-164)
  • stream (172-172)
  • stream (174-174)
  • stream (277-278)
  • entry (284-284)
src/cpu/pred/btb/stream_struct.hh (1)
  • entry (514-536)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Quick Build, Unit Tests & Smoke Test
🔇 Additional comments (3)
src/cpu/pred/btb/test/btb.test.cc (3)

129-133: LGTM: Proper population of predicted BTB entries.

The code correctly populates predBTBEntries from the stage predictions at the appropriate delay index, with proper bounds checking to prevent out-of-bounds access.


134-135: LGTM: Streamlined update path after basetable removal.

The unconditional call to getAndSetNewBTBEntry and the addition of setUpdateBTBEntries() align with the simplification mentioned in the PR objectives (removing basetable fallback logic).


140-140: LGTM: Consistent resolved flag setting.

Marking updateNewBTBEntry.resolved as true is consistent with the handling of updateBTBEntries above (lines 137-139).

@github-actions
Copy link
Copy Markdown

github-actions bot commented Jan 9, 2026

🚀 Coremark Smoke Test Results

Branch IPC Change
Base (xs-dev) 2.1662 -
This PR 2.1732 📈 +0.0069 (+0.32%)

✅ Difftest smoke test passed!

@CJ362ff CJ362ff requested a review from jensen-yan January 9, 2026 09:03
@XiangShanRobot
Copy link
Copy Markdown

[Generated by GEM5 Performance Robot]
commit: 36ecfd0
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Master Diff(%)
Score 17.52 17.51 +0.10 🟢

[Generated by GEM5 Performance Robot]
commit: 36ecfd0
workflow: gem5 Align BTB Performance Test(0.3c)

Align BTB Performance

Overall Score

PR Previous Commit Diff(%)
Score 17.52 17.52 0.00

@jensen-yan jensen-yan merged commit 5cc1637 into xs-dev Jan 9, 2026
3 of 4 checks passed
@jensen-yan jensen-yan deleted the remove-tage-basetable-align branch January 9, 2026 10:45
@coderabbitai coderabbitai bot mentioned this pull request Jan 12, 2026
@coderabbitai coderabbitai bot mentioned this pull request Jan 23, 2026
@coderabbitai coderabbitai bot mentioned this pull request Mar 11, 2026
Sign up for free to 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.

3 participants