-
Notifications
You must be signed in to change notification settings - Fork 106
PR Digest 2026 01 31
Period: 2026-01-01 to 2026-01-31 | Total PRs: 205 (136 from Xe2/Xe3/Xe3P, 69 from Xe4) | Lines changed: +196,263 / -108,212
January was defined by two major investments: a new range analysis infrastructure that enabled smarter boundary check removal and mask elimination, and an expansion of block-scale DPAS support to cover FP4, FP8, and mixed-precision dot operations. A unified 2D block I/O code path was introduced to reduce duplication and extend column-major support, and the DPAS analysis module was extracted and exposed to drive further refactoring across passes. Twenty-eight upstream synchronizations were completed with a pass rate ranging from 97.76% to 98.28%.
Key accomplishments:
- Introduced a standalone range analysis module that drives smarter boundary check removal and mask elimination, reducing unnecessary runtime guards
- Expanded block-scale DPAS to support FP4, BF8, and mixed-precision dot operations, enabling more AI inference precision variants on Intel hardware
- Unified the 2D block I/O lowering code path across pointer types and extended column-major support for large tile shapes
- Extracted and exposed the DPAS analysis as a reusable module, enabling the AccelerateMatmul pass to be refactored on top of it
- Maintained strong upstream alignment throughout the month with pass rates above 97.75%
A new range analysis infrastructure was introduced as a foundation for smarter mask and boundary check elimination throughout the compiler.
-
#5705 Introduce Range Analysis — Adds a standalone
RangeAnalysisdataflow analysis tracking integer value ranges per operation, used by downstream passes to prove safety of index expressions. (+2,827/-1, @etiotto) -
#5748 RemoveBoundaryChecks: use range analysis — Replaces ad-hoc index inspection in
RemoveBoundaryCheckswith the new range analysis, enabling more boundary checks to be statically eliminated. (+21/-48, @etiotto) - #5751 RemoveMasks: use range analysis — Updates the mask removal pass to use range analysis for proving that mask conditions are statically true. (+17/-21, @etiotto)
-
#5975 Fix ForOp processing in RemoveLayoutConversions pass — Corrects handling of
scf.forops in the layout conversion removal pass to prevent incorrect transformation of loop-carried values. (+13/-7, @ienkovich) - #5920 Use Triton LICM rather than MLIR LICM pass — Switches the Intel compilation pipeline to use the Triton-specific LICM pass, which understands Triton semantics better than the generic MLIR version. (+1/-1, @etiotto)
- #5797 Increase convertLayout cost scale — Raises the cost assigned to layout conversion ops so the optimizer avoids inserting them when cheaper alternatives exist. (+1/-1, @wdziurdz)
-
#5829 Use DPAS analysis to refactor AccelerateMatmul pass — Replaces internal DPAS applicability checks in AccelerateMatmul with calls to the new
DPASAnalysismodule, removing duplicate logic. (+95/-4, @whitneywhtsang) -
#5770 Extract and expose DPAS layout calculation — Moves DPAS layout math out of AccelerateMatmul into a public
DPASAnalysisAPI for reuse across passes. (+329/-143, @mieshkiwrk) - #5979 Rename templated function — Renames templated function. (+245/-243, @etiotto)
- #5952 Don't capture structured bindings in lambdas — Does not capture structured bindings in lambdas. (+11/-2, @mieshkiwrk)
- #5949 Add missing TritonGEN TableGen deps to fix parallel build — Adds missing TritonGEN TableGen deps to fix parallel build. (+12/-0, @wdziurdz)
-
#5937 Fix
convertFp32ToBf16(#5935) — FixesconvertFp32ToBf16(#5935). (+6/-5, @anmyachev) -
#5935 Fix
convertFp32ToBf16— FixesconvertFp32ToBf16. (+6/-5, @whitneywhtsang) - #5929 Remove commented out code and fix difference — Removes commented out code and fix difference. (+5/-21, @etiotto)
- #5916 Fix mapping xpu libdevice finite to isfinite — Fixes mapping xpu libdevice finite to isfinite. (+3/-6, @wdziurdz)
- #5828 Use DPAS analysis to refactor implementation of AccelerateMatmul pass — Uses DPAS analysis to refactor implementation of AccelerateMatmul pass. (+95/-4, @etiotto)
New hardware operations and dialect extensions for block-scale matrix multiply (BDPAS) covering FP4, BF8, and mixed-precision dot-scaled workloads.
-
#5907 Lower tt.dot_scaled to triton_gen.bdpas directly — Adds a direct lowering path from
tt.dot_scaledto the newtriton_gen.bdpasoperation, bypassing the intermediate expansion. (+408/-17, @etiotto) -
#5895 Add bdpas operation in TritonGEN dialect — Introduces
triton_gen.bdpas(block-scale DPAS) as a new operation in the TritonGEN dialect for FP4/FP8 matrix multiply. (+451/-56, @etiotto) -
#5884 Mixed precision support for dot_scaled operation — Extends
dot_scaledlowering to handle A and B operands with different precision types (e.g., FP4 × FP8). (+293/-21, @etiotto) - #5881 Add FP4 conversion support — Adds FP4 (E2M1) type conversion operations to the Intel backend for use as BDPAS operands. (+127/-5, @etiotto)
- #5960 Add FP8 conversion support — Adds FP8 (E4M3/E5M2) type conversion support for use with the BDPAS operation. (+296/-35, @etiotto)
- #5861 Enable BF8 DPAS — Enables the BF8 (E5M2) precision variant for DPAS operations in the Intel backend. (+306/-95, @etiotto)
-
#5862 Add test for BDPAS to linear layout conversion — Adds C++ unit tests verifying the
pisaTmmScaleToLinearLayoutconversion for block-scale DPAS operands. (+100/-2, @etiotto) - #5870 DotScale: Support rank-3 blocked scale tensor from DPAS layout to linear layout — Extends the scale tensor linear layout computation to handle 3D (batched) scale operands. (+47/-20, @chengjunlu)
-
#5909 Enable bdpas for dot scaled — Wires up the
dot_scaled→bdpaslowering path end-to-end in the compilation pipeline. (+93/-17, @etiotto) -
#5958 Add member field to DPASCapability to track FP8 support — Adds a
supportsFP8flag toDPASCapabilityso passes can query FP8 DPAS availability at runtime. (+63/-93, @etiotto) - #5908 Support for 256-byte prefetch — Extends the prefetch lowering to support 256-byte prefetch hints, improving memory latency hiding for large tile workloads. (+351/-86, @etiotto)
Unification of 2D block I/O paths across pointer types, with extended column-major and scalar conversion support.
-
#5500 Unify 2D block IO lowering for regular pointer and block pointer — Merges the separate
LoadOpand block-pointer 2D block I/O lowering code paths into a shared implementation, reducing ~1,000 lines of duplication. (+490/-1,075, @chengjunlu) - #5708 Support load column-major matrix with large tile shape — Adds column-major 2D block load support for tile shapes that exceed the hardware row limit by using multiple sub-tiles. (+465/-247, @chengjunlu)
- #5766 Implement BlockPointerToTensorDesc pass — Introduces a new pass converting block pointer operations to native tensor descriptor ops for hardware that supports them natively. (+521/-0, @whitneywhtsang)
- #5910 Improve BlockPointerToTensorDesc — Extends the pass to handle more block pointer patterns, improving coverage of the block-to-descriptor conversion. (+99/-6, @whitneywhtsang)
- #5906 Enable tensor descriptor for FlexAttention backward — Enables the tensor descriptor lowering path for the FlexAttention backward pass. (+391/-2, @whitneywhtsang)
- #5776 Enable TRITON_INTEL_PREDICATED_STORE by default — Turns on predicated store generation by default after sufficient validation, removing the feature flag. (+11/-1, @whitneywhtsang)
- #5942 Add support_predicated_io module attribute — Adds a module-level attribute recording whether the target supports hardware predicated I/O, used to gate lowering decisions. (+41/-8, @whitneywhtsang)
- #5774 StoreOpConversion: Use scalar type for vector size one — Emits scalar stores instead of length-1 vector stores to improve codegen quality for single-element accesses. (+18/-22, @whitneywhtsang)
- #5768 LoadOpConversion: Use scalar type for vector size one — Same scalar treatment for load operations: emits scalar loads when the vector length is one. (+44/-47, @whitneywhtsang)
-
#5855 Fix tileWidth update order in 2D block load — Fixes a bug where
tileWidthwas updated beforebaseWidthwas initialized, causing incorrect tile dimensions in some 2D block loads. (+16/-14, @chengjunlu) - #5867 SoftwarePipeliner: Limit barrier scope to workgroup — Restricts the software pipeliner's barrier scope from global to workgroup, avoiding over-synchronization. (+24/-74, @whitneywhtsang)
- #5817 Reland Fix Kernel Argument missing in LLVM Debug Information — Reapplies a fix that restores missing kernel argument metadata in LLVM debug info output. (+418/-166, @whitneywhtsang)
- #5944 Add paged noop FlexAttention benchmark case (#5876) — Adds paged noop FlexAttention benchmark case (#5876). (+81/-28, @whitneywhtsang)
-
#5941 Add
support_predicated_iomodule attribute — Addssupport_predicated_iomodule attribute. (+41/-8, @whitneywhtsang) - #5876 Add paged noop FlexAttention benchmark case — Adds paged noop FlexAttention benchmark case. (+81/-28, @slawblauciak)
- #5838 Add new FlexAttention benchmark cases — Adds new FlexAttention benchmark cases. (+19/-5, @slawblauciak)
- #5789 Update TD unified attention version to the upstream version — Updates TD unified attention version to the upstream version. (+336/-160, @Egor-Krivov)
Significant test infrastructure improvements, script enhancements, and CI reliability fixes.
- #5934 Enhance test-triton.sh — Adds new flags and improves the test runner script for more flexible CI test invocations. (+81/-47, @whitneywhtsang)
- #5921 Enhance test-triton.sh script — Further improvements to the test script, adding suite discovery and parallel execution options. (+45/-19, @etiotto)
- #5946 Enhance test-triton.sh for proton — Adds Proton profiler integration to the test runner script. (+20/-3, @whitneywhtsang)
- #5786 Reapply Proton: Significantly reduce deactivate and get_data overhead — Reapplies upstream Proton optimizations that reduce profiling overhead during CUDA graph execution. (+1,237/-398, @anmyachev)
- #5841 Reapply Proton: Simplify runtime and metric correlation — Reapplies a Proton simplification reducing runtime correlation overhead. (+1,110/-919, @anmyachev)
-
#5777 Define min_dot_size outside of XPUBackend — Moves
min_dot_sizeout of the class into a standalone function for reuse in analysis and tests. (+11/-1, @whitneywhtsang) -
#5728 Use PyErr to handle errors at interface boundary — Replaces C++ exceptions at the Python/C++ boundary with proper
PyErrsignaling to prevent crashes on error paths. (+214/-118, @anthonycanino) - #5799 Allow non-device memory pointers in the driver — Relaxes driver pointer validation to allow host-accessible (USM) pointers as kernel arguments. (+34/-2, @Egor-Krivov)
- #5992 Skip stuck test_debug.py::test_sanitize_int_add_overflow — Skip stuck test_debug.py::test_sanitize_int_add_overflow. (+4/-0, @kwasd)
- #5995 Disable pre-commit check expand-yaml-anchors — Disable pre-commit check expand-yaml-anchors. (+17/-16, @kwasd)
- #5985 Skip failed matmuls for B580 (xe2) — Skip failed matmuls for B580 (xe2). (+16/-0, @kwasd)
- #5837 Updated LK benchmarks — Updated LK benchmarks. (+11/-8, @Egor-Krivov)
- #5978 Skip for xe2: tests/test_roofline.py::test_get_memset_tbps — Skip for xe2: tests/test_roofline.py::test_get_memset_tbps. (+2/-0, @kwasd)
-
#5974 Update
runs-on:condition to easily test LTS platform (#5966) — Updateruns-on:condition to easily test LTS platform (#5966). (+1/-1, @whitneywhtsang) - #5970 Fix bad error message for build_report.py when input file is empty — Fix bad error message for build_report.py when input file is empty. (+5/-0, @Egor-Krivov)
- #5959 Bump to version 3.7.0 (#5951) — Bump to version 3.7.0 (#5951). (+4/-4, @whitneywhtsang)
- #5836 Uncomment test cases for B580 — Uncomment test cases for B580. (+111/-14, @mieshkiwrk)
- #5962 Fix test failures on LTS (part 2) — Fix test failures on LTS (part 2). (+46/-14, @whitneywhtsang)
- #5967 Fix test failures on LTS (part 1) (#5955) — Fix test failures on LTS (part 1) (#5955). (+2/-1, @whitneywhtsang)
-
#5966 Update
runs-on:condition to easily test LTS platform — Updateruns-on:condition to easily test LTS platform. (+1/-1, @whitneywhtsang) - #5955 Fix test failures on LTS (part 1) — Fix test failures on LTS (part 1). (+2/-1, @whitneywhtsang)
- #5954 : Skip CRI test & cleanup — : Skip CRI test & cleanup. (+252/-7, @etiotto)
- #5951 Bump to version 3.7.0 — Bump to version 3.7.0. (+4/-4, @anmyachev)
- #5926 : Fix roofline test for XPU CRI simulator — : Fix roofline test for XPU CRI simulator. (+8/-3, @wdziurdz)
- #5943 Don't specify exact version of sycl lib from pip package (#5893) — Don't specify exact version of sycl lib from pip package (#5893). (+10/-13, @anmyachev)
-
#5945 Update
runs-on:condition to easily test LTS and B60 platforms (#5940) — Updateruns-on:condition to easily test LTS and B60 platforms (#5940). (+1/-4, @anmyachev) - #5893 try to not specify exact version of sycl lib from pip package — try to not specify exact version of sycl lib from pip package. (+10/-13, @anmyachev)
-
#5940 Update
runs-on:condition to easily test LTS and B60 platforms — Updateruns-on:condition to easily test LTS and B60 platforms. (+1/-4, @anmyachev) - #5930 Add flag & fix test — Add flag & fix test. (+15/-3, @etiotto)
-
#5933 : Skip
test_get_memset_tbps— : Skiptest_get_memset_tbps. (+2/-1, @etiotto) - #5925 Fix Windows PyTorch wheels build — Fix Windows PyTorch wheels build. (+3/-2, @anmyachev)
- #5924 Update PyTorch pin — Update PyTorch pin. (+1/-1, @anmyachev)
- #5914 Pin 'pandas<3.0' in more places — Pin 'pandas<3.0' in more places. (+14/-14, @anmyachev)
- #5905 Update E2E reference check to the updated pin — Update E2E reference check to the updated pin. (+7/-1, @Egor-Krivov)
- #5898 Split debug tests from minicore — Split debug tests from minicore. (+56/-12, @whitneywhtsang)
- #5897 Skip XeTLA — Skip XeTLA. (+4/-2, @whitneywhtsang)
- #5887 Increase absolute tolerance a little more for bwd test cases — Increase absolute tolerance a little more for bwd test cases. (+1/-1, @mieshkiwrk)
- #5871 Update A770 skiplists — Update A770 skiplists. (+3/-2, @anmyachev)
- #5860 Update PyTorch pin — Update PyTorch pin. (+1/-1, @anmyachev)
-
#5875 Update
spirv-llvm-translator.conf— Updatespirv-llvm-translator.conf. (+1/-1, @whitneywhtsang) - #5868 Update the total flops number for decoding which ignores the block_mask. — Update the total flops number for decoding which ignores the block_mask.. (+9/-5, @chengjunlu)
-
#5869 Update
spirv-llvm-translator.conf— Updatespirv-llvm-translator.conf. (+38/-1, @whitneywhtsang) -
#5864 Update
spirv-llvm-translator.conf— Updatespirv-llvm-translator.conf. (+1/-1, @whitneywhtsang) -
#5863 Remove
test_mxfp_matmul.py— Removetest_mxfp_matmul.py. (+2/-193, @whitneywhtsang) - #5856 Fix typos in user-facing help texts — Fix typos in user-facing help texts. (+7/-7, @antonkesy)
- #5839 Increase absolute tolerance for bwd test cases — Increase absolute tolerance for bwd test cases. (+5/-5, @mieshkiwrk)
- #5854 Fix the number of total flops for CTX_q < CTX_kv cases. — Fix the number of total flops for CTX_q < CTX_kv cases.. (+13/-2, @chengjunlu)
- #5847 Compare input to string 'true' — Compare input to string 'true'. (+2/-2, @gshimansky)
- #5848 Skip PyTorch Page Attention UT — Skip PyTorch Page Attention UT. (+15/-0, @whitneywhtsang)
- #5814 Add sycl_queue_memset for memory bandwidth measurement — Add sycl_queue_memset for memory bandwidth measurement. (+77/-11, @wdziurdz)
-
#5842 Empty cache to fix
UR_RESULT_ERROR_DEVICE_LOST— Empty cache to fixUR_RESULT_ERROR_DEVICE_LOST. (+1/-0, @whitneywhtsang) -
#5843 Revert "[UT] Use pytest fixture in
test_divide.pyandtest_block_io.py" — Revert "[UT] Use pytest fixture intest_divide.pyandtest_block_io.py". (+4/-10, @whitneywhtsang) - #5832 Allow igc runners to run inductor tests — Allow igc runners to run inductor tests. (+1/-1, @whitneywhtsang)
-
#5821 Remove
test_reduce_layoutsandtest_scan_layoutsfromintel/test_core.pyin favour of gluon tests — Removetest_reduce_layoutsandtest_scan_layoutsfromintel/test_core.pyin favour of gluon tests. (+4/-226, @anmyachev) -
#5831 Empty cache to fix
UR_RESULT_ERROR_DEVICE_LOST— Empty cache to fixUR_RESULT_ERROR_DEVICE_LOST. (+1/-0, @whitneywhtsang) -
#5804 Fix
Test with pip on Windowsworkload using right dependencies — FixTest with pip on Windowsworkload using right dependencies. (+2/-1, @anmyachev) -
#5790 Don't run LTS checks by default on PRs; it's still possible with
ltslabel — Don't run LTS checks by default on PRs; it's still possible withltslabel. (+13/-1, @anmyachev) -
#5800 Fix Windows build after PyTorch update &&
e208623change — Fix Windows build after PyTorch update &&e208623change. (+7/-2, @anmyachev) -
#5796 Enhance the
if matchtoif match is not None. — Enhance theif matchtoif match is not None.. (+1/-1, @chengjunlu) - #5793 Update PTI pin — Update PTI pin. (+1/-1, @whitneywhtsang)
- #5781 Pull XPU ops pin directly from PyTorch repo — Pull XPU ops pin directly from PyTorch repo. (+1/-2, @slawblauciak)
-
#5782 Use pytest fixture in
test_divide.pyandtest_block_io.py— Use pytest fixture intest_divide.pyandtest_block_io.py. (+10/-4, @anmyachev) - #5779 Revert pytorch/pytorch#170842 to recover performance — Revert pytorch/pytorch#170842 to recover performance. (+47/-0, @whitneywhtsang)
- #5772 Update PyTorch && torch-xpu-ops pins — Update PyTorch && torch-xpu-ops pins. (+2/-2, @whitneywhtsang)
- #5659 Bump actions/cache from 4 to 5 — Bump actions/cache from 4 to 5. (+7/-7, @app/dependabot)
Twenty-eight synchronization merges tracking the upstream OpenAI Triton compiler, maintaining above 97.75% test pass rate throughout January.
28 upstream merges from OpenAI Triton (commits 054b9df, 50b2f73, c900213, bcbcabd, f2378a7, d2b3925, 064885a, 7072375, 4760187, 571d07b, 986729e, e22060c, 5ad4f2e, 4227045, 20251a3, 7eac37d, 44a9ee2, f1d668b, 46c7f97, a70298a, fd8fd32, 2c3afac, 28e4e62, 77e7a7b, 043a854, 7abb0be, 28c538a) — pass rate 97.76%–98.28%.