xref: /llvm-project/llvm/test/CodeGen/AArch64/arm64ec-dllimport.ll (revision a6065f0fa55aaf694b5f85ecad7badec5cc02425)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=arm64ec-pc-windows-msvc -arm64ec-generate-thunks=false < %s | FileCheck %s
3
4@a = external dllimport global i32
5declare dllimport void @b()
6
7define ptr @dllimport_var() nounwind {
8; CHECK-LABEL: dllimport_var:
9; CHECK:       // %bb.0:
10; CHECK-NEXT:    adrp x0, __imp_a
11; CHECK-NEXT:    ldr x0, [x0, :lo12:__imp_a]
12; CHECK-NEXT:    ret
13  ret ptr @a
14}
15
16define ptr @dllimport_fn() nounwind {
17; CHECK-LABEL: dllimport_fn:
18; CHECK:       // %bb.0:
19; CHECK-NEXT:    .globl __imp_b
20; CHECK-NEXT:    adrp x0, __imp_aux_b
21; CHECK-NEXT:    .globl __imp_b
22; CHECK-NEXT:    ldr x0, [x0, :lo12:__imp_aux_b]
23; CHECK-NEXT:    ret
24  ret ptr @b
25}
26
27define void @dllimport_fn_call() nounwind {
28; CHECK-LABEL: dllimport_fn_call:
29; CHECK:       // %bb.0:
30; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
31; CHECK-NEXT:    adrp x8, __imp_b
32; CHECK-NEXT:    ldr x8, [x8, :lo12:__imp_b]
33; CHECK-NEXT:    blr x8
34; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
35; CHECK-NEXT:    ret
36  call void @b()
37  ret void
38}
39