[llvm] [LLVM][NVPTX] Add support for brkpt instruction (PR #104470)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 15 09:51:16 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-nvptx
Author: Pradeep Kumar (schwarzschild-radius)
<details>
<summary>Changes</summary>
This commit adds NVPTX codegen support for brkpt instruction (https://docs.nvidia.com/cuda/parallel-thread-execution/#miscellaneous-instructions-brkpt) with test under CodeGen/NVPTX/brkpt.ll
---
Full diff: https://github.com/llvm/llvm-project/pull/104470.diff
3 Files Affected:
- (modified) llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp (+2)
- (modified) llvm/lib/Target/NVPTX/NVPTXInstrInfo.td (+2)
- (added) llvm/test/CodeGen/NVPTX/brkpt.ll (+8)
``````````diff
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
index 43a3fbf4d1306a..577141299b9496 100644
--- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
@@ -648,6 +648,8 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM,
// TRAP can be lowered to PTX trap
setOperationAction(ISD::TRAP, MVT::Other, Legal);
+ // DEBUGTRAP can be lowered to PTX brkpt
+ setOperationAction(ISD::DEBUGTRAP, MVT::Other, Legal);
// Register custom handling for vector loads/stores
for (MVT VT : MVT::fixedlen_vector_valuetypes()) {
diff --git a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
index d75dc8781f7802..e56e4c7055bc3e 100644
--- a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
+++ b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
@@ -3844,6 +3844,8 @@ def Callseq_End :
// Emit an `exit` as well to convey to ptxas that `trap` exits the CFG.
// This won't be necessary in a future version of ptxas.
def trapinst : NVPTXInst<(outs), (ins), "trap; exit;", [(trap)]>;
+// brkpt instruction
+def debugtrapinst : NVPTXInst<(outs), (ins), "brkpt;", [(debugtrap)]>;
// Call prototype wrapper
def SDTCallPrototype : SDTypeProfile<0, 1, [SDTCisInt<0>]>;
diff --git a/llvm/test/CodeGen/NVPTX/brkpt.ll b/llvm/test/CodeGen/NVPTX/brkpt.ll
new file mode 100644
index 00000000000000..beb2ff6aed6c9c
--- /dev/null
+++ b/llvm/test/CodeGen/NVPTX/brkpt.ll
@@ -0,0 +1,8 @@
+; RUN: llc -o - -march=nvptx64 %s | FileCheck %s
+
+; CHECK-LABEL: .func breakpoint
+define void @breakpoint() {
+ ; CHECK: brkpt;
+ call void @llvm.debugtrap()
+ ret void
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/104470
More information about the llvm-commits
mailing list