[qt/clang/llvm-project]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/clang/llvm-project
Pushed by mirror-service into branch 'upstream/users/wizardengineer/ct-select-core'.
Changed from 323dd09403929f22dec4c4971294aa31c7c6dade to f4383a332170afc874a6fd6113a42d83a46889d9
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.
This change contains the following new commits:
Git commit 32819927e0c02662a5c8aae252997748cdc94962 by GitHub (on behalf of Florian Hahn) on 19/07/2026 at 17:46..
[VPlan] Retire LVP::hasTailFolded (NFC). (#210598)
LVP::hasTailFolded incldued an assert that hasTailFOlded matches the
VPlan version. No divergences surfaced, so remove the assert as planned.
https://invent.kde.org/qt/clang/llvm-project/-/commit/32819927e0c02662a5c8aae252997748cdc94962
Git commit dae991a55eacb4f3c3382f3cba2897ceb43e1725 by GitHub (on behalf of Justin Lebar) on 19/07/2026 at 18:19..
[AA] Use the cmpxchg merged ordering in getModRefInfo (#210545)
When a cmpxchg's address is NoAlias with the queried location,
getModRefInfo still reports sync effects if the cmpxchg is stronger than
monotonic, since an ordered operation constrains code motion around
locations it never accesses.
But a cmpxchg op has two atomic orderings, and getModRefInfo looked
only at one of them.
Change it so we check the merged ordering, i.e. the stronger of the two.
https://invent.kde.org/qt/clang/llvm-project/-/commit/dae991a55eacb4f3c3382f3cba2897ceb43e1725
Git commit ae023494fba615bb1c75292f93e4521cfe7068b5 by GitHub (on behalf of Alexey Bataev) on 19/07/2026 at 19:00..
[SLP]Add umax/umin/smax/smin as main opcodes for copyables
Added umax/umin/smax/smin intrinsics in for copyables support.
Reviewers: hiraditya, bababuck, RKSimon
Pull Request: https://github.com/llvm/llvm-project/pull/209326
https://invent.kde.org/qt/clang/llvm-project/-/commit/ae023494fba615bb1c75292f93e4521cfe7068b5
Git commit 4e77664e222435c8444aa315b1a2345598f2f081 by wizardengineer on 19/07/2026 at 20:23..
[ConstantTime][LLVM] Add llvm.ct.select intrinsic with generic SelectionDAG lowering
https://invent.kde.org/qt/clang/llvm-project/-/commit/4e77664e222435c8444aa315b1a2345598f2f081
Git commit 49f0d2a60fc05f86c22a8960fc5e8a808fa8511d by wizardengineer (on behalf of Akshay K) on 19/07/2026 at 20:23..
[LLVM][CodeGen] Improve CTSELECT fallback lowering and target support modeling (#179395)
This pull request refactors and improves the **fallback handling** of
constant-time select (CTSELECT) in LLVM’s code generation
infrastructure. The changes clarify semantics, simplify
target-capability checks, and improve the correctness and
maintainability of fallback lowering, without changing the intended
constant-time guarantees.
- **CTSELECT semantics**
- Clarified documentation for the `CTSELECT` node to explicitly describe
its operands and its role as the lowering target for the constant-time
select intrinsic.
- **TargetLowering cleanup**
- Removed CTSELECT-specific entries from `SelectSupportKind`.
- Introduced a dedicated `isCtSelectSupported(EVT)` hook to cleanly
separate ISA select support from constant-time guarantees.
- Updated intrinsic lowering to use this new capability check.
- **Fallback implementation improvements**
- Updated the generic SelectionDAG fallback lowering to use the
canonical bitwise formulation:
```
F ^ ((T ^ F) & Mask)
```
- Simplified handling of vector splats and bitcasting in the fallback
path.
- **DAGCombiner refactor**
- Renamed and clarified CTSELECT-related DAGCombiner code paths for
improved readability.
- **Miscellaneous cleanups**
- Improved documentation headers for constant-time intrinsics.
- Removed unused flags and minor nits uncovered during review.
These changes primarily affect the **generic fallback path** used when
targets do not provide specialized CTSELECT lowering. Target-specific
implementations are handled in follow-up PRs
https://invent.kde.org/qt/clang/llvm-project/-/commit/49f0d2a60fc05f86c22a8960fc5e8a808fa8511d
Git commit 4214b01a612e4743f089d684a71d51789bd677dc by wizardengineer (on behalf of Akshay K) on 19/07/2026 at 20:23..
[LLVM][ConstantTime] Strengthen constant-time handling of CTSELECT in DAG combine and legalization (#180883)
This PR improves the handling of CTSELECT in SelectionDAG to strengthen
constant-time guarantees and ensure correctness during DAG combining and
type legalization.
Key changes:
- Introduce a dedicated visitConstantTimeSelect routine that performs
only CT-safe optimizations (e.g., negated condition canonicalization and
i1 AND/OR nesting merges) while avoiding unsafe generic rewrites.
- Remove aggressive generic combinations that could violate
constant-time intent.
- Add specialized type legalization routines (SplitRes_CTSELECT,
PromoteFloatRes_CTSELECT, SoftPromoteHalfRes_CTSELECT) to preserve
constant-time semantics during result splitting and promotion.
- Handling of vector expansion with constant-time bitwise blend
lowering.
- Remove redundant X86/RISCV tests and add vector coverage while
maintaining critical code path validation.
These changes improve correctness, maintainability, and the end-to-end
constant-time behavior of the fallback implementation across the
optimization and legalization stages.
https://invent.kde.org/qt/clang/llvm-project/-/commit/4214b01a612e4743f089d684a71d51789bd677dc
Git commit 8cb284eea92e420b82b73513f99fa70c0ff25f2d by wizardengineer (on behalf of Akshay K) on 19/07/2026 at 20:23..
[LangRef][ConstantTime] Add documentation for llvm.ct.select.* constant-time intrinsics (#181042)
This PR introduces and documents the llvm.ct.select.* constant-time
intrinsics, providing timing-independent selection operations for
security-sensitive code. The LangRef is updated with syntax, semantics,
supported types, and usage guidance.
Additionally, test coverage is extended with a new <8 x float> variant
(llvm.ct.select.v8f32) and corresponding X86 codegen tests to ensure
correct lowering on both x64 and x32 targets.
https://invent.kde.org/qt/clang/llvm-project/-/commit/8cb284eea92e420b82b73513f99fa70c0ff25f2d
Git commit d855f76af0f16911634aab2b96c23e47b679c3b8 by wizardengineer on 19/07/2026 at 20:23..
[ConstantTime] Changed CTSELECT instances to CT_SELECT
https://invent.kde.org/qt/clang/llvm-project/-/commit/d855f76af0f16911634aab2b96c23e47b679c3b8
Git commit 904766a700e87dfa8f747997d9656b2e596fcf9f by wizardengineer on 19/07/2026 at 20:23..
[ConstantTime] Fix CT_SELECT expansion to preserve constant-time guarantees
Create CT_SELECT nodes for scalar types regardless of target support, so
they survive DAGCombiner (visitCT_SELECT is conservative). Expand to
AND/OR/XOR during operation legalization after SETCC is lowered, preventing
the sext(setcc)->select fold chain that converts constant-time patterns
into data-dependent conditional moves (e.g. movn/movz on MIPS).
The mask uses SUB(0, AND(Cond, 1)) instead of SIGN_EXTEND because type
legalization already promoted i1 to the SetCC result type, making
SIGN_EXTEND a no-op for same-width types.
https://invent.kde.org/qt/clang/llvm-project/-/commit/904766a700e87dfa8f747997d9656b2e596fcf9f
Git commit 630980874b81ed8368763101adf9e1be829316d4 by wizardengineer (on behalf of AkshayK) on 19/07/2026 at 20:23..
[ConstantTime] Move ct.select lowering to legalizer; misc fixes
- LegalizeDAG owns CT_SELECT lowering: scalar-mask+splat for vectors
(avoids illegal vNi1), memory-blend for FP types lacking a legal
same-size integer (f64 on i386 no-SSE, fp128, x86_fp80)
- Add InstSimplify folds for constant cond and identical arms
- Extend X86 tests to half/bfloat/fp128/x86_fp80; nounwind cleanup
- Preserve flags through legalizer; reuse SDTSelect
https://invent.kde.org/qt/clang/llvm-project/-/commit/630980874b81ed8368763101adf9e1be829316d4
Git commit 61defe7c71f3fad0431de9f8b5736f618fbe7bf8 by wizardengineer (on behalf of AkshayK) on 19/07/2026 at 20:23..
[ConstantTime] Reword comments and LangRef doc
https://invent.kde.org/qt/clang/llvm-project/-/commit/61defe7c71f3fad0431de9f8b5736f618fbe7bf8
Git commit 64613ed31ef6ec1523ad78f1a0e08404998e44e7 by wizardengineer (on behalf of AkshayK) on 19/07/2026 at 20:23..
[ConstantTime] Address reviewer feedback for llvm.ct.select core
Model llvm.ct.select as IntrInaccessibleMemOnly so the call stays pinned
without pessimizing alias analysis. Make CT_SELECT flagless (drop the
getCTSelect flags parameter, dead flag propagation, and
setFlags-after-getNode) and assert its condition is scalar. Blend the FP
memory fallback at the widest legal integer width with ext-load and
trunc-store tails instead of illegal i8 chunks. Restore the LangRef
section dropped in the rebase onto the Markdown docs migration and note
RISC-V Zkt/Zvkt. Apply review style fixes and regenerate affected tests.
https://invent.kde.org/qt/clang/llvm-project/-/commit/64613ed31ef6ec1523ad78f1a0e08404998e44e7
Git commit f4383a332170afc874a6fd6113a42d83a46889d9 by wizardengineer (on behalf of AkshayK) on 19/07/2026 at 20:23..
[ConstantTime] Apply review fixes for llvm.ct.select core
- Verifier: reject aggregate types instead of crashing ISel; add test.
- Fix scalable-vector expansion crash when the element type is not a
legal scalar; add RVV test.
- LangRef: document poison/undef, noundef, permitted folds, and FMF
behavior; rewrite Syntax/Overview.
- Deduplicate CT_SELECT type-legalizer handlers into the SELECT paths.
- Misc: FP int-twin assert, dead null check, in-place memory blend,
flag-free PromoteNode, GlobalISel fallback test, comment cleanups.
https://invent.kde.org/qt/clang/llvm-project/-/commit/f4383a332170afc874a6fd6113a42d83a46889d9