This repository is the LLVM fork used by Mage.
Mage is a research project focused on developing microarchitecture-aware and portable algorithms for elementary functions, such as logarithmic, exponential, and trigonometric functions, targeting modern GPUs.
This fork uses two long-lived branches:
mage-stagingmain
This is the default branch and the main working branch for research and development. It contains the LLVM baseline actively used for the project. Update it from main during the first week of each month, or when needed.
Typical update flow:
git switch main
git fetch upstream
git merge --ff-only upstream/main
git push origin main
git switch mage-staging
git merge main
git push origin mage-stagingThis branch is a clean mirror of upstream/main. It must not carry Mage-specific changes.
git switch main
git fetch upstream
git merge --ff-only upstream/main
git push origin mainShort-lived research and development branches must be created from mage-staging.
Naming convention:
mage/<topic>
Typical flow:
git switch mage-staging
git pull --ff-only
git switch -c mage/<topic>Use these branches for work that belongs to the Mage workflow, including prototypes, measurements, and exploratory patches.
Branches intended for upstream pull requests must be created from main.
Naming convention:
upstream/<topic>
Typical flow:
git switch main
git pull --ff-only
git switch -c upstream/<topic>These branches should stay focused, reviewable, and as clean as possible with respect to upstream LLVM.
Do not use the same branch both as:
- a local Mage branch
- an upstream contribution branch
If some work starts in a mage/ branch and later becomes worth upstreaming, reproduce or cherry-pick the relevant changes in a clean upstream/ branch created from main.