106 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-macho-enable-nonlazybind | FileCheck %s --check-prefix=MACHO3; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=MACHO-NORMAL4; RUN: llc -mtriple=aarch64 -fast-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-FI5; RUN: llc -mtriple=aarch64 -global-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-GI6; RUN: llc -mtriple=aarch64 %s -o - | FileCheck %s --check-prefixes=ELF,ELF-SDAG7 8declare void @external() nonlazybind9 10define void @test_laziness(ptr %a) nounwind {11;12; MACHO-LABEL: test_laziness:13; MACHO: ; %bb.0:14; MACHO-NEXT: stp x20, x19, [sp, #-32]! ; 16-byte Folded Spill15; MACHO-NEXT: stp x29, x30, [sp, #16] ; 16-byte Folded Spill16; MACHO-NEXT: Lloh0:17; MACHO-NEXT: adrp x8, _external@GOTPAGE18; MACHO-NEXT: mov x19, x019; MACHO-NEXT: Lloh1:20; MACHO-NEXT: ldr x8, [x8, _external@GOTPAGEOFF]21; MACHO-NEXT: blr x822; MACHO-NEXT: Lloh2:23; MACHO-NEXT: adrp x8, _memset@GOTPAGE24; MACHO-NEXT: mov x0, x1925; MACHO-NEXT: mov w1, #1 ; =0x126; MACHO-NEXT: Lloh3:27; MACHO-NEXT: ldr x8, [x8, _memset@GOTPAGEOFF]28; MACHO-NEXT: mov w2, #1000 ; =0x3e829; MACHO-NEXT: blr x830; MACHO-NEXT: ldp x29, x30, [sp, #16] ; 16-byte Folded Reload31; MACHO-NEXT: ldp x20, x19, [sp], #32 ; 16-byte Folded Reload32; MACHO-NEXT: ret33; MACHO-NEXT: .loh AdrpLdrGot Lloh2, Lloh334; MACHO-NEXT: .loh AdrpLdrGot Lloh0, Lloh135;36; MACHO-NORMAL-LABEL: test_laziness:37; MACHO-NORMAL: ; %bb.0:38; MACHO-NORMAL-NEXT: stp x20, x19, [sp, #-32]! ; 16-byte Folded Spill39; MACHO-NORMAL-NEXT: stp x29, x30, [sp, #16] ; 16-byte Folded Spill40; MACHO-NORMAL-NEXT: mov x19, x041; MACHO-NORMAL-NEXT: bl _external42; MACHO-NORMAL-NEXT: Lloh0:43; MACHO-NORMAL-NEXT: adrp x8, _memset@GOTPAGE44; MACHO-NORMAL-NEXT: mov x0, x1945; MACHO-NORMAL-NEXT: mov w1, #1 ; =0x146; MACHO-NORMAL-NEXT: Lloh1:47; MACHO-NORMAL-NEXT: ldr x8, [x8, _memset@GOTPAGEOFF]48; MACHO-NORMAL-NEXT: mov w2, #1000 ; =0x3e849; MACHO-NORMAL-NEXT: blr x850; MACHO-NORMAL-NEXT: ldp x29, x30, [sp, #16] ; 16-byte Folded Reload51; MACHO-NORMAL-NEXT: ldp x20, x19, [sp], #32 ; 16-byte Folded Reload52; MACHO-NORMAL-NEXT: ret53; MACHO-NORMAL-NEXT: .loh AdrpLdrGot Lloh0, Lloh154;55; ELF-LABEL: test_laziness:56; ELF: // %bb.0:57; ELF-NEXT: stp x30, x19, [sp, #-16]! // 16-byte Folded Spill58; ELF-NEXT: adrp x8, :got:external59; ELF-NEXT: mov x19, x060; ELF-NEXT: ldr x8, [x8, :got_lo12:external]61; ELF-NEXT: blr x862; ELF-NEXT: adrp x8, :got:memset63; ELF-NEXT: mov x0, x1964; ELF-NEXT: mov w1, #1 // =0x165; ELF-NEXT: ldr x8, [x8, :got_lo12:memset]66; ELF-NEXT: mov w2, #1000 // =0x3e867; ELF-NEXT: blr x868; ELF-NEXT: ldp x30, x19, [sp], #16 // 16-byte Folded Reload69; ELF-NEXT: ret70 call void @external()71 call void @llvm.memset.p0.i64(ptr align 1 %a, i8 1, i64 1000, i1 false)72 ret void73}74 75define void @test_laziness_tail() nounwind {76; MACHO-LABEL: test_laziness_tail:77; MACHO: ; %bb.0:78; MACHO-NEXT: Lloh4:79; MACHO-NEXT: adrp x0, _external@GOTPAGE80; MACHO-NEXT: Lloh5:81; MACHO-NEXT: ldr x0, [x0, _external@GOTPAGEOFF]82; MACHO-NEXT: br x083; MACHO-NEXT: .loh AdrpLdrGot Lloh4, Lloh584;85; MACHO-NORMAL-LABEL: test_laziness_tail:86; MACHO-NORMAL: ; %bb.0:87; MACHO-NORMAL-NEXT: b _external88;89; ELF-LABEL: test_laziness_tail:90; ELF: // %bb.0:91; ELF-NEXT: adrp x0, :got:external92; ELF-NEXT: ldr x0, [x0, :got_lo12:external]93; ELF-NEXT: br x094 tail call void @external()95 ret void96}97 98declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)99 100!llvm.module.flags = !{!0}101!0 = !{i32 7, !"RtLibUseGOT", i32 1}102;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:103; ELF-FI: {{.*}}104; ELF-GI: {{.*}}105; ELF-SDAG: {{.*}}106