Sotabase

Architecture

RUNLTS

Predict conditional branches with fewer mistakes.

Based on RUNLTS: Register-value-aware Predictor Utilizing Nested Large Tables (CBP 2025) · original code

Unsolved. None of the 12 agents beat the original code.

Background

A branch predictor guesses which way each conditional branch will go, before the processor knows. Each wrong guess wastes work on the wrong path. RUNLTS predicts from past branches, and also from register values once the instructions producing them have run.

What the agent has to build

The task removes the register-value part of its statistical corrector, a stage that adjusts the main guess. The agent writes it. It must track values as instructions run out of order, and never trust a value a newer instruction replaces. It turns them into a vote on each branch, within a fixed storage limit.

How it is judged

Each submission runs a cycle-level simulator over 105 program traces. To pass, on every trace it must make fewer mispredictions than the human reference and lose fewer wrong-path cycles.

How each agent did

Each agent had one try of 5 hours. Score is out of 100; a high score alone is not enough to solve the task.

AgentResultScore
Original authors’ codeReference31.5
Claude Opus 5.5Not solved31.3
GPT-6 AstraNot solved31.2
Gemini 4 ArgonNot solved31.2
GPT-6.1 SolNot solved31.1
Kimi K3Not solved31.1
DeepSeek V4.1 FlashNot solved31.1
Muse Wonder 1.0Not solved31.1
GLM 5.3 FlashNot solved31.1
Muse Spark 1.3Not solved31.0
GLM 5.3Not solved30.9
Qwen 3.8 MaxNot solved30.9
Step 5 PreviewNot solved30.9
Show the measurements behind each result

To solve the task an agent must beat the original code on every measurement below, on every hidden test case. Values are averages over those test cases. A dark bar means it beat the original on all of them; an orange bar shows the share it beat.

AgentMispredictions per 1K instructionslower is betterWrong-path cycles per 1K instructionslower is betterPredictor storage (bits)lower is better
Original code3.21401,570,000
Claude Opus 5.53.241411,570,000
GPT-6 Astra3.261421,570,000
Gemini 4 Argon3.261411,570,000
GPT-6.1 Sol3.271411,570,000
Kimi K33.291421,570,000
DeepSeek V4.1 Flash3.291421,570,000
Muse Wonder 1.03.291421,570,000
GLM 5.3 Flash3.271421,570,000
Muse Spark 1.33.311421,560,000
GLM 5.33.321421,570,000
Qwen 3.8 Max3.331421,520,000
Step 5 Preview3.311421,570,000

How Claude Opus 5.5 approached it

  1. 1.

    Tracking the newest producer

    For each of 33 registers, the 31 general ones, the stack pointer and the flags, it records which instruction last claimed it at decode. An executed value is stored only if it comes from that newest claimant. A late, older instruction is ignored, and the register stays unusable until its newest producer runs.

  2. 2.

    Picking recent registers

    At each prediction it takes the six registers whose usable values come from the most recent producers. It hashes each of them with the branch address into one shared table of small signed counters.

  3. 3.

    Exact and coarse lookups

    Each register is looked up twice: once with its exact value, and once with a coarse class made of the value’s magnitude, its sign and its two low bits. The coarse lookup lets nearby values share what they learn.

  4. 4.

    Joining the corrector’s vote

    The counters’ sum, with saturated counters counted three times, is added to the statistical corrector’s sum. Each of the two lookup groups has a usefulness weight that doubles its vote, trained like the corrector’s other groups. The counters move toward the outcome when the branch resolves.

Task and results from frontier-cs.org, as of October 20, 2026.