1
- ; RUN: llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs \
1
+ ; RUN: llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs -trap-unreachable=false \
2
2
; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOTRAP
3
- ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs \
3
+ ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs -trap-unreachable=false \
4
4
; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOTRAP
5
- ; RUN: llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs -trap-unreachable \
5
+ ; RUN: llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs -trap-unreachable -no-trap-after-noreturn \
6
+ ; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOTRAP
7
+ ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs -trap-unreachable -no-trap-after-noreturn \
8
+ ; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOTRAP
9
+ ; RUN: llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs -trap-unreachable -no-trap-after-noreturn=false \
6
10
; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-TRAP
7
- ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs -trap-unreachable \
11
+ ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs -trap-unreachable -no-trap-after-noreturn=false \
8
12
; RUN: | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-TRAP
9
13
; RUN: %if ptxas && !ptxas-12.0 %{ llc < %s -march=nvptx -mcpu=sm_20 -verify-machineinstrs | %ptxas-verify %}
10
14
; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 -verify-machineinstrs | %ptxas-verify %}
11
15
12
16
; CHECK: .extern .func throw
13
17
declare void @throw () #0
18
+ declare void @llvm.trap () #0
14
19
15
- ; CHECK: .entry kernel_func
20
+ ; CHECK-LABEL : .entry kernel_func
16
21
define void @kernel_func () {
17
22
; CHECK: call.uni
18
23
; CHECK: throw,
@@ -24,6 +29,17 @@ define void @kernel_func() {
24
29
unreachable
25
30
}
26
31
32
+ ; CHECK-LABEL: kernel_func_2
33
+ define void @kernel_func_2 () {
34
+ ; CHECK: trap; exit;
35
+ call void @llvm.trap ()
36
+
37
+ ;; Make sure we avoid emitting two trap instructions.
38
+ ; CHECK-NOT: trap;
39
+ ; CHECK-NOT: exit;
40
+ unreachable
41
+ }
42
+
27
43
attributes #0 = { noreturn }
28
44
29
45
0 commit comments