74 lines · plain
1; RUN: llc -mtriple=mipsel -mcpu=mips32 < %s | FileCheck %s2; RUN: llc -mtriple=mips64el -mcpu=mips4 < %s | \3; RUN: FileCheck %s -check-prefix=CHECK-MIPS644; RUN: llc -mtriple=mips64el -mcpu=mips64 < %s | \5; RUN: FileCheck %s -check-prefix=CHECK-MIPS646 7declare ptr @llvm.eh.dwarf.cfa(i32) nounwind8declare ptr @llvm.frameaddress(i32) nounwind readnone9 10define ptr @f1() nounwind {11entry:12 %x = alloca [32 x i8], align 113 %0 = call ptr @llvm.eh.dwarf.cfa(i32 0)14 ret ptr %015 16; CHECK-LABEL: f1:17 18; CHECK: addiu $sp, $sp, -3219; CHECK: addiu $2, $sp, 3220}21 22 23define ptr @f2() nounwind {24entry:25 %x = alloca [65536 x i8], align 126 %0 = call ptr @llvm.eh.dwarf.cfa(i32 0)27 ret ptr %028 29; CHECK-LABEL: f2:30 31; check stack size (65536 + 8)32; CHECK: lui $[[R0:[a-z0-9]+]], 133; CHECK: addiu $[[R0]], $[[R0]], 834; CHECK: subu $sp, $sp, $[[R0]]35 36; check return value ($sp + stack size)37; CHECK: lui $[[R1:[a-z0-9]+]], 138; CHECK: addu $[[R1]], $sp, $[[R1]]39; CHECK: addiu $2, $[[R1]], 840}41 42 43define i32 @f3() nounwind {44entry:45 %x = alloca [32 x i8], align 146 %0 = call ptr @llvm.eh.dwarf.cfa(i32 0)47 %1 = ptrtoint ptr %0 to i3248 %2 = call ptr @llvm.frameaddress(i32 0)49 %3 = ptrtoint ptr %2 to i3250 %add = add i32 %1, %351 ret i32 %add52 53; CHECK-LABEL: f3:54 55; CHECK: addiu $sp, $sp, -4056 57; check return value ($fp + stack size + $fp)58; CHECK: addiu $[[R0:[a-z0-9]+]], $fp, 4059; CHECK: addu $2, $[[R0]], $fp60}61 62 63define ptr @f4() nounwind {64entry:65 %x = alloca [32 x i8], align 166 %0 = call ptr @llvm.eh.dwarf.cfa(i32 0)67 ret ptr %068 69; CHECK-LABEL: f4:70 71; CHECK-MIPS64: daddiu $sp, $sp, -3272; CHECK-MIPS64: daddiu $2, $sp, 3273}74