brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 7c2d413 Raw
62 lines · plain
1; RUN: llc -mtriple thumbv7-windows -filetype asm -o - %s | FileCheck %s2 3; ModuleID = 'dllimport.c'4 5@var = external dllimport global i326@ext = external global i327declare dllimport arm_aapcs_vfpcc i32 @external()8declare arm_aapcs_vfpcc i32 @internal()9 10define arm_aapcs_vfpcc i32 @get_var() {11  %1 = load i32, ptr @var, align 412  ret i32 %113}14 15; CHECK-LABEL: get_var16; CHECK: movw r0, :lower16:__imp_var17; CHECK: movt r0, :upper16:__imp_var18; CHECK: ldr r0, [r0]19; CHECK: ldr r0, [r0]20; CHECK: bx lr21 22define arm_aapcs_vfpcc i32 @get_ext() {23  %1 = load i32, ptr @ext, align 424  ret i32 %125}26 27; CHECK-LABEL: get_ext28; CHECK: movw r0, :lower16:ext29; CHECK: movt r0, :upper16:ext30; CHECK: ldr r0, [r0]31; CHECK: bx lr32 33define arm_aapcs_vfpcc ptr @get_var_pointer() {34  ret ptr @var35}36 37; CHECK-LABEL: get_var_pointer38; CHECK:  movw r0, :lower16:__imp_var39; CHECK:  movt r0, :upper16:__imp_var40; CHECK:  ldr r0, [r0]41; CHECK:  bx lr42 43define arm_aapcs_vfpcc i32 @call_external() {44  %call = tail call arm_aapcs_vfpcc i32 @external()45  ret i32 %call46}47 48; CHECK-LABEL: call_external49; CHECK: movw r0, :lower16:__imp_external50; CHECK: movt r0, :upper16:__imp_external51; CHECK: ldr r0, [r0]52; CHECK: bx r053 54define arm_aapcs_vfpcc i32 @call_internal() {55  %call = tail call arm_aapcs_vfpcc i32 @internal()56  ret i32 %call57}58 59; CHECK-LABEL: call_internal60; CHECK: b.w internal61 62