brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · b837d63 Raw
191 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=thumb-linux-androideabi -mcpu=arm1156t2-s -mattr=+thumb2 -verify-machineinstrs | FileCheck %s -check-prefix=THUMB3; RUN: llc < %s -mtriple=arm-linux-androideabi -mcpu=arm1156t2-s -verify-machineinstrs | FileCheck %s -check-prefix=ARM4 5 6; Just to prevent the alloca from being optimized away7declare void @dummy_use(ptr, i32)8 9define void @test_basic() #0 {10; THUMB-LABEL: test_basic:11; THUMB:       @ %bb.0:12; THUMB-NEXT:    push {r4, r5}13; THUMB-NEXT:    mrc p15, #0, r4, c13, c0, #314; THUMB-NEXT:    mov r5, sp15; THUMB-NEXT:    ldr.w r4, [r4, #252]16; THUMB-NEXT:    cmp r4, r517; THUMB-NEXT:    bls .LBB0_218; THUMB-NEXT:  @ %bb.1:19; THUMB-NEXT:    mov r4, #4820; THUMB-NEXT:    mov r5, #021; THUMB-NEXT:    push {lr}22; THUMB-NEXT:    bl __morestack23; THUMB-NEXT:    ldr lr, [sp], #424; THUMB-NEXT:    pop {r4, r5}25; THUMB-NEXT:    bx lr26; THUMB-NEXT:  .LBB0_2:27; THUMB-NEXT:    pop {r4, r5}28; THUMB-NEXT:    .save {r7, lr}29; THUMB-NEXT:    push {r7, lr}30; THUMB-NEXT:    .pad #4031; THUMB-NEXT:    sub sp, #4032; THUMB-NEXT:    mov r0, sp33; THUMB-NEXT:    movs r1, #1034; THUMB-NEXT:    bl dummy_use35; THUMB-NEXT:    add sp, #4036; THUMB-NEXT:    pop {r7, pc}37;38; ARM-LABEL: test_basic:39; ARM:       @ %bb.0:40; ARM-NEXT:    push {r4, r5}41; ARM-NEXT:    mrc p15, #0, r4, c13, c0, #342; ARM-NEXT:    mov r5, sp43; ARM-NEXT:    ldr r4, [r4, #252]44; ARM-NEXT:    cmp r4, r545; ARM-NEXT:    bls .LBB0_246; ARM-NEXT:  @ %bb.1:47; ARM-NEXT:    mov r4, #4848; ARM-NEXT:    mov r5, #049; ARM-NEXT:    stmdb sp!, {lr}50; ARM-NEXT:    bl __morestack51; ARM-NEXT:    ldm sp!, {lr}52; ARM-NEXT:    pop {r4, r5}53; ARM-NEXT:    bx lr54; ARM-NEXT:  .LBB0_2:55; ARM-NEXT:    pop {r4, r5}56; ARM-NEXT:    .save {r11, lr}57; ARM-NEXT:    push {r11, lr}58; ARM-NEXT:    .pad #4059; ARM-NEXT:    sub sp, sp, #4060; ARM-NEXT:    mov r0, sp61; ARM-NEXT:    mov r1, #1062; ARM-NEXT:    bl dummy_use63; ARM-NEXT:    add sp, sp, #4064; ARM-NEXT:    pop {r11, pc}65  %mem = alloca i32, i32 1066  call void @dummy_use (ptr %mem, i32 10)67  ret void68}69 70define void @test_large() #0 {71        %mem = alloca i32, i32 1000072        call void @dummy_use (ptr %mem, i32 0)73        ret void74 75; THUMB-LABEL:   test_large:76 77; THUMB:         push    {r4, r5}78; THUMB-NEXT:    mov     r5, sp79; THUMB-NEXT:    movw    r4, #4019280; THUMB-NEXT:    sub     r5, r5, r481; THUMB-NEXT:    mrc     p15, #0, r4, c13, c0, #382; THUMB-NEXT:    ldr.w   r4, [r4, #252]83; THUMB-NEXT:    cmp     r4, r584; THUMB-NEXT:    bls     .LBB1_285 86; THUMB:         movw    r4, #4019287; THUMB-NEXT:    mov     r5, #088; THUMB-NEXT:    push    {lr}89; THUMB-NEXT:    bl      __morestack90; THUMB-NEXT:    ldr     lr, [sp], #491; THUMB-NEXT:    pop     {r4, r5}92; THUMB-NEXT:    bx      lr93 94; THUMB:         pop     {r4, r5}95 96 97; ARM-LABEL:   test_large:98 99; ARM:         push    {r4, r5}100; ARM-NEXT:    ldr     r4, .LCPI1_0101; ARM-NEXT:    sub     r5, sp, r4102; ARM-NEXT:    mrc     p15, #0, r4, c13, c0, #3103; ARM-NEXT:    ldr     r4, [r4, #252]104; ARM-NEXT:    cmp     r4, r5105; ARM-NEXT:    bls     .LBB1_2106 107; ARM:         ldr     r4, .LCPI1_0108; ARM-NEXT:    mov     r5, #0109; ARM-NEXT:    stmdb   sp!, {lr}110; ARM-NEXT:    bl      __morestack111; ARM-NEXT:    ldm     sp!, {lr}112; ARM-NEXT:    pop     {r4, r5}113; ARM-NEXT:    bx      lr114 115; ARM:         pop     {r4, r5}116 117; ARM:         .LCPI1_0:118; ARM-NEXT:    .long   40192119 120}121 122define fastcc void @test_fastcc_large() #0 {123        %mem = alloca i32, i32 10000124        call void @dummy_use (ptr %mem, i32 0)125        ret void126 127; THUMB-LABEL:   test_fastcc_large:128 129; THUMB:         push    {r4, r5}130; THUMB-NEXT:    mov     r5, sp131; THUMB-NEXT:    movw    r4, #40192132; THUMB-NEXT:    sub     r5, r5, r4133; THUMB-NEXT:    mrc     p15, #0, r4, c13, c0, #3134; THUMB-NEXT:    ldr.w   r4, [r4, #252]135; THUMB-NEXT:    cmp     r4, r5136; THUMB-NEXT:    bls     .LBB2_2137 138; THUMB:         movw    r4, #40192139; THUMB-NEXT:    mov     r5, #0140; THUMB-NEXT:    push    {lr}141; THUMB-NEXT:    bl      __morestack142; THUMB-NEXT:    ldr     lr, [sp], #4143; THUMB-NEXT:    pop     {r4, r5}144; THUMB-NEXT:    bx      lr145 146; THUMB:         pop     {r4, r5}147 148; ARM-LABEL:   test_fastcc_large:149 150; ARM:         push    {r4, r5}151; ARM-NEXT:    ldr     r4, .LCPI2_0152; ARM-NEXT:    sub     r5, sp, r4153; ARM-NEXT:    mrc     p15, #0, r4, c13, c0, #3154; ARM-NEXT:    ldr     r4, [r4, #252]155; ARM-NEXT:    cmp     r4, r5156; ARM-NEXT:    bls     .LBB2_2157 158; ARM:         ldr     r4, .LCPI2_0159; ARM-NEXT:    mov     r5, #0160; ARM-NEXT:    stmdb   sp!, {lr}161; ARM-NEXT:    bl      __morestack162; ARM-NEXT:    ldm     sp!, {lr}163; ARM-NEXT:    pop     {r4, r5}164; ARM-NEXT:    bx      lr165 166; ARM:         .LCPI2_0:167; ARM-NEXT:    .long   40192168}169 170 171declare void @panic() unnamed_addr172 173; We used to crash while compiling the following function.174; THUMB-LABEL: build_should_not_segfault:175; ARM-LABEL: build_should_not_segfault:176define void @build_should_not_segfault(i8 %x) unnamed_addr #0 {177start:178  %_0 = icmp ult i8 %x, 16179  %or.cond = select i1 undef, i1 true, i1 %_0180  br i1 %or.cond, label %bb1, label %bb2181 182bb1:183  ret void184 185bb2:186  call void @panic()187  unreachable188}189 190attributes #0 = { "split-stack" }191