xref: /llvm-project/llvm/test/CodeGen/X86/fast-isel-medium-code-model.ll (revision c64334fb30f8a8087c218b6d7ec954ad47b33947)
1*c64334fbSArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*c64334fbSArthur Eubanks; RUN: llc -mtriple=x86_64-linux-gnu -fast-isel -fast-isel-abort=3 -code-model=medium -large-data-threshold=5 < %s | FileCheck %s
3*c64334fbSArthur Eubanks; RUN: llc -mtriple=x86_64-linux-gnu -fast-isel -code-model=medium -large-data-threshold=3 < %s -o /dev/null \
4*c64334fbSArthur Eubanks; RUN:   -pass-remarks-output=- -pass-remarks-filter=sdagisel | FileCheck %s --check-prefix=FALLBACK --implicit-check-not=missed
5*c64334fbSArthur Eubanks
6*c64334fbSArthur Eubanksdeclare void @foo()
7*c64334fbSArthur Eubanks
8*c64334fbSArthur Eubanksdefine void @call_foo() {
9*c64334fbSArthur Eubanks; CHECK-LABEL: call_foo:
10*c64334fbSArthur Eubanks; CHECK:       # %bb.0:
11*c64334fbSArthur Eubanks; CHECK-NEXT:    pushq %rax
12*c64334fbSArthur Eubanks; CHECK-NEXT:    .cfi_def_cfa_offset 16
13*c64334fbSArthur Eubanks; CHECK-NEXT:    callq foo@PLT
14*c64334fbSArthur Eubanks; CHECK-NEXT:    popq %rax
15*c64334fbSArthur Eubanks; CHECK-NEXT:    .cfi_def_cfa_offset 8
16*c64334fbSArthur Eubanks; CHECK-NEXT:    retq
17*c64334fbSArthur Eubanks  call void @foo()
18*c64334fbSArthur Eubanks  ret void
19*c64334fbSArthur Eubanks}
20*c64334fbSArthur Eubanks
21*c64334fbSArthur Eubanks@g = internal global i32 42
22*c64334fbSArthur Eubanks
23*c64334fbSArthur Eubanks; FALLBACK: FastISel missed terminator
24*c64334fbSArthur Eubanks; FALLBACK: in function: g_addr
25*c64334fbSArthur Eubanks
26*c64334fbSArthur Eubanksdefine ptr @g_addr() {
27*c64334fbSArthur Eubanks; CHECK-LABEL: g_addr:
28*c64334fbSArthur Eubanks; CHECK:       # %bb.0:
29*c64334fbSArthur Eubanks; CHECK-NEXT:    movabsq $g, %rax
30*c64334fbSArthur Eubanks; CHECK-NEXT:    retq
31*c64334fbSArthur Eubanks  ret ptr @g
32*c64334fbSArthur Eubanks}
33*c64334fbSArthur Eubanks
34*c64334fbSArthur Eubanks; FALLBACK: FastISel missed
35*c64334fbSArthur Eubanks; FALLBACK: in function: load_g
36*c64334fbSArthur Eubanks
37*c64334fbSArthur Eubanksdefine i32 @load_g() {
38*c64334fbSArthur Eubanks; CHECK-LABEL: load_g:
39*c64334fbSArthur Eubanks; CHECK:       # %bb.0:
40*c64334fbSArthur Eubanks; CHECK-NEXT:    movl g, %eax
41*c64334fbSArthur Eubanks; CHECK-NEXT:    retq
42*c64334fbSArthur Eubanks  %i = load i32, ptr @g
43*c64334fbSArthur Eubanks  ret i32 %i
44*c64334fbSArthur Eubanks}
45