1;; When EXPENSIVE_CHECKS are enabled, the machine verifier appears between each 2;; pass. Ignore it with 'grep -v'. 3; RUN: llc --mtriple=loongarch32 -mattr=+d -O1 --debug-pass=Structure %s -o /dev/null 2>&1 | \ 4; RUN: grep -v "Verify generated machine code" | FileCheck %s --check-prefix=LAXX 5; RUN: llc --mtriple=loongarch32 -mattr=+d -O2 --debug-pass=Structure %s -o /dev/null 2>&1 | \ 6; RUN: grep -v "Verify generated machine code" | FileCheck %s --check-prefix=LAXX 7; RUN: llc --mtriple=loongarch32 -mattr=+d -O3 --debug-pass=Structure %s -o /dev/null 2>&1 | \ 8; RUN: grep -v "Verify generated machine code" | FileCheck %s --check-prefix=LAXX 9; RUN: llc --mtriple=loongarch64 -mattr=+d -O1 --debug-pass=Structure %s -o /dev/null 2>&1 | \ 10; RUN: grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=LAXX,LA64 11; RUN: llc --mtriple=loongarch64 -mattr=+d -O2 --debug-pass=Structure %s -o /dev/null 2>&1 | \ 12; RUN: grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=LAXX,LA64 13; RUN: llc --mtriple=loongarch64 -mattr=+d -O3 --debug-pass=Structure %s -o /dev/null 2>&1 | \ 14; RUN: grep -v "Verify generated machine code" | FileCheck %s --check-prefixes=LAXX,LA64 15 16; REQUIRES: asserts 17 18; LAXX-LABEL: Pass Arguments: 19; LAXX-NEXT: Target Library Information 20; LAXX-NEXT: Target Pass Configuration 21; LAXX-NEXT: Machine Module Information 22; LAXX-NEXT: Target Transform Information 23; LAXX-NEXT: Type-Based Alias Analysis 24; LAXX-NEXT: Scoped NoAlias Alias Analysis 25; LAXX-NEXT: Assumption Cache Tracker 26; LAXX-NEXT: Profile summary info 27; LAXX-NEXT: Create Garbage Collector Module Metadata 28; LAXX-NEXT: Machine Branch Probability Analysis 29; LAXX-NEXT: Default Regalloc Eviction Advisor 30; LAXX-NEXT: Default Regalloc Priority Advisor 31; LAXX-NEXT: ModulePass Manager 32; LAXX-NEXT: Pre-ISel Intrinsic Lowering 33; LAXX-NEXT: FunctionPass Manager 34; LAXX-NEXT: Expand large div/rem 35; LAXX-NEXT: Expand large fp convert 36; LAXX-NEXT: Expand Atomic instructions 37; LAXX-NEXT: Module Verifier 38; LAXX-NEXT: Dominator Tree Construction 39; LAXX-NEXT: Basic Alias Analysis (stateless AA impl) 40; LAXX-NEXT: Natural Loop Information 41; LAXX-NEXT: Canonicalize natural loops 42; LAXX-NEXT: Scalar Evolution Analysis 43; LAXX-NEXT: Loop Pass Manager 44; LAXX-NEXT: Canonicalize Freeze Instructions in Loops 45; LAXX-NEXT: Induction Variable Users 46; LAXX-NEXT: Loop Strength Reduction 47; LAXX-NEXT: Basic Alias Analysis (stateless AA impl) 48; LAXX-NEXT: Function Alias Analysis Results 49; LAXX-NEXT: Merge contiguous icmps into a memcmp 50; LAXX-NEXT: Natural Loop Information 51; LAXX-NEXT: Lazy Branch Probability Analysis 52; LAXX-NEXT: Lazy Block Frequency Analysis 53; LAXX-NEXT: Expand memcmp() to load/stores 54; LAXX-NEXT: Lower Garbage Collection Instructions 55; LAXX-NEXT: Shadow Stack GC Lowering 56; LAXX-NEXT: Remove unreachable blocks from the CFG 57; LAXX-NEXT: Natural Loop Information 58; LAXX-NEXT: Post-Dominator Tree Construction 59; LAXX-NEXT: Branch Probability Analysis 60; LAXX-NEXT: Block Frequency Analysis 61; LAXX-NEXT: Constant Hoisting 62; LAXX-NEXT: Replace intrinsics with calls to vector library 63; LAXX-NEXT: Lazy Branch Probability Analysis 64; LAXX-NEXT: Lazy Block Frequency Analysis 65; LAXX-NEXT: Optimization Remark Emitter 66; LAXX-NEXT: Partially inline calls to library functions 67; LAXX-NEXT: Instrument function entry/exit with calls to e.g. mcount() (post inlining) 68; LAXX-NEXT: Scalarize Masked Memory Intrinsics 69; LAXX-NEXT: Expand reduction intrinsics 70; LAXX-NEXT: Natural Loop Information 71; LAXX-NEXT: Type Promotion 72; LAXX-NEXT: CodeGen Prepare 73; LAXX-NEXT: Dominator Tree Construction 74; LAXX-NEXT: Exception handling preparation 75; LAXX-NEXT: Basic Alias Analysis (stateless AA impl) 76; LAXX-NEXT: Function Alias Analysis Results 77; LAXX-NEXT: ObjC ARC contraction 78; LAXX-NEXT: Prepare callbr 79; LAXX-NEXT: Safe Stack instrumentation pass 80; LAXX-NEXT: Insert stack protectors 81; LAXX-NEXT: Module Verifier 82; LAXX-NEXT: Basic Alias Analysis (stateless AA impl) 83; LAXX-NEXT: Function Alias Analysis Results 84; LAXX-NEXT: Natural Loop Information 85; LAXX-NEXT: Post-Dominator Tree Construction 86; LAXX-NEXT: Branch Probability Analysis 87; LAXX-NEXT: Assignment Tracking Analysis 88; LAXX-NEXT: Lazy Branch Probability Analysis 89; LAXX-NEXT: Lazy Block Frequency Analysis 90; LAXX-NEXT: LoongArch DAG->DAG Pattern Instruction Selection 91; LAXX-NEXT: Finalize ISel and expand pseudo-instructions 92; LAXX-NEXT: Lazy Machine Block Frequency Analysis 93; LAXX-NEXT: Early Tail Duplication 94; LAXX-NEXT: Optimize machine instruction PHIs 95; LAXX-NEXT: Slot index numbering 96; LAXX-NEXT: Merge disjoint stack slots 97; LAXX-NEXT: Local Stack Slot Allocation 98; LAXX-NEXT: Remove dead machine instructions 99; LAXX-NEXT: MachineDominator Tree Construction 100; LAXX-NEXT: Machine Natural Loop Construction 101; LAXX-NEXT: Machine Block Frequency Analysis 102; LAXX-NEXT: Early Machine Loop Invariant Code Motion 103; LAXX-NEXT: MachineDominator Tree Construction 104; LAXX-NEXT: Machine Block Frequency Analysis 105; LAXX-NEXT: Machine Common Subexpression Elimination 106; LAXX-NEXT: MachinePostDominator Tree Construction 107; LAXX-NEXT: Machine Cycle Info Analysis 108; LAXX-NEXT: Machine code sinking 109; LAXX-NEXT: Peephole Optimizations 110; LAXX-NEXT: Remove dead machine instructions 111; LA64-NEXT: LoongArch Optimize W Instructions 112; LAXX-NEXT: LoongArch Pre-RA pseudo instruction expansion pass 113; LAXX-NEXT: LoongArch Merge Base Offset 114; LAXX-NEXT: Detect Dead Lanes 115; LAXX-NEXT: Init Undef Pass 116; LAXX-NEXT: Process Implicit Definitions 117; LAXX-NEXT: Remove unreachable machine basic blocks 118; LAXX-NEXT: Live Variable Analysis 119; LAXX-NEXT: Eliminate PHI nodes for register allocation 120; LAXX-NEXT: Two-Address instruction pass 121; LAXX-NEXT: MachineDominator Tree Construction 122; LAXX-NEXT: Slot index numbering 123; LAXX-NEXT: Live Interval Analysis 124; LAXX-NEXT: Register Coalescer 125; LAXX-NEXT: Rename Disconnected Subregister Components 126; LAXX-NEXT: Machine Instruction Scheduler 127; LAXX-NEXT: LoongArch Dead register definitions 128; LAXX-NEXT: Machine Block Frequency Analysis 129; LAXX-NEXT: Debug Variable Analysis 130; LAXX-NEXT: Live Stack Slot Analysis 131; LAXX-NEXT: Virtual Register Map 132; LAXX-NEXT: Live Register Matrix 133; LAXX-NEXT: Bundle Machine CFG Edges 134; LAXX-NEXT: Spill Code Placement Analysis 135; LAXX-NEXT: Lazy Machine Block Frequency Analysis 136; LAXX-NEXT: Machine Optimization Remark Emitter 137; LAXX-NEXT: Greedy Register Allocator 138; LAXX-NEXT: Virtual Register Rewriter 139; LAXX-NEXT: Register Allocation Pass Scoring 140; LAXX-NEXT: Stack Slot Coloring 141; LAXX-NEXT: Machine Copy Propagation Pass 142; LAXX-NEXT: Machine Loop Invariant Code Motion 143; LAXX-NEXT: Remove Redundant DEBUG_VALUE analysis 144; LAXX-NEXT: Fixup Statepoint Caller Saved 145; LAXX-NEXT: PostRA Machine Sink 146; LAXX-NEXT: Machine Block Frequency Analysis 147; LAXX-NEXT: MachineDominator Tree Construction 148; LAXX-NEXT: MachinePostDominator Tree Construction 149; LAXX-NEXT: Lazy Machine Block Frequency Analysis 150; LAXX-NEXT: Machine Optimization Remark Emitter 151; LAXX-NEXT: Shrink Wrapping analysis 152; LAXX-NEXT: Prologue/Epilogue Insertion & Frame Finalization 153; LAXX-NEXT: Machine Late Instructions Cleanup Pass 154; LAXX-NEXT: Control Flow Optimizer 155; LAXX-NEXT: Lazy Machine Block Frequency Analysis 156; LAXX-NEXT: Tail Duplication 157; LAXX-NEXT: Machine Copy Propagation Pass 158; LAXX-NEXT: Post-RA pseudo instruction expansion pass 159; LAXX-NEXT: MachineDominator Tree Construction 160; LAXX-NEXT: Machine Natural Loop Construction 161; LAXX-NEXT: Post RA top-down list latency scheduler 162; LAXX-NEXT: Analyze Machine Code For Garbage Collection 163; LAXX-NEXT: Machine Block Frequency Analysis 164; LAXX-NEXT: MachinePostDominator Tree Construction 165; LAXX-NEXT: Branch Probability Basic Block Placement 166; LAXX-NEXT: Insert fentry calls 167; LAXX-NEXT: Insert XRay ops 168; LAXX-NEXT: Implement the 'patchable-function' attribute 169; LAXX-NEXT: Branch relaxation pass 170; LAXX-NEXT: Contiguously Lay Out Funclets 171; LAXX-NEXT: Remove Loads Into Fake Uses 172; LAXX-NEXT: StackMap Liveness Analysis 173; LAXX-NEXT: Live DEBUG_VALUE analysis 174; LAXX-NEXT: Machine Sanitizer Binary Metadata 175; LAXX-NEXT: Lazy Machine Block Frequency Analysis 176; LAXX-NEXT: Machine Optimization Remark Emitter 177; LAXX-NEXT: Stack Frame Layout Analysis 178; LAXX-NEXT: LoongArch pseudo instruction expansion pass 179; LAXX-NEXT: LoongArch atomic pseudo instruction expansion pass 180; LAXX-NEXT: Lazy Machine Block Frequency Analysis 181; LAXX-NEXT: Machine Optimization Remark Emitter 182; LAXX-NEXT: LoongArch Assembly Printer 183; LAXX-NEXT: Free MachineFunction 184