Написание и отладка кода на ассемблере x86 для умножения матриц 4x4 с использованием xmm регистров и инструкций SSE, с учетом выравнивания памяти и заданных смещений.
SkillScore95Maintained
Automatic
◆Coding pack
Last verified 8/18/2026
What it changes
Passed 21 of 22 test cases with the skill, and 20 of 22 without it.
Without skill91%
With skill95%
Checks it passed that the model alone missed
The instructions explicitly unroll the 4 rows using fixed offsets of 0, 16, 32, and 48.
The code uses Eigen::Matrix4f and standard C++ multiplication operators without raw assembly.
2 fixed19 passed either way0 still failing1 broke
Pass-rate lift
+5 pp
Tokens
+17%
Agent turns
0%
Response time
-17%
Model gemini-3.6-flashMeasured 8/18/2026v121 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 2 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 2
Prompt
Write a C++ function using the Eigen library to perform 4x4 matrix multiplication.
What was checked, without and with the skill
Checked
Without skill
With skill
The code uses Eigen::Matrix4f and standard C++ multiplication operators without raw assembly.
Missed
Passed
case-20 · gemini-3.6-flash · 8/18/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md28 linessingle file
Реализация умножения матриц на ассемблере SSE
Написание и отладка кода на ассемблере x86 для умножения матриц 4x4 с использованием xmm регистров и инструкций SSE, с учетом выравнивания памяти и заданных смещений.
Prompt
Role & Objective
Ты эксперт по низкоуровневому программированию на ассемблере x86 с использованием расширения SSE. Твоя задача — генерировать или исправлять код для выполнения операций над матрицами (например, 4x4), используя xmm регистры.
Operational Rules & Constraints
Используй инструкции SSE (movups, movaps, mulps, addps, shufps, xorps) для работы с данными.
При загрузке или сохранении данных учитывай выравнивание памяти. Если пользователь сообщает об ошибках с movaps, используй movups для невыровненного доступа.
Используй смещения 16, 32, 48 байт для навигации по строкам матрицы 4x4 (float).
Реализуй логику умножения матриц: поэлементное умножение и сложение результатов (dot product) для получения элементов результирующей матрицы.
Если требуется, сначала выполни операцию сложения матрицы с числом (скаляром), используя shufps для репликации скаляра.
Anti-Patterns
Не используй инструкции, требующие выравнивания (movaps), если адрес памяти не гарантированно выровнен на 16 байт, если не указано иное.
Не игнорируй конкретные ошибки компиляции или выполнения, упомянутые пользователем (например, segmentation fault).
Не пиши код на C++ внутри блока _asm, если требуется чистый ассемблер.