28 lines
557 B
LLVM
28 lines
557 B
LLVM
; RUN: llc -O0 < %s -march=avr | FileCheck %s
|
|
|
|
; CHECK-LABEL: foo
|
|
define void @foo() {
|
|
entry:
|
|
br label %save
|
|
|
|
; CHECK-LABEL: save
|
|
; CHECK: in [[SREG1:r[0-9]+]], 61
|
|
; CHECK-NEXT: in [[SREG2:r[0-9]+]], 62
|
|
save:
|
|
%saved = call i8* @llvm.stacksave()
|
|
br label %restore
|
|
|
|
; CHECK-LABEL: restore
|
|
; CHECK: in r0, 63
|
|
; CHECK-NEXT: cli
|
|
; CHECK-NEXT: out 62, [[SREG2]]
|
|
; CHECK-NEXT: out 63, r0
|
|
; CHECK-NEXT: out 61, [[SREG1]]
|
|
restore:
|
|
call void @llvm.stackrestore(i8* %saved)
|
|
ret void
|
|
}
|
|
|
|
declare i8* @llvm.stacksave()
|
|
declare void @llvm.stackrestore(i8* %ptr)
|