[all-commits] [llvm/llvm-project] 6712e2: Add support for flag output operand "=@cc" for Sys...

anoopkg6 via All-commits all-commits at lists.llvm.org
Tue Oct 14 02:54:04 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6712e20c5261376a6b0015fb3c8d15124757d47d
      https://github.com/llvm/llvm-project/commit/6712e20c5261376a6b0015fb3c8d15124757d47d
  Author: anoopkg6 <anoop.kumar6 at ibm.com>
  Date:   2025-10-14 (Tue, 14 Oct 2025)

  Changed paths:
    M clang/include/clang/Basic/TargetInfo.h
    M clang/lib/Basic/Targets/AArch64.cpp
    M clang/lib/Basic/Targets/SystemZ.cpp
    M clang/lib/Basic/Targets/SystemZ.h
    M clang/lib/Basic/Targets/X86.cpp
    M clang/lib/CodeGen/CGStmt.cpp
    A clang/test/CodeGen/inline-asm-systemz-flag-output.c
    A clang/test/Preprocessor/systemz_asm_flag_output.c
    M llvm/lib/Target/SystemZ/SystemZ.h
    M llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
    M llvm/lib/Target/SystemZ/SystemZISelLowering.h
    M llvm/test/CodeGen/SystemZ/htm-intrinsics.ll
    A llvm/test/CodeGen/SystemZ/inline-asm-flag-output-01.ll
    A llvm/test/CodeGen/SystemZ/inline-asm-flag-output-02.ll

  Log Message:
  -----------
  Add support for flag output operand "=@cc" for SystemZ. (#125970)

Added Support for flag output operand "=@cc", inline assembly constraint
for
SystemZ.

- Clang now accepts "=@cc" assembly operands, and sets 2-bits condition
code
    for output operand for SyatemZ.

- Clang currently emits an assertion that flag output operands are
boolean
values, i.e. in the range [0, 2). Generalize this mechanism to allow
targets to specify arbitrary range assertions for any inline assembly
    output operand.  This will be used to assert that SystemZ two-bit
    condition-code values are in the range [0, 4).

- SystemZ backend lowers "@cc" targets by using ipm sequence to extract
    condition code from PSW.

  - DAGCombine tries to optimize lowered ipm sequence by combining
CCReg and computing effective CCMask and CCValid in combineCCMask for
    select_ccmask and br_ccmask.

- Cost computation is done for merging conditionals for branch
instruction
in SelectionDAG, as split may cause branches conditions evaluation goes
    across basic block and difficult to combine.

---------

Co-authored-by: anoopkg6 <anoopkg6 at github.com>
Co-authored-by: Ulrich Weigand <ulrich.weigand at de.ibm.com>



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