diff --git a/src/test/run-make/nvptx/Makefile b/src/test/run-make/nvptx/Makefile new file mode 100644 index 0000000000000..866bfb79237ff --- /dev/null +++ b/src/test/run-make/nvptx/Makefile @@ -0,0 +1,32 @@ +-include ../tools.mk + +NVPTX = nvptx-unknown-unknown +NVPTX64 = nvptx64-unknown-unknown + +all: smoke syncthreads thread_idx + +smoke: + $(RUSTC) --target $(NVPTX) --emit=asm $@.rs + grep '\.address_size *32' $(TMPDIR)/$@.s + $(RUSTC) --target $(NVPTX64) --emit=asm $@.rs + grep '\.address_size *64' $(TMPDIR)/$@.s + +syncthreads: + $(RUSTC) --target $(NVPTX) --emit=llvm-ir $@.rs + grep 'call.*syncthreads' $(TMPDIR)/$@.ll + $(RUSTC) --target $(NVPTX64) --emit=llvm-ir $@.rs + grep 'call.*syncthreads' $(TMPDIR)/$@.ll + $(RUSTC) --target $(NVPTX) --emit=asm $@.rs + grep 'bar\.sync' $(TMPDIR)/$@.s + $(RUSTC) --target $(NVPTX64) --emit=asm $@.rs + grep 'bar\.sync' $(TMPDIR)/$@.s + +thread_idx: + $(RUSTC) --target $(NVPTX) --emit=llvm-ir $@.rs + grep 'call.*tid\.x' $(TMPDIR)/$@.ll + $(RUSTC) --target $(NVPTX64) --emit=llvm-ir $@.rs + grep 'call.*tid\.x' $(TMPDIR)/$@.ll + $(RUSTC) --target $(NVPTX) --emit=asm $@.rs + grep '%tid\.x' $(TMPDIR)/$@.s + $(RUSTC) --target $(NVPTX64) --emit=asm $@.rs + grep '%tid\.x' $(TMPDIR)/$@.s diff --git a/src/test/run-make/nvptx/smoke.rs b/src/test/run-make/nvptx/smoke.rs new file mode 100644 index 0000000000000..c83219f6eae92 --- /dev/null +++ b/src/test/run-make/nvptx/smoke.rs @@ -0,0 +1,5 @@ +#![feature(lang_items)] +#![feature(no_core)] +#![feature(platform_intrinsics)] + +#![no_core] diff --git a/src/test/run-make/nvptx/syncthreads.rs b/src/test/run-make/nvptx/syncthreads.rs new file mode 100644 index 0000000000000..19ea8b4b0be58 --- /dev/null +++ b/src/test/run-make/nvptx/syncthreads.rs @@ -0,0 +1,23 @@ +#![feature(lang_items)] +#![feature(no_core)] +#![feature(platform_intrinsics)] + +#![no_core] + +#![allow(dead_code)] + +extern "platform-intrinsic" { + fn nvptx_syncthreads(); +} + +fn syncthreads() { + unsafe { + nvptx_syncthreads(); + } +} + +#[lang = "copy"] +trait Copy {} + +#[lang = "sized"] +trait Sized {} diff --git a/src/test/run-make/nvptx/thread_idx.rs b/src/test/run-make/nvptx/thread_idx.rs new file mode 100644 index 0000000000000..e1b1f91ec10fd --- /dev/null +++ b/src/test/run-make/nvptx/thread_idx.rs @@ -0,0 +1,23 @@ +#![feature(lang_items)] +#![feature(no_core)] +#![feature(platform_intrinsics)] + +#![no_core] + +#![allow(dead_code)] + +extern "platform-intrinsic" { + fn nvptx_thread_idx_x() -> i32; +} + +fn thread_idx() -> i32 { + unsafe { + nvptx_thread_idx_x() + } +} + +#[lang = "copy"] +trait Copy {} + +#[lang = "sized"] +trait Sized {}