Skip to content

Instantly share code, notes, and snippets.

@MattPD
MattPD / pr224804-design-walkthrough.md
Created September 19, 2026 05:09
PR #224804 design walkthrough: LoopInterchange runtime versioning for outer-epilogue fission

LoopInterchange: version runtime-bounded outer epilogues

#224804 | 3524fcccffa51d87c6223e5cf8db1bf788ef626d runtime versioning

Context: Improving SPECfp2000/SWIM2000 performance for Flang.

Background: #224196 added outer-epilogue fission, a transformation distributing the trailing code of each outer iteration into its own loop so that the remaining nest can be interchanged. Its walkthrough documents its legality: recovery of a row stride W from exact byte offsets, and a dependence proof across the two loops created by distribution, holding while the outer loop's trip count T satisfies T <= W. A plan is the complete, non-mutating record of a single candidate decision. LoopInterchange builds the plan first and applies it later. The

@MattPD
MattPD / pr224196-design-walkthrough.md
Created September 17, 2026 08:22
Design walkthrough for llvm/llvm-project PR #224196: LoopInterchange, extract statically bounded outer epilogues

LoopInterchange: extract statically bounded outer epilogues

#224196 | 35703509 NFC helpers | 11bcd2fa preparation | c0ec2d79 apply

Context: Improving the SPECfp2000/SWIM2000 benchmark performance for Flang.

Background: SPEC CPU2000 171.swim does not interchange under Flang/LLVM (related earlier work & comment: sebpop reported that it did not interchange under Flang because LLVM could not infer the number of iterations). #199511 ("[LoopInterchange] Supported partially-perfect Loop Nests") then landed the candidate-chain r

@MattPD
MattPD / implicit-intrinsic-module-accessibility.md
Created September 10, 2026 20:56
Standards analysis of implicit intrinsic accessibility in Fortran modules and implementation options for Flang.

Implicit intrinsic names and module accessibility

The evidence favors accepting both compilation layouts in llvm/llvm-project#219570. The issue's expected-behavior section instead calls for rejection.

Standards conformance should determine the intended behavior. The implementation discussion below concerns the effort needed to achieve that behavior.

The case

The producer module is implicit_intrinsic_source. The facade module is implicit_intrinsic_facade.

@MattPD
MattPD / public-walkthrough-draft.md
Created August 8, 2026 05:34
LoopInterchange inner-subnest design walkthrough

LoopInterchange: route inner subnests inside non-linear loop trees

#214920 | 4a6f6018

Context: Improving the SPECfp2000/SWIM2000 benchmark performance for Flang.

Background: SPEC CPU2000 171.swim does not interchange under Flang/LLVM (related earlier work & comment: sebpop reported that it did not interchange under Flang because LLVM could not infer the number of iterations).

This patch addresses a different blocker in the same benchmark. Section 5 states what remains.

@MattPD
MattPD / compilers.optimization.scev.md
Last active June 17, 2026 23:31
compilers.optimization.scev.md
@MattPD
MattPD / compilers.optimization.speculation.md
Created May 8, 2025 23:16
Compilers: Optimization: Speculation
@MattPD
MattPD / cpp.type_erasure.draft.md
Created June 17, 2021 17:28
C++ Links: Type Erasure (WIP draft)