149676684SJay Foad; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 249676684SJay Foad; RUN: llc -mtriple=arm--none-eabi < %s | FileCheck %s 349676684SJay Foad 4*6c8f4472SJay Foad%type_80 = type [20 x i32] 549676684SJay Foad 6*6c8f4472SJay Foaddeclare void @func_80(ptr, ptr byval(%type_80)) 749676684SJay Foad 8*6c8f4472SJay Foaddefine void @test_80() { 9*6c8f4472SJay Foad; CHECK-LABEL: test_80: 1049676684SJay Foad; CHECK: @ %bb.0: 1149676684SJay Foad; CHECK-NEXT: .save {r11, lr} 1249676684SJay Foad; CHECK-NEXT: push {r11, lr} 1349676684SJay Foad; CHECK-NEXT: .pad #152 1449676684SJay Foad; CHECK-NEXT: sub sp, sp, #152 1549676684SJay Foad; CHECK-NEXT: add r0, sp, #72 1649676684SJay Foad; CHECK-NEXT: ldr r1, .LCPI0_0 1749676684SJay Foad; CHECK-NEXT: add r0, r0, #12 1849676684SJay Foad; CHECK-NEXT: mov r2, sp 1949676684SJay Foad; CHECK-NEXT: .LBB0_1: @ =>This Inner Loop Header: Depth=1 2049676684SJay Foad; CHECK-NEXT: ldr r3, [r0], #4 2149676684SJay Foad; CHECK-NEXT: subs r1, r1, #4 2249676684SJay Foad; CHECK-NEXT: str r3, [r2], #4 2349676684SJay Foad; CHECK-NEXT: bne .LBB0_1 2449676684SJay Foad; CHECK-NEXT: @ %bb.2: 2549676684SJay Foad; CHECK-NEXT: add r3, sp, #72 2649676684SJay Foad; CHECK-NEXT: mov r0, #0 2749676684SJay Foad; CHECK-NEXT: ldm r3, {r1, r2, r3} 28*6c8f4472SJay Foad; CHECK-NEXT: bl func_80 2949676684SJay Foad; CHECK-NEXT: add sp, sp, #152 3049676684SJay Foad; CHECK-NEXT: pop {r11, lr} 3149676684SJay Foad; CHECK-NEXT: mov pc, lr 3249676684SJay Foad; CHECK-NEXT: .p2align 2 3349676684SJay Foad; CHECK-NEXT: @ %bb.3: 3449676684SJay Foad; CHECK-NEXT: .LCPI0_0: 3549676684SJay Foad; CHECK-NEXT: .long 68 @ 0x44 36*6c8f4472SJay Foad %a = alloca %type_80 37*6c8f4472SJay Foad call void @func_80(ptr null, ptr %a) 38*6c8f4472SJay Foad ret void 39*6c8f4472SJay Foad} 40*6c8f4472SJay Foad 41*6c8f4472SJay Foad%type_4000 = type [1000 x i32] 42*6c8f4472SJay Foad 43*6c8f4472SJay Foaddeclare void @func_4000(ptr, ptr byval(%type_4000)) 44*6c8f4472SJay Foad 45*6c8f4472SJay Foaddefine void @test_4000() { 46*6c8f4472SJay Foad; CHECK-LABEL: test_4000: 47*6c8f4472SJay Foad; CHECK: @ %bb.0: 48*6c8f4472SJay Foad; CHECK-NEXT: .save {r11, lr} 49*6c8f4472SJay Foad; CHECK-NEXT: push {r11, lr} 50*6c8f4472SJay Foad; CHECK-NEXT: .pad #4000 51*6c8f4472SJay Foad; CHECK-NEXT: sub sp, sp, #4000 52*6c8f4472SJay Foad; CHECK-NEXT: sub sp, sp, #920 53*6c8f4472SJay Foad; CHECK-NEXT: sub sp, sp, #3072 54*6c8f4472SJay Foad; CHECK-NEXT: add lr, sp, #3072 55*6c8f4472SJay Foad; CHECK-NEXT: ldr r1, .LCPI1_0 56*6c8f4472SJay Foad; CHECK-NEXT: add r0, lr, #920 57*6c8f4472SJay Foad; CHECK-NEXT: mov r2, sp 58*6c8f4472SJay Foad; CHECK-NEXT: add r0, r0, #12 59*6c8f4472SJay Foad; CHECK-NEXT: .LBB1_1: @ =>This Inner Loop Header: Depth=1 60*6c8f4472SJay Foad; CHECK-NEXT: ldr r3, [r0], #4 61*6c8f4472SJay Foad; CHECK-NEXT: subs r1, r1, #4 62*6c8f4472SJay Foad; CHECK-NEXT: str r3, [r2], #4 63*6c8f4472SJay Foad; CHECK-NEXT: bne .LBB1_1 64*6c8f4472SJay Foad; CHECK-NEXT: @ %bb.2: 65*6c8f4472SJay Foad; CHECK-NEXT: ldr r1, [sp, #3992] 66*6c8f4472SJay Foad; CHECK-NEXT: mov r0, #0 67*6c8f4472SJay Foad; CHECK-NEXT: ldr r2, [sp, #3996] 68*6c8f4472SJay Foad; CHECK-NEXT: ldr r3, [sp, #4000] 69*6c8f4472SJay Foad; CHECK-NEXT: bl func_4000 70*6c8f4472SJay Foad; CHECK-NEXT: add sp, sp, #920 71*6c8f4472SJay Foad; CHECK-NEXT: add sp, sp, #3072 72*6c8f4472SJay Foad; CHECK-NEXT: add sp, sp, #4000 73*6c8f4472SJay Foad; CHECK-NEXT: pop {r11, lr} 74*6c8f4472SJay Foad; CHECK-NEXT: mov pc, lr 75*6c8f4472SJay Foad; CHECK-NEXT: .p2align 2 76*6c8f4472SJay Foad; CHECK-NEXT: @ %bb.3: 77*6c8f4472SJay Foad; CHECK-NEXT: .LCPI1_0: 78*6c8f4472SJay Foad; CHECK-NEXT: .long 3988 @ 0xf94 79*6c8f4472SJay Foad %a = alloca %type_4000 80*6c8f4472SJay Foad call void @func_4000(ptr null, ptr %a) 8149676684SJay Foad ret void 8249676684SJay Foad} 83