Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Phase Pipeline — 159 Registered Phases (157 Dispatched)

Addresses apply to ptxas v13.0.88 (CUDA 13.0). VA base 0x400000 (non-PIE).

The complete phase registry built by sub_C62720 (factory sub_C60D30), indexed by bin_index = factory switch case = name-table index at off_22BD0C0. Column meanings:

  • exec_order — position in the default 157-entry order table at 0x22BEEA0. A dash (-) marks the two registered phases that are not in the default schedule (DebuggerBreak=157, NOP=158), reachable only via the recipe/named-phases path (OCG knob 298).
  • opt_gate — the opt-level predicate the phase's own execute() body applies (read via the OptBudget oracle sub_7DDB50); blank = runs at all levels.

Every dispatched phase's execute() is called unconditionally — the gate is an early-return inside the body, not a dispatch-loop skip.

exec_orderbin_indexphase_namename_string_vacategoryopt_gaterole
00OriCheckInitialProgram0x22BC429ValidationValidate structural correctness of initial Ori IR after PTX lowering (validator sub_7EEB10)
11ApplyNvOptRecipes0x22BC440OptimizationApply NvOptRecipe transforms (opt 391, 440B sub-mgr); impl sub_796D60, dual-caller re-entry via sub_8F4D80
22PromoteFP160x22BC452LoweringPromote FP16 ops to FP32 where HW lacks native support
33AnalyzeControlFlow0x22BC45EAnalysisBuild CFG: loops/dominators/back-edges; impl sub_781F80 (131 callers, canonical CFG rebuild)
44AdvancedPhaseBeforeConvUnSup0x22BC471GateAdvancedPhase Type C: sub_C5F620 writes ctx+1552=1 (pre-legalization boundary)
55ConvertUnsupportedOps0x22BC48ELoweringReplace ops not native on target SM with equivalent sequences
66SetControlFlowOpLastInBB0x22BC4A4CleanupEnsure control-flow op is last instruction in each basic block
77AdvancedPhaseAfterConvUnSup0x22BC4BDGateAdvancedPhase Type C: sub_C5F5A0 writes ctx+1552=2 (post-ConvUnSup boundary)
88UpdateAfterConvertUnsupportedOps0x22BCF10CleanupRebuild IR metadata after unsupported-op conversion
99OriCreateMacroInsts0x22BC4D9LoweringExpand PTX-level macro instructions into Ori sequences (impl sub_A112C0, 10 callers)
1010ReportInitialRepresentation0x22BC4EDReportingDump Ori IR after initial lowering (no-op unless DUMPIR)
1111EarlyOriSimpleLiveDead0x22BC509OptimizationQuick early dead-code elimination
1212ReplaceUniformsWithImm0x22BC520OptimizationReplace uniform register reads with immediates where value known
1313OriSanitize0x22BC537ValidationValidate IR consistency after initial setup
1414GeneralOptimizeEarly0x22BC543OptimizationGeneralOptimize bundle (early): copy-prop+const-fold+algebraic+DCE fixpoint
1515MergeEquivalentConditionalFlow0x22BCF38OptimizationMerge basic blocks with equivalent conditional flow (tail merge)
1616DoSwitchOptFirst0x22BC558Optimization>1Switch-statement opt: jump-table gen, case clustering (1st); wrapper sub_C5F720
1717OriBranchOpt0x22BC569Optimization>1Branch folding, unreachable-block elim, conditional-branch simplification; sub_C5F950
1818OriPerformLiveDeadFirst0x22BC576AnalysisFull liveness + DCE (1st of 4 major instances)
1919OptimizeBindlessHeaderLoads0x22BC58EOptimizationHoist/dedup bindless texture header loads
2020OriLoopSimplification0x22BC5AAOptimization>3Loop canonicalization: single entry/back-edge, preheader; aggressive peeling O4+
2121OriSplitLiveRanges0x22BC5C0OptimizationSplit live ranges at loop boundaries to reduce register pressure
2222OriCopyProp0x21E6CE1OptimizationCopy propagation (also sub-pass of all 6 GeneralOptimize bundles); injectable via recipe cpyN
2323PerformPGO0x22BC5D3OptimizationApply PGO data (block weights, branch probabilities)
2424OriStrengthReduce0x22BC5DEOptimizationStrength reduction: mul/div -> shift/add
2525OriLoopUnrolling0x22BC5F0Optimization>1Loop unrolling by trip count + register-pressure heuristics
2626GenerateMovPhi0x22BC601LoweringInsert SSA phi as MOV.PHI pseudo-insts; large wrapper sub_C60BD0 -> sub_790A40
2727OriPipelining0x22BC610Optimization>1Software pipelining: overlap loop iterations to hide latency
2828StageAndFence0x22BC61ELoweringInsert memory fence/staging instructions for coherence
2929OriRemoveRedundantBarriers0x22BC62COptimization>1Eliminate barriers proven redundant by dataflow
3030AnalyzeUniformsForSpeculation0x22BC647AnalysisAnalyze constant-bank accesses for speculation safety across control flow
3131SinkRemat0x22BC665Optimization>1Sink instructions toward uses, mark remat candidates (O5: full cutlass)
3232OptimizeNaNOrZero0x21DD150OptimizationNaN/zero constant folding
3333GeneralOptimize0x22BC66FOptimizationGeneralOptimize bundle (mid-early)
3434DoSwitchOptSecond0x22BC67FOptimization>1Switch opt 2nd pass after loop/branch xforms; wrapper sub_C5FC80
3535OriLinearReplacement0x22BC691OptimizationLinear/affine-expr replacement: 11-case opcode dispatch -> IADD3/IMAD.WIDE; impl sub_7EC4B0; knobs 487+416
3636CompactLocalMemory0x22BC6A6OptimizationCompact local-memory allocations (dead slot elim + reorder)
3737ConvertMemoryToRegisterOrUniform0x21DD228OptimizationConvert memory to register/uniform; knob 487 gated
3838OriPerformLiveDeadSecond0x22BC6B9AnalysisFull liveness + DCE (2nd instance)
3939ExtractShaderConstsFirst0x22BC6D2OptimizationExtract shader constants (1st); impl sub_1C72640 shared w/ bin59, is_final=0
4040OriHoistInvariantsEarly0x22BC6EBOptimizationLICM early: hoist loop-invariant computations
4141Vectorization0x21D3ABEOptimizationLoad/store vectorization
4242EmitPSI0x22BC703LoweringEmit PSI (pixel-shader-input) interpolation setup (dispatch-only via arch vtable)
4343GeneralOptimizeMid0x22BC70BOptimizationGeneralOptimize bundle (mid)
4444OptimizeNestedCondBranches0x22BC71EOptimization>1Flatten nested conditional branches; wrapper sub_C5FA70
4545ConvertVTGReadWrite0x22BC739LoweringConvert vertex/tess/geometry shader read/write (dispatch-only arch vtable)
4646DoVirtualCTAExpansion0x22BC74DLoweringExpand virtual-CTA ops into physical CTA primitives (dispatch-only)
4747MarkAdditionalColdBlocks0x22BC763AnalysisMark cold basic blocks via heuristics + profile
4848ExpandMbarrier0x22BC77CLoweringExpand MBARRIER pseudo-insts into native barrier sequences
4949ForwardProgress0x22BC78BLoweringInsert forward-progress instructions (prevent infinite stalls; dispatch-only)
5050OptimizeUniformAtomic0x22BC79BOptimizationConvert thread-uniform atomics into warp-level reductions
5151MidExpansion0x22BC7B1LoweringTarget-dependent mid-level expansion before regalloc
5252AdvancedPhaseAfterMidExpansion0x22BCF58GateAdvancedPhase Type C: sub_C5EF80 writes ctx+1552=3 (mid-expansion done)
5353GeneralOptimizeMid20x22BC7BEOptimizationGeneralOptimize bundle (mid 2nd)
5454AdvancedPhaseEarlyEnforceArgs0x22BC7D2GateAdvancedPhase Type A: dispatches EnforceArgumentRestrictions (bin55)
5555EnforceArgumentRestrictions0x22BC7F0LoweringEnforce ABI restrictions on args (register classes, alignment)
5656GvnCse0x22BC80COptimization>1Global value numbering + common-subexpression elimination
5757OriCommoning0x22BC94DOptimizationCommoning sub-pass (between GvnCse and reassociate)
5858OriReassociateAndCommon0x22BC813OptimizationReassociate expressions for commoning, then eliminate commons
5959ExtractShaderConstsFinal0x22BC82BOptimizationExtract shader constants (final); impl sub_1C72640, is_final=1, commits bank allocs
6060OriReplaceEquivMultiDefMov0x22BC844OptimizationEliminate redundant multi-def MOVs with equivalent sources (sub_8FBCF0)
6161OriPropagateVaryingFirst0x22BC85FOptimizationPropagate varying (non-uniform) annotations (1st pass)
6262OriDoRematEarly0x22BC878Optimization>1Early rematerialization near uses to reduce register pressure
6363LateExpansion0x22BC888LoweringExpand ops that must lower after high-level opt
6464SpeculativeHoistComInsts0x22BC896OptimizationSpeculatively hoist common instructions above branches
6565RemoveASTToDefaultValues0x22BC8AFCleanupRemove AST/address-space-type annotations lowered to defaults
6666GeneralOptimizeLate0x22BC8C8OptimizationGeneralOptimize bundle (late); O1 override via opt-31 value 199
6767OriLoopFusion0x22BC8DCOptimizationFuse adjacent loops with compatible bounds, no inter-loop deps
6868DoVTGMultiViewExpansion0x22BC8EALoweringExpand multi-view ops for VTG shaders (dispatch-only)
6969OriSimpleLiveDead0x22BC50EOptimizationQuick DCE (OriSimpleLiveDead)
7070OriPerformLiveDeadThird0x22BC902AnalysisFull liveness + DCE (3rd instance)
7171OriRemoveRedundantMultiDefMov0x22BC91AOptimizationRemove dead multi-def MOVs (impl sub_90A340)
7272OriDoPredication0x22BC938Optimization>1If-conversion: short conditional branches -> predicated instructions
7373LateVectorization0x21D3ABAOptimization2nd vectorization pass (late)
7474LateOriCommoning0x22BC949OptimizationLate commoning: CSE exposed by predication
7575GeneralOptimizeLate20x22BC95AOptimizationGeneralOptimize bundle (late 2nd)
7676OriHoistInvariantsLate0x22BC96FOptimizationLICM late after predication
7777SinkCodeIntoBlock0x21B5E6COptimization>2Code sinking into block; Kill/Tex movement engine sub_8FFDE0 esi=0..3
7878DoKillMovement0x22BC986Optimization>2Sink kill markers toward last use (engine sub_8FFDE0 esi=0)
7979DoTexMovement0x22BC995Optimization>2Hoist texture fetches upward to hide latency (engine esi=2)
8080OriDoRemat0x22BC9A3Optimization>1Late rematerialization exposed by predication/fusion
8181OriPropagateVaryingSecond0x22BC9AEOptimizationPropagate varying annotations (2nd pass)
8282OptimizeSyncInstructions0x22BC9C8Optimization>1Eliminate/simplify synchronization instructions
8383AdvancedPhaseLateExpandSyncInstructions0x22BCF78GateAdvancedPhase Type B: 0xC5F110 -> ctx+0x630 vtable slot 360 (+0x168)
8484LateExpandSyncInstructions0x22BC9E1Lowering>2Expand sync pseudo-insts into final HW sequences
8585ConvertAllMovPhiToMov0x22BC9FCLoweringDestroy SSA: convert MOV.PHI -> plain MOV
8686ConvertToUniformReg0x22BCA12OptimizationConvert qualifying values from R to UR (uniform regs)
8787LateArchOptimizeFirst0x22BCA26OptimizationArch-specific late optimizations (1st pass)
8888UpdateAfterOptimize0x22BCA3CCleanupRebuild IR metadata after late optimization group
8989AdvancedPhaseLateConvUnSup0x22BCA50GateAdvancedPhase Type B: 0xC5EA50 -> ctx+0x630 vtable slot 376 (+0x178); drives LateExpUnSupOps
9090LateExpansionUnsupportedOps0x22BCA6BLoweringExpand remaining unsupported ops after all optimization
9191LateMergeEquivalentConditionalFlow0x22BCFA0Optimization2nd conditional-flow merge (cases exposed by late xforms)
9292OriHoistInvariantsLate20x22BCA87OptimizationLICM late 2nd pass
9393LateExpansionUnsupportedOpsMid0x22BCFC8LoweringMid-late unsupported-op expansion
9494ExpandJmxComputation0x22BCA9FLoweringExpand JMX (jump-with-index) pseudo-insts
9595LateArchOptimizeSecond0x22BCAB4OptimizationArch-specific late optimizations (2nd pass)
9696AdvancedPhaseBackPropVReg0x22BCACBGateAdvancedPhase Type B: arch-override vtable off_22BE298 (backprop vreg)
9797OriBackCopyPropagate0x22BCAE5OptimizationBackward copy propagation through move chains
9898OriSplitHighPressureLiveRanges0x22BCFE8RegAllocLast-resort live-range splitter when pressure exceeds HW limits
9999OriPerformLiveDeadFourth0x22BCAFAAnalysisFull liveness + DCE (4th instance, pre-legalization)
100100OriPropagateGmma0x22BCB13OptimizationPropagate WGMMA accumulator values through IR
101101InsertPseudoUseDefForConvUR0x22BCB24LoweringInsert pseudo use/def for UR-conversion bookkeeping
102102FixupGmmaSequence0x22BCB40LoweringFix WGMMA instruction sequences for HW ordering constraints
103103LateEnforceArgumentRestrictions0x22BD008LoweringLate ABI argument enforcement (LateEnforceArgumentRestrictions)
104104OriHoistInvariantsLate30x22BCB52OptimizationLICM late 3rd pass after GMMA fixup
105105AdvancedPhaseSetRegAttr0x22BCB6AGateAdvancedPhase Type B: ctx+0x630 SM backend vtable; precedes OriSetRegisterAttr
106106OriSetRegisterAttr0x22BCB82AnalysisAnnotate registers with scheduling attrs (latency class, bank)
107107OriCalcDependantTex0x22BCB95AnalysisCompute texture-instruction dependencies for scheduling
108108AdvancedPhaseAfterSetRegAttr0x22BCBA9GateAdvancedPhase Type B: 0xC607A0 -> ctx+0x630 vtable +0x110 (guard nullsub_170)
109109LateExpansionUnsupportedOps20x22BCBC6Lowering2nd late unsupported-op expansion (ops exposed by GMMA/attr passes)
110110FinalInspectionPass0x22BCBE3ValidationFinal IR validation before irreversible scheduling/RA (sub_788A30)
111111SetAfterLegalization0x22BCBF7Cleanup>1Set post-legalization flag on compilation context
112112ReportBeforeScheduling0x22BCC0CReportingDump IR before scheduling (no-op unless DUMPIR)
113113AdvancedPhasePreSched0x22BCC23GateAdvancedPhase: pre-sched hook -> ScheduleInstructions (bin114, sub_8D0640 22KB)
114114ScheduleInstructions0x21DB4A8SchedulingInstruction scheduler worker (sub_8D0640); DUMPIR target
115115UpdateAfterScheduleInstructions0x22BD028CleanupIR refresh after scheduling
116116BackPropagateVEC2D0x22BCC39OptimizationBackward-propagate 2D vector register assignments
117117OriDoSyncronization0x22BCC4CScheduling>1Insert synchronization (BAR/DEPBAR/MEMBAR) per GPU memory model
118118UpdateAfterOriDoSyncronization0x22BD048CleanupIR refresh after sync insertion
119119ApplyPostSyncronizationWars0x22BCC60Scheduling>1Fix WAR hazards exposed by sync insertion
120120ReportBeforeRegisterAllocation0x22BD068ReportingDump IR before register allocation (no-op unless DUMPIR)
121121AdvancedPhaseAllocReg0x22BCC7CGateAdvancedPhase: regalloc driver hook -> AllocateRegisters (bin122); DUMPIR=AllocateRegisters
122122AllocateRegisters0x21F0229RegAllocRegister allocation worker (canonical allocator entry)
123123ReportAfterRegisterAllocation0x22BCC92ReportingDump IR after register allocation (no-op unless DUMPIR)
124124UpdateAfterOriAllocateRegisters0x22BD088CleanupIR refresh after register allocation
125125Get64bRegComponents0x22BCCB0RegAllocSplit 64-bit register pairs into 32-bit components
126126AdvancedPhasePostExpansion0x22BCCC4GateAdvancedPhase: pre post-RA-expansion hook -> PostExpansion (bin127)
127127PostExpansion0x22BCCD1LoweringPost-RA expansion worker
128128ApplyPostRegAllocWars0x22BCCDFRegAllocFix WAR hazards exposed by register allocation (dispatch-only)
129129AdvancedPhasePostSched0x22BCCF5GateAdvancedPhase Type C: sub_C5E830 writes ctx+1552=14 (pre PostSchedule)
130130OriRemoveNopCode0x22BCD0CCleanupRemove NOP/dead placeholder instructions
131131OptimizeHotColdInLoop0x22BCD1DOptimizationSeparate hot/cold paths within loops for cache locality
132132OptimizeHotColdFlow0x22BCD33OptimizationSeparate hot/cold paths at function level
133133PostSchedule0x22BCD47Scheduling>0Post-RA re-scheduling: sub_C60640 -> ctx+0x630 vtable +0x90 (sm_80+)
134134AdvancedPhasePostFixUp0x22BCD54GateAdvancedPhase: pre post-fixup hook -> PostFixUp (bin140, target vtable +0x148)
135135PlaceBlocksInSourceOrder0x22BCD6BCleanupDetermine final basic-block layout in emitted binary
136136PostFixForMercTargets0x22BCD84EncodingFix instructions for Mercury encoding requirements (dispatch-only)
137137FixUpTexDepBarAndSync0x22BCD9ASchedulingFix texture dependency barriers + sync post-scheduling
138138AdvancedScoreboardsAndOpexes0x22BCDB0Gate>0Full scoreboard gen: 23-bit control word/inst (sub_A36360 + DAG sched sub_A23CF0); O1+ only
139139ProcessO0WaitsAndSBs0x22BCDCDScheduling==0Conservative scoreboard insertion for -O0; sub_C5E2A0 on sm50+ -> target vtable +0x150
140140PostFixUp0x22BCD61CleanupTarget-specific post-fixup: sub_C5E270 -> target vtable +0x148
141141MercConverter0x21E5C39EncodingMercConverter 2nd pass: re-lower opcodes via sub_9F1A90/sub_9ED2D0; bit cu+1398&0x20
142142MercEncodeAndDecode0x22BCDE2EncodingMercEncodeAndDecode: encode to Mercury node + round-trip verify (sub_6D9690)
143143MercExpandInstructions0x22BCDF6EncodingExpand compound Mercury pseudo-insts -> primitive SASS (sub_C3DFC0)
144144MercGenerateWARs10x22BCE0DEncodingGenerate WAR hazard annotations (1st pass, pre-expansion; sub_6FC240)
145145MercGenerateOpex0x22BCE1FEncodingGenerate opex (operation-extension) annotations per instruction
146146MercGenerateWARs20x22BCE30EncodingGenerate WAR annotations (2nd pass, post-expansion hazards)
147147MercGenerateSassUCode0x22BCE42EncodingProduce final SASS microcode bytes (actual binary encoding)
148148ComputeVCallRegUse0x22BCE58RegAllocCompute register usage for virtual call sites
149149CalcRegisterMap0x22BCE6BRegAllocCompute final physical-to-logical register map (EIATTR metadata)
150150UpdateAfterPostRegAlloc0x22BCE7BCleanupIR refresh after post-RA processing (late dup, no-op by default)
151151ReportFinalMemoryUsage0x22BCE93ReportingPrint memory-pool consumption summary (late dup, no-op by default)
152152AdvancedPhaseOriPhaseEncoding0x22BCEAAGateAdvancedPhase Type C: sub_C5E0B0 writes ctx+1552=21 (encoding boundary)
153153FormatCodeList0x22BCED3EncodingFormat final code list
154154UpdateAfterFormatCodeList0x22BCEC8CleanupRebuild code list after Mercury reformats instructions
155155DumpNVuCodeText0x22BCEE2ReportingDump human-readable SASS text disassembly (--keep/DUMPIR)
156156DumpNVuCodeHex0x22BCEF2ReportingDump raw SASS binary as hex (--keep/DUMPIR)
-157DebuggerBreak0x22BCF01CleanupDebuggerBreak: dev hook, triggers breakpoint (empty in release)
-158NOP0x21E6C80CleanupTerminal NOP / dispatch sentinel (lookup-failure return value)