[all-commits] [llvm/llvm-project] 8a2321: [ConstantTime][LLVM] Add llvm.ct.select intrinsic ...

Julius Alexandre via All-commits all-commits at lists.llvm.org
Mon Feb 9 20:35:11 PST 2026


  Branch: refs/heads/users/wizardengineer/ct-select-x86
  Home:   https://github.com/llvm/llvm-project
  Commit: 8a2321ff96aebd42e6f3eefe4ea9b63ddd005bee
      https://github.com/llvm/llvm-project/commit/8a2321ff96aebd42e6f3eefe4ea9b63ddd005bee
  Author: wizardengineer <juliuswoosebert at gmail.com>
  Date:   2026-02-03 (Tue, 03 Feb 2026)

  Changed paths:
    M llvm/include/llvm/CodeGen/ISDOpcodes.h
    M llvm/include/llvm/CodeGen/SelectionDAG.h
    M llvm/include/llvm/CodeGen/SelectionDAGNodes.h
    M llvm/include/llvm/CodeGen/TargetLowering.h
    M llvm/include/llvm/IR/Intrinsics.td
    M llvm/include/llvm/Target/TargetSelectionDAG.td
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
    M llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h
    M llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
    A llvm/test/CodeGen/RISCV/ctselect-fallback.ll
    A llvm/test/CodeGen/X86/ctselect.ll

  Log Message:
  -----------
  [ConstantTime][LLVM] Add llvm.ct.select intrinsic with generic SelectionDAG lowering


  Commit: 8f724c7b6599272d75a51aae5e7bb0951110b768
      https://github.com/llvm/llvm-project/commit/8f724c7b6599272d75a51aae5e7bb0951110b768
  Author: wizardengineer <juliuswoosebert at gmail.com>
  Date:   2026-02-09 (Mon, 09 Feb 2026)

  Changed paths:
    M clang/docs/LanguageExtensions.rst
    M clang/include/clang/Basic/Builtins.td
    M clang/lib/CodeGen/CGBuiltin.cpp
    M clang/lib/Sema/SemaChecking.cpp
    A clang/test/Sema/builtin-ct-select-edge-cases.c
    A clang/test/Sema/builtin-ct-select.c

  Log Message:
  -----------
  [ConstantTime][Clang] Add __builtin_ct_select for constant-time selection


  Commit: 477301e5a88029e288c722473cf051843ca92ad7
      https://github.com/llvm/llvm-project/commit/477301e5a88029e288c722473cf051843ca92ad7
  Author: wizardengineer <juliuswoosebert at gmail.com>
  Date:   2026-02-09 (Mon, 09 Feb 2026)

  Changed paths:
    M llvm/lib/Target/X86/X86.td
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/lib/Target/X86/X86ISelLowering.h
    M llvm/lib/Target/X86/X86InstrCMovSetCC.td
    M llvm/lib/Target/X86/X86InstrCompiler.td
    M llvm/lib/Target/X86/X86InstrFragments.td
    M llvm/lib/Target/X86/X86InstrInfo.cpp
    M llvm/lib/Target/X86/X86InstrInfo.h
    M llvm/lib/Target/X86/X86InstrPredicates.td
    M llvm/lib/Target/X86/X86TargetMachine.cpp
    A llvm/test/CodeGen/X86/ctselect-edge-cases.ll
    A llvm/test/CodeGen/X86/ctselect-i386-fp.ll
    A llvm/test/CodeGen/X86/ctselect-i386-mmx.ll
    A llvm/test/CodeGen/X86/ctselect-i386.ll
    A llvm/test/CodeGen/X86/ctselect-optimization.ll
    A llvm/test/CodeGen/X86/ctselect-vector.ll
    M llvm/test/CodeGen/X86/ctselect.ll

  Log Message:
  -----------
  [LLVM][X86] Add native ct.select support for X86 and i386

Add native X86 implementation with CMOV instructions and comprehensive tests:
- X86 ISelLowering with CMOV for x86_64 and i386
- Fallback bitwise operations for i386 targets without CMOV
- Post-RA expansion for pseudo-instructions
- Comprehensive test coverage:
  - Edge cases (zero conditions, large integers)
  - i386-specific tests (FP, MMX, non-CMOV fallback)
  - Vector operations
  - Optimization patterns

The basic test demonstrating fallback is in the core infrastructure PR.


  Commit: f1f4ddf510ac82a2961f065c42ce28000ff639c9
      https://github.com/llvm/llvm-project/commit/f1f4ddf510ac82a2961f065c42ce28000ff639c9
  Author: wizardengineer <juliuswoosebert at gmail.com>
  Date:   2026-02-09 (Mon, 09 Feb 2026)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/lib/Target/X86/X86InstrInfo.cpp
    M llvm/lib/Target/X86/X86InstrInfo.h
    M llvm/test/CodeGen/X86/ctselect-i386-fp.ll

  Log Message:
  -----------
  [LLVM][X86] Add f80 support for ct.select

Add special handling for x86_fp80 types in CTSELECT lowering by splitting
them into three 32-bit chunks, performing constant-time selection on each
chunk, and reassembling the result. This fixes crashes when compiling
tests with f80 types.

Also updated ctselect.ll to match current generic fallback implementation.


Compare: https://github.com/llvm/llvm-project/compare/b63f49d29675...f1f4ddf510ac

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list