91 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=csky -verify-machineinstrs -csky-no-aliases -mattr=+2e3 < %s \3; RUN: | FileCheck %s4 5declare void @notdead(ptr)6declare ptr @llvm.frameaddress(i32)7declare ptr @llvm.returnaddress(i32)8 9define ptr @test_frameaddress_0() nounwind {10; CHECK-LABEL: test_frameaddress_0:11; CHECK: # %bb.0:12; CHECK-NEXT: subi16 sp, sp, 413; CHECK-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill14; CHECK-NEXT: mov16 l4, sp15; CHECK-NEXT: mov16 a0, l416; CHECK-NEXT: mov16 sp, l417; CHECK-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload18; CHECK-NEXT: addi16 sp, sp, 419; CHECK-NEXT: rts1620 %1 = call ptr @llvm.frameaddress(i32 0)21 ret ptr %122}23 24define ptr @test_frameaddress_2() nounwind {25; CHECK-LABEL: test_frameaddress_2:26; CHECK: # %bb.0:27; CHECK-NEXT: subi16 sp, sp, 428; CHECK-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill29; CHECK-NEXT: mov16 l4, sp30; CHECK-NEXT: ld32.w a0, (l4, 0)31; CHECK-NEXT: ld16.w a0, (a0, 0)32; CHECK-NEXT: mov16 sp, l433; CHECK-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload34; CHECK-NEXT: addi16 sp, sp, 435; CHECK-NEXT: rts1636 %1 = call ptr @llvm.frameaddress(i32 2)37 ret ptr %138}39 40define ptr @test_frameaddress_3_alloca() nounwind {41; CHECK-LABEL: test_frameaddress_3_alloca:42; CHECK: # %bb.0:43; CHECK-NEXT: subi16 sp, sp, 844; CHECK-NEXT: st32.w lr, (sp, 4) # 4-byte Folded Spill45; CHECK-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill46; CHECK-NEXT: mov16 l4, sp47; CHECK-NEXT: subi16 sp, sp, 10048; CHECK-NEXT: movi16 a0, 049; CHECK-NEXT: addu16 a0, sp50; CHECK-NEXT: jsri32 [.LCPI2_0]51; CHECK-NEXT: ld32.w a0, (l4, 0)52; CHECK-NEXT: ld16.w a0, (a0, 0)53; CHECK-NEXT: ld16.w a0, (a0, 0)54; CHECK-NEXT: mov16 sp, l455; CHECK-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload56; CHECK-NEXT: ld32.w lr, (sp, 4) # 4-byte Folded Reload57; CHECK-NEXT: addi16 sp, sp, 858; CHECK-NEXT: rts1659 %1 = alloca [100 x i8]60 %2 = bitcast ptr %1 to ptr61 call void @notdead(ptr %2)62 %3 = call ptr @llvm.frameaddress(i32 3)63 ret ptr %364}65 66define ptr @test_returnaddress_0() nounwind {67; CHECK-LABEL: test_returnaddress_0:68; CHECK: # %bb.0:69; CHECK-NEXT: mov16 a0, lr70; CHECK-NEXT: rts1671 %1 = call ptr @llvm.returnaddress(i32 0)72 ret ptr %173}74 75define ptr @test_returnaddress_2() nounwind {76; CHECK-LABEL: test_returnaddress_2:77; CHECK: # %bb.0:78; CHECK-NEXT: subi16 sp, sp, 479; CHECK-NEXT: st32.w l4, (sp, 0) # 4-byte Folded Spill80; CHECK-NEXT: mov16 l4, sp81; CHECK-NEXT: ld32.w a0, (l4, 0)82; CHECK-NEXT: ld16.w a0, (a0, 0)83; CHECK-NEXT: ld16.w a0, (a0, 4)84; CHECK-NEXT: mov16 sp, l485; CHECK-NEXT: ld32.w l4, (sp, 0) # 4-byte Folded Reload86; CHECK-NEXT: addi16 sp, sp, 487; CHECK-NEXT: rts1688 %1 = call ptr @llvm.returnaddress(i32 2)89 ret ptr %190}91