This is an automated email from the ASF dual-hosted git repository.

spectrometerHBH pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git


The following commit(s) were added to refs/heads/main by this push:
     new 4a09f4ef41 [TIRx] Flatten cuda/trn backend operator folder (#20081)
4a09f4ef41 is described below

commit 4a09f4ef410e96c9dea1de26c3183dacdda5d753
Author: Bohan Hou <[email protected]>
AuthorDate: Sat Aug 1 19:16:12 2026 -0400

    [TIRx] Flatten cuda/trn backend operator folder (#20081)
    
    ## Summary
    
    Flatten the CUDA/TRN backend Python layout by removing the pass-through
    `operator` package layer:
    
    - `tvm.backend.cuda.operator.intrinsics` → `tvm.backend.cuda.intrinsics`
    - `tvm.backend.cuda.operator.tile_primitive` →
    `tvm.backend.cuda.tile_primitive`
    - `tvm.backend.trn.operator.tile_primitive` →
    `tvm.backend.trn.tile_primitive`
    
    The `operator` package was an empty shell: its `__init__.py` only
    re-exported its subpackages, it added a meaningless path segment, and it
    shadowed the stdlib `operator` name. No compatibility shim is kept; all
    in-repo imports (source, tests, docs) are rewritten, and the
    `tvm.tirx.<backend>.*` alias redirect picks the new paths up
    automatically. Cross-package references inside the moved packages are
    relative imports that resolve unchanged after the one-level move.
    
    Companion kernel-side PR: mlc-ai/tirx-kernels#13.
    
    ## Test
    
    Full TIRx suite on 8x B200 (16 xdist workers): `2620 passed, 41 skipped,
    3 xpassed` in 386s; `bench_suite --check-imports` and `registry --cc 10
    --strict` import gates green; `pre-commit` green.
---
 docs/tirx/api/backend.rst                          | 13 ++++++++++---
 docs/tirx/tile_primitives/copy/fallback.rst        |  2 +-
 docs/tirx/tile_primitives/copy/gmem_smem.rst       |  2 +-
 docs/tirx/tile_primitives/copy/ldstmatrix.rst      |  2 +-
 docs/tirx/tile_primitives/copy/reg.rst             |  2 +-
 docs/tirx/tile_primitives/copy_async/dsmem.rst     |  2 +-
 docs/tirx/tile_primitives/copy_async/ldgsts.rst    |  2 +-
 .../tirx/tile_primitives/copy_async/tcgen05_cp.rst |  2 +-
 .../tile_primitives/copy_async/tcgen05_ldst.rst    |  2 +-
 docs/tirx/tile_primitives/elementwise/reg.rst      |  2 +-
 docs/tirx/tile_primitives/elementwise/smem.rst     |  2 +-
 docs/tirx/tile_primitives/gemm.rst                 |  2 +-
 docs/tirx/tile_primitives/gemm_async.rst           |  4 ++--
 docs/tirx/tile_primitives/permute_layout.rst       |  2 +-
 docs/tirx/tile_primitives/reduction/local.rst      |  2 +-
 docs/tirx/tile_primitives/reduction/shared.rst     |  2 +-
 .../tile_primitives/reduction/sm100_packed.rst     |  2 +-
 python/tvm/backend/cuda/__init__.py                | 18 ++++++++++++++----
 .../cuda/{operator => }/intrinsics/__init__.py     |  0
 .../cuda/{operator => }/intrinsics/_schema.py      |  2 +-
 .../cuda/{operator => }/intrinsics/cp_async.py     |  0
 .../backend/cuda/{operator => }/intrinsics/cvt.py  |  0
 .../cuda/{operator => }/intrinsics/header.py       |  0
 .../backend/cuda/{operator => }/intrinsics/math.py |  0
 .../cuda/{operator => }/intrinsics/memory.py       |  0
 .../backend/cuda/{operator => }/intrinsics/misc.py |  0
 .../backend/cuda/{operator => }/intrinsics/mma.py  |  0
 .../cuda/{operator => }/intrinsics/nvshmem.py      |  0
 .../cuda/{operator => }/intrinsics/registry.py     |  0
 .../backend/cuda/{operator => }/intrinsics/sync.py |  0
 .../cuda/{operator => }/intrinsics/tcgen05.py      |  0
 .../cuda/{operator => }/intrinsics/types.py        |  0
 .../cuda/{operator => }/intrinsics/utils.py        |  0
 .../cuda/{operator => }/intrinsics/wgmma.py        |  0
 python/tvm/backend/cuda/lang/alloc_pool.py         | 10 +++++-----
 python/tvm/backend/cuda/lang/smem_desc.py          |  2 +-
 python/tvm/backend/cuda/operator/__init__.py       | 19 -------------------
 .../cuda/{operator => }/tile_primitive/__init__.py |  0
 .../cuda/{operator => }/tile_primitive/common.py   |  0
 .../{operator => }/tile_primitive/copy/__init__.py |  0
 .../{operator => }/tile_primitive/copy/_common.py  |  0
 .../tile_primitive/copy/_swizzle_iter.py           |  0
 .../{operator => }/tile_primitive/copy/fallback.py |  0
 .../tile_primitive/copy/gmem_smem.py               |  0
 .../tile_primitive/copy/ld_stmatrix.py             |  0
 .../cuda/{operator => }/tile_primitive/copy/reg.py |  0
 .../{operator => }/tile_primitive/copy/utils.py    |  0
 .../{operator => }/tile_primitive/copy/vec_auto.py |  0
 .../tile_primitive/copy/vec_auto_gmem_smem.py      |  0
 .../tile_primitive/copy/vec_auto_reg.py            |  0
 .../tile_primitive/copy/vec_forced.py              |  0
 .../tile_primitive/copy_async/__init__.py          |  0
 .../tile_primitive/copy_async/dsmem.py             |  0
 .../tile_primitive/copy_async/ldgsts.py            |  0
 .../tile_primitive/copy_async/tcgen05_cp.py        |  0
 .../tile_primitive/copy_async/tcgen05_ldst.py      |  0
 .../tile_primitive/copy_async/tma.py               |  0
 .../tile_primitive/copy_async/utils.py             |  0
 .../tile_primitive/elementwise/__init__.py         |  2 +-
 .../tile_primitive/elementwise/_common.py          |  0
 .../tile_primitive/elementwise/ops/__init__.py     |  0
 .../tile_primitive/elementwise/ops/binary.py       |  0
 .../tile_primitive/elementwise/ops/cast.py         |  0
 .../tile_primitive/elementwise/ops/fma.py          |  0
 .../tile_primitive/elementwise/ops/unary.py        |  0
 .../tile_primitive/elementwise/reg.py              |  0
 .../tile_primitive/elementwise/register.py         |  0
 .../tile_primitive/elementwise/smem.py             |  0
 .../elementwise/vec_emit/__init__.py               |  0
 .../elementwise/vec_emit/binary_f32x2.py           |  0
 .../elementwise/vec_emit/cast_vec2.py              |  0
 .../elementwise/vec_emit/fma_f32x2.py              |  0
 .../tile_primitive/exec_scope_utils.py             |  0
 .../{operator => }/tile_primitive/gemm/__init__.py |  0
 .../tile_primitive/gemm/mma_m16n8k_.py             |  0
 .../tile_primitive/gemm_async/__init__.py          |  0
 .../tile_primitive/gemm_async/tcgen05.py           |  0
 .../{operator => }/tile_primitive/gemm_utils.py    |  0
 .../{operator => }/tile_primitive/layout_utils.py  |  0
 .../tile_primitive/permute_layout/__init__.py      |  0
 .../permute_layout/warp_xor_swizzle.py             |  0
 .../tile_primitive/reduction/__init__.py           |  0
 .../tile_primitive/reduction/local.py              |  0
 .../tile_primitive/reduction/shared.py             |  0
 .../tile_primitive/reduction/sm100_packed.py       |  0
 .../tile_primitive/reduction/utils.py              |  0
 .../{operator => }/tile_primitive/tma_utils.py     |  0
 python/tvm/backend/trn/__init__.py                 | 14 +++++++++++---
 python/tvm/backend/trn/operator/__init__.py        | 22 ----------------------
 .../trn/{operator => }/tile_primitive/__init__.py  |  0
 .../tile_primitive/binary/__init__.py              |  0
 .../tile_primitive/binary/default.py               |  0
 .../{operator => }/tile_primitive/binary/utils.py  |  0
 .../trn/{operator => }/tile_primitive/common.py    |  0
 .../tile_primitive/compose_op/__init__.py          |  0
 .../tile_primitive/compose_op/binary_chain.py      |  0
 .../tile_primitive/compose_op/binary_reduce.py     |  0
 .../tile_primitive/compose_op/compose_op.py        |  0
 .../tile_primitive/compose_op/reduce_negate.py     |  0
 .../tile_primitive/compose_op/unary_reduce.py      |  0
 .../tile_primitive/compose_op/utils.py             |  0
 .../{operator => }/tile_primitive/copy/__init__.py |  0
 .../{operator => }/tile_primitive/copy/default.py  |  0
 .../trn/{operator => }/tile_primitive/dim_utils.py |  0
 .../{operator => }/tile_primitive/gemm/__init__.py |  0
 .../{operator => }/tile_primitive/gemm/default.py  |  0
 .../tile_primitive/instruction_generator.py        |  0
 .../{operator => }/tile_primitive/private_alloc.py |  6 +++---
 .../tile_primitive/reduction/__init__.py           |  0
 .../tile_primitive/reduction/default.py            |  0
 .../tile_primitive/reduction/utils.py              |  0
 .../tile_primitive/select/__init__.py              |  0
 .../tile_primitive/select/default.py               |  0
 .../tile_primitive/unary/__init__.py               |  0
 .../{operator => }/tile_primitive/unary/default.py |  0
 .../{operator => }/tile_primitive/unary/utils.py   |  0
 .../tile_primitive/unary/with_bias_scale.py        |  0
 .../tile_primitive/workspace_utils.py              |  0
 python/tvm/tirx/operator/intrinsics/_common.py     |  2 +-
 tests/python/tirx/codegen/test_ptx_cvt.py          |  4 ++--
 tests/python/tirx/codegen/test_ptx_ld_st_ops.py    |  2 +-
 .../tile_primitive/cuda/copy/test_fallback.py      |  2 +-
 .../tile_primitive/cuda/copy/test_gmem_smem.py     |  2 +-
 .../tile_primitive/cuda/copy/test_ld_stmatrix.py   |  2 +-
 .../operator/tile_primitive/cuda/copy/test_reg.py  |  8 ++++----
 .../tile_primitive/cuda/copy/test_swizzle_iter.py  |  6 +++---
 .../tile_primitive/cuda/copy_async/test_dsmem.py   |  2 +-
 .../cuda/copy_async/test_tcgen05_cp.py             |  2 +-
 .../tile_primitive/cuda/copy_async/test_tma.py     |  4 ++--
 .../tile_primitive/cuda/elementwise/test_unary.py  |  6 +++---
 .../cuda/gemm_async/test_gemm_async.py             | 10 +++++-----
 .../cuda/permute_layout/test_permute_layout.py     |  2 +-
 tests/python/tirx/test_alloc_pool.py               |  2 +-
 tests/python/tirx/test_layout.py                   |  4 ++--
 134 files changed, 93 insertions(+), 109 deletions(-)

diff --git a/docs/tirx/api/backend.rst b/docs/tirx/api/backend.rst
index 6fd4e037de..e97c65c74b 100644
--- a/docs/tirx/api/backend.rst
+++ b/docs/tirx/api/backend.rst
@@ -51,11 +51,18 @@ tvm.backend.cuda.script
    :imported-members:
    :exclude-members: PrimExpr, Op, Call
 
-tvm.backend.cuda.operator
-*************************
-.. automodule:: tvm.backend.cuda.operator
+tvm.backend.cuda.intrinsics
+***************************
+.. automodule:: tvm.backend.cuda.intrinsics
    :members:
    :imported-members:
+   :no-index:
+   :exclude-members: PrimExpr, Op, Call
+
+tvm.backend.cuda.tile_primitive
+*******************************
+.. automodule:: tvm.backend.cuda.tile_primitive
+   :members:
    :exclude-members: PrimExpr, Op, Call
 
 tvm.backend.cuda.target_tags
diff --git a/docs/tirx/tile_primitives/copy/fallback.rst 
b/docs/tirx/tile_primitives/copy/fallback.rst
index 7e78c87bfd..60469557f3 100644
--- a/docs/tirx/tile_primitives/copy/fallback.rst
+++ b/docs/tirx/tile_primitives/copy/fallback.rst
@@ -22,7 +22,7 @@ The ``fallback`` variant is the **priority-0 catch-all**: a 
scalar, single-threa
 copy that runs only when every faster variant (:doc:`gmem_smem`, :doc:`reg`,
 :doc:`ldstmatrix`) has declined. It always works — for any valid copy at any 
scope
 — and is intentionally slow, so it emits a ``UserWarning`` when chosen. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy/fallback.py``.
+``python/tvm/backend/cuda/tile_primitive/copy/fallback.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/copy/gmem_smem.rst 
b/docs/tirx/tile_primitives/copy/gmem_smem.rst
index d34578a995..e3275eb74b 100644
--- a/docs/tirx/tile_primitives/copy/gmem_smem.rst
+++ b/docs/tirx/tile_primitives/copy/gmem_smem.rst
@@ -23,7 +23,7 @@ shared** memory (either direction) when **neither side is a 
register**. Because
 neither operand carries a thread partition, the dispatch *synthesizes* one 
from the
 execution scope: it splits the region into ``[outer, threads, vec]`` and emits 
a
 serial loop of vectorized loads/stores. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy/gmem_smem.py``.
+``python/tvm/backend/cuda/tile_primitive/copy/gmem_smem.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/copy/ldstmatrix.rst 
b/docs/tirx/tile_primitives/copy/ldstmatrix.rst
index 11c4b2cf75..9af2a80131 100644
--- a/docs/tirx/tile_primitives/copy/ldstmatrix.rst
+++ b/docs/tirx/tile_primitives/copy/ldstmatrix.rst
@@ -24,7 +24,7 @@ instruction moves ``num`` 8×8 16-bit matrix tiles between 
shared memory and the
 warp's registers, with the hardware performing the lane↔element shuffle that an
 MMA fragment needs. It only applies when the register and shared **layouts 
match
 the m8n8 fragment geometry**; otherwise the copy falls back to :doc:`reg`. 
Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy/ld_stmatrix.py``.
+``python/tvm/backend/cuda/tile_primitive/copy/ld_stmatrix.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/copy/reg.rst 
b/docs/tirx/tile_primitives/copy/reg.rst
index d195ffb5a4..5db0edf86f 100644
--- a/docs/tirx/tile_primitives/copy/reg.rst
+++ b/docs/tirx/tile_primitives/copy/reg.rst
@@ -24,7 +24,7 @@ register** (``local``) buffer and the other is ``shared*`` or 
``global``. Unlike
 register operand's layout: that layout's thread-axis iters already say which 
thread
 owns which logical coordinate, so the dispatch drops those axes, leaves each 
thread
 its private bundle of elements, and copies them in a vectorized serial loop. 
Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy/reg.py``.
+``python/tvm/backend/cuda/tile_primitive/copy/reg.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/copy_async/dsmem.rst 
b/docs/tirx/tile_primitives/copy_async/dsmem.rst
index bec98c5bcd..8690ebec62 100644
--- a/docs/tirx/tile_primitives/copy_async/dsmem.rst
+++ b/docs/tirx/tile_primitives/copy_async/dsmem.rst
@@ -24,7 +24,7 @@ memory). One elected thread on the source CTA maps the 
destination CTA's shared
 address into its own address space (PTX ``mapa``) and issues a bulk copy
 (``cp.async.bulk.shared::cluster``); the hardware decrements the *destination* 
CTA's
 mbarrier when the bytes land. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy_async/dsmem.py``.
+``python/tvm/backend/cuda/tile_primitive/copy_async/dsmem.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/copy_async/ldgsts.rst 
b/docs/tirx/tile_primitives/copy_async/ldgsts.rst
index a49b7d3c02..826bc238b8 100644
--- a/docs/tirx/tile_primitives/copy_async/ldgsts.rst
+++ b/docs/tirx/tile_primitives/copy_async/ldgsts.rst
@@ -24,7 +24,7 @@ vectorized copy that the hardware completes in the 
background, so the warp can k
 computing while the load is in flight. It reuses the exact ``[outer, threads, 
vec]``
 partition of the synchronous :doc:`../copy/gmem_smem` variant; the differences 
are
 all in *what* is emitted and *when* it completes. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy_async/ldgsts.py``.
+``python/tvm/backend/cuda/tile_primitive/copy_async/ldgsts.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/copy_async/tcgen05_cp.rst 
b/docs/tirx/tile_primitives/copy_async/tcgen05_cp.rst
index 26d8e39e11..505e85b00a 100644
--- a/docs/tirx/tile_primitives/copy_async/tcgen05_cp.rst
+++ b/docs/tirx/tile_primitives/copy_async/tcgen05_cp.rst
@@ -24,7 +24,7 @@ memory** (Blackwell ``tmem``) through a generic planner 
covering every
 descriptor fields (ldo/sdo/swizzle) and the cp issue sequence are derived from
 the two buffer layouts. The dispatch issues only the copy; the caller signals
 completion with ``tcgen05.commit``. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy_async/tcgen05_cp.py``.
+``python/tvm/backend/cuda/tile_primitive/copy_async/tcgen05_cp.py``.
 
 Shape selection
 ---------------
diff --git a/docs/tirx/tile_primitives/copy_async/tcgen05_ldst.rst 
b/docs/tirx/tile_primitives/copy_async/tcgen05_ldst.rst
index 106e084445..8acf01e176 100644
--- a/docs/tirx/tile_primitives/copy_async/tcgen05_ldst.rst
+++ b/docs/tirx/tile_primitives/copy_async/tcgen05_ldst.rst
@@ -25,7 +25,7 @@ registers. One registration handles both directions — ``tmem 
→ local`` lower
 ``tcgen05.ld``, ``local → tmem`` to ``tcgen05.st`` — and the dispatch picks the
 widest instruction shape the register layout matches. As with the other async
 variants, completion (``tcgen05.wait.ld`` / ``wait.st``) is the caller's. 
Source:
-``python/tvm/backend/cuda/operator/tile_primitive/copy_async/tcgen05_ldst.py``.
+``python/tvm/backend/cuda/tile_primitive/copy_async/tcgen05_ldst.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/elementwise/reg.rst 
b/docs/tirx/tile_primitives/elementwise/reg.rst
index 2deceb03eb..435da44771 100644
--- a/docs/tirx/tile_primitives/elementwise/reg.rst
+++ b/docs/tirx/tile_primitives/elementwise/reg.rst
@@ -23,7 +23,7 @@ The ``reg`` variant lowers an elementwise op (``sqrt``, 
``exp``, ``add``,
 :doc:`../copy/reg` variant the partition is *induced* by the operands' register
 layout — the thread axes are dropped, leaving each thread its private bundle — 
and
 the op is applied to every register in that bundle. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/elementwise/reg.py``.
+``python/tvm/backend/cuda/tile_primitive/elementwise/reg.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/elementwise/smem.rst 
b/docs/tirx/tile_primitives/elementwise/smem.rst
index 4bf5e8b5f0..dab384d495 100644
--- a/docs/tirx/tile_primitives/elementwise/smem.rst
+++ b/docs/tirx/tile_primitives/elementwise/smem.rst
@@ -23,7 +23,7 @@ The ``smem`` variant lowers an elementwise op (``sqrt``, 
``exp``, ``add``,
 :doc:`../copy/gmem_smem` variant it *synthesizes* a ``[outer, threads, vec]``
 partition from the execution scope, then applies the op to each (vectorized)
 element. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/elementwise/smem.py``.
+``python/tvm/backend/cuda/tile_primitive/elementwise/smem.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/gemm.rst 
b/docs/tirx/tile_primitives/gemm.rst
index e737621dcb..97d7e7ed6b 100644
--- a/docs/tirx/tile_primitives/gemm.rst
+++ b/docs/tirx/tile_primitives/gemm.rst
@@ -24,7 +24,7 @@ fragments and the C/D accumulators **all live in registers** 
— the caller stag
 and B into register fragments first (typically via :doc:`copy/ldstmatrix`). The
 dispatch tiles M/N/K into ``m16n8k`` atoms and emits one ``mma`` per output 
tile,
 accumulating over K in place. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/gemm/mma_m16n8k_.py``. (For 
the
+``python/tvm/backend/cuda/tile_primitive/gemm/mma_m16n8k_.py``. (For the
 Blackwell async tensor-core path see :doc:`gemm_async`.)
 
 What it accepts
diff --git a/docs/tirx/tile_primitives/gemm_async.rst 
b/docs/tirx/tile_primitives/gemm_async.rst
index ef2250379f..1b28279773 100644
--- a/docs/tirx/tile_primitives/gemm_async.rst
+++ b/docs/tirx/tile_primitives/gemm_async.rst
@@ -25,7 +25,7 @@ memory**, and one elected thread launches the MMA, which runs 
asynchronously; th
 caller signals completion with ``tcgen05.commit`` against an mbarrier. It also
 supports **block-scaled** low precision (fp8 / fp4 with per-block scale factors
 ``SFA`` / ``SFB`` in tensor memory). Source:
-``python/tvm/backend/cuda/operator/tile_primitive/gemm_async/tcgen05.py``. 
(For the
+``python/tvm/backend/cuda/tile_primitive/gemm_async/tcgen05.py``. (For the
 synchronous warp-register path see :doc:`gemm`.)
 
 What it accepts
@@ -80,7 +80,7 @@ into a tmem accumulator, after TMA-loading A/B into shared 
(from
 .. code-block:: python
 
     from tvm.tirx.layout import S, TCol, TLane, TileLayout, tid_in_wg as 
axis_tid_in_wg
-    from tvm.tirx.cuda.operator.tile_primitive.tma_utils import 
mma_shared_layout
+    from tvm.tirx.cuda.tile_primitive.tma_utils import mma_shared_layout
 
     A_smem = T.alloc_buffer((3,128,64), "float16", scope="shared", 
layout=mma_shared_layout("float16", 3, (3,128,64)))
     B_smem = T.alloc_buffer((3,128,64), "float16", scope="shared", 
layout=mma_shared_layout("float16", 3, (3,128,64)))
diff --git a/docs/tirx/tile_primitives/permute_layout.rst 
b/docs/tirx/tile_primitives/permute_layout.rst
index 05186d4be1..e9f9ce6618 100644
--- a/docs/tirx/tile_primitives/permute_layout.rst
+++ b/docs/tirx/tile_primitives/permute_layout.rst
@@ -25,7 +25,7 @@ back under the destination layout, with a per-lane **XOR 
swizzle** on the iterat
 index chosen so that *both* the read and the write phase are shared-memory
 bank-conflict-free. A ``warp_sync`` separates the two phases so the op is safe 
even
 when source and destination alias. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/permute_layout/warp_xor_swizzle.py``.
+``python/tvm/backend/cuda/tile_primitive/permute_layout/warp_xor_swizzle.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/reduction/local.rst 
b/docs/tirx/tile_primitives/reduction/local.rst
index 184d8a395d..9df8413fdb 100644
--- a/docs/tirx/tile_primitives/reduction/local.rst
+++ b/docs/tirx/tile_primitives/reduction/local.rst
@@ -23,7 +23,7 @@ source and destination are register** (``local``) buffers. At 
thread scope it is
 plain sequential reduction over each thread's own elements; at warp scope, if 
the
 destination layout carries a ``laneid`` replica, it also folds across lanes 
with a
 ``__shfl_xor`` tree. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/reduction/local.py``.
+``python/tvm/backend/cuda/tile_primitive/reduction/local.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/reduction/shared.rst 
b/docs/tirx/tile_primitives/reduction/shared.rst
index 5d61dc6c87..aa328ca146 100644
--- a/docs/tirx/tile_primitives/reduction/shared.rst
+++ b/docs/tirx/tile_primitives/reduction/shared.rst
@@ -23,7 +23,7 @@ The ``shared`` variant lowers a reduction (``sum`` / ``max`` 
/ ``min``) when
 it partitions the threads into groups — one group per output position — has 
each
 thread gather a chunk of the reduction axis, then folds the group with an 
adaptive
 ``__shfl_xor`` tree. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/reduction/shared.py``.
+``python/tvm/backend/cuda/tile_primitive/reduction/shared.py``.
 
 What it accepts
 ---------------
diff --git a/docs/tirx/tile_primitives/reduction/sm100_packed.rst 
b/docs/tirx/tile_primitives/reduction/sm100_packed.rst
index b1c2e5de44..cdd4315055 100644
--- a/docs/tirx/tile_primitives/reduction/sm100_packed.rst
+++ b/docs/tirx/tile_primitives/reduction/sm100_packed.rst
@@ -23,7 +23,7 @@ it pre-empts :doc:`local`) for a thread-scope reduction of a 
1-D ``float32`` vec
 of at least 8 elements to a scalar. It uses the SM100 packed math instructions 
—
 ``add.f32x2`` for ``sum``, ``max3.f32`` / ``min3.f32`` for ``max`` / ``min`` —
 to fold two (or three) lanes of data per instruction. Source:
-``python/tvm/backend/cuda/operator/tile_primitive/reduction/sm100_packed.py``.
+``python/tvm/backend/cuda/tile_primitive/reduction/sm100_packed.py``.
 
 What it accepts
 ---------------
diff --git a/python/tvm/backend/cuda/__init__.py 
b/python/tvm/backend/cuda/__init__.py
index 0db092201c..c063c77bcf 100644
--- a/python/tvm/backend/cuda/__init__.py
+++ b/python/tvm/backend/cuda/__init__.py
@@ -23,7 +23,16 @@ from tvm_ffi.libinfo import load_lib_ctypes
 
 from tvm.base import _LOADED_LIBS
 
-_LAZY_SUBMODULES = {"iket", "lang", "op", "operator", "script", "target_tags", 
"transforms"}
+_LAZY_SUBMODULES = {
+    "iket",
+    "intrinsics",
+    "lang",
+    "op",
+    "script",
+    "target_tags",
+    "tile_primitive",
+    "transforms",
+}
 
 
 def _detect_target_from_device(dev):
@@ -60,8 +69,8 @@ def register_backend():
     for name, namespace in script_namespaces().items():
         builder_ir.register_script_namespace(name, namespace)
 
-    import_module(f"{__name__}.operator.intrinsics")
-    import_module(f"{__name__}.operator.tile_primitive")
+    import_module(f"{__name__}.intrinsics")
+    import_module(f"{__name__}.tile_primitive")
     import_module(f"{__name__}.target_tags")
 
 
@@ -93,13 +102,14 @@ def __getattr__(name: str):
 
 __all__ = [
     "iket",
+    "intrinsics",
     "lang",
     "op",
-    "operator",
     "register_backend",
     "script",
     "script_namespace",
     "script_namespaces",
     "target_tags",
+    "tile_primitive",
     "transforms",
 ]
diff --git a/python/tvm/backend/cuda/operator/intrinsics/__init__.py 
b/python/tvm/backend/cuda/intrinsics/__init__.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/__init__.py
rename to python/tvm/backend/cuda/intrinsics/__init__.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/_schema.py 
b/python/tvm/backend/cuda/intrinsics/_schema.py
similarity index 98%
rename from python/tvm/backend/cuda/operator/intrinsics/_schema.py
rename to python/tvm/backend/cuda/intrinsics/_schema.py
index e9da9c3e4f..b848962ae8 100644
--- a/python/tvm/backend/cuda/operator/intrinsics/_schema.py
+++ b/python/tvm/backend/cuda/intrinsics/_schema.py
@@ -43,8 +43,8 @@ from __future__ import annotations
 
 from collections.abc import Callable
 
+from tvm.backend.cuda.intrinsics.registry import register_codegen
 from tvm.backend.cuda.op import cuda_func_call
-from tvm.backend.cuda.operator.intrinsics.registry import register_codegen
 
 # C primitive type → TVM dtype string. Used when the caller specifies a
 # non-void ``return_type`` but no explicit ``tvm_return_type`` — the helper
diff --git a/python/tvm/backend/cuda/operator/intrinsics/cp_async.py 
b/python/tvm/backend/cuda/intrinsics/cp_async.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/cp_async.py
rename to python/tvm/backend/cuda/intrinsics/cp_async.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/cvt.py 
b/python/tvm/backend/cuda/intrinsics/cvt.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/cvt.py
rename to python/tvm/backend/cuda/intrinsics/cvt.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/header.py 
b/python/tvm/backend/cuda/intrinsics/header.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/header.py
rename to python/tvm/backend/cuda/intrinsics/header.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/math.py 
b/python/tvm/backend/cuda/intrinsics/math.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/math.py
rename to python/tvm/backend/cuda/intrinsics/math.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/memory.py 
b/python/tvm/backend/cuda/intrinsics/memory.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/memory.py
rename to python/tvm/backend/cuda/intrinsics/memory.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/misc.py 
b/python/tvm/backend/cuda/intrinsics/misc.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/misc.py
rename to python/tvm/backend/cuda/intrinsics/misc.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/mma.py 
b/python/tvm/backend/cuda/intrinsics/mma.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/mma.py
rename to python/tvm/backend/cuda/intrinsics/mma.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/nvshmem.py 
b/python/tvm/backend/cuda/intrinsics/nvshmem.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/nvshmem.py
rename to python/tvm/backend/cuda/intrinsics/nvshmem.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/registry.py 
b/python/tvm/backend/cuda/intrinsics/registry.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/registry.py
rename to python/tvm/backend/cuda/intrinsics/registry.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/sync.py 
b/python/tvm/backend/cuda/intrinsics/sync.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/sync.py
rename to python/tvm/backend/cuda/intrinsics/sync.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/tcgen05.py 
b/python/tvm/backend/cuda/intrinsics/tcgen05.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/tcgen05.py
rename to python/tvm/backend/cuda/intrinsics/tcgen05.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/types.py 
b/python/tvm/backend/cuda/intrinsics/types.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/types.py
rename to python/tvm/backend/cuda/intrinsics/types.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/utils.py 
b/python/tvm/backend/cuda/intrinsics/utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/utils.py
rename to python/tvm/backend/cuda/intrinsics/utils.py
diff --git a/python/tvm/backend/cuda/operator/intrinsics/wgmma.py 
b/python/tvm/backend/cuda/intrinsics/wgmma.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/intrinsics/wgmma.py
rename to python/tvm/backend/cuda/intrinsics/wgmma.py
diff --git a/python/tvm/backend/cuda/lang/alloc_pool.py 
b/python/tvm/backend/cuda/lang/alloc_pool.py
index 766713f5a5..fbb1f7d1ff 100644
--- a/python/tvm/backend/cuda/lang/alloc_pool.py
+++ b/python/tvm/backend/cuda/lang/alloc_pool.py
@@ -69,7 +69,7 @@ def _shape_product(shape):
 
 def _auto_swizzle_mode(dtype):
     """Select the default MMA swizzle mode for a shared-memory allocation."""
-    from tvm.backend.cuda.operator.tile_primitive.tma_utils import SwizzleMode
+    from tvm.backend.cuda.tile_primitive.tma_utils import SwizzleMode
 
     del dtype
     return SwizzleMode.SWIZZLE_128B_ATOM
@@ -77,7 +77,7 @@ def _auto_swizzle_mode(dtype):
 
 def _swizzle_atom_bytes(swizzle_mode):
     """Return the row width (in bytes) of one swizzle atom for 
*swizzle_mode*."""
-    from tvm.backend.cuda.operator.tile_primitive.tma_utils import SwizzleMode
+    from tvm.backend.cuda.tile_primitive.tma_utils import SwizzleMode
 
     return {
         SwizzleMode.SWIZZLE_NONE: 0,
@@ -112,7 +112,7 @@ def _validate_mma_alloc_shape(shape, dtype, swizzle_mode):
 
     Validation skipped when *swizzle_mode* is ``SWIZZLE_NONE`` (no atom).
     """
-    from tvm.backend.cuda.operator.tile_primitive.tma_utils import SwizzleMode
+    from tvm.backend.cuda.tile_primitive.tma_utils import SwizzleMode
 
     if swizzle_mode == SwizzleMode.SWIZZLE_NONE:
         return
@@ -301,7 +301,7 @@ class TMEMPool:
         what gemm dispatch iterates over). When ``shape`` has 3 dims, the first
         is treated as a pipe-depth outer.
         """
-        from tvm.backend.cuda.operator.tile_primitive.gemm_async.tcgen05 
import sf_tmem_layout
+        from tvm.backend.cuda.tile_primitive.gemm_async.tcgen05 import 
sf_tmem_layout
 
         if len(shape) == 2:
             pipe_depth, rows, last = None, shape[0], shape[1]
@@ -447,7 +447,7 @@ class SMEMPool:
 
     def alloc_tcgen05_mma_AB(self, shape, dtype="float16", 
swizzle_mode="auto", align=1024):
         """Allocate MMA-compatible shared memory with an inferred swizzle 
layout."""
-        from tvm.backend.cuda.operator.tile_primitive.tma_utils import (
+        from tvm.backend.cuda.tile_primitive.tma_utils import (
             SwizzleMode,
             mma_shared_layout,
         )
diff --git a/python/tvm/backend/cuda/lang/smem_desc.py 
b/python/tvm/backend/cuda/lang/smem_desc.py
index d2561d17dc..a156ff5608 100644
--- a/python/tvm/backend/cuda/lang/smem_desc.py
+++ b/python/tvm/backend/cuda/lang/smem_desc.py
@@ -17,7 +17,7 @@
 
 """SMEM matrix descriptor helper for tcgen05 / wgmma."""
 
-from tvm.backend.cuda.operator.tile_primitive.common import 
smem_desc_add_16B_offset
+from tvm.backend.cuda.tile_primitive.common import smem_desc_add_16B_offset
 from tvm.script import tirx as T
 
 
diff --git a/python/tvm/backend/cuda/operator/__init__.py 
b/python/tvm/backend/cuda/operator/__init__.py
deleted file mode 100644
index 744c9bafc9..0000000000
--- a/python/tvm/backend/cuda/operator/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-"""CUDA backend operator registrations and helpers."""
-
-__all__ = ["intrinsics", "tile_primitive"]
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/__init__.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/__init__.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/common.py 
b/python/tvm/backend/cuda/tile_primitive/common.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/common.py
rename to python/tvm/backend/cuda/tile_primitive/common.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/copy/__init__.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/copy/__init__.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/_common.py 
b/python/tvm/backend/cuda/tile_primitive/copy/_common.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/_common.py
rename to python/tvm/backend/cuda/tile_primitive/copy/_common.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy/_swizzle_iter.py 
b/python/tvm/backend/cuda/tile_primitive/copy/_swizzle_iter.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/copy/_swizzle_iter.py
rename to python/tvm/backend/cuda/tile_primitive/copy/_swizzle_iter.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/fallback.py 
b/python/tvm/backend/cuda/tile_primitive/copy/fallback.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/fallback.py
rename to python/tvm/backend/cuda/tile_primitive/copy/fallback.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/gmem_smem.py 
b/python/tvm/backend/cuda/tile_primitive/copy/gmem_smem.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/gmem_smem.py
rename to python/tvm/backend/cuda/tile_primitive/copy/gmem_smem.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy/ld_stmatrix.py 
b/python/tvm/backend/cuda/tile_primitive/copy/ld_stmatrix.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/ld_stmatrix.py
rename to python/tvm/backend/cuda/tile_primitive/copy/ld_stmatrix.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/reg.py 
b/python/tvm/backend/cuda/tile_primitive/copy/reg.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/reg.py
rename to python/tvm/backend/cuda/tile_primitive/copy/reg.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/utils.py 
b/python/tvm/backend/cuda/tile_primitive/copy/utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/utils.py
rename to python/tvm/backend/cuda/tile_primitive/copy/utils.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/vec_auto.py 
b/python/tvm/backend/cuda/tile_primitive/copy/vec_auto.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/vec_auto.py
rename to python/tvm/backend/cuda/tile_primitive/copy/vec_auto.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy/vec_auto_gmem_smem.py 
b/python/tvm/backend/cuda/tile_primitive/copy/vec_auto_gmem_smem.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/copy/vec_auto_gmem_smem.py
rename to python/tvm/backend/cuda/tile_primitive/copy/vec_auto_gmem_smem.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy/vec_auto_reg.py 
b/python/tvm/backend/cuda/tile_primitive/copy/vec_auto_reg.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/vec_auto_reg.py
rename to python/tvm/backend/cuda/tile_primitive/copy/vec_auto_reg.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy/vec_forced.py 
b/python/tvm/backend/cuda/tile_primitive/copy/vec_forced.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy/vec_forced.py
rename to python/tvm/backend/cuda/tile_primitive/copy/vec_forced.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/__init__.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/copy_async/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/__init__.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/dsmem.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/dsmem.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy_async/dsmem.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/dsmem.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/ldgsts.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/ldgsts.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy_async/ldgsts.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/ldgsts.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/tcgen05_cp.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/tcgen05_cp.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/copy_async/tcgen05_cp.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/tcgen05_cp.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/tcgen05_ldst.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/tcgen05_ldst.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/copy_async/tcgen05_ldst.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/tcgen05_ldst.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/tma.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/tma.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy_async/tma.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/tma.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/copy_async/utils.py 
b/python/tvm/backend/cuda/tile_primitive/copy_async/utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/copy_async/utils.py
rename to python/tvm/backend/cuda/tile_primitive/copy_async/utils.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/__init__.py
similarity index 95%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/__init__.py
index 576dc437b9..c4dcfb63b8 100644
--- a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/__init__.py
+++ b/python/tvm/backend/cuda/tile_primitive/elementwise/__init__.py
@@ -30,7 +30,7 @@ PTX/CUDA intrinsics live in ``vec_emit/`` (``binary_f32x2`` / 
``cast_vec2``
 from .register import *
 
 # Suppress submodule-attribute leakage. Without an explicit ``__all__`` here,
-# ``from tvm.backend.cuda.operator.tile_primitive.elementwise import *`` (run 
by
+# ``from tvm.backend.cuda.tile_primitive.elementwise import *`` (run by
 # tile_primitive/__init__.py) re-exports the implicit submodule attributes
 # (``ops``, ``reg``, ``smem``, ``vec_emit``) — and ``ops`` in particular
 # shadows the top-level ``tile_primitive/ops.py`` (BinaryReduce / UnaryReduce
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/_common.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/_common.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/_common.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/_common.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/ops/__init__.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/ops/__init__.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/binary.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/ops/binary.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/binary.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/ops/binary.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/cast.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/ops/cast.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/cast.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/ops/cast.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/fma.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/ops/fma.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/fma.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/ops/fma.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/unary.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/ops/unary.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/ops/unary.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/ops/unary.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/reg.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/reg.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/elementwise/reg.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/reg.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/register.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/register.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/register.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/register.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/smem.py 
b/python/tvm/backend/cuda/tile_primitive/elementwise/smem.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/elementwise/smem.py
rename to python/tvm/backend/cuda/tile_primitive/elementwise/smem.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/__init__.py
 b/python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/__init__.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/__init__.py
rename to 
python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/__init__.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/binary_f32x2.py
 b/python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/binary_f32x2.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/binary_f32x2.py
rename to 
python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/binary_f32x2.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/cast_vec2.py
 b/python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/cast_vec2.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/cast_vec2.py
rename to 
python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/cast_vec2.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/fma_f32x2.py
 b/python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/fma_f32x2.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/elementwise/vec_emit/fma_f32x2.py
rename to 
python/tvm/backend/cuda/tile_primitive/elementwise/vec_emit/fma_f32x2.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/exec_scope_utils.py 
b/python/tvm/backend/cuda/tile_primitive/exec_scope_utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/exec_scope_utils.py
rename to python/tvm/backend/cuda/tile_primitive/exec_scope_utils.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/gemm/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/gemm/__init__.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/gemm/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/gemm/__init__.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/gemm/mma_m16n8k_.py 
b/python/tvm/backend/cuda/tile_primitive/gemm/mma_m16n8k_.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/gemm/mma_m16n8k_.py
rename to python/tvm/backend/cuda/tile_primitive/gemm/mma_m16n8k_.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/gemm_async/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/gemm_async/__init__.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/gemm_async/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/gemm_async/__init__.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/gemm_async/tcgen05.py 
b/python/tvm/backend/cuda/tile_primitive/gemm_async/tcgen05.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/gemm_async/tcgen05.py
rename to python/tvm/backend/cuda/tile_primitive/gemm_async/tcgen05.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/gemm_utils.py 
b/python/tvm/backend/cuda/tile_primitive/gemm_utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/gemm_utils.py
rename to python/tvm/backend/cuda/tile_primitive/gemm_utils.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/layout_utils.py 
b/python/tvm/backend/cuda/tile_primitive/layout_utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/layout_utils.py
rename to python/tvm/backend/cuda/tile_primitive/layout_utils.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/permute_layout/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/permute_layout/__init__.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/permute_layout/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/permute_layout/__init__.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/permute_layout/warp_xor_swizzle.py
 b/python/tvm/backend/cuda/tile_primitive/permute_layout/warp_xor_swizzle.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/permute_layout/warp_xor_swizzle.py
rename to 
python/tvm/backend/cuda/tile_primitive/permute_layout/warp_xor_swizzle.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/reduction/__init__.py 
b/python/tvm/backend/cuda/tile_primitive/reduction/__init__.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/reduction/__init__.py
rename to python/tvm/backend/cuda/tile_primitive/reduction/__init__.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/reduction/local.py 
b/python/tvm/backend/cuda/tile_primitive/reduction/local.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/reduction/local.py
rename to python/tvm/backend/cuda/tile_primitive/reduction/local.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/reduction/shared.py 
b/python/tvm/backend/cuda/tile_primitive/reduction/shared.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/reduction/shared.py
rename to python/tvm/backend/cuda/tile_primitive/reduction/shared.py
diff --git 
a/python/tvm/backend/cuda/operator/tile_primitive/reduction/sm100_packed.py 
b/python/tvm/backend/cuda/tile_primitive/reduction/sm100_packed.py
similarity index 100%
rename from 
python/tvm/backend/cuda/operator/tile_primitive/reduction/sm100_packed.py
rename to python/tvm/backend/cuda/tile_primitive/reduction/sm100_packed.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/reduction/utils.py 
b/python/tvm/backend/cuda/tile_primitive/reduction/utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/reduction/utils.py
rename to python/tvm/backend/cuda/tile_primitive/reduction/utils.py
diff --git a/python/tvm/backend/cuda/operator/tile_primitive/tma_utils.py 
b/python/tvm/backend/cuda/tile_primitive/tma_utils.py
similarity index 100%
rename from python/tvm/backend/cuda/operator/tile_primitive/tma_utils.py
rename to python/tvm/backend/cuda/tile_primitive/tma_utils.py
diff --git a/python/tvm/backend/trn/__init__.py 
b/python/tvm/backend/trn/__init__.py
index 7650ea87d5..bb75669376 100644
--- a/python/tvm/backend/trn/__init__.py
+++ b/python/tvm/backend/trn/__init__.py
@@ -18,7 +18,15 @@
 
 from importlib import import_module
 
-_LAZY_SUBMODULES = {"layout", "op", "operator", "pipeline", "script", 
"target_tags", "transform"}
+_LAZY_SUBMODULES = {
+    "layout",
+    "op",
+    "pipeline",
+    "script",
+    "target_tags",
+    "tile_primitive",
+    "transform",
+}
 
 
 def register_backend():
@@ -29,7 +37,7 @@ def register_backend():
     for name, namespace in script_namespaces().items():
         builder_ir.register_script_namespace(name, namespace)
 
-    import_module(f"{__name__}.operator.tile_primitive")
+    import_module(f"{__name__}.tile_primitive")
     trn_pipeline = import_module(f"{__name__}.pipeline")
     import_module(f"{__name__}.target_tags")
     import_module(f"{__name__}.transform")
@@ -57,12 +65,12 @@ def __getattr__(name: str):
 __all__ = [
     "layout",
     "op",
-    "operator",
     "pipeline",
     "register_backend",
     "script",
     "script_namespace",
     "script_namespaces",
     "target_tags",
+    "tile_primitive",
     "transform",
 ]
diff --git a/python/tvm/backend/trn/operator/__init__.py 
b/python/tvm/backend/trn/operator/__init__.py
deleted file mode 100644
index 2d9b93d998..0000000000
--- a/python/tvm/backend/trn/operator/__init__.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-"""Trainium backend operator package.
-
-Loaded by the Trainium backend registration hook.
-"""
-
-__all__ = ["tile_primitive"]
diff --git a/python/tvm/backend/trn/operator/tile_primitive/__init__.py 
b/python/tvm/backend/trn/tile_primitive/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/__init__.py
rename to python/tvm/backend/trn/tile_primitive/__init__.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/binary/__init__.py 
b/python/tvm/backend/trn/tile_primitive/binary/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/binary/__init__.py
rename to python/tvm/backend/trn/tile_primitive/binary/__init__.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/binary/default.py 
b/python/tvm/backend/trn/tile_primitive/binary/default.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/binary/default.py
rename to python/tvm/backend/trn/tile_primitive/binary/default.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/binary/utils.py 
b/python/tvm/backend/trn/tile_primitive/binary/utils.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/binary/utils.py
rename to python/tvm/backend/trn/tile_primitive/binary/utils.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/common.py 
b/python/tvm/backend/trn/tile_primitive/common.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/common.py
rename to python/tvm/backend/trn/tile_primitive/common.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/compose_op/__init__.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/__init__.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/compose_op/__init__.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/__init__.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/compose_op/binary_chain.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/binary_chain.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/compose_op/binary_chain.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/binary_chain.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/compose_op/binary_reduce.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/binary_reduce.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/compose_op/binary_reduce.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/binary_reduce.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/compose_op/compose_op.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/compose_op.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/compose_op/compose_op.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/compose_op.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/compose_op/reduce_negate.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/reduce_negate.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/compose_op/reduce_negate.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/reduce_negate.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/compose_op/unary_reduce.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/unary_reduce.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/compose_op/unary_reduce.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/unary_reduce.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/compose_op/utils.py 
b/python/tvm/backend/trn/tile_primitive/compose_op/utils.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/compose_op/utils.py
rename to python/tvm/backend/trn/tile_primitive/compose_op/utils.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/copy/__init__.py 
b/python/tvm/backend/trn/tile_primitive/copy/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/copy/__init__.py
rename to python/tvm/backend/trn/tile_primitive/copy/__init__.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/copy/default.py 
b/python/tvm/backend/trn/tile_primitive/copy/default.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/copy/default.py
rename to python/tvm/backend/trn/tile_primitive/copy/default.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/dim_utils.py 
b/python/tvm/backend/trn/tile_primitive/dim_utils.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/dim_utils.py
rename to python/tvm/backend/trn/tile_primitive/dim_utils.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/gemm/__init__.py 
b/python/tvm/backend/trn/tile_primitive/gemm/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/gemm/__init__.py
rename to python/tvm/backend/trn/tile_primitive/gemm/__init__.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/gemm/default.py 
b/python/tvm/backend/trn/tile_primitive/gemm/default.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/gemm/default.py
rename to python/tvm/backend/trn/tile_primitive/gemm/default.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/instruction_generator.py 
b/python/tvm/backend/trn/tile_primitive/instruction_generator.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/instruction_generator.py
rename to python/tvm/backend/trn/tile_primitive/instruction_generator.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/private_alloc.py 
b/python/tvm/backend/trn/tile_primitive/private_alloc.py
similarity index 97%
rename from python/tvm/backend/trn/operator/tile_primitive/private_alloc.py
rename to python/tvm/backend/trn/tile_primitive/private_alloc.py
index 1ce89ef4f0..a0759c6d9c 100644
--- a/python/tvm/backend/trn/operator/tile_primitive/private_alloc.py
+++ b/python/tvm/backend/trn/tile_primitive/private_alloc.py
@@ -17,9 +17,9 @@
 
 from typing import Any
 
-from tvm.backend.trn.operator.tile_primitive.common import init_analyzer, 
nki_dim
-from tvm.backend.trn.operator.tile_primitive.dim_utils import get_ewise_dim_map
-from tvm.backend.trn.operator.tile_primitive.instruction_generator import 
InstructionGenerator
+from tvm.backend.trn.tile_primitive.common import init_analyzer, nki_dim
+from tvm.backend.trn.tile_primitive.dim_utils import get_ewise_dim_map
+from tvm.backend.trn.tile_primitive.instruction_generator import 
InstructionGenerator
 from tvm.script import tirx as T
 from tvm.tirx import Buffer, FloatImm, Stmt
 from tvm.tirx.operator.tile_primitive.ops import (
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/reduction/__init__.py 
b/python/tvm/backend/trn/tile_primitive/reduction/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/reduction/__init__.py
rename to python/tvm/backend/trn/tile_primitive/reduction/__init__.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/reduction/default.py 
b/python/tvm/backend/trn/tile_primitive/reduction/default.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/reduction/default.py
rename to python/tvm/backend/trn/tile_primitive/reduction/default.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/reduction/utils.py 
b/python/tvm/backend/trn/tile_primitive/reduction/utils.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/reduction/utils.py
rename to python/tvm/backend/trn/tile_primitive/reduction/utils.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/select/__init__.py 
b/python/tvm/backend/trn/tile_primitive/select/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/select/__init__.py
rename to python/tvm/backend/trn/tile_primitive/select/__init__.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/select/default.py 
b/python/tvm/backend/trn/tile_primitive/select/default.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/select/default.py
rename to python/tvm/backend/trn/tile_primitive/select/default.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/unary/__init__.py 
b/python/tvm/backend/trn/tile_primitive/unary/__init__.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/unary/__init__.py
rename to python/tvm/backend/trn/tile_primitive/unary/__init__.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/unary/default.py 
b/python/tvm/backend/trn/tile_primitive/unary/default.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/unary/default.py
rename to python/tvm/backend/trn/tile_primitive/unary/default.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/unary/utils.py 
b/python/tvm/backend/trn/tile_primitive/unary/utils.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/unary/utils.py
rename to python/tvm/backend/trn/tile_primitive/unary/utils.py
diff --git 
a/python/tvm/backend/trn/operator/tile_primitive/unary/with_bias_scale.py 
b/python/tvm/backend/trn/tile_primitive/unary/with_bias_scale.py
similarity index 100%
rename from 
python/tvm/backend/trn/operator/tile_primitive/unary/with_bias_scale.py
rename to python/tvm/backend/trn/tile_primitive/unary/with_bias_scale.py
diff --git a/python/tvm/backend/trn/operator/tile_primitive/workspace_utils.py 
b/python/tvm/backend/trn/tile_primitive/workspace_utils.py
similarity index 100%
rename from python/tvm/backend/trn/operator/tile_primitive/workspace_utils.py
rename to python/tvm/backend/trn/tile_primitive/workspace_utils.py
diff --git a/python/tvm/tirx/operator/intrinsics/_common.py 
b/python/tvm/tirx/operator/intrinsics/_common.py
index a96bc8caf3..75f3d62652 100644
--- a/python/tvm/tirx/operator/intrinsics/_common.py
+++ b/python/tvm/tirx/operator/intrinsics/_common.py
@@ -17,7 +17,7 @@
 """Shared enum / value tables for PTX intrinsic schemas and user wrappers.
 
 Single source of truth. Both ``tvm.tirx.op`` (user wrappers that validate
-arguments via ``_choice``) and ``tvm.tirx.cuda.operator.intrinsics.*``
+arguments via ``_choice``) and ``tvm.tirx.cuda.intrinsics.*``
 (schema declarations using ``Choice(choices=...)`` / ``IntAttr(choices=...)``)
 import from here.
 
diff --git a/tests/python/tirx/codegen/test_ptx_cvt.py 
b/tests/python/tirx/codegen/test_ptx_cvt.py
index e53c762cf8..d36e1c0a81 100644
--- a/tests/python/tirx/codegen/test_ptx_cvt.py
+++ b/tests/python/tirx/codegen/test_ptx_cvt.py
@@ -18,8 +18,8 @@
 
 import pytest
 
-from tvm.backend.cuda.operator.intrinsics.cvt import _CVT_FORMS, 
_cvt_form_parts
-from tvm.backend.cuda.operator.intrinsics.registry import CODEGEN_REGISTRY
+from tvm.backend.cuda.intrinsics.cvt import _CVT_FORMS, _cvt_form_parts
+from tvm.backend.cuda.intrinsics.registry import CODEGEN_REGISTRY
 
 # One concrete expansion for every syntax form in the PTX ``cvt`` grammar.
 # Args are register placeholders followed by the form-specific attrs.
diff --git a/tests/python/tirx/codegen/test_ptx_ld_st_ops.py 
b/tests/python/tirx/codegen/test_ptx_ld_st_ops.py
index aadef8a9a7..1927b094da 100644
--- a/tests/python/tirx/codegen/test_ptx_ld_st_ops.py
+++ b/tests/python/tirx/codegen/test_ptx_ld_st_ops.py
@@ -24,7 +24,7 @@ from tvm.ir import Op
 from tvm.script import tirx as T
 from tvm.script.tirx import tile as Tx
 from tvm.testing import env
-from tvm.tirx.cuda.operator.tile_primitive.copy._common import (
+from tvm.tirx.cuda.tile_primitive.copy._common import (
     copy_ptx_form,
     copy_ptx_ld_return_type,
 )
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_fallback.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_fallback.py
index d1a227d0f8..5381a9a802 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_fallback.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_fallback.py
@@ -37,7 +37,7 @@ from tvm.testing import env
 # Force the fallback dispatch to register before any test compiles a kernel.
 # Without this import, in fresh pytest workers the `copy/fallback` variant
 # isn't yet registered when the dispatcher snapshots its registry.
-from tvm.tirx.cuda.operator.tile_primitive.copy import fallback as 
_fallback_module  # noqa: F401
+from tvm.tirx.cuda.tile_primitive.copy import fallback as _fallback_module  # 
noqa: F401
 from tvm.tirx.layout import S, TileLayout
 
 
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_gmem_smem.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_gmem_smem.py
index a80e34e8ac..edd9e16296 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_gmem_smem.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_gmem_smem.py
@@ -261,7 +261,7 @@ def test_copy_g2s_s2g(task, dtype, scope):
 def _align(
     g_layout, g_shape, s_layout, s_shape, elem_bits, thread_cnt, 
g_region=None, s_region=None
 ):
-    from tvm.tirx.cuda.operator.tile_primitive.copy._common import 
align_layouts_gs
+    from tvm.tirx.cuda.tile_primitive.copy._common import align_layouts_gs
 
     target = tvm.target.Target("cuda")
     if g_region is None:
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_ld_stmatrix.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_ld_stmatrix.py
index 314753d6c1..4d9755d862 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_ld_stmatrix.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_ld_stmatrix.py
@@ -488,7 +488,7 @@ def test_ldstmatrix_tcgen05_warpgroup_atom_emits_ldmatrix():
     ``GetScope`` would reject (which silently fell back to a scalar reg path).
     Compile-only (no GPU): asserts the instruction appears in generated source.
     """
-    from tvm.tirx.cuda.operator.tile_primitive.tma_utils import 
mma_shared_layout
+    from tvm.tirx.cuda.tile_primitive.tma_utils import mma_shared_layout
     from tvm.tirx.layout import tcgen05_atom_layout
 
     m, k = 64, 64
diff --git a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_reg.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_reg.py
index e07dab5b44..8cd88f5220 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_reg.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_reg.py
@@ -732,7 +732,7 @@ _TCGEN05_D_SLICE = (slice(0, 64), slice(0, 64))
 
 
 def _tcgen05_d_epilogue_layouts():
-    from tvm.tirx.cuda.operator.tile_primitive.tma_utils import 
mma_shared_layout
+    from tvm.tirx.cuda.tile_primitive.tma_utils import mma_shared_layout
     from tvm.tirx.layout import tcgen05_atom_layout
 
     m, n = _TCGEN05_D_SHAPE
@@ -743,7 +743,7 @@ def _tcgen05_d_epilogue_layouts():
 
 def _build_tcgen05_d_epilogue_deposit():
     """``Tx.wg.copy(smem[slice], d_reg[slice])``: R (tcgen05 atom) → S (128B 
swizzle)."""
-    from tvm.tirx.cuda.operator.tile_primitive.tma_utils import 
mma_shared_layout
+    from tvm.tirx.cuda.tile_primitive.tma_utils import mma_shared_layout
     from tvm.tirx.layout import tcgen05_atom_layout
 
     m, n = _TCGEN05_D_SHAPE
@@ -781,7 +781,7 @@ def 
test_reg_copy_tcgen05_d_epilogue_deposit_layout_pairing():
     ``d_reg``: ``(64,64)`` fp32 ``tcgen05_atom_layout("16x256b", ...)``.
     ``smem_cd_mma``: ``(64,64)`` fp32 ``mma_shared_layout(..., swizzle=128B)``.
     """
-    from tvm.backend.cuda.operator.tile_primitive.copy.vec_auto_reg import (
+    from tvm.backend.cuda.tile_primitive.copy.vec_auto_reg import (
         _split_thread_loop,
         align_layouts_raw,
     )
@@ -853,7 +853,7 @@ def _tcgen05_16x256b_row_col(tid_wg: T.int32, lane: 
T.int32, reg_idx: T.int32):
 
 def _build_tcgen05_d_epilogue_deposit_roundtrip():
     """Fill ``d_reg``, R→S deposit, S→R reload, dump via ``.local()`` to 
gmem."""
-    from tvm.tirx.cuda.operator.tile_primitive.tma_utils import 
mma_shared_layout
+    from tvm.tirx.cuda.tile_primitive.tma_utils import mma_shared_layout
     from tvm.tirx.layout import tcgen05_atom_layout
 
     m, n = _TCGEN05_D_SHAPE
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_swizzle_iter.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_swizzle_iter.py
index 98bf68e61f..ff43e433b5 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy/test_swizzle_iter.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy/test_swizzle_iter.py
@@ -37,7 +37,7 @@ import pytest
 
 import tvm
 from tvm.tirx import Var as _TirVar
-from tvm.tirx.cuda.operator.tile_primitive.copy._swizzle_iter import (
+from tvm.tirx.cuda.tile_primitive.copy._swizzle_iter import (
     get_swizzle,
     try_recognize,
 )
@@ -323,7 +323,7 @@ def test_recognize_linear_iter_pure_case_1d():
     of the swizzle period 2^(p+at+sw) (pure Case 1.D, swizzle has no XOR
     effect). The iter is stored as a LinearIter (no bit decomposition).
     """
-    from tvm.tirx.cuda.operator.tile_primitive.copy._swizzle_iter import (
+    from tvm.tirx.cuda.tile_primitive.copy._swizzle_iter import (
         _BitIter,
         _LinearIter,
     )
@@ -363,7 +363,7 @@ def test_emit_mixed_linear_bit_correctness():
     """Brute-force: for a mixed (LinearIter outer, BitIter inner) pattern,
     emit_iter_offset's prediction must equal the actual swizzle output for
     every (tid, k) — including the non-pow2 outer extent's coord 2."""
-    from tvm.tirx.cuda.operator.tile_primitive.copy._swizzle_iter import (
+    from tvm.tirx.cuda.tile_primitive.copy._swizzle_iter import (
         _LinearIter,
     )
 
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_dsmem.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_dsmem.py
index ce468c41ad..a639e349ca 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_dsmem.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_dsmem.py
@@ -32,7 +32,7 @@ from tvm.script import tirx as T
 from tvm.script.tirx import tile as Tx
 from tvm.testing import env
 from tvm.tirx import IntImm, Var
-from tvm.tirx.cuda.operator.tile_primitive.copy_async.dsmem import 
copy_dsmem_impl
+from tvm.tirx.cuda.tile_primitive.copy_async.dsmem import copy_dsmem_impl
 from tvm.tirx.exec_scope import ExecScope
 from tvm.tirx.layout import S, TileLayout
 from tvm.tirx.operator.tile_primitive.dispatcher import DispatchFail
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tcgen05_cp.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tcgen05_cp.py
index 657f3a0e31..b807562ca7 100644
--- 
a/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tcgen05_cp.py
+++ 
b/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tcgen05_cp.py
@@ -62,7 +62,7 @@ import tvm.testing
 from tvm.script import tirx as T
 from tvm.script.tirx import tile as Tx
 from tvm.testing import env
-from tvm.tirx.cuda.operator.tile_primitive.tma_utils import SwizzleMode, 
mma_shared_layout
+from tvm.tirx.cuda.tile_primitive.tma_utils import SwizzleMode, 
mma_shared_layout
 from tvm.tirx.layout import ComposeLayout, R, S, TCol, TileLayout, TLane
 
 # Multicast replica lane offsets: (extent, stride) pairs on TLane. These are
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tma.py 
b/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tma.py
index 318ffba032..bac77e9e2d 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tma.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/copy_async/test_tma.py
@@ -31,7 +31,7 @@ from tvm.script import tirx as T
 from tvm.script.tirx import tile as Tx
 from tvm.testing import env
 from tvm.tirx import IntImm, StringImm, Var
-from tvm.tirx.cuda.operator.tile_primitive.copy_async.tma import (
+from tvm.tirx.cuda.tile_primitive.copy_async.tma import (
     AutoIssueAxis,
     IssueCoord,
     ProofStatus,
@@ -46,7 +46,7 @@ from tvm.tirx.cuda.operator.tile_primitive.copy_async.tma 
import (
     copy_tma_explicit_impl,
     validate_tensor_map_spec,
 )
-from tvm.tirx.cuda.operator.tile_primitive.tma_utils import (
+from tvm.tirx.cuda.tile_primitive.tma_utils import (
     mma_atom_layout,
     mma_atom_shape,
     mma_shared_layout,
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/elementwise/test_unary.py 
b/tests/python/tirx/operator/tile_primitive/cuda/elementwise/test_unary.py
index 62fb0c6db8..89bc27a084 100644
--- a/tests/python/tirx/operator/tile_primitive/cuda/elementwise/test_unary.py
+++ b/tests/python/tirx/operator/tile_primitive/cuda/elementwise/test_unary.py
@@ -24,7 +24,7 @@ import tvm.testing
 from tvm.script import tirx as T
 from tvm.script.tirx import tile as Tx
 from tvm.testing import env
-from tvm.tirx.cuda.operator.tile_primitive.layout_utils import (
+from tvm.tirx.cuda.tile_primitive.layout_utils import (
     cast_layout_supported_for_local as _cast_layout_supported_for_local,
 )
 from tvm.tirx.layout import S, TileLayout, laneid, tid_in_wg, tx, warpid
@@ -1111,7 +1111,7 @@ def test_cast_local_view_sliced(A_dtype, B_dtype, 
slice_start, slice_end):
 
 def test_cast_layout_partition_and_validation():
     """Partition table (simplified): partition structure and 
_cast_layout_supported_for_local."""
-    from tvm.tirx.cuda.operator.tile_primitive.layout_utils import (
+    from tvm.tirx.cuda.tile_primitive.layout_utils import (
         get_layout_thread_local_partition as 
_get_layout_thread_local_partition,
     )
     from tvm.tirx.layout import Axis, Iter
@@ -1226,7 +1226,7 @@ def test_cast_mixed_axes_and_subregion(slice_start, 
slice_end):
 
 def test_cast_joint_decomposition_extents_order():
     """Test joint decomposition uses thread dims in layout order with correct 
extents."""
-    from tvm.tirx.cuda.operator.tile_primitive.layout_utils import (
+    from tvm.tirx.cuda.tile_primitive.layout_utils import (
         get_layout_thread_local_partition as 
_get_layout_thread_local_partition,
     )
 
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/gemm_async/test_gemm_async.py 
b/tests/python/tirx/operator/tile_primitive/cuda/gemm_async/test_gemm_async.py
index 02f7fc212d..1e1a504f12 100644
--- 
a/tests/python/tirx/operator/tile_primitive/cuda/gemm_async/test_gemm_async.py
+++ 
b/tests/python/tirx/operator/tile_primitive/cuda/gemm_async/test_gemm_async.py
@@ -34,8 +34,8 @@ from tvm.ir.type import PointerType, PrimType
 from tvm.script import tirx as T
 from tvm.script.tirx import tile as Tx
 from tvm.testing import env
-from tvm.tirx.cuda.operator.tile_primitive.gemm_async import sf_tmem_layout
-from tvm.tirx.cuda.operator.tile_primitive.tma_utils import (
+from tvm.tirx.cuda.tile_primitive.gemm_async import sf_tmem_layout
+from tvm.tirx.cuda.tile_primitive.tma_utils import (
     SwizzleMode,
     mma_atom_layout,
     mma_atom_shape,
@@ -2445,7 +2445,7 @@ def test_gemm_tcgen05_contiguous_kslice_partial_k(k_lo, 
k_hi):
     so the MMA accumulates exactly k in [lo, hi) -- enabling fine K-major 
split-K.
     Any MMA_K(16)-aligned [lo:hi] is supported.
     """
-    from tvm.tirx.cuda.operator.tile_primitive.tma_utils import SwizzleMode
+    from tvm.tirx.cuda.tile_primitive.tma_utils import SwizzleMode
 
     M, N, K_alloc = 128, 128, 64
     dtype = "float16"
@@ -3477,7 +3477,7 @@ def _make_gemm_tcgen05_call(
     (1@TLane, 1@TCol) layout.
     """
     from tvm.ir import Range
-    from tvm.tirx.cuda.operator.tile_primitive.gemm_async.tcgen05 import (
+    from tvm.tirx.cuda.tile_primitive.gemm_async.tcgen05 import (
         gemm_async_tcgen05_impl,
     )
     from tvm.tirx.exec_scope import ExecScope
@@ -3556,7 +3556,7 @@ def 
test_gemm_tcgen05_preserves_explicit_tmem_lane_bases():
 def test_gemm_tcgen05_preserves_block_scale_tmem_lane_bases():
     """SFA/SFB row offsets must reach the encoded TMEM address operands."""
     from tvm.ir import Range
-    from tvm.tirx.cuda.operator.tile_primitive.gemm_async.tcgen05 import (
+    from tvm.tirx.cuda.tile_primitive.gemm_async.tcgen05 import (
         gemm_async_tcgen05_impl,
     )
     from tvm.tirx.exec_scope import ExecScope
diff --git 
a/tests/python/tirx/operator/tile_primitive/cuda/permute_layout/test_permute_layout.py
 
b/tests/python/tirx/operator/tile_primitive/cuda/permute_layout/test_permute_layout.py
index b1fc86bd62..1ae7f1706e 100644
--- 
a/tests/python/tirx/operator/tile_primitive/cuda/permute_layout/test_permute_layout.py
+++ 
b/tests/python/tirx/operator/tile_primitive/cuda/permute_layout/test_permute_layout.py
@@ -46,7 +46,7 @@ from tvm.script.tirx import tile as Tx
 from tvm.testing import env
 
 # Helpers exposed by the dispatcher module for direct algorithm tests.
-from tvm.tirx.cuda.operator.tile_primitive.permute_layout.warp_xor_swizzle 
import (
+from tvm.tirx.cuda.tile_primitive.permute_layout.warp_xor_swizzle import (
     _bank_free,
     _check_bijection,
     _choose_xor_k,
diff --git a/tests/python/tirx/test_alloc_pool.py 
b/tests/python/tirx/test_alloc_pool.py
index ebc5f751a6..9614531ec0 100644
--- a/tests/python/tirx/test_alloc_pool.py
+++ b/tests/python/tirx/test_alloc_pool.py
@@ -19,7 +19,7 @@
 import pytest
 
 from tvm.tirx.cuda.lang.alloc_pool import _validate_mma_alloc_shape
-from tvm.tirx.cuda.operator.tile_primitive.tma_utils import SwizzleMode
+from tvm.tirx.cuda.tile_primitive.tma_utils import SwizzleMode
 
 # ---------------------------------------------------------------------------
 # alloc_tcgen05_mma_AB shape validation: bad inputs raise actionable 
ValueError instead of
diff --git a/tests/python/tirx/test_layout.py b/tests/python/tirx/test_layout.py
index 1ad21c9b9d..d388d5c951 100644
--- a/tests/python/tirx/test_layout.py
+++ b/tests/python/tirx/test_layout.py
@@ -29,7 +29,7 @@ from tvm.script import tirx as T
 from tvm.script.ir_builder import IRBuilder
 from tvm.script.ir_builder import tirx as Tx_builder
 from tvm.tirx import Var
-from tvm.tirx.cuda.operator.tile_primitive.tma_utils import (
+from tvm.tirx.cuda.tile_primitive.tma_utils import (
     SwizzleMode,
     mma_shared_layout,
 )
@@ -1748,7 +1748,7 @@ def test_slice():
 
 
 def test_cuda_copy_extract_swizzle_tile_simplifies_constant_region_extents():
-    from tvm.tirx.cuda.operator.tile_primitive.copy._common import 
_extract_tile
+    from tvm.tirx.cuda.tile_primitive.copy._common import _extract_tile
 
     zero = tvm.tirx.Mul(tvm.tirx.IntImm("int32", 0), tvm.tirx.IntImm("int32", 
64))
     end = tvm.tirx.Add(zero, tvm.tirx.IntImm("int32", 64))

Reply via email to