.. _libcudacxx-ptx-instructions: PTX Instructions ================ .. toctree:: :maxdepth: 1 instructions/ld instructions/st instructions/shr instructions/shl instructions/bmsk instructions/elect_sync instructions/prmt instructions/barrier_cluster instructions/bfind instructions/clusterlaunchcontrol instructions/cp_async_bulk instructions/cp_async_bulk_commit_group instructions/cp_async_bulk_wait_group instructions/cp_async_bulk_tensor instructions/cp_async_mbarrier_arrive instructions/cp_reduce_async_bulk instructions/cp_reduce_async_bulk_tensor instructions/exit instructions/fence instructions/getctarank instructions/mapa instructions/mbarrier_init instructions/mbarrier_inval instructions/mbarrier_arrive instructions/mbarrier_expect_tx instructions/mbarrier_test_wait instructions/mbarrier_try_wait instructions/multimem_ld_reduce instructions/multimem_red instructions/multimem_st instructions/red_async instructions/shfl_sync instructions/st_async instructions/st_bulk instructions/tcgen05_alloc instructions/tcgen05_commit instructions/tcgen05_cp instructions/tcgen05_fence instructions/tcgen05_ld instructions/tcgen05_mma instructions/tcgen05_mma_ws instructions/tcgen05_shift instructions/tcgen05_st instructions/tcgen05_wait instructions/tensormap_replace instructions/tensormap_cp_fenceproxy instructions/trap instructions/setmaxnreg instructions/special_registers Instructions by section ----------------------- .. list-table:: `Integer Arithmetic Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `sad `__ - No * - `div `__ - No * - `rem `__ - No * - `abs `__ - No * - `neg `__ - No * - `min `__ - No * - `max `__ - No * - `popc `__ - No * - `clz `__ - No * - `bfind `__ - CCCL 3.0.0 * - `fns `__ - No * - `brev `__ - No * - `bfe `__ - No * - `bfi `__ - No * - `szext `__ - No * - `bmsk `__ - Yes, CCCL 3.0.0 / CUDA 13.0 * - `dp4a `__ - No * - `dp2a `__ - No .. list-table:: `Extended-Precision Integer Arithmetic Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `add.cc `__ - No * - `addc `__ - No * - `sub.cc `__ - No * - `subc `__ - No * - `mad.cc `__ - No * - `madc `__ - No .. list-table:: `Floating-Point Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `testp `__ - No * - `copysign `__ - No * - `add `__ - No * - `sub `__ - No * - `mul `__ - No * - `fma `__ - No * - `mad `__ - No * - `div `__ - No * - `abs `__ - No * - `neg `__ - No * - `min `__ - No * - `max `__ - No * - `rcp `__ - No * - `rcp.approx.ftz.f64 `__ - No * - `sqrt `__ - No * - `rsqrt `__ - No * - `rsqrt.approx.ftz.f64 `__ - No * - `sin `__ - No * - `cos `__ - No * - `lg2 `__ - No * - `ex2 `__ - No * - `tanh `__ - No .. list-table:: `Half Precision Floating-Point Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `add `__ - No * - `sub `__ - No * - `mul `__ - No * - `fma `__ - No * - `neg `__ - No * - `abs `__ - No * - `min `__ - No * - `max `__ - No * - `tanh `__ - No * - `ex2 `__ - No .. list-table:: `Comparison and Selection Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `set `__ - No * - `setp `__ - No * - `selp `__ - No * - `slct `__ - No .. list-table:: `Half Precision Comparison Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `set `__ - No * - `setp `__ - No .. list-table:: `Logic and Shift Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `and `__ - No * - `or `__ - No * - `xor `__ - No * - `not `__ - No * - `cnot `__ - No * - `lop3 `__ - No * - `shf `__ - No * - `shl `__ - Yes, CCCL 3.0.0 / CUDA 13.0 * - `shr `__ - Yes, CCCL 3.0.0 / CUDA 13.0 .. list-table:: `Data Movement and Conversion Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `mov `__ - No * - `shfl `__ - No * - `shfl.sync `__ - Yes, CCCL 2.9.0 / CUDA 12.9 * - `prmt `__ - Yes, CCCL 3.0.0 / CUDA 13.0 * - `ld `__ - Yes, CCCL 3.0.0 / CUDA 13.0 * - `ld.global.nc `__ - Yes, CCCL 3.0.0 / CUDA 13.0 * - `ldu `__ - No * - `st `__ - Yes, CCCL 3.0.0 / CUDA 13.0 * - :ref:`st.async ` - CCCL 2.3.0 / CUDA 12.4 * - :ref:`st.bulk ` - CCCL 2.8 / CUDA 12.9 * - `multimem.ld_reduce, multimem.st, multimem.red `__ - CCCL 2.8 / CUDA 12.9 * - `prefetch, prefetchu `__ - No * - `applypriority `__ - No * - `discard `__ - No * - `createpolicy `__ - No * - `isspacep `__ - No * - `cvta `__ - No * - `cvt `__ - No * - `cvt.pack `__ - No * - :ref:`mapa ` - No * - :ref:`getctarank ` - CCCL 2.4.0 / CUDA 12.5 .. list-table:: `Data Movement and Conversion Instructions: Asynchronous copy `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `cp.async `__ - No * - `cp.async.commit_group `__ - No * - `cp.async.wait_group `__ - No * - :ref:`cp.async.bulk ` - CCCL 2.4.0 / CUDA 12.5 * - :ref:`cp.reduce.async.bulk ` - CCCL 2.4.0 / CUDA 12.5 * - `cp.async.bulk.prefetch `__ - No * - :ref:`cp.reduce.async.bulk ` - CCCL 2.4.0 / CUDA 12.5 * - :ref:`cp.reduce.async.bulk.tensor ` - CCCL 2.4.0 / CUDA 12.5 * - `cp.async.bulk.prefetch.tensor `__ - No * - :ref:`cp.async.bulk.commit_group ` - CCCL 2.4.0 / CUDA 12.5 * - :ref:`cp.async.bulk.wait_group ` - CCCL 2.4.0 / CUDA 12.5 * - :ref:`tensormap.replace ` - CCCL 2.4.0 / CUDA 12.5 .. list-table:: `Texture Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `tex `__ - No * - `tld4 `__ - No * - `txq `__ - No * - `istypep `__ - No .. list-table:: `Surface Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `suld `__ - No * - `sust `__ - No * - `sured `__ - No * - `suq `__ - No .. list-table:: `Control Flow Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `{} `__ - No * - `@ `__ - No * - `bra `__ - No * - `bra `__ - No * - `call `__ - No * - `ret `__ - No * - `exit `__ - CCCL 3.0.0 .. list-table:: `Parallel Synchronization and Communication Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `bar, barrier `__ - No * - `bar.warp.sync `__ - No * - :ref:`barrier.cluster ` - CCCL 2.4.0 / CUDA 12.5 * - `membar `__ - No * - :ref:`fence ` - CCCL 2.4.0 / CUDA 12.5 * - `atom `__ - No * - `red `__ - No * - :ref:`red.async ` - CCCL 2.3.0 / CUDA 12.4 * - `vote `__ - No * - `vote.sync `__ - No * - `match.sync `__ - No * - `activemask `__ - No * - `redux.sync `__ - No * - `griddepcontrol `__ - No * - `elect.sync `__ - CCCL 3.1.0 / CUDA 13.1 .. list-table:: `Parallel Synchronization and Communication Instructions: mbarrier `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - :ref:`mbarrier.init ` - CCCL 2.5.0 / CUDA Future * - `mbarrier.inval `__ - CCCL 3.2.0 / CUDA 13.2 * - `mbarrier.complete_tx `__ - No * - :ref:`mbarrier.arrive ` - CCCL 2.3.0 / CUDA 12.4 * - `mbarrier.arrive_drop `__ - No * - `cp.async.mbarrier.arrive `__ - CCCL 2.8 / CUDA 12.9 * - `mbarrier.expect_tx `__ - CCCL 2.8 / CUDA 12.9 * - :ref:`mbarrier.test_wait ` - CCCL 2.3.0 / CUDA 12.4 * - :ref:`mbarrier.try_wait ` - CCCL 2.3.0 / CUDA 12.4 * - `mbarrier.pending_count `__ - No * - :ref:`tensormap.cp_fenceproxy ` - CCCL 2.4.0 / CUDA 12.5 * - :ref:`clusterlaunchcontrol.try_cancel ` - CCCL 2.8 / CUDA 12.9 * - :ref:`clusterlaunchcontrol.query_cancel ` - CCCL 2.8 / CUDA 12.9 .. list-table:: `Warp Level Matrix Multiply-Accumulate Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `wmma.load `__ - No * - `wmma.store `__ - No * - `wmma.mma `__ - No * - `mma `__ - No * - `ldmatrix `__ - No * - `stmatrix `__ - No * - `movmatrix `__ - No * - `mma.sp `__ - No .. list-table:: `Asynchronous Warpgroup Level Matrix Multiply-Accumulate Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `wgmma.mma_async `__ - No * - `wgmma.mma_async.sp `__ - No * - `wgmma.fence `__ - No * - `wgmma.commit_group `__ - No * - `wgmma.wait_group `__ - No .. list-table:: `TensorCore 5th Generation Family Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `tcgen05.alloc `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.commit `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.cp `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.fence `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.ld `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.mma `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.mma.ws `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.shift `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.st `__ - CCCL 2.8 / CUDA 12.9 * - `tcgen05.wait `__ - CCCL 2.8 / CUDA 12.9 .. list-table:: `Stack Manipulation Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `stacksave `__ - No * - `stackrestore `__ - No * - `alloca `__ - No .. list-table:: `Video Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `vadd, vsub, vabsdiff, vmin, vmax `__ - No * - `vshl, vshr `__ - No * - `vmad `__ - No * - `vset `__ - No .. list-table:: `SIMD Video Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `vadd2, vsub2, vavrg2, vabsdiff2, vmin2, vmax2 `__ - No * - `vset2 `__ - No * - `vadd4, vsub4, vavrg4, vabsdiff4, vmin4, vmax4 `__ - No * - `vset4 `__ - No .. list-table:: `Miscellaneous Instructions `__ :widths: 50 50 :header-rows: 1 * - Instruction - Available in libcu++ * - `brkpt `__ - No * - `nanosleep `__ - No * - `pmevent `__ - No * - `trap `__ - CCCL 3.0.0 * - `setmaxnreg `__ - CCCL 3.2.0 / CUDA 13.2 .. list-table:: `Special registers ` :widths: 25 25 25 25 :header-rows: 1 * - Instruction - PTX ISA - SM Version - Available in libcu++ * - `tid `__ - 20 - All - CCCL 2.4.0 / CUDA 12.5 * - `ntid `__ - 20 - All - CCCL 2.4.0 / CUDA 12.5 * - `laneid `__ - 13 - All - CCCL 2.4.0 / CUDA 12.5 * - `warpid `__ - 13 - All - CCCL 2.4.0 / CUDA 12.5 * - `nwarpid `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `ctaid `__ - 20 - All - CCCL 2.4.0 / CUDA 12.5 * - `nctaid `__ - 20 - All - CCCL 2.4.0 / CUDA 12.5 * - `smid `__ - 13 - All - CCCL 2.4.0 / CUDA 12.5 * - `nsmid `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `gridid `__ - 30 - 30 - CCCL 2.4.0 / CUDA 12.5 * - `is_explicit_cluster `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `clusterid `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `nclusterid `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `cluster_ctaid `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `cluster_nctaid `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `cluster_ctarank `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `cluster_nctarank `__ - 78 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `lanemask_eq `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `lanemask_le `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `lanemask_lt `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `lanemask_ge `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `lanemask_gt `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `clock, clock_hi `__ - 10 - All - CCCL 2.4.0 / CUDA 12.5 * - `clock64 `__ - 20 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `pm0 `__ - - - No * - `pm0_64 `__ - - - No * - `envreg `__ - - - No * - `globaltimer, globaltimer_lo, globaltimer_hi `__ - 31 - 31 - CCCL 2.4.0 / CUDA 12.5 * - `reserved_smem_offset_begin, reserved_smem_offset_end, reserved_smem_offset_cap, reserved_smem_offset_2 `__ - - - No * - `total_smem_size `__ - 41 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `aggr_smem_size `__ - 81 - 90 - CCCL 2.4.0 / CUDA 12.5 * - `dynamic_smem_size `__ - 41 - 20 - CCCL 2.4.0 / CUDA 12.5 * - `current_graph_exec `__ - 80 - 50 - CCCL 2.4.0 / CUDA 12.5