[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AVR / interrupts.ll
blobe112de0a0ddd86f4d9629e36e9a5e9eb6d208546
1 ; RUN: llc < %s -march=avr | FileCheck %s
3 define avr_intrcc void @interrupt_handler() {
4 ; CHECK-LABEL: interrupt_handler:
5 ; CHECK: sei
6 ; CHECK-NEXT: push r0
7 ; CHECK-NEXT: push r1
8 ; CHECK-NEXT: in r0, 63
9 ; CHECK-NEXT: push r0
10 ; CHECK: clr r0
11 ; CHECK-NEXT: clr r1
12 ; CHECK: pop r0
13 ; CHECK-NEXT: out 63, r0
14 ; CHECK-NEXT: pop r1
15 ; CHECK-NEXT: pop r0
16 ; CHECK-NEXT: reti
17   ret void
20 define void @interrupt_handler_via_ir_attribute() #0 {
21 ; CHECK-LABEL: interrupt_handler_via_ir_attribute:
22 ; CHECK: sei
23 ; CHECK-NEXT: push r0
24 ; CHECK-NEXT: push r1
25 ; CHECK-NEXT: in r0, 63
26 ; CHECK-NEXT: push r0
27 ; CHECK: clr r0
28 ; CHECK-NEXT: clr r1
29 ; CHECK: pop r0
30 ; CHECK-NEXT: out 63, r0
31 ; CHECK-NEXT: pop r1
32 ; CHECK-NEXT: pop r0
33 ; CHECK-NEXT: reti
34   ret void
37 define avr_signalcc void @signal_handler() {
38 ; CHECK-LABEL: signal_handler:
39 ; CHECK-NOT: sei
40 ; CHECK: push r0
41 ; CHECK-NEXT: push r1
42 ; CHECK-NEXT: in r0, 63
43 ; CHECK-NEXT: push r0
44 ; CHECK: clr r0
45 ; CHECK-NEXT: clr r1
46 ; CHECK: pop r0
47 ; CHECK-NEXT: out 63, r0
48 ; CHECK-NEXT: pop r1
49 ; CHECK-NEXT: pop r0
50 ; CHECK-NEXT: reti
51   ret void
54 define void @signal_handler_via_attribute() #1 {
55 ; CHECK-LABEL: signal_handler_via_attribute:
56 ; CHECK-NOT: sei
57 ; CHECK: push r0
58 ; CHECK-NEXT: push r1
59 ; CHECK-NEXT: in r0, 63
60 ; CHECK-NEXT: push r0
61 ; CHECK: clr r0
62 ; CHECK-NEXT: clr r1
63 ; CHECK: pop r0
64 ; CHECK-NEXT: out 63, r0
65 ; CHECK-NEXT: pop r1
66 ; CHECK-NEXT: pop r0
67 ; CHECK-NEXT: reti
68   ret void
71 define avr_intrcc void @interrupt_alloca() {
72 ; CHECK-LABEL: interrupt_alloca:
73 ; CHECK: sei
74 ; CHECK-NEXT: push r0
75 ; CHECK-NEXT: push r1
76 ; CHECK-NEXT: in r0, 63
77 ; CHECK-NEXT: push r0
78 ; CHECK: clr r0
79 ; CHECK-NEXT: clr r1
80 ; CHECK: push r28
81 ; CHECK-NEXT: push r29
82 ; CHECK-NEXT: in r28, 61
83 ; CHECK-NEXT: in r29, 62
84 ; CHECK-NEXT: sbiw r28, 1
85 ; CHECK-NEXT: in r0, 63
86 ; CHECK-NEXT: cli
87 ; CHECK-NEXT: out 62, r29
88 ; CHECK-NEXT: out 63, r0
89 ; CHECK-NEXT: out 61, r28
90 ; CHECK: adiw r28, 1
91 ; CHECK-NEXT: in r0, 63
92 ; CHECK-NEXT: cli
93 ; CHECK-NEXT: out 62, r29
94 ; CHECK-NEXT: out 63, r0
95 ; CHECK-NEXT: out 61, r28
96 ; CHECK-NEXT: pop r29
97 ; CHECK-NEXT: pop r28
98 ; CHECK: pop r0
99 ; CHECK-NEXT: out 63, r0
100 ; CHECK-NEXT: pop r1
101 ; CHECK-NEXT: pop r0
102 ; CHECK-NEXT: reti
103   alloca i8
104   ret void
107 attributes #0 = { "interrupt" }
108 attributes #1 = { "signal" }