[qt/clang/llvm]: 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
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 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/-/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/-/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/-/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/-/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/-/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/-/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/-/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/-/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/-/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/-/commit/f4383a332170afc874a6fd6113a42d83a46889d9
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.