55 lines · plain
1; RUN: llc < %s -mtriple=xcore | FileCheck %s2 3define void @_Z1fz(...) {4entry:5; CHECK-LABEL: _Z1fz:6; CHECK: extsp 37; 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 017 ret void18}19 20 21declare void @llvm.va_start(ptr) nounwind22declare void @llvm.va_end(ptr) nounwind23declare void @f(i32) nounwind24define void @test_vararg(...) nounwind {25entry:26; CHECK-LABEL: test_vararg27; CHECK: extsp 628; 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 436 call void @llvm.va_start(ptr %list)37 br label %for.cond38 39; CHECK-LABEL: .LBB1_140; CHECK: ldw r0, sp[2]41; CHECK: add r1, r0, 442; CHECK: stw r1, sp[2]43; CHECK: ldw r0, r0[0]44; CHECK: bl f45; CHECK: bu .LBB1_146for.cond:47 %0 = va_arg ptr %list, i3248 call void @f(i32 %0)49 br label %for.cond50 51 call void @llvm.va_end(ptr %list)52 ret void53}54 55