---
id: pr-flashinfer-3271
repo: flashinfer-ai/flashinfer
pr: 3271
title: 'feat(moe): add SM120 W4A16 b12x kernels'
author: lukealonso
date: '2026-05-11'
url: https://github.com/flashinfer-ai/flashinfer/pull/3271
source_category: upstream-code
architectures:
- sm100
tags:
- arch_pipeline
- attention_kv
- blackwell
- cuda kernel
- cute dsl
- cutlass
- fp4
- fp8
- fused moe
- gemm_quant
- moe_routing
- sm120
- topk
techniques:
- fine-grained-quantization
- kernel-fusion
- pipeline-stages
hardware_features:
- blackwell
- fp4
- fp8
kernel_types:
- attention
- gemm
- moe
- runtime
languages:
- cuda-cpp
- cute-dsl
captured_at: '2026-05-16'
status: merged
merge_sha: 5ef7afa3905c28ca1e26f77df2042becb3f1bdfa
inclusion_reason: Inspect scale layout, accumulator type, tile/schedule choice, epilogue fusion, and partial-tile guards before deriving a candidate.
changed_paths:
- flashinfer/cute_dsl/fp4_common.py
- flashinfer/cute_dsl/utils.py
- flashinfer/fused_moe/cute_dsl/b12x_moe.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_direct_micro_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dispatch.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dynamic_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_w4a16_dynamic_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_w4a16_micro_kernel.py
- flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_w4a16_static_kernel.py
- flashinfer/trace/templates/moe.py
- tests/moe/test_b12x_fused_moe.py
- tests/trace/test_b12x_moe_trace.py
artifact_dir: evidence/pull-bundles/flashinfer/gh-3271
head_ref_oid: e90e84e73598e09fc901a837bc4de20355fae792
---
# feat(moe): add SM120 W4A16 b12x kernels

- Repository: `flashinfer-ai/flashinfer`
- PR: [3271](https://github.com/flashinfer-ai/flashinfer/pull/3271)
- Decision: `Inspect scale layout, accumulator type, tile/schedule choice, epilogue fusion, and partial-tile guards before deriving a candidate.`
- Reason: Inspect scale layout, accumulator type, tile/schedule choice, epilogue fusion, and partial-tile guards before deriving a candidate.

## Changed Paths

- `flashinfer/cute_dsl/fp4_common.py`
- `flashinfer/cute_dsl/utils.py`
- `flashinfer/fused_moe/cute_dsl/b12x_moe.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_direct_micro_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dispatch.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_dynamic_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_w4a16_dynamic_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_w4a16_micro_kernel.py`
- `flashinfer/fused_moe/cute_dsl/blackwell_sm12x/moe_w4a16_static_kernel.py`
- `flashinfer/trace/templates/moe.py`
- `tests/moe/test_b12x_fused_moe.py`
- `tests/trace/test_b12x_moe_trace.py`

## Evidence Bundle

`evidence/pull-bundles/flashinfer/gh-3271`
