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,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,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-prefixes=ENABLED,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-prefixes=ENABLED,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: Safe Stack instrumentation pass
56
57; ENABLED-O1: Basic Alias Analysis (stateless AA impl)
58; ENABLED-O1-NEXT: Function Alias Analysis Results
59; ENABLED:       IRTranslator
60; VERIFY-NEXT:   Verify generated machine code
61; ENABLED-NEXT:  Analysis for ComputingKnownBits
62; ENABLED-O1-NEXT:  MachineDominator Tree Construction
63; ENABLED-O1-NEXT:  Analysis containing CSE Info
64; ENABLED-O1-NEXT:  PreLegalizerCombiner
65; VERIFY-O0-NEXT:  AArch64O0PreLegalizerCombiner
66; VERIFY-NEXT:   Verify generated machine code
67; ENABLED-O1-NEXT: LoadStoreOpt
68; VERIFY-O0-NEXT:  Analysis containing CSE Info
69; ENABLED-NEXT:  Legalizer
70; VERIFY-NEXT:   Verify generated machine code
71; ENABLED:  RegBankSelect
72; VERIFY-NEXT:   Verify generated machine code
73; ENABLED-NEXT:  Localizer
74; VERIFY-O0-NEXT:   Verify generated machine code
75; ENABLED-NEXT: Analysis for ComputingKnownBits
76; ENABLED-O1-NEXT: Lazy Branch Probability Analysis
77; ENABLED-O1-NEXT: Lazy Block Frequency Analysis
78; ENABLED-NEXT:  InstructionSelect
79; ENABLED-O1-NEXT:  AArch64 Post Select Optimizer
80; VERIFY-NEXT:   Verify generated machine code
81; ENABLED-NEXT:  ResetMachineFunction
82
83; FALLBACK:       AArch64 Instruction Selection
84; NOFALLBACK-NOT: AArch64 Instruction Selection
85
86; DISABLED-NOT: IRTranslator
87
88; DISABLED: AArch64 Instruction Selection
89; DISABLED: Finalize ISel and expand pseudo-instructions
90
91define void @empty() {
92  ret void
93}
94