[rtsan] Add fork/execve interceptors (#117198)
[llvm-project.git] / llvm / test / CodeGen / ARM / struct-byval-loop.ll
blob7a38dec2434f79ba2fbdaa43bb6af4b8f4a48bb2
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2 ; RUN: llc -mtriple=arm--none-eabi < %s | FileCheck %s
4 %type_80 = type [20 x i32]
6 declare void @func_80(ptr, ptr byval(%type_80))
8 define void @test_80() {
9 ; CHECK-LABEL: test_80:
10 ; CHECK:       @ %bb.0:
11 ; CHECK-NEXT:    .save {r11, lr}
12 ; CHECK-NEXT:    push {r11, lr}
13 ; CHECK-NEXT:    .pad #152
14 ; CHECK-NEXT:    sub sp, sp, #152
15 ; CHECK-NEXT:    add r0, sp, #72
16 ; CHECK-NEXT:    ldr r1, .LCPI0_0
17 ; CHECK-NEXT:    add r0, r0, #12
18 ; CHECK-NEXT:    mov r2, sp
19 ; CHECK-NEXT:  .LBB0_1: @ =>This Inner Loop Header: Depth=1
20 ; CHECK-NEXT:    ldr r3, [r0], #4
21 ; CHECK-NEXT:    subs r1, r1, #4
22 ; CHECK-NEXT:    str r3, [r2], #4
23 ; CHECK-NEXT:    bne .LBB0_1
24 ; CHECK-NEXT:  @ %bb.2:
25 ; CHECK-NEXT:    add r3, sp, #72
26 ; CHECK-NEXT:    mov r0, #0
27 ; CHECK-NEXT:    ldm r3, {r1, r2, r3}
28 ; CHECK-NEXT:    bl func_80
29 ; CHECK-NEXT:    add sp, sp, #152
30 ; CHECK-NEXT:    pop {r11, lr}
31 ; CHECK-NEXT:    mov pc, lr
32 ; CHECK-NEXT:    .p2align 2
33 ; CHECK-NEXT:  @ %bb.3:
34 ; CHECK-NEXT:  .LCPI0_0:
35 ; CHECK-NEXT:    .long 68 @ 0x44
36   %a = alloca %type_80
37   call void @func_80(ptr null, ptr %a)
38   ret void
41 %type_4000 = type [1000 x i32]
43 declare void @func_4000(ptr, ptr byval(%type_4000))
45 define void @test_4000() {
46 ; CHECK-LABEL: test_4000:
47 ; CHECK:       @ %bb.0:
48 ; CHECK-NEXT:    .save {r11, lr}
49 ; CHECK-NEXT:    push {r11, lr}
50 ; CHECK-NEXT:    .pad #4000
51 ; CHECK-NEXT:    sub sp, sp, #4000
52 ; CHECK-NEXT:    sub sp, sp, #920
53 ; CHECK-NEXT:    sub sp, sp, #3072
54 ; CHECK-NEXT:    add lr, sp, #3072
55 ; CHECK-NEXT:    ldr r1, .LCPI1_0
56 ; CHECK-NEXT:    add r0, lr, #920
57 ; CHECK-NEXT:    mov r2, sp
58 ; CHECK-NEXT:    add r0, r0, #12
59 ; CHECK-NEXT:  .LBB1_1: @ =>This Inner Loop Header: Depth=1
60 ; CHECK-NEXT:    ldr r3, [r0], #4
61 ; CHECK-NEXT:    subs r1, r1, #4
62 ; CHECK-NEXT:    str r3, [r2], #4
63 ; CHECK-NEXT:    bne .LBB1_1
64 ; CHECK-NEXT:  @ %bb.2:
65 ; CHECK-NEXT:    ldr r1, [sp, #3992]
66 ; CHECK-NEXT:    mov r0, #0
67 ; CHECK-NEXT:    ldr r2, [sp, #3996]
68 ; CHECK-NEXT:    ldr r3, [sp, #4000]
69 ; CHECK-NEXT:    bl func_4000
70 ; CHECK-NEXT:    add sp, sp, #920
71 ; CHECK-NEXT:    add sp, sp, #3072
72 ; CHECK-NEXT:    add sp, sp, #4000
73 ; CHECK-NEXT:    pop {r11, lr}
74 ; CHECK-NEXT:    mov pc, lr
75 ; CHECK-NEXT:    .p2align 2
76 ; CHECK-NEXT:  @ %bb.3:
77 ; CHECK-NEXT:  .LCPI1_0:
78 ; CHECK-NEXT:    .long 3988 @ 0xf94
79   %a = alloca %type_4000
80   call void @func_4000(ptr null, ptr %a)
81   ret void