[Reland][Runtimes] Merge 'compile_commands.json' files from runtimes build (#116303)
[llvm-project.git] / llvm / test / CodeGen / XCore / varargs.ll
blobf24428a670a2fb620f2d21c8277cdeb118cfc609
1 ; RUN: llc < %s -march=xcore | FileCheck %s
3 define void @_Z1fz(...) {
4 entry:
5 ; CHECK-LABEL: _Z1fz:
6 ; CHECK: extsp 3
7 ; CHECK: stw r[[REG:[0-3]{1,1}]]
8 ; CHECK: , sp[[[REG]]]
9 ; CHECK: stw r[[REG:[0-3]{1,1}]]
10 ; CHECK: , sp[[[REG]]]
11 ; CHECK: stw r[[REG:[0-3]{1,1}]]
12 ; CHECK: , sp[[[REG]]]
13 ; CHECK: stw r[[REG:[0-3]{1,1}]]
14 ; CHECK: , sp[[[REG]]]
15 ; CHECK: ldaw sp, sp[3]
16 ; CHECK: retsp 0
17   ret void
21 declare void @llvm.va_start(ptr) nounwind
22 declare void @llvm.va_end(ptr) nounwind
23 declare void @f(i32) nounwind
24 define void @test_vararg(...) nounwind {
25 entry:
26 ; CHECK-LABEL: test_vararg
27 ; CHECK: extsp 6
28 ; CHECK: stw lr, sp[1]
29 ; CHECK-DAG: stw r3, sp[6]
30 ; CHECK-DAG: stw r0, sp[3]
31 ; CHECK-DAG: stw r1, sp[4]
32 ; CHECK-DAG: stw r2, sp[5]
33 ; CHECK: ldaw r0, sp[3]
34 ; CHECK: stw r0, sp[2]
35   %list = alloca ptr, align 4
36   call void @llvm.va_start(ptr %list)
37   br label %for.cond
39 ; CHECK-LABEL: .LBB1_1
40 ; CHECK: ldw r0, sp[2]
41 ; CHECK: add r1, r0, 4
42 ; CHECK: stw r1, sp[2]
43 ; CHECK: ldw r0, r0[0]
44 ; CHECK: bl f
45 ; CHECK: bu .LBB1_1
46 for.cond:
47   %0 = va_arg ptr %list, i32
48   call void @f(i32 %0)
49   br label %for.cond
51   call void @llvm.va_end(ptr %list)
52   ret void