[llvm] f9614b3 - [AArch64] Improve nonlazybind test

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 20 22:16:33 PST 2024


Author: Fangrui Song
Date: 2024-01-20T22:16:29-08:00
New Revision: f9614b328ad502cecfeb0d923f7abda30173d4be

URL: https://github.com/llvm/llvm-project/commit/f9614b328ad502cecfeb0d923f7abda30173d4be
DIFF: https://github.com/llvm/llvm-project/commit/f9614b328ad502cecfeb0d923f7abda30173d4be.diff

LOG: [AArch64] Improve nonlazybind test

Prepare for -fno-plt implementation.

Added: 
    

Modified: 
    llvm/test/CodeGen/AArch64/nonlazybind.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/AArch64/nonlazybind.ll b/llvm/test/CodeGen/AArch64/nonlazybind.ll
index 7f5701495ef9204..faf4a1bb84037fc 100644
--- a/llvm/test/CodeGen/AArch64/nonlazybind.ll
+++ b/llvm/test/CodeGen/AArch64/nonlazybind.ll
@@ -1,40 +1,102 @@
-; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-enable-nonlazybind | FileCheck %s
-; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=CHECK-NORMAL
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
+; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-enable-nonlazybind | FileCheck %s --check-prefix=MACHO
+; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=MACHO-NORMAL
+; RUN: llc -mtriple=aarch64 -fast-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-FI
+; RUN: llc -mtriple=aarch64 -global-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-GI
+; RUN: llc -mtriple=aarch64 %s -o - | FileCheck %s --check-prefixes=ELF,ELF-SDAG
 
-define void @local() nonlazybind {
+define dso_preemptable void @preemptable() nonlazybind {
+; MACHO-LABEL: preemptable:
+; MACHO:       ; %bb.0:
+; MACHO-NEXT:    ret
+;
+; MACHO-NORMAL-LABEL: preemptable:
+; MACHO-NORMAL:       ; %bb.0:
+; MACHO-NORMAL-NEXT:    ret
+;
+; ELF-LABEL: preemptable:
+; ELF:       // %bb.0:
+; ELF-NEXT:    ret
   ret void
 }
 
-declare void @nonlocal() nonlazybind
-
-define void @test_laziness() {
-; CHECK-LABEL: test_laziness:
-
-; CHECK: bl _local
-
-; CHECK: adrp x[[TMP:[0-9]+]], _nonlocal at GOTPAGE
-; CHECK: ldr [[FUNC:x[0-9]+]], [x[[TMP]], _nonlocal at GOTPAGEOFF]
-; CHECK: blr [[FUNC]]
+define dso_local void @local() nonlazybind {
+; MACHO-LABEL: local:
+; MACHO:       ; %bb.0:
+; MACHO-NEXT:    ret
+;
+; MACHO-NORMAL-LABEL: local:
+; MACHO-NORMAL:       ; %bb.0:
+; MACHO-NORMAL-NEXT:    ret
+;
+; ELF-LABEL: local:
+; ELF:       // %bb.0:
+; ELF-NEXT:    ret
+  ret void
+}
 
-; CHECK-NORMAL-LABEL: test_laziness:
-; CHECK-NORMAL: bl _local
-; CHECK-NORMAL: bl _nonlocal
+declare void @external() nonlazybind
 
+define void @test_laziness() nounwind {
+;
+; MACHO-LABEL: test_laziness:
+; MACHO:       ; %bb.0:
+; MACHO-NEXT:    stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
+; MACHO-NEXT:    bl _preemptable
+; MACHO-NEXT:    bl _local
+; MACHO-NEXT:  Lloh0:
+; MACHO-NEXT:    adrp x8, _external at GOTPAGE
+; MACHO-NEXT:  Lloh1:
+; MACHO-NEXT:    ldr x8, [x8, _external at GOTPAGEOFF]
+; MACHO-NEXT:    blr x8
+; MACHO-NEXT:    ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
+; MACHO-NEXT:    ret
+; MACHO-NEXT:    .loh AdrpLdrGot Lloh0, Lloh1
+;
+; MACHO-NORMAL-LABEL: test_laziness:
+; MACHO-NORMAL:       ; %bb.0:
+; MACHO-NORMAL-NEXT:    stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
+; MACHO-NORMAL-NEXT:    bl _preemptable
+; MACHO-NORMAL-NEXT:    bl _local
+; MACHO-NORMAL-NEXT:    bl _external
+; MACHO-NORMAL-NEXT:    ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
+; MACHO-NORMAL-NEXT:    ret
+;
+; ELF-LABEL: test_laziness:
+; ELF:       // %bb.0:
+; ELF-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill
+; ELF-NEXT:    bl preemptable
+; ELF-NEXT:    bl local
+; ELF-NEXT:    bl external
+; ELF-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload
+; ELF-NEXT:    ret
+  call void @preemptable()
   call void @local()
-  call void @nonlocal()
+  call void @external()
   ret void
 }
 
-define void @test_laziness_tail() {
-; CHECK-LABEL: test_laziness_tail:
-
-; CHECK: adrp x[[TMP:[0-9]+]], _nonlocal at GOTPAGE
-; CHECK: ldr [[FUNC:x[0-9]+]], [x[[TMP]], _nonlocal at GOTPAGEOFF]
-; CHECK: br [[FUNC]]
-
-; CHECK-NORMAL-LABEL: test_laziness_tail:
-; CHECK-NORMAL: b _nonlocal
-
-  tail call void @nonlocal()
+define void @test_laziness_tail() nounwind {
+; MACHO-LABEL: test_laziness_tail:
+; MACHO:       ; %bb.0:
+; MACHO-NEXT:  Lloh2:
+; MACHO-NEXT:    adrp x0, _external at GOTPAGE
+; MACHO-NEXT:  Lloh3:
+; MACHO-NEXT:    ldr x0, [x0, _external at GOTPAGEOFF]
+; MACHO-NEXT:    br x0
+; MACHO-NEXT:    .loh AdrpLdrGot Lloh2, Lloh3
+;
+; MACHO-NORMAL-LABEL: test_laziness_tail:
+; MACHO-NORMAL:       ; %bb.0:
+; MACHO-NORMAL-NEXT:    b _external
+;
+; ELF-LABEL: test_laziness_tail:
+; ELF:       // %bb.0:
+; ELF-NEXT:    b external
+  tail call void @external()
   ret void
 }
+;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+; ELF-FI: {{.*}}
+; ELF-GI: {{.*}}
+; ELF-SDAG: {{.*}}


        


More information about the llvm-commits mailing list