67 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc --fast-isel < %s -mtriple=x86_64-unknown-unknown | FileCheck %s3 4define i8 @test_direct_call(ptr %f) nounwind {5; CHECK-LABEL: test_direct_call:6; CHECK: # %bb.0: # %entry7; CHECK-NEXT: pushq %rax8; CHECK-NEXT: callq foo@PLT9; CHECK-NEXT: callq bar@PLT10; CHECK-NEXT: popq %rcx11; CHECK-NEXT: retq12entry:13 %call = call bfloat @foo(ptr %f)14 %call2 = call zeroext i8 @bar(bfloat %call)15 ret i8 %call216}17 18define i8 @test_fast_direct_call(ptr %f) nounwind {19; CHECK-LABEL: test_fast_direct_call:20; CHECK: # %bb.0: # %entry21; CHECK-NEXT: pushq %rax22; CHECK-NEXT: callq foo_fast@PLT23; CHECK-NEXT: callq bar@PLT24; CHECK-NEXT: popq %rcx25; CHECK-NEXT: retq26entry:27 %call = call fastcc bfloat @foo_fast(ptr %f)28 %call2 = call zeroext i8 @bar(bfloat %call)29 ret i8 %call230}31 32define i8 @test_indirect_all(ptr %fptr, ptr %f) nounwind {33; CHECK-LABEL: test_indirect_all:34; CHECK: # %bb.0: # %entry35; CHECK-NEXT: pushq %rbx36; CHECK-NEXT: movq %rdi, %rbx37; CHECK-NEXT: movq %rsi, %rdi38; CHECK-NEXT: callq foo@PLT39; CHECK-NEXT: callq *%rbx40; CHECK-NEXT: popq %rbx41; CHECK-NEXT: retq42entry:43 %call = call bfloat @foo(ptr %f)44 %call2 = call zeroext i8 %fptr(bfloat %call)45 ret i8 %call246}47 48define i8 @test_fast_indirect_all(ptr %fptr, ptr %f) nounwind {49; CHECK-LABEL: test_fast_indirect_all:50; CHECK: # %bb.0: # %entry51; CHECK-NEXT: pushq %rbx52; CHECK-NEXT: movq %rdi, %rbx53; CHECK-NEXT: movq %rsi, %rdi54; CHECK-NEXT: callq foo@PLT55; CHECK-NEXT: callq *%rbx56; CHECK-NEXT: popq %rbx57; CHECK-NEXT: retq58entry:59 %call = call fastcc bfloat @foo(ptr %f)60 %call2 = call zeroext i8 %fptr(bfloat %call)61 ret i8 %call262}63 64declare bfloat @foo(ptr %f)65declare zeroext i8 @bar(bfloat)66declare fastcc bfloat @foo_fast(ptr %f)67