add nvptx architecture
This commit is contained in:
parent
33e26c0b4a
commit
fda2ead377
2 changed files with 113 additions and 0 deletions
|
|
@ -153,6 +153,8 @@ pub mod vendor {
|
|||
|
||||
#[cfg(target_arch = "aarch64")]
|
||||
pub use aarch64::*;
|
||||
|
||||
pub use nvptx::*;
|
||||
}
|
||||
|
||||
#[macro_use]
|
||||
|
|
@ -205,3 +207,5 @@ mod x86;
|
|||
mod arm;
|
||||
#[cfg(target_arch = "aarch64")]
|
||||
mod aarch64;
|
||||
|
||||
mod nvptx;
|
||||
|
|
|
|||
109
library/stdarch/src/nvptx/mod.rs
Normal file
109
library/stdarch/src/nvptx/mod.rs
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
//! nvptx intrinsics
|
||||
|
||||
#[allow(improper_ctypes)]
|
||||
extern "C" {
|
||||
#[link_name = "llvm.cuda.syncthreads"]
|
||||
fn syncthreads() -> ();
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.ntid.x"]
|
||||
fn block_dim_x() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.ntid.y"]
|
||||
fn block_dim_y() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.ntid.z"]
|
||||
fn block_dim_z() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.ctaid.x"]
|
||||
fn block_idx_x() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.ctaid.y"]
|
||||
fn block_idx_y() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.ctaid.z"]
|
||||
fn block_idx_z() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.nctaid.x"]
|
||||
fn grid_dim_x() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.nctaid.y"]
|
||||
fn grid_dim_y() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.nctaid.z"]
|
||||
fn grid_dim_z() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.tid.x"]
|
||||
fn thread_idx_x() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.tid.y"]
|
||||
fn thread_idx_y() -> i32;
|
||||
#[link_name = "llvm.nvvm.read.ptx.sreg.tid.z"]
|
||||
fn thread_idx_z() -> i32;
|
||||
}
|
||||
|
||||
/// Synchronizes all threads in the block.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _syncthreads() -> () {
|
||||
syncthreads()
|
||||
}
|
||||
|
||||
/// x-th thread-block dimension.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _block_dim_x() -> i32 {
|
||||
block_dim_x()
|
||||
}
|
||||
|
||||
/// y-th thread-block dimension.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _block_dim_y() -> i32 {
|
||||
block_dim_y()
|
||||
}
|
||||
|
||||
/// z-th thread-block dimension.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _block_dim_z() -> i32 {
|
||||
block_dim_z()
|
||||
}
|
||||
|
||||
/// x-th thread-block index.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _block_idx_x() -> i32 {
|
||||
block_idx_x()
|
||||
}
|
||||
|
||||
/// y-th thread-block index.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _block_idx_y() -> i32 {
|
||||
block_idx_y()
|
||||
}
|
||||
|
||||
/// z-th thread-block index.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _block_idx_z() -> i32 {
|
||||
block_idx_z()
|
||||
}
|
||||
|
||||
/// x-th block-grid dimension.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _grid_dim_x() -> i32 {
|
||||
grid_dim_x()
|
||||
}
|
||||
|
||||
/// y-th block-grid dimension.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _grid_dim_y() -> i32 {
|
||||
grid_dim_y()
|
||||
}
|
||||
|
||||
/// z-th block-grid dimension.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _grid_dim_z() -> i32 {
|
||||
grid_dim_z()
|
||||
}
|
||||
|
||||
/// x-th thread index.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _thread_idx_x() -> i32 {
|
||||
thread_idx_x()
|
||||
}
|
||||
|
||||
/// y-th thread index.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _thread_idx_y() -> i32 {
|
||||
thread_idx_y()
|
||||
}
|
||||
|
||||
/// z-th thread index.
|
||||
#[inline(always)]
|
||||
pub unsafe fn _thread_idx_z() -> i32 {
|
||||
thread_idx_z()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue