1; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
2; RUN:   --debugify-and-strip-all-safe=0 \
3; RUN:   -verify-machineinstrs=0 -O0 \
4; RUN:   | FileCheck %s --check-prefixes=ENABLED,ENABLED-O0,FALLBACK
5
6; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
7; RUN:   --debugify-and-strip-all-safe=0 \
8; RUN:   -verify-machineinstrs -O0 \
9; RUN:   | FileCheck %s --check-prefixes=ENABLED,ENABLED-O0,FALLBACK,VERIFY,VERIFY-O0
10
11; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
12; RUN:   --debugify-and-strip-all-safe=0 \
13; RUN:   -verify-machineinstrs=0 -O0 -aarch64-enable-global-isel-at-O=0 -global-isel-abort=1 \
14; RUN:   | FileCheck %s --check-prefix ENABLED --check-prefix ENABLED-O0 --check-prefix NOFALLBACK
15
16; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
17; RUN:   --debugify-and-strip-all-safe=0 \
18; RUN:   -verify-machineinstrs=0 -O0 -aarch64-enable-global-isel-at-O=0 -global-isel-abort=2  \
19; RUN:   | FileCheck %s --check-prefix ENABLED --check-prefix ENABLED-O0 --check-prefix FALLBACK
20
21; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
22; RUN:   --debugify-and-strip-all-safe=0 \
23; RUN:   -verify-machineinstrs=0 -global-isel \
24; RUN:   | FileCheck %s --check-prefix ENABLED --check-prefix NOFALLBACK --check-prefix ENABLED-O1
25
26; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
27; RUN:   --debugify-and-strip-all-safe=0 \
28; RUN:   -verify-machineinstrs=0 -global-isel -global-isel-abort=2 \
29; RUN:   | FileCheck %s --check-prefix ENABLED --check-prefix FALLBACK  --check-prefix ENABLED-O1
30
31; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
32; RUN:   --debugify-and-strip-all-safe=0 \
33; RUN:   -verify-machineinstrs=0 -O1 -aarch64-enable-global-isel-at-O=3 \
34; RUN:   | FileCheck %s --check-prefix ENABLED  --check-prefix ENABLED-O1
35
36; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
37; RUN:   --debugify-and-strip-all-safe=0 \
38; RUN:   -verify-machineinstrs=0 -O1 -aarch64-enable-global-isel-at-O=0 \
39; RUN:   | FileCheck %s --check-prefix DISABLED
40
41; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
42; RUN:   --debugify-and-strip-all-safe=0 \
43; RUN:   -verify-machineinstrs=0 -aarch64-enable-global-isel-at-O=-1 \
44; RUN:   | FileCheck %s --check-prefix DISABLED
45
46; RUN: llc -mtriple=aarch64-- -debug-pass=Structure %s -o /dev/null 2>&1 \
47; RUN:   --debugify-and-strip-all-safe=0 \
48; RUN:   -verify-machineinstrs=0 | FileCheck %s --check-prefix DISABLED
49
50; RUN: llc -mtriple=aarch64-- -fast-isel=0 -global-isel=false \
51; RUN:   --debugify-and-strip-all-safe=0 \
52; RUN:   -debug-pass=Structure %s -o /dev/null 2>&1 -verify-machineinstrs=0 \
53; RUN:   | FileCheck %s --check-prefix DISABLED
54
55; ENABLED:       IRTranslator
56; VERIFY-NEXT:   Verify generated machine code
57; ENABLED-NEXT:  Analysis for ComputingKnownBits
58; ENABLED-O1-NEXT:  MachineDominator Tree Construction
59; ENABLED-NEXT:  PreLegalizerCombiner
60; VERIFY-NEXT:   Verify generated machine code
61; ENABLED-NEXT:  Analysis containing CSE Info
62; ENABLED-NEXT:  Legalizer
63; VERIFY-NEXT:   Verify generated machine code
64; ENABLED:  RegBankSelect
65; VERIFY-NEXT:   Verify generated machine code
66; ENABLED-NEXT:  Localizer
67; VERIFY-O0-NEXT:   Verify generated machine code
68; ENABLED-NEXT: Analysis for ComputingKnownBits
69; ENABLED-NEXT:  InstructionSelect
70; ENABLED-O1-NEXT:  AArch64 Post Select Optimizer
71; VERIFY-NEXT:   Verify generated machine code
72; ENABLED-NEXT:  ResetMachineFunction
73
74; FALLBACK:       AArch64 Instruction Selection
75; NOFALLBACK-NOT: AArch64 Instruction Selection
76
77; DISABLED-NOT: IRTranslator
78
79; DISABLED: AArch64 Instruction Selection
80; DISABLED: Finalize ISel and expand pseudo-instructions
81
82define void @empty() {
83  ret void
84}
85