LLVM/project 1f6ac81 — llvm/lib/Target/Lanai LanaiMemAluCombiner.cpp LanaiOptions.td, llvm/test/CodeGen/Lanai mem_alu_combiner.ll

[Lanai] Rename -lanai-mem-alu-combiner to avoid a pass name collision (#234513)

opt registers each legacy pass name as an option, and
LanaiMemAluCombinerLegacy, named lanai-mem-alu-combiner, causes a
collision.
DeltaFile
+2-2llvm/lib/Target/Lanai/LanaiOptions.td
+1-1llvm/test/CodeGen/Lanai/mem_alu_combiner.ll
+1-1llvm/lib/Target/Lanai/LanaiMemAluCombiner.cpp
+4-43 files

LLVM/project f514b16 — clang/test/CodeGen mrecord-mcount.c mnop-mcount.c, llvm/lib/IR Verifier.cpp

[X86] Support -mnop-mcount and -mrecord-mcount on x86 elf targets (#184641)

Support mnop-mcount and mrecord-mcount attributes when used with the
fentry-call=true attribute.

Similar to SystemZ, use the mnop-mcount attribute to place a nop instead
of a call to __fentry__.

Likewise, use the mrecord-mcount attribute to record the location of the
call to fentry (or nop if used with the above) to a section named
__mcount_loc.

This enables the use of -mnop-mcount -mrecord-mcount for x86 in Clang.
DeltaFile
+65-0llvm/test/CodeGen/X86/mrecord-mcount-01.ll
+50-0llvm/test/CodeGen/X86/mnop-mcount-01.ll
+31-10llvm/lib/Target/X86/X86MCInstLower.cpp
+16-0clang/test/CodeGen/mrecord-mcount.c
+16-0clang/test/CodeGen/mnop-mcount.c
+12-0llvm/lib/IR/Verifier.cpp
+190-107 files not shown
+216-4113 files

LLVM/project 0dcebf3 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lsx vhsubw.ll vhaddw.ll

[LoongArch] Lower vector sign extension with VSLLWIL and VEXTH

vsllwil.{h.b/w.h/d.w} with a zero shift amount sign-extends the low
half of the source elements, and vexth.{h.b/w.h/d.w} the high half.
Use them for the custom SIGN_EXTEND legalization and for
SIGN_EXTEND_VECTOR_INREG, instead of computing the sign mask with vslti
and interleaving it with vilvl/vilvh, which takes one more instruction
per step. SIGN_EXTEND_VECTOR_INREG now also handles 4x extensions, which
previously fell back to a shuffle followed by a vslli/vsrai pair.
DeltaFile
+55-80llvm/test/CodeGen/LoongArch/lsx/vec-sext.ll
+35-57llvm/test/CodeGen/LoongArch/lsx/ir-instruction/sitofp.ll
+22-27llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+16-19llvm/test/CodeGen/LoongArch/lsx/vmskcond.ll
+4-8llvm/test/CodeGen/LoongArch/lsx/vhsubw.ll
+4-8llvm/test/CodeGen/LoongArch/lsx/vhaddw.ll
+136-1996 files

LLVM/project 3c9da87 — llvm/test/CodeGen/AMDGPU packed-fneg-fsub-fp16.ll minmax.ll

[AMDGPU] Adjust amdgpu fmax/fmin legalization for GISEL (#223351)

Please see https://github.com/llvm/llvm-project/pull/203150 and
https://github.com/llvm/llvm-project/pull/202917 for more information.

---------

Co-authored-by: shore <shorshen at amd.com>
DeltaFile
+175-499llvm/test/CodeGen/AMDGPU/vector-reduce-fmin.ll
+175-499llvm/test/CodeGen/AMDGPU/vector-reduce-fmax.ll
+103-328llvm/test/CodeGen/AMDGPU/fmaxnum.ll
+98-311llvm/test/CodeGen/AMDGPU/fminnum.ll
+46-140llvm/test/CodeGen/AMDGPU/minmax.ll
+35-96llvm/test/CodeGen/AMDGPU/packed-fneg-fsub-fp16.ll
+632-1,87313 files not shown
+792-2,09719 files

LLVM/project d7a7bd1 — clang/include/clang/AST SemaProxy.h, clang/include/clang/Sema SemaProxy.h

[Clang] Instantiate functions from constant evaluation. (#205557)

This PR is a rework of #173537, which was a rework of #115168; the sole
goal remains to address #73232. I used #173537 as a starting point (for
both code and tests), but attempted to follow the alternative design
requested in the comments therein.

A quick design overview:
- A `SemaProxy` interface is introduced to `AST`, which defines a set of
(possibly mutable) semantic operations that can be triggered by the
evaluation of certain expressions; this class finds its implementation
in `Sema/SemaEval.cpp`. `Sema` creates a unique `SemaProxy` to itself at
construction time, which is made available via
`Sema::getproxyForEval()`.
- Ordinary evaluation (e.g., via `Expr::EvaluateAsConstantExpr`) has no
access to `SemaProxy`, and therefore cannot act on the AST: instead,
variants of these functions (e.g.,
`Expr::EvaluateAsMandatedConstantExpr`) are introduced, which accept a
`SemaProxy &`. This makes clear from the call-side whether an operation

    [36 lines not shown]
DeltaFile
+246-104clang/lib/AST/ExprConstant.cpp
+320-6clang/test/SemaCXX/constexpr-late-instantiation.cpp
+41-0clang/include/clang/Sema/SemaProxy.h
+40-0clang/include/clang/AST/SemaProxy.h
+36-0clang/lib/Sema/SemaProxy.cpp
+14-16clang/lib/AST/ByteCode/Context.cpp
+697-12615 files not shown
+842-16221 files

LLVM/project 7ea2a13 — llvm/include/llvm/Analysis LoopInfo.h, llvm/lib/Analysis LoopInfo.cpp

[IndVarSimplify] Skip exit predication past divergent effects (#183906) (#194202)

This PR makes `IndVarSimplify::predicateLoopExits` skip divergent
effects. As [nikic](https://github.com/nikic) 's suggestion, I reuse the
code about infinite loop detection in `LoopDeletion`

Close #183906
DeltaFile
+241-0llvm/test/Transforms/IndVarSimplify/skip-predication-infinite-subloop.ll
+107-0llvm/test/Analysis/ScalarEvolution/finite-loop-droppable.ll
+97-0llvm/test/Transforms/LoopDeletion/loop-nest-finite.ll
+3-30llvm/lib/Transforms/Scalar/LoopDeletion.cpp
+28-0llvm/lib/Analysis/LoopInfo.cpp
+10-0llvm/include/llvm/Analysis/LoopInfo.h
+486-302 files not shown
+495-308 files

LLVM/project abef2e8 — clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/Transforms/abi-lowering amdgpu-calling-conv.cir

[CIR] Support direct-in-registers aggregates and array coercions in call-conv lowering
DeltaFile
+126-2clang/test/CIR/Transforms/abi-lowering/amdgpu-calling-conv.cir
+19-2clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+145-42 files

LLVM/project 5d7d143 — llvm/test/CodeGen/RISCV/GlobalISel fp128.ll

[RISCV][NFC] Added fp128 type testcases (#233095)

**Reference PR -** https://github.com/llvm/llvm-project/pull/233100
DeltaFile
+4,641-516llvm/test/CodeGen/RISCV/GlobalISel/fp128.ll
+4,641-5161 files

LLVM/project 2652a6d — llvm/docs AMDGPUUsage.rst, llvm/lib/Target/AMDGPU/Utils AMDGPUPALMetadata.h AMDGPUPALMetadata.cpp

AMDGPU: Include callees in backend_stack_size PAL metadata

The stack size reported in the PAL metadata of a chain function should
include the stack sizes of any callees, since the consumers don't have
access to the call graph (this is especially important for whole wave
functions, because we don't even emit any PAL metadata for them). The
consumers are generally expected to allocate scratch based on the
maximum `.backend_stack_size` emitted for the functions in a pipeline.
They will also have to deal with recursion and indirect calls.

The `.stack_frame_size_in_bytes` metadata remains unchanged, i.e. it
represents just the stack size of the current function (without its
callees).

Assisted-by: AI
DeltaFile
+56-4llvm/test/CodeGen/AMDGPU/amdpal-chain-metadata.ll
+9-3llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.cpp
+8-2llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.h
+6-1llvm/docs/AMDGPUUsage.rst
+2-2llvm/test/CodeGen/AMDGPU/pal-metadata-3.0-callable.ll
+2-2llvm/test/CodeGen/AMDGPU/pal-metadata-3.0-callable-dvgpr.ll
+83-142 files not shown
+87-178 files

LLVM/project 22ee7ce — llvm/lib/Target/AMDGPU/Utils AMDGPUPALMetadata.h, llvm/test/CodeGen/AMDGPU pal-metadata-3.6.ll pal-metadata-3.6-dvgpr.ll

AMDGPU: Emit .backend_stack_size for entry points

Currently, the `.backend_stack_size` PAL metadata is only emitted for
functions, but some of the consumers expect it to exist for the entry
points too (without it, if the entry point uses more scratch than any
other functions in the pipeline then we will allocate too little
scratch).

The meaning is the same for entry functions as it is for non-entry
functions: the stack size of the current function plus any of its
non-chain callees.

Unlike `.scratch_memory_size`, this does not get rounded up to 16.

Assisted-by: AI
DeltaFile
+7-5llvm/test/CodeGen/AMDGPU/amdpal-chain-metadata.ll
+5-0llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.h
+4-0llvm/test/CodeGen/AMDGPU/pal-metadata-3.6.ll
+4-0llvm/test/CodeGen/AMDGPU/pal-metadata-3.6-dvgpr.ll
+4-0llvm/test/CodeGen/AMDGPU/pal-metadata-3.0.ll
+4-0llvm/test/CodeGen/AMDGPU/pal-metadata-3.0.gfx950.ll
+28-514 files not shown
+55-520 files

LLVM/project 7687706 — llvm/lib/Target/AMDGPU SIFrameLowering.h SIFrameLowering.cpp, llvm/test/CodeGen/AMDGPU amdgpu-cs-chain-cc.ll pei-amdgpu-cs-chain.mir

AMDGPU: Reset SP in entry point before chain call

Chain calls are always tail calls and they are expected to completely
take over the caller's stack frame. Chain functions receive a stack
pointer from their caller, but that is only in order to support
reserving space at the bottom of the stack for CWSR.

Currently, when an entry function has its own stack variables, the SP we
pass on to the chain function points after the stack of the caller. This
is wasteful, so the current patch introduces an epilogue for entry
functions if they contain a chain call. The epilogue will reset SP to
point to the bottom of the stack, either by copying it from FP if we've
been reserving space for CWSR or by setting it directly to zero.

Note that we also modify `requiresStackPointerReference` to return false
for tail calls. This means the prologue will only initialize SP if it's
really needed by the current function, relying on the epilogue to handle
it if we only need to set SP for the sake of our chain callee. This
avoids situations where we might unnecessarily initialize the SP with

    [4 lines not shown]
DeltaFile
+47-4llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
+8-9llvm/test/CodeGen/AMDGPU/dynamic-vgpr-reserve-stack-for-cwsr.ll
+3-7llvm/test/CodeGen/AMDGPU/pei-amdgpu-cs-chain.mir
+4-5llvm/test/CodeGen/AMDGPU/amdgpu-cs-chain-cc.ll
+3-0llvm/lib/Target/AMDGPU/SIFrameLowering.h
+65-255 files

LLVM/project 0cbd5d0 — llvm/lib/Target/AMDGPU AMDGPUMCResourceInfo.cpp AMDGPUResourceUsageAnalysis.cpp, llvm/test/CodeGen/AMDGPU amdpal-chain-metadata.ll

AMDGPU: Don't include stack size of chain callees

Chain callees are always tail called into and overwrite the caller's
stack. Therefore, their stack size should not be added up to that of
their caller when computing the resource usage.

Assisted-by: AI
DeltaFile
+6-6llvm/test/CodeGen/AMDGPU/amdpal-chain-metadata.ll
+5-3llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.cpp
+4-1llvm/lib/Target/AMDGPU/AMDGPUMCResourceInfo.cpp
+15-103 files

LLVM/project 56b4538 — llvm/test/CodeGen/AMDGPU amdpal-chain-metadata.ll

AMDGPU: Precommit testcases for stack metadata. NFC
DeltaFile
+119-4llvm/test/CodeGen/AMDGPU/amdpal-chain-metadata.ll
+119-41 files

LLVM/project 37d173d — llvm/test/CodeGen/AMDGPU amdgpu-cs-chain-cc.ll pei-amdgpu-cs-chain.mir

AMDGPU: Precommit test cases for PEI
DeltaFile
+132-0llvm/test/CodeGen/AMDGPU/dynamic-vgpr-reserve-stack-for-cwsr.ll
+87-0llvm/test/CodeGen/AMDGPU/pei-amdgpu-cs-chain.mir
+73-0llvm/test/CodeGen/AMDGPU/amdgpu-cs-chain-cc.ll
+292-03 files

LLVM/project 20ec35c — llvm/include/llvm/CodeGen MachineScheduler.h, llvm/lib/CodeGen MachineScheduler.cpp

Address comments

Created using spr 1.3.6-beta.1
DeltaFile
+39-44llvm/lib/CodeGen/MachineScheduler.cpp
+31-17llvm/include/llvm/CodeGen/MachineScheduler.h
+26-0llvm/test/CodeGen/RISCV/postmisched-antidep.ll
+2-2llvm/test/CodeGen/RISCV/postmisched-antidep-region.mir
+98-634 files

LLVM/project 8539f04 — llvm/lib/Target/AMDGPU GCNFeatures.td AMDGPULowerIntrinsics.cpp, llvm/test/CodeGen/AMDGPU mcast-full-mask-bug.ll lower-intrinsics-mcast-full-mask.ll

Extend the mask restriction to cluster_load_* multicasts
DeltaFile
+368-47llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cluster.load.async.to.lds.ll
+333-15llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cluster.load.ll
+94-11llvm/test/CodeGen/AMDGPU/lower-intrinsics-mcast-full-mask.ll
+39-20llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp
+56-2llvm/test/CodeGen/AMDGPU/mcast-full-mask-bug.ll
+1-1llvm/lib/Target/AMDGPU/GCNFeatures.td
+891-966 files

LLVM/project abc4f4c — llvm/include/llvm/CodeGen CFGuardLongjmp.h, llvm/lib/CodeGen CFGuardLongjmp.cpp

[NewPM][CodeGen] Port cfguard-longjmp (#234481)

Standard NewPM pass porting.
DeltaFile
+31-6llvm/lib/CodeGen/CFGuardLongjmp.cpp
+25-0llvm/include/llvm/CodeGen/CFGuardLongjmp.h
+2-2llvm/lib/Target/X86/X86CodeGenPassBuilder.cpp
+1-1llvm/lib/Target/X86/X86TargetMachine.cpp
+1-1llvm/lib/Target/ARM/ARMTargetMachine.cpp
+2-0llvm/test/CodeGen/X86/llc-pipeline-npm.ll
+62-106 files not shown
+68-1512 files

LLVM/project 3c71e66 — clang/test/OpenMP declare_variant_isa_selectors.c, llvm/include/llvm/Frontend/OpenMP OMPContext.h

[clang][OpenMP] Match device and target_device ISA names separately (#232996)

A context selector can name ISAs in both `device={isa(...)}` and
`target_device={isa(...)}`. These are separate selectors, but their ISA
names were checked together, so an ISA that the target does not support
made both selectors fail. The default match_all needs both selectors
anyway, but the `match_any` and `match_none` extensions selected the
wrong variant. For example, on x86-64:

```c
  #pragma omp declare variant(variant) \
      match(device = {isa(sse2)}, target_device = {isa(bogus_isa)}, \
            implementation = {extension(match_any)})
```

did not select variant, although `device={isa(sse2)}` matches. Likewise,
`match_none` accepted a variant whose `target_device` ISA matched.

This patch records which selector each ISA name belongs to and check

    [6 lines not shown]
DeltaFile
+44-1llvm/unittests/Frontend/OpenMPContextTest.cpp
+35-0clang/test/OpenMP/declare_variant_isa_selectors.c
+8-10llvm/lib/Frontend/OpenMP/OMPContext.cpp
+13-5llvm/include/llvm/Frontend/OpenMP/OMPContext.h
+100-164 files

LLVM/project 48ee595 — llvm/include/llvm/Analysis TargetTransformInfoImpl.h TargetTransformInfo.h, llvm/lib/Analysis TargetTransformInfo.cpp

[LSR] Refine target-specific equality loop exits

Query target interest before computing the SCEV exit count.

Also cover samesign comparisons and remove a redundant IV operand check.

Assisted-by: TRAE CLI (GPT-5.6-Sol)
DeltaFile
+180-0llvm/test/Transforms/LoopStrengthReduce/RISCV/loop-exit-equality.ll
+9-3llvm/include/llvm/Analysis/TargetTransformInfo.h
+4-5llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+7-2llvm/lib/Analysis/TargetTransformInfo.cpp
+5-2llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
+6-1llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+211-131 files not shown
+215-157 files

LLVM/project c5c3cf7 — llvm/lib/CodeGen AtomicExpandPass.cpp, llvm/lib/Target/NVPTX NVPTXISelDAGToDAG.cpp NVPTXISelLowering.cpp

[AtomicExpand][NVPTX] Support native elementwise atomicrmw
DeltaFile
+171-1,538llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+204-23llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+57-167llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+142-10llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
+95-0llvm/test/CodeGen/NVPTX/cache-hint-atomics.ll
+42-28llvm/lib/CodeGen/AtomicExpandPass.cpp
+711-1,7666 files not shown
+772-1,79212 files

LLVM/project ff573f3 — llvm/lib/CodeGen AtomicExpandPass.cpp, llvm/lib/Target/NVPTX NVPTXISelLowering.cpp

[AtomicExpand][NVPTX] Defer single-lane atomics to type legalization
DeltaFile
+2,376-2,410llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+2,252-2,190llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm60.ll
+882-958llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+57-44llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+41-46llvm/lib/CodeGen/AtomicExpandPass.cpp
+19-51llvm/test/Transforms/AtomicExpand/NVPTX/atomicrmw-vector.ll
+5,627-5,6995 files not shown
+5,678-5,80611 files

LLVM/project fff09e3 — llvm/test/CodeGen/NVPTX atomicrmw-v1-type-legalization.ll, llvm/test/Transforms/AtomicExpand/Mips expand-atomic-rmw-elementwise.ll

[AtomicExpand][NVPTX] Add single-lane atomic RMW coverage

Record current expansion and code generation before changing single-lane RMW legalization. Check the full pipeline separately from direct instruction selection while their output differs.
DeltaFile
+194-0llvm/test/Transforms/AtomicExpand/NVPTX/atomicrmw-vector.ll
+103-0llvm/test/Transforms/AtomicExpand/Mips/expand-atomic-rmw-elementwise.ll
+32-14llvm/test/CodeGen/NVPTX/atomicrmw-v1-type-legalization.ll
+15-0llvm/test/Transforms/AtomicExpand/X86/expand-atomic-non-integer.ll
+344-144 files

LLVM/project 28bb0cf — mlir/lib/Conversion/ComplexToStandard ComplexToStandard.cpp, mlir/test/Conversion/ComplexToStandard convert-to-standard.mlir

[mlir][complex] Fix exp special values for infinite real part (#232791)
DeltaFile
+33-2mlir/test/Conversion/ComplexToStandard/convert-to-standard.mlir
+30-3mlir/test/Integration/Dialect/Complex/CPU/correctness.mlir
+21-0mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp
+84-53 files

LLVM/project 31cc8e5 — llvm/lib/CodeGen AtomicExpandPass.cpp, llvm/lib/Target/NVPTX NVPTXISelDAGToDAG.cpp NVPTXISelLowering.cpp

[AtomicExpand][NVPTX] Support native elementwise atomicrmw
DeltaFile
+171-1,538llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+204-23llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+57-167llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+142-10llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
+95-0llvm/test/CodeGen/NVPTX/cache-hint-atomics.ll
+42-28llvm/lib/CodeGen/AtomicExpandPass.cpp
+711-1,7666 files not shown
+772-1,79212 files

LLVM/project 2682ee6 — llvm/lib/CodeGen AtomicExpandPass.cpp, llvm/lib/Target/NVPTX NVPTXISelLowering.cpp

[AtomicExpand][NVPTX] Defer single-lane atomics to type legalization
DeltaFile
+2,376-2,410llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+2,252-2,190llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm60.ll
+882-958llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+57-44llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+38-45llvm/lib/CodeGen/AtomicExpandPass.cpp
+19-51llvm/test/Transforms/AtomicExpand/NVPTX/atomicrmw-vector.ll
+5,624-5,6984 files not shown
+5,671-5,80310 files

LLVM/project bb464de — llvm/lib/Target/AMDGPU AMDGPULowerIntrinsics.cpp, llvm/test/CodeGen/AMDGPU lower-intrinsics-mcast-full-mask.ll

review: use known bits to decide when to restrict the mask
DeltaFile
+42-0llvm/test/CodeGen/AMDGPU/lower-intrinsics-mcast-full-mask.ll
+16-12llvm/lib/Target/AMDGPU/AMDGPULowerIntrinsics.cpp
+58-122 files

LLVM/project fb3ef86 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch sextw-removal.ll

[LoongArch] Implement `computeKnownBitsForTargetNode()` cases for `V{ALL,ANY}_{,NON}ZERO` (#230799)

Currently, `emitVecCondBranchPseudo()` loads an constant 0/1 into the
destination GPR for `Pseudo{,X}VB{Z,NZ}{,_B,_H,_W,_D}`:


https://github.com/llvm/llvm-project/blob/762316e293d1db4f495bdbb545c31d588a1a2d62/llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp#L9099-L9112

Yet their corresponding `SDNode`s, `V{ALL,ANY}_{,NON}ZERO`, are not
marked with matching range information in
`computeKnownBitsForTargetNode()`. Doing so elides unnecessary sign
extensions and could also help pattern matching in a later optimization.
DeltaFile
+4-5llvm/test/CodeGen/LoongArch/sextw-removal.ll
+9-0llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+13-52 files

LLVM/project f3b29c3 — clang/include/clang/CIR/Dialect/IR CIRDialect.td, clang/lib/CIR/CodeGen/Targets AMDGPU.cpp

[CIR][AMDGPU] Honor __launch_bounds__ on HIP kernels (#233929)

Map max threads to amdgpu-flat-work-group-size and min blocks to
amdgpu-waves-per-eu matching classic codegen
DeltaFile
+32-8clang/lib/CIR/CodeGen/Targets/AMDGPU.cpp
+21-0clang/test/CIR/CodeGenHIP/amdgpu-attrs.hip
+2-0clang/include/clang/CIR/Dialect/IR/CIRDialect.td
+55-83 files

LLVM/project d9a66d0 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lsx vhsubw.ll vhaddw.ll

[LoongArch] Lower vector sign extension with VSLLWIL and VEXTH

vsllwil.{h.b/w.h/d.w} with a zero shift amount sign-extends the low
half of the source elements, and vexth.{h.b/w.h/d.w} the high half.
Use them for the custom SIGN_EXTEND legalization and for
SIGN_EXTEND_VECTOR_INREG, instead of computing the sign mask with vslti
and interleaving it with vilvl/vilvh, which takes one more instruction
per step. SIGN_EXTEND_VECTOR_INREG now also handles 4x extensions, which
previously fell back to a shuffle followed by a vslli/vsrai pair.
DeltaFile
+55-80llvm/test/CodeGen/LoongArch/lsx/vec-sext.ll
+35-57llvm/test/CodeGen/LoongArch/lsx/ir-instruction/sitofp.ll
+22-27llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+16-19llvm/test/CodeGen/LoongArch/lsx/vmskcond.ll
+4-8llvm/test/CodeGen/LoongArch/lsx/vhsubw.ll
+4-8llvm/test/CodeGen/LoongArch/lsx/vhaddw.ll
+136-1996 files

LLVM/project ba58d3b — mlir/include/mlir/Dialect/Arith/IR Arith.h, mlir/lib/Dialect/Arith/IR ArithOps.cpp

[mlir][arith] Honor finite min/max reduction identities (#232257)

I hit this while compiling a JAX transformer block through IREE/WebGPU
in JupyterLite. `linalg.softmax` requests a finite reduction
initializer, but `getIdentityValueAttr` returns NaN for `maxnumf`, which
Tint rejects.

Honor `useOnlyFiniteValue` for `maxnumf` and `minnumf`, preserving the
existing NaN identities when the flag is false. Update the existing
softmax check and add finite min/max reduction cases.
DeltaFile
+107-0mlir/test/Dialect/Linalg/transform-op-split-reduction.mlir
+16-2mlir/lib/Dialect/Arith/IR/ArithOps.cpp
+8-6mlir/test/Dialect/Linalg/pad-neutral.mlir
+5-3mlir/include/mlir/Dialect/Arith/IR/Arith.h
+1-1mlir/test/Dialect/Linalg/transform-op-decompose.mlir
+137-125 files