Posts, notes, and experiments.
How OpenMP AST Construction Works in REX: OpenMPIR to SgOmp*
A focused walkthrough of Stage 2 in the REX OpenMP pipeline: converting ompparser's OpenMPIR into Sage/ROSE `SgOmp*` nodes with correct nesting, clause structure, and scope-aware expression parsing.
Read more ⟶Surviving LLVM Offload ABI Drift in REX
When LLVM offloading changes, a source-to-source compiler can keep building but stop running. This post explains the failure modes, the debugging workflow, and the compatibility strategy REX uses to stay stable across LLVM toolchain migrations.
Read more ⟶How Offloading Runtime Glue Works in REX
A deep look at the REX helper/runtime boundary: how offload entries are emitted, how a CUBIN image is registered with libomptarget, how rex_kmp.h rewrites runtime calls, and why init/fini are handled the way they are.
Read more ⟶How GPU Offloading Lowering Works in REX
A deep walkthrough of the REX OpenMP GPU lowerer: directive dispatch, outlining, runtime map arrays, `__tgt_kernel_arguments` construction, generated files, and the tests that keep multi-kernel lowering correct.
Read more ⟶How OpenMP Works in REX: From Pragmas to GPU Kernels
An end-to-end walkthrough of REX's OpenMP architecture: why it owns OpenMP parsing, how ompparser feeds Sage AST construction, how lowering generates host and device code, and how the test system keeps the pipeline honest.
Read more ⟶