73 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc --mtriple=xtensa < %s | FileCheck -check-prefixes=CHECK %s3; RUN: llc --mtriple=xtensa --mattr=+windowed < %s | FileCheck -check-prefixes=CHECK-WINDOWED %s4 5declare ptr @llvm.stacksave()6 7declare void @llvm.stackrestore(ptr)8 9declare void @use_addr(ptr)10 11define void @test_saverestore(i64 %n) {12; CHECK-LABEL: test_saverestore:13; CHECK: .cfi_startproc14; CHECK-NEXT: # %bb.0:15; CHECK-NEXT: addi a8, a1, -1616; CHECK-NEXT: or a1, a8, a817; CHECK-NEXT: .cfi_def_cfa_offset 1618; CHECK-NEXT: s32i a0, a1, 8 # 4-byte Folded Spill19; CHECK-NEXT: s32i a12, a1, 4 # 4-byte Folded Spill20; CHECK-NEXT: s32i a15, a1, 0 # 4-byte Folded Spill21; CHECK-NEXT: .cfi_offset a0, -422; CHECK-NEXT: .cfi_offset a12, -823; CHECK-NEXT: .cfi_offset a15, -1224; CHECK-NEXT: or a15, a1, a125; CHECK-NEXT: .cfi_def_cfa_register a1526; CHECK-NEXT: addi a8, a2, 327; CHECK-NEXT: movi a9, -428; CHECK-NEXT: and a8, a8, a929; CHECK-NEXT: addi a8, a8, 3130; CHECK-NEXT: movi a9, -3231; CHECK-NEXT: and a8, a8, a932; CHECK-NEXT: or a12, a1, a133; CHECK-NEXT: sub a1, a1, a834; CHECK-NEXT: or a2, a1, a135; CHECK-NEXT: l32r a8, .LCPI0_036; CHECK-NEXT: callx0 a837; CHECK-NEXT: or a1, a12, a1238; CHECK-NEXT: or a1, a15, a1539; CHECK-NEXT: l32i a15, a1, 0 # 4-byte Folded Reload40; CHECK-NEXT: l32i a12, a1, 4 # 4-byte Folded Reload41; CHECK-NEXT: l32i a0, a1, 8 # 4-byte Folded Reload42; CHECK-NEXT: addi a8, a1, 1643; CHECK-NEXT: or a1, a8, a844; CHECK-NEXT: ret45;46; CHECK-WINDOWED-LABEL: test_saverestore:47; CHECK-WINDOWED: .cfi_startproc48; CHECK-WINDOWED-NEXT: # %bb.0:49; CHECK-WINDOWED-NEXT: entry a1, 3250; CHECK-WINDOWED-NEXT: or a7, a1, a151; CHECK-WINDOWED-NEXT: .cfi_def_cfa a7, 3252; CHECK-WINDOWED-NEXT: addi a8, a2, 353; CHECK-WINDOWED-NEXT: movi a9, -454; CHECK-WINDOWED-NEXT: and a8, a8, a955; CHECK-WINDOWED-NEXT: addi a8, a8, 3156; CHECK-WINDOWED-NEXT: movi a9, -3257; CHECK-WINDOWED-NEXT: and a8, a8, a958; CHECK-WINDOWED-NEXT: or a6, a1, a159; CHECK-WINDOWED-NEXT: sub a8, a1, a860; CHECK-WINDOWED-NEXT: movsp a1, a861; CHECK-WINDOWED-NEXT: or a10, a1, a162; CHECK-WINDOWED-NEXT: l32r a8, .LCPI0_063; CHECK-WINDOWED-NEXT: callx8 a864; CHECK-WINDOWED-NEXT: movsp a1, a665; CHECK-WINDOWED-NEXT: retw66 67 %sp = call ptr @llvm.stacksave.p0()68 %addr = alloca i8, i64 %n69 call void @use_addr(ptr %addr)70 call void @llvm.stackrestore.p0(ptr %sp)71 ret void72}73