brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 5541a7c Raw
48 lines · plain
1; RUN: llc -mtriple=thumbv6m-linux-eabi      -mattr=+execute-only %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-NOMOVW-SIZE,CHECK-NOMOVW-LIMIT2; RUN: llc -mtriple=thumbv8m.base-linux-eabi -mattr=+execute-only %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-MOVW-SIZE,CHECK-MOVW-LIMIT3; RUN: llc -mtriple=thumbv7m-linux-eabi      -mattr=+execute-only %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-MOVW-SIZE,CHECK-MRC-LIMIT4; RUN: llc -mtriple=thumbv8m.main-linux-eabi -mattr=+execute-only %s -o - | FileCheck %s --check-prefixes=CHECK,CHECK-MOVW-SIZE,CHECK-MRC-LIMIT5 6%struct.large_struct = type { [500 x i8] }7declare void @fn(ptr)8 9; CHECK-LABEL:             test:10; CHECK:                   mov  [[SP:r[0-9]+]], sp11; CHECK-MOVW-SIZE-NEXT:    movw [[SIZE:r[0-9]+]], #403212; CHECK-NOMOVW-SIZE-NEXT:  movs [[SIZE:r[0-9]+]], #1513; CHECK-NOMOVW-SIZE-NEXT:  lsls [[SIZE]], [[SIZE]], #814; CHECK-NOMOVW-SIZE-NEXT:  adds [[SIZE]], #19215; CHECK-NEXT:              sub{{s?}} [[SP]], [[SP]], [[SIZE]]16; CHECK-MOVW-LIMIT-NEXT:   movw [[LIMIT:r[0-9]+]], :lower16:__STACK_LIMIT17; CHECK-MOVW-LIMIT-NEXT:   movt [[LIMIT]], :upper16:__STACK_LIMIT18; CHECK-NOMOVW-LIMIT-NEXT: movs [[LIMIT:r[0-9]+]], :upper8_15:__STACK_LIMIT19; CHECK-NOMOVW-LIMIT-NEXT: lsls [[LIMIT]], [[LIMIT]], #820; CHECK-NOMOVW-LIMIT-NEXT: adds [[LIMIT]], :upper0_7:__STACK_LIMIT21; CHECK-NOMOVW-LIMIT-NEXT: lsls [[LIMIT]], [[LIMIT]], #822; CHECK-NOMOVW-LIMIT-NEXT: adds [[LIMIT]], :lower8_15:__STACK_LIMIT23; CHECK-NOMOVW-LIMIT-NEXT: lsls [[LIMIT]], [[LIMIT]], #824; CHECK-NOMOVW-LIMIT-NEXT: adds [[LIMIT]], :lower0_7:__STACK_LIMIT25; CHECK-MRC-LIMIT-NEXT:    p15, #0, [[LIMIT:r[0-9]+]], c13, c0, #326; CHECK-NEXT:              ldr [[LIMIT]], [[[LIMIT]]{{.*}}]27; CHECK-NEXT:              cmp [[LIMIT]], [[SP]]28; CHECK-NEXT:              bls29; CHECK-NEXT:              @{{.*}}:30; CHECK-MOVW-SIZE-NEXT:    movw r4, #403231; CHECK-NOMOVW-SIZE-NEXT:  movs r4, #1532; CHECK-NOMOVW-SIZE-NEXT:  lsls r4, r4, #833; CHECK-NOMOVW-SIZE-NEXT:  adds r4, #19234; CHECK-MOVW-SIZE-NEXT:    movw r5, #48435; CHECK-NOMOVW-SIZE-NEXT:  movs r5, #136; CHECK-NOMOVW-SIZE-NEXT:  lsls r5, r5, #837; CHECK-NOMOVW-SIZE-NEXT:  adds r5, #22838; CHECK-NEXT:              push {lr}39; CHECK-NEXT:              bl __morestack40 41define void @test(ptr byval(%struct.large_struct) align 4 %arg) #0 {42  %ptr = alloca i32, i32 100043  call void @fn(ptr %ptr)44  ret void45}46 47attributes #0 = { "split-stack" }48