LLVM/project 5bb1135mlir/test/CAPI rewrite.c

[mlir-c] Fix testDialectMaterializeConstant review comments

Correct the misleading comment about the func dialect (it does have a
constant materializer; it just declines an i32 IntegerAttr), and assert
the documented insertion-point contract: the op lands in the current
insertion block and the rewriter's insertion point is preserved.
DeltaFile
+7-2mlir/test/CAPI/rewrite.c
+7-21 files

LLVM/project f9a5446llvm/lib/Target/AMDGPU GCNSubtarget.h AMDGPU.td, llvm/test/CodeGen/AMDGPU arbitrary-fp-to-float-fp8-hw.ll vector-reduce-fmin.ll

[AMDGPU] Exclude GFX11.7 from GFX11 VOPD interlock hazard fix (#225880)

Narrowed the scope of #220348 from all of GFX11.  Also, this Hazard
is now defined as a feature in AMDGPU.td.
DeltaFile
+105-31llvm/test/CodeGen/AMDGPU/vopd-combine.mir
+12-15llvm/test/CodeGen/AMDGPU/vector-reduce-fmin.ll
+12-15llvm/test/CodeGen/AMDGPU/vector-reduce-fmax.ll
+11-13llvm/test/CodeGen/AMDGPU/arbitrary-fp-to-float-fp8-hw.ll
+10-1llvm/lib/Target/AMDGPU/AMDGPU.td
+0-4llvm/lib/Target/AMDGPU/GCNSubtarget.h
+150-791 files not shown
+151-807 files

LLVM/project b30e26dclang/include/clang/CIR/Dialect/IR CIROps.td, clang/include/clang/CIR/Interfaces CIROpInterfaces.td

[CIR] Implement comdat 'name' for dtors (#225929)

Itanium emits the complete-object ctor/dtor as an alias to the base
object version when they are able to be put into COMDAT. However, this
is not currently implemented in CIR, where we are missing the 'comdat
with a name' functionality.

This patch limits that to ONLY FuncOp, and only does the named version
(instead of referencing its own name) for these ctor/dtors. Doing this
for the comdat attribute and for GlobalOp is left to a future patch.

This showed up in the 'root' project, where the wrong dtor was called as
a result!

Note: Claude helped me with the diagnosis, and wrote the reproducer.
DeltaFile
+19-0clang/test/CIR/CodeGen/dtor-comdat-key.cpp
+15-3clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+17-1clang/lib/CIR/CodeGen/CIRGenItaniumCXXABI.cpp
+12-1clang/include/clang/CIR/Dialect/IR/CIROps.td
+4-2clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+1-1clang/include/clang/CIR/Interfaces/CIROpInterfaces.td
+68-86 files

LLVM/project d016650clang/test/CodeGen/RISCV rvp-intrinsics.c, clang/test/Sema riscv-psati-width-out-of-range.c

[RISCV][P-ext] Add packed saturation intrinsics (#224432)

Add the Packed Saturation intrinsics `psati_i16x2`/`psati_i16x4`/
`psati_i32x2` and `pusati_u16x2`/`pusati_u16x4`/`pusati_u32x2`, their
codegen, and the Clang builtins and `riscv_packed_simd.h` wrappers.

See also
https://github.com/riscv/riscv-p-spec/blob/master/P-ext-intrinsics.adoc#packed-saturation
DeltaFile
+126-0llvm/test/CodeGen/RISCV/rvp-simd-64.ll
+110-0clang/test/CodeGen/RISCV/rvp-intrinsics.c
+53-0clang/test/Sema/riscv-psati-width-out-of-range.c
+45-0llvm/test/CodeGen/RISCV/rvp-simd-32.ll
+32-3llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+32-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+398-36 files not shown
+472-712 files

LLVM/project 485f288mlir/include/mlir/Dialect/LLVMIR LLVMOps.td, mlir/lib/Dialect/LLVMIR/IR LLVMDialect.cpp

[MLIR][LLVM] Support inrange in GEP (#220424)

LLVM IR allows inrange(Start, End) on constant GEP expressions.
Import dropped it because getAsInstruction() does not preserve it.
Model it as LLVM_ConstantRangeAttr on GEPOp, reject empty ranges,
keep it through fold/SROA, and emit ConstantExpr::getGetElementPtr.
Fixes #128031

Assisted-by: gpt-5.6-sol
Assisted-by: grok-4.6

Signed-off-by: Letu Ren <fantasquex at gmail.com>
DeltaFile
+44-0mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
+18-19mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+36-0mlir/test/Dialect/LLVMIR/invalid.mlir
+29-3mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+21-0mlir/test/Target/LLVMIR/llvmir-invalid.mlir
+17-0mlir/test/Dialect/LLVMIR/sroa.mlir
+165-228 files not shown
+242-2414 files

LLVM/project 52d5f08clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/CodeGen CIRGenBuiltin.cpp

[CIR] Add cir.fshl and cir.fshr for elementwise funnel shifts (#222396)

Emit dedicated CIR ops from __builtin_elementwise_fshl/fshr instead of
cir.call_llvm_intrinsic.

Assisted-by: grok-4.6
Assisted-by: gpt-5.6-sol

Signed-off-by: Letu Ren <fantasquex at gmail.com>
DeltaFile
+62-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+18-16clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+34-0clang/test/CIR/IR/funnel-shift.cir
+32-0clang/test/CIR/IR/invalid-funnel-shift.cir
+26-0clang/test/CIR/Lowering/funnel-shift.cir
+12-12clang/test/CIR/CodeGenBuiltins/builtins-elementwise.c
+184-281 files not shown
+187-317 files

LLVM/project cff0e6bcompiler-rt/lib/builtins clear_cache.c

[Mips] Restrict rdhwr+synci to Linux on MIPS R6 (#222566)

The rdhwr instruction reads synci_step, which is not allowed by OpenBSD
and is not available for ISA older than mips{32/64}r2.

Restrict the rdhwr+synci to Linux on MIPS R6 and fall back to
_flush_cache on all other MIPS targets including OpenBSD and pre-R6
Linux.

Fix #219896.
DeltaFile
+2-2compiler-rt/lib/builtins/clear_cache.c
+2-21 files

LLVM/project db175d4mlir/include/mlir/Dialect/Utils ReshapeOpsUtils.h, mlir/lib/Dialect/MemRef/IR MemRefOps.cpp

[mlir][Tensor] Reject empty expand_shape reassociation groups (#222648)

`tensor.expand_shape` with an empty reassociation group (e.g. `[[]]`)
used to abort the compiler: ExpandShapeOp::verify forwarded the group to
getSymbolLessAffineMaps, which asserts on missing affine expressions.
The sibling `tensor.collapse_shape` already rejects this input with a
clean diagnostic.

Extract the empty-group check into a helper shared by both tensor
reshape verifiers, invoke it from `ExpandShapeOp::verify`, and add an
invalid.mlir regression test that used to SIGABRT.

Fixes: #222602
DeltaFile
+1-11mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp
+12-0mlir/include/mlir/Dialect/Utils/ReshapeOpsUtils.h
+6-4mlir/lib/Dialect/Tensor/IR/TensorOps.cpp
+8-0mlir/test/Dialect/Tensor/invalid.mlir
+27-154 files

LLVM/project 4a7be3fmlir/include/mlir/IR Diagnostics.h, mlir/lib/IR Diagnostics.cpp

[mlir] Add support for multi-parts diagnostics (#217804)

Under the current MLIR diagnostic infrastructure, emitting multiple
remarks at the same location requires calling the remark API multiple
times; moreover, every call to remark prints a note. This PR introduces
the concepts of "parts" To diagnostics. A streaming manipulator, called
`next`, similar to `std::endl` can be used to split multiple parts into
a single `InFlightDiagnostic`. This can be used for example to emit
multiple remarks at the same location, share the notes for those
remarks.

---------

Co-authored-by: Mehdi Amini <joker.eph at gmail.com>
DeltaFile
+51-5mlir/lib/IR/Diagnostics.cpp
+49-0mlir/test/lib/IR/TestDiagnosticsNext.cpp
+44-3mlir/include/mlir/IR/Diagnostics.h
+14-14mlir/lib/Target/LLVMIR/ModuleImport.cpp
+8-0mlir/test/IR/diagnostic-handler-next.mlir
+2-0mlir/tools/mlir-opt/mlir-opt.cpp
+168-221 files not shown
+169-227 files

LLVM/project dfd1a85llvm/lib/Transforms/IPO ThinLTOBitcodeWriter.cpp, llvm/test/Transforms/ThinLTOBitcodeWriter comdat.ll split-internal-alias.ll

[CFI] Don't create alias->alias chains. (#225951)

Discovered downstream after PR #225173, when CFI and HWASAN are
combined.

See also
https://github.com/llvm/llvm-project/pull/225173#issuecomment-5802301926

If there is an alias, we should leave it alone, find its aliasee, and
create a new external linkage alias to that. Even if local linkage, the
existing alias may be referenced by name by e.g. inline assembly.
DeltaFile
+32-0llvm/test/Transforms/ThinLTOBitcodeWriter/split-internal-alias.ll
+5-1llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
+2-2llvm/test/Transforms/ThinLTOBitcodeWriter/comdat.ll
+39-33 files

LLVM/project 593605cclang/lib/CIR/Dialect/Transforms FlattenCFG.cpp, clang/test/CIR/CodeGen lifetime-marker.cpp

[CIR] Don't create EH paths for lifetime-marker-only cleanups (#224829)

### summary

fix https://github.com/llvm/llvm-project/issues/224821

A lifetime marker is not a real cleanup, so it must never be the reason
an unwind edge exists.

Assisted by : Claude Opus5
DeltaFile
+165-18clang/test/CIR/CodeGen/lifetime-marker.cpp
+53-6clang/lib/CIR/Dialect/Transforms/FlattenCFG.cpp
+4-10clang/test/CIR/Transforms/flatten-cleanup-scope-musttail.cir
+222-343 files

LLVM/project 846ad9dmlir/lib/Dialect/Utils StaticValueUtils.cpp, mlir/test/Dialect/MemRef canonicalize.mlir

[mlir] Fix canonicalizer crash when folding poison or kDynamic-sentinel index values (#223609)

Fixes two canonicalizer crashes, both in foldDynamicIndexList:

* #223333: tensor.extract_slice with a ub.poison offset/size crashes
canonicalization. ub.poison is matched as a constant but is not an
IntegerAttr, so getConstantIntValue returns nullopt and the subsequent
dereference asserts.
* #223336: a memref.subview offset/size/stride that wraps to
ShapedType::kDynamic (INT64_MIN) crashes canonicalization. Folding
INT64_MIN into the static array collides with the "dynamic" marker,
leaving dynamic-looking entries with no matching dynamic operands;
getMixedStrides() then asserts.

Only fold an operand when it is an integer constant whose value is not
ShapedType::kDynamic; poison and sentinel values stay dynamic operands.
Since foldDynamicIndexList is shared, this hardens all its callers.

Adds regression tests in mlir/test/Dialect/MemRef/canonicalize.mlir and

    [2 lines not shown]
DeltaFile
+10-10mlir/lib/Dialect/Utils/StaticValueUtils.cpp
+19-0mlir/test/Dialect/MemRef/canonicalize.mlir
+14-0mlir/test/Dialect/Tensor/canonicalize.mlir
+43-103 files

LLVM/project 11fa04dclang/lib/CIR/CodeGen CIRGenClass.cpp, clang/test/CIR/CodeGen vbase.cpp

[CIR] Make sure ptr-cast-to-vbase is guarded. (#225969)

It isn't clear how we missed this, but classic codegen does checks this,
so we should too.

Claude Helped diagnose/debug, but I did the copy/pasting :D
DeltaFile
+33-9clang/test/CIR/CodeGenCXX/virtual-base-cast.cpp
+35-3clang/lib/CIR/CodeGen/CIRGenClass.cpp
+28-0clang/test/CIR/CodeGen/vbase.cpp
+96-123 files

LLVM/project 898dc21clang/docs ReleaseNotes.md, clang/lib/CodeGen ItaniumCXXABI.cpp

[clang] Inconsistent attributes for `dllexport __cxxabiv1:: __fundamental_type_info` with `-fvisibility=hidden` (#215859)

Fixes #207963

The issue is `__declspec(dllexport)` and `hidden` visibility cannot be
used together. LLVM rejects `globals` that have both attributes.

For normal globals, `CodeGenModule::setGlobalVisibility` already handles
this by giving `dllexport` priority over the visibility implied by
`-fvisibility=hidden`. RTTI follows a different code path, though.
`ItaniumRTTIBuilder::BuildTypeInfo` applies the visibility and DLL
storage class separately to the generated `_ZTI*` and `_ZTS*` globals,
so the conflict was not resolved.

As a result, marking `__cxxabiv1::__fundamental_type_info` as
`dllexport` while compiling with `-fvisibility=hidden` could generate
RTTI globals with both hidden visibility and `dllexport`, causing LLVM
to fail verification with Broken module found. The same problem can
occur for `dllexport`-ed polymorphic classes when targeting Windows with

    [7 lines not shown]
DeltaFile
+75-0clang/test/CodeGenCXX/dllexport-rtti-visibility.cpp
+45-27clang/lib/CodeGen/ItaniumCXXABI.cpp
+1-0clang/docs/ReleaseNotes.md
+121-273 files

LLVM/project fbf3c11bolt/test/AArch64 fix-block-counts-indirect-call.s fix-block-count-multiple.s, bolt/test/RISCV fix-block-counts-indirect-call.s fix-block-count-multiple.s

[BOLT] Include indirect calls/branches in basic block count estimation (#225104)

**Before:** When BOLT adjusts basic block counts in LBR mode it
considers outgoing branch counts when `--fix-block-counts` is enabled.
This adjustment was made according to the counts of direct calls and
branches which are recorded in the `Count` annotation made in
`DataReader::convertBranchData`. Indirect calls and branches are also
recorded within the `CallProfile` annotation, however they do not
contribute to the adjustment of basic block counts.

**After:** When making this adjustment to basic block counts, also
consider the counts of indirect calls and branches within the
`CallProfile` annotation. Do this by summing the execution counts of the
targets from this call/branch and considering them in determining the
maximum execution count of the basic block.

Assisted by: Codex. This was to write the tests for `x86` and `RISCV`
targets.
DeltaFile
+78-0bolt/test/RISCV/fix-block-count-multiple.s
+78-0bolt/test/AArch64/fix-block-count-multiple.s
+76-0bolt/test/X86/fix-block-count-multiple.s
+71-0bolt/test/RISCV/fix-block-counts-indirect-call.s
+71-0bolt/test/AArch64/fix-block-counts-indirect-call.s
+69-0bolt/test/X86/fix-block-counts-indirect-call.s
+443-04 files not shown
+659-910 files

LLVM/project b19a36amlir/include/mlir/Dialect/Affine/IR AffineOps.td, mlir/test/Dialect/Bufferization/Transforms buffer-loop-hoisting.mlir

[mlir][Affine] Prevent buffer hoisting out of affine.parallel (#225324)

I noticed that `buffer-loop-hoisting` can move allocations out of
`affine.parallel`, making a buffer that should be local to each
iteration shared between the parallel iterations.

`AffineParallelOp` implements `LoopLikeOpInterface` but was missing the
`HasParallelRegion` trait, so `isSequentialLoop` treated it as
sequential. This adds the missing trait to `affine.parallel`, allowing
the pass to recognize the parallel boundary without changing the
hoisting logic.

I’ve added a regression test based on the reproducer in #225149, which
checks that the allocation stays inside `affine.parallel` and that the
store and load still use that allocation.

Fixes #225149.
DeltaFile
+24-0mlir/test/Dialect/Bufferization/Transforms/buffer-loop-hoisting.mlir
+2-1mlir/include/mlir/Dialect/Affine/IR/AffineOps.td
+26-12 files

LLVM/project 569085fclang/lib/Headers riscv_packed_simd.h, clang/test/CodeGen/RISCV rvp-intrinsics.c

[Clang][RISCV] Add packed widening subtraction accumulate intrinsics (#225764)

Add Clang header intrinsics for the RISC-V P-extension packed widening
subtraction accumulate operations:

- __riscv_pwsuba_i16x4
- __riscv_pwsuba_i32x2
- __riscv_pwsubau_u16x4
- __riscv_pwsubau_u32x2

Each computes rd + (a - b). The header wrappers use generic LLVM IR,
so RV32 selects the direct `pwsuba.*` / `pwsubau.*` instructions while
RV64 lowers the generic IR to the decomposition specified by the
P-extension intrinsic spec.
DeltaFile
+121-0clang/test/CodeGen/RISCV/rvp-intrinsics.c
+85-0llvm/test/CodeGen/RISCV/rvp-widening-sub-acc.ll
+57-0llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+40-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+16-0llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+13-0clang/lib/Headers/riscv_packed_simd.h
+332-06 files

LLVM/project cdd0cc7clang/lib/Headers riscv_packed_simd.h, clang/test/CodeGen/RISCV rvp-intrinsics.c

[Clang][RISCV] Add packed subvector insert intrinsics (#225771)

Add __riscv_pset_i8x4_i8x8, __riscv_pset_u8x4_u8x8,
__riscv_pset_i16x2_i16x4 and __riscv_pset_u16x2_u16x4, which insert a
32-bit packed subvector into a 64-bit packed vector. The index selects
the low or high half and must be a constant, enforced with
__enable_if__ as for the element insert intrinsics.
DeltaFile
+306-0clang/test/CodeGen/RISCV/rvp-intrinsics.c
+56-0cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+38-0clang/lib/Headers/riscv_packed_simd.h
+400-03 files

LLVM/project a3ac598flang/include/flang/Optimizer/Transforms Passes.td, flang/lib/Optimizer/Builder FIRBuilder.cpp

[flang][cuda] Defer data-transfer conversion in OpenACC routines (#225906)

Add an option so cuf-convert can leave cuf.data_transfer in the
host copy of an OpenACC routine until host/device specialization.
After that, transfers in a specialized device body become
assignments. Place allocas inside IsolatedFromAbove offload
regions so later FIR lowering does not store into a temporary
defined outside acc.compute_region.
DeltaFile
+101-0flang/test/Fir/CUDA/cuda-data-transfer-defer-acc-routine.mlir
+46-1flang/lib/Optimizer/Transforms/CUDA/CUFOpConversion.cpp
+9-2flang/include/flang/Optimizer/Transforms/Passes.td
+6-0flang/lib/Optimizer/Builder/FIRBuilder.cpp
+162-34 files

LLVM/project 5b8f372llvm/lib/Target/RISCV RISCVInstrInfoP.td, llvm/test/CodeGen/RISCV rvp-simd-64.ll rvp-ppaireo-w.ll

[RISCV][P-ext] Select PPAIREO.W when packing with the high word of a value (#225763)

The low-half packed subvector insert is a v2i32 whose low word is the
subvector and whose high word is the high word of the wide vector,
which is exactly `ppaireo.w` (the low word comes from `rs1`, the high
word from `rs2`). Select it directly instead of `srli` + `pack`.

Adds `rvp-ppaireo-w.ll`; `rvp-simd-64.ll` is updated because the scalar
low insert in `test_insert_vector_32` now selects `ppaireo.w`.
DeltaFile
+46-0llvm/test/CodeGen/RISCV/rvp-ppaireo-w.ll
+5-0llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+1-2llvm/test/CodeGen/RISCV/rvp-simd-64.ll
+52-23 files

LLVM/project 3b26448libc/src/sys/stat CMakeLists.txt mknod.h, libc/src/sys/stat/linux CMakeLists.txt mknod.cpp

[libc] Implement mknod in sys/stat (#225677)

Implement the standard POSIX.1-2008 / POSIX.1-2024 function `mknod` in
`<sys/stat.h>`.

Fixes #225664
DeltaFile
+72-0libc/test/src/sys/stat/mknod_test.cpp
+35-0libc/src/sys/stat/linux/mknod.cpp
+27-0libc/src/sys/stat/mknod.h
+23-0libc/test/src/sys/stat/CMakeLists.txt
+17-0libc/src/sys/stat/linux/CMakeLists.txt
+7-0libc/src/sys/stat/CMakeLists.txt
+181-04 files not shown
+190-010 files

LLVM/project d41ee5cllvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination srem.ll sdiv.ll

[ConstraintElim] Add facts for sdiv with a positive divisor. (#225535)

Add signed bounds for `sdiv x, n`:

  * `x s>= 0` and `n s> 0`  =>  result s>= 0 and result s<= x
    https://alive2.llvm.org/ce/z/Tvb3Nq
  * `x s>  0` and `n s> 1`  => result s= 0 and result s< x
   https://alive2.llvm.org/ce/z/sL-XyG

PR: https://github.com/llvm/llvm-project/pull/225535
DeltaFile
+492-0llvm/test/Transforms/ConstraintElimination/sdiv.ll
+29-2llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+0-20llvm/test/Transforms/ConstraintElimination/srem.ll
+521-223 files

LLVM/project 9edbab8llvm/lib/Transforms/Utils SCCPSolver.cpp, llvm/test/Transforms/SCCP fastmath-flags.ll

[SCCP] Call correct simplifyBinOp in FP operation

This simplify FPOps with correct FMF, which covers non-inlined function
that can not be simplified by InstComb pass.

Also, update the TODO as we have cover that case in simplifyBinOp. But
per-element optimization is not enable as we don't have structure-like
LatticeMap for vector.
DeltaFile
+189-0llvm/test/Transforms/SCCP/fastmath-flags.ll
+10-4llvm/lib/Transforms/Utils/SCCPSolver.cpp
+199-42 files

LLVM/project 8333d8bllvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp

Update again
DeltaFile
+39-45llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+39-451 files

LLVM/project c334dd4llvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp, llvm/test/Transforms/InstCombine/AMDGPU llvm.amdgcn.sudot.ll

[AMDGPU] Fold a constant add/sub into the sudot4/sudot8 accumulator

Fold a constant add into the accumulator operand of sudot4 and sudot8 when
clamping is disabled:
```
  sudot(a, b, C1, false) + C2 -> sudot(a, b, C1 + C2, false)
```
Subtraction by a constant is canonicalized to addition of its negation.
DeltaFile
+10-20llvm/test/Transforms/InstCombine/AMDGPU/llvm.amdgcn.sudot.ll
+26-0llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+36-202 files

LLVM/project ea25346llvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp

Update for comments
DeltaFile
+3-3llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+3-31 files

LLVM/project 20d7f6cllvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp, llvm/test/Transforms/InstCombine/AMDGPU llvm.amdgcn.dot.ll

[AMDGPU][InstCombine] Fold zero dot operands to accumulator

Fold AMDGPU dot intrinsics when either operand is zero.

`dot(a, 0) = 0` and `dot(0, b) = 0`, so replace the intrinsic with its accumulator.
This avoids unrelated clamp and add/sub reassociation cases.
DeltaFile
+15-30llvm/test/Transforms/InstCombine/AMDGPU/llvm.amdgcn.dot.ll
+3-0llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+18-302 files

LLVM/project 8e7008allvm/lib/Target/AMDGPU AMDGPUInstCombineIntrinsic.cpp, llvm/test/Transforms/InstCombine/AMDGPU llvm.amdgcn.dot.ll

[AMDGPU][InstCombine] Canonicalize dot constant operands (#225083)

Move constant dot product source operands to the right hand side
and add tests for signed and unsigned dot intrinsics.
DeltaFile
+12-12llvm/test/Transforms/InstCombine/AMDGPU/llvm.amdgcn.dot.ll
+10-0llvm/lib/Target/AMDGPU/AMDGPUInstCombineIntrinsic.cpp
+22-122 files

LLVM/project 3113e3bflang/test/Fir if-constant-condition-fold.fir, flang/test/Fir/CUDA predefined-variables.mlir

[flang] Fold fir.if with a constant condition (#225542)

Use `populateRegionBranchOpInterfaceInliningPattern` to fold `fir.if`
when the condition is a constant. It inlines the region the condition
selects, replacing uses of the `fir.if` results with the operands of
that region's `fir.result`, and erases the `fir.result`. A false
condition with no else region leaves nothing behind.
DeltaFile
+156-0flang/test/Fir/if-constant-condition-fold.fir
+10-50flang/test/Lower/Intrinsics/ieee_flag.f90
+8-40flang/test/Lower/Intrinsics/ieee_max_min.f90
+33-0flang/test/Lower/if-constant-condition.f90
+2-6flang/test/Fir/CUDA/predefined-variables.mlir
+1-5flang/test/Lower/Intrinsics/ieee_logb.f90
+210-1011 files not shown
+212-1017 files

LLVM/project a56224cllvm/lib/Analysis InstructionSimplify.cpp

[InstSimplify] Add missing FRem in FMF overload
DeltaFile
+2-0llvm/lib/Analysis/InstructionSimplify.cpp
+2-01 files