73 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64 -relocation-model=static < %s | \3; RUN: FileCheck --check-prefixes=COMMON,STATIC %s4; RUN: llc -mtriple=x86_64 -relocation-model=pic < %s | \5; RUN: FileCheck --check-prefixes=COMMON,CHECK %s6 7;; Test that we use the local alias for dso_local functions in inline assembly.8 9@gv0 = dso_local global i32 010@gv1 = dso_preemptable global i32 111 12define i64 @test_var() nounwind {13; STATIC-LABEL: test_var:14; STATIC: # %bb.0: # %entry15; STATIC-NEXT: movq gv1@GOTPCREL(%rip), %rax16; STATIC-NEXT: #APP17; STATIC-NEXT: movq gv0(%rip), %rax18; STATIC-NEXT: movq (%rax), %rax19; STATIC-NEXT: #NO_APP20; STATIC-NEXT: retq21;22; CHECK-LABEL: test_var:23; CHECK: # %bb.0: # %entry24; CHECK-NEXT: movq gv1@GOTPCREL(%rip), %rax25; CHECK-NEXT: #APP26; CHECK-NEXT: movq .Lgv0$local(%rip), %rax27; CHECK-NEXT: movq (%rax), %rax28; CHECK-NEXT: #NO_APP29; CHECK-NEXT: retq30entry:31 %0 = tail call i64 asm "movq $1, $0\0Amovq $2, $0", "=r,*m,*m"(ptr elementtype(i32) @gv0, ptr elementtype(i32) @gv1)32 ret i64 %033}34 35define dso_local void @fun0() nounwind {36; COMMON-LABEL: fun0:37; COMMON: # %bb.0: # %entry38; COMMON-NEXT: retq39entry:40 ret void41}42 43define dso_preemptable void @fun1() nounwind {44; COMMON-LABEL: fun1:45; COMMON: # %bb.0: # %entry46; COMMON-NEXT: retq47entry:48 ret void49}50 51define i64 @test_fun() nounwind {52; STATIC-LABEL: test_fun:53; STATIC: # %bb.0: # %entry54; STATIC-NEXT: movq fun1@GOTPCREL(%rip), %rax55; STATIC-NEXT: #APP56; STATIC-NEXT: movq fun0(%rip), %rax57; STATIC-NEXT: movq (%rax), %rax58; STATIC-NEXT: #NO_APP59; STATIC-NEXT: retq60;61; CHECK-LABEL: test_fun:62; CHECK: # %bb.0: # %entry63; CHECK-NEXT: movq fun1@GOTPCREL(%rip), %rax64; CHECK-NEXT: #APP65; CHECK-NEXT: movq .Lfun0$local(%rip), %rax66; CHECK-NEXT: movq (%rax), %rax67; CHECK-NEXT: #NO_APP68; CHECK-NEXT: retq69entry:70 %0 = tail call i64 asm "movq $1, $0\0Amovq $2, $0", "=r,*m,*m"(ptr elementtype(void ()) nonnull @fun0, ptr elementtype(void ()) nonnull @fun1)71 ret i64 %072}73