aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/NVPTX
diff options
context:
space:
mode:
authorJoseph Huber <huberjn@outlook.com>2024-01-29 14:07:58 -0600
committerGitHub <noreply@github.com>2024-01-29 14:07:58 -0600
commit5f12cc912ac90a2511f2a53c45dc9250945da18c (patch)
treeb571689488fd4561de2ba3df847651f6873d1901 /llvm/lib/Target/NVPTX
parentd492faa7aa995aedac41e1f86aaf42dc5b43db54 (diff)
downloadllvm-5f12cc912ac90a2511f2a53c45dc9250945da18c.zip
llvm-5f12cc912ac90a2511f2a53c45dc9250945da18c.tar.gz
llvm-5f12cc912ac90a2511f2a53c45dc9250945da18c.tar.bz2
[NVPTX] Add builtin support for 'nanosleep' PTX instrunction (#79888)
Summary: This patch adds a builtin for the `nanosleep` PTX function. It takes either an immediate or a register and sleeps for [0, 2t] nanoseconds given t. More information at the documentation: https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#miscellaneous-instructions-nanosleep
Diffstat (limited to 'llvm/lib/Target/NVPTX')
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXIntrinsics.td6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td b/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
index 2df9315..c6f89f1 100644
--- a/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
+++ b/llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
@@ -640,6 +640,12 @@ class F_MATH_3<string OpcStr, NVPTXRegClass t_regclass,
def INT_NVVM_PRMT : F_MATH_3<"prmt.b32 \t$dst, $src0, $src1, $src2;", Int32Regs,
Int32Regs, Int32Regs, Int32Regs, int_nvvm_prmt>;
+def INT_NVVM_NANOSLEEP_I : NVPTXInst<(outs), (ins i32imm:$i), "nanosleep.u32 \t$i;",
+ [(int_nvvm_nanosleep imm:$i)]>,
+ Requires<[hasPTX<63>, hasSM<70>]>;
+def INT_NVVM_NANOSLEEP_R : NVPTXInst<(outs), (ins Int32Regs:$i), "nanosleep.u32 \t$i;",
+ [(int_nvvm_nanosleep Int32Regs:$i)]>,
+ Requires<[hasPTX<63>, hasSM<70>]>;
//
// Min Max
//