| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc -mtriple=x86_64-linux-gnu -fast-isel -fast-isel-abort=3 -code-model=medium -large-data-threshold=5 < %s | FileCheck %s |
| ; RUN: llc -mtriple=x86_64-linux-gnu -fast-isel -code-model=medium -large-data-threshold=3 < %s -o /dev/null \ |
| ; RUN: -pass-remarks-output=- -pass-remarks-filter=sdagisel | FileCheck %s --check-prefix=FALLBACK --implicit-check-not=missed |
| |
| declare void @foo() |
| |
| define void @call_foo() { |
| ; CHECK-LABEL: call_foo: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: pushq %rax |
| ; CHECK-NEXT: .cfi_def_cfa_offset 16 |
| ; CHECK-NEXT: callq foo@PLT |
| ; CHECK-NEXT: popq %rax |
| ; CHECK-NEXT: .cfi_def_cfa_offset 8 |
| ; CHECK-NEXT: retq |
| call void @foo() |
| ret void |
| } |
| |
| @g = internal global i32 42 |
| |
| ; FALLBACK: FastISel missed terminator |
| ; FALLBACK: in function: g_addr |
| |
| define ptr @g_addr() { |
| ; CHECK-LABEL: g_addr: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: movabsq $g, %rax |
| ; CHECK-NEXT: retq |
| ret ptr @g |
| } |
| |
| ; FALLBACK: FastISel missed |
| ; FALLBACK: in function: load_g |
| |
| define i32 @load_g() { |
| ; CHECK-LABEL: load_g: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: movl g, %eax |
| ; CHECK-NEXT: retq |
| %i = load i32, ptr @g |
| ret i32 %i |
| } |