[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