1; RUN: llc < %s -mtriple=arm-apple-darwin | FileCheck %s -check-prefix=DARWIN
2; RUN: llc < %s -mtriple=arm-apple-darwin -trap-func=_trap | FileCheck %s -check-prefix=FUNC
3; RUN: llc < %s -mtriple=arm-apple-darwin -trap-func=_trap -O0 | FileCheck %s -check-prefix=FUNC
4; RUN: llc < %s -mtriple=armv7 -mattr=+nacl-trap | FileCheck %s -check-prefix=NACL
5; RUN: llc < %s -mtriple=armv7 | FileCheck %s -check-prefix=ARM
6; RUN: llc < %s -mtriple=thumbv7 | FileCheck %s -check-prefix=THUMB
7
8; RUN: llc -mtriple=armv7 -mattr=+nacl-trap -filetype=obj %s -o - \
9; RUN:  | llvm-objdump -disassemble -triple armv7 -mattr=+nacl-trap - \
10; RUN:  | FileCheck %s -check-prefix=ENCODING-NACL
11; RUN: llc -verify-machineinstrs -fast-isel -mtriple=armv7 -mattr=+nacl-trap -filetype=obj %s -o - \
12; RUN:  | llvm-objdump -disassemble -triple armv7 -mattr=+nacl-trap - \
13; RUN:  | FileCheck %s -check-prefix=ENCODING-NACL
14
15; RUN: llc -mtriple=armv7 -filetype=obj %s -o - \
16; RUN:  | llvm-objdump -disassemble -triple armv7 - \
17; RUN:  | FileCheck %s -check-prefix=ENCODING-ARM
18; RUN: llc -verify-machineinstrs -fast-isel -mtriple=armv7 -filetype=obj %s -o - \
19; RUN:  | llvm-objdump -disassemble -triple armv7 - \
20; RUN:  | FileCheck %s -check-prefix=ENCODING-ARM
21
22; RUN: llc -mtriple=thumbv7 -filetype=obj %s -o - \
23; RUN:  | llvm-objdump -disassemble -triple thumbv7 - \
24; RUN:  | FileCheck %s -check-prefix=ENCODING-THUMB
25; RUN: llc -verify-machineinstrs -fast-isel -mtriple=thumbv7 -filetype=obj %s -o - \
26; RUN:  | llvm-objdump -disassemble -triple thumbv7 - \
27; RUN:  | FileCheck %s -check-prefix=ENCODING-THUMB
28
29; rdar://7961298
30; rdar://9249183
31
32define void @t() nounwind {
33entry:
34; DARWIN-LABEL: t:
35; DARWIN: trap
36
37; FUNC-LABEL: t:
38; FUNC: bl __trap
39
40; NACL-LABEL: t:
41; NACL: .inst 0xe7fedef0
42
43; ARM-LABEL: t:
44; ARM: .inst 0xe7ffdefe
45
46; THUMB-LABEL: t:
47; THUMB: .inst.n 0xdefe
48
49; ENCODING-NACL: f0 de fe e7 trap
50
51; ENCODING-ARM: fe de ff e7 trap
52
53; ENCODING-THUMB: fe de trap
54
55  call void @llvm.trap()
56  unreachable
57}
58
59define void @t2() nounwind {
60entry:
61; DARWIN-LABEL: t2:
62; DARWIN: trap
63
64; FUNC-LABEL: t2:
65; FUNC: bl __trap
66
67; NACL-LABEL: t2:
68; NACL: .inst 0xe7fedef0
69
70; ARM-LABEL: t2:
71; ARM: .inst 0xe7ffdefe
72
73; THUMB-LABEL: t2:
74; THUMB: .inst.n 0xdefe
75
76; ENCODING-NACL: f0 de fe e7 trap
77
78; ENCODING-ARM: fe de ff e7 trap
79
80; ENCODING-THUMB: fe de trap
81
82  call void @llvm.debugtrap()
83  unreachable
84}
85
86declare void @llvm.trap() nounwind
87declare void @llvm.debugtrap() nounwind
88