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