1 ; RUN: llc < %s -march=avr | FileCheck %s
3 define avr_intrcc void @interrupt_handler() {
4 ; CHECK-LABEL: interrupt_handler:
8 ; CHECK-NEXT: in r0, 63
13 ; CHECK-NEXT: out 63, r0
20 define void @interrupt_handler_via_ir_attribute() #0 {
21 ; CHECK-LABEL: interrupt_handler_via_ir_attribute:
25 ; CHECK-NEXT: in r0, 63
30 ; CHECK-NEXT: out 63, r0
37 define avr_signalcc void @signal_handler() {
38 ; CHECK-LABEL: signal_handler:
42 ; CHECK-NEXT: in r0, 63
47 ; CHECK-NEXT: out 63, r0
54 define void @signal_handler_via_attribute() #1 {
55 ; CHECK-LABEL: signal_handler_via_attribute:
59 ; CHECK-NEXT: in r0, 63
64 ; CHECK-NEXT: out 63, r0
71 define avr_intrcc void @interrupt_alloca() {
72 ; CHECK-LABEL: interrupt_alloca:
76 ; CHECK-NEXT: in r0, 63
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
87 ; CHECK-NEXT: out 62, r29
88 ; CHECK-NEXT: out 63, r0
89 ; CHECK-NEXT: out 61, r28
91 ; CHECK-NEXT: in r0, 63
93 ; CHECK-NEXT: out 62, r29
94 ; CHECK-NEXT: out 63, r0
95 ; CHECK-NEXT: out 61, r28
99 ; CHECK-NEXT: out 63, r0
107 attributes #0 = { "interrupt" }
108 attributes #1 = { "signal" }