1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/CodeGen/AArch64/sve-callbyref-notailcall.ll
Sander de Smalen 4bfea803ed [SVE] Remove checks for warnings in scalable-vector tests.
After D98856 these tests will by default break (fatal_error) if any of
the wrong interfaces are used, so there's no longer a need to have a
RUN line that checks for a warning message emitted by the compiler.
2021-04-07 15:59:32 +01:00

30 lines
1.5 KiB
LLVM

; Because some arguments are passed by reference (through stack),
; the compiler should not do tail-call optimization.
; RUN: llc -mtriple=aarch64 -mattr=+sve < %s | FileCheck %s
; CHECK-LABEL: caller:
; CHECK: addvl sp, sp, #-[[STACKSIZE:[0-9]+]]
; CHECK-NOT: addvl sp
; CHECK: bl callee
; CHECK: addvl sp, sp, #[[STACKSIZE]]
; CHECK: ret
define <vscale x 16 x i8> @caller(<vscale x 16 x i8> %v) {
%1 = tail call <vscale x 16 x i8> @callee(<vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v, <vscale x 16 x i8> %v)
ret <vscale x 16 x i8> %1
}
declare <vscale x 16 x i8> @callee(<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>)
; CHECK-LABEL: caller_pred:
; CHECK: addvl sp, sp, #-[[STACKSIZE:[0-9]+]]
; CHECK-NOT: addvl sp
; CHECK: bl callee_pred
; CHECK: addvl sp, sp, #[[STACKSIZE]]
; CHECK: ret
define <vscale x 16 x i1> @caller_pred(<vscale x 16 x i1> %v) {
%1 = tail call <vscale x 16 x i1> @callee_pred(<vscale x 16 x i1> %v, <vscale x 16 x i1> %v, <vscale x 16 x i1> %v, <vscale x 16 x i1> %v, <vscale x 16 x i1> %v)
ret <vscale x 16 x i1> %1
}
declare <vscale x 16 x i1> @callee_pred(<vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>, <vscale x 16 x i1>)