brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · f66245b Raw
39 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --extra_scrub --version 32; REQUIRES: asserts3; RUN: llc -verify-machineinstrs -max-registers-for-gc-values=256 -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s4 5; Verify that FixupStatepointCallerSaved pass uses correct intruction for spilling a register after copyprop6define dso_local ptr addrspace(1) @foo(ptr addrspace(1) %arg) gc "statepoint-example" personality ptr null {7; CHECK-LABEL: foo:8; CHECK:       .Lfunc_begin0:9; CHECK-NEXT:    .cfi_startproc10; CHECK-NEXT:  // %bb.0:11; CHECK-NEXT:    sub sp, sp, #4812; CHECK-NEXT:    stp x30, x19, [sp, #32] // 16-byte Folded Spill13; CHECK-NEXT:    .cfi_def_cfa_offset 4814; CHECK-NEXT:    .cfi_offset w19, -815; CHECK-NEXT:    .cfi_offset w30, -1616; CHECK-NEXT:    ldr q0, [x0]17; CHECK-NEXT:    str q0, [sp, #16]18; CHECK-NEXT:    str d0, [sp, #8] // 8-byte Spill19; CHECK-NEXT:    bl baz // 8-byte Folded Reload20; CHECK-NEXT:  .Ltmp0:21; CHECK-NEXT:    ldp x19, x0, [sp, #8] // 8-byte Folded Reload22; CHECK-NEXT:    ldp x30, x19, [sp, #32] // 16-byte Folded Reload23; CHECK-NEXT:    add sp, sp, #4824; CHECK-NEXT:    ret25  %load = load <2 x ptr addrspace(1)>, ptr addrspace(1) %arg, align 826  %extractelement = extractelement <2 x ptr addrspace(1)> %load, i64 027  %call = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void ()) @baz, i32 0, i32 0, i32 0, i32 0) [ "deopt"(ptr addrspace(1) %extractelement), "gc-live"(<2 x ptr addrspace(1)> %load) ]28  %relocate = call coldcc <2 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v2p1(token %call, i32 0, i32 0)29  %extractelement2 = extractelement <2 x ptr addrspace(1)> %relocate, i64 030  ret ptr addrspace(1) %extractelement231}32 33declare void @baz()34declare token @llvm.experimental.gc.statepoint.p0(i64, i32, ptr, i32, i32, ...)35; Function Attrs: nocallback nofree nosync nounwind willreturn memory(none)36declare <2 x ptr addrspace(1)> @llvm.experimental.gc.relocate.v2p1(token, i32, i32) #037 38attributes #0 = { nocallback nofree nosync nounwind willreturn memory(none) }39