LLVM/project 33296c8 — llvm/lib/CodeGen LiveRegUnits.cpp

[CodeGen] Only visit live units in ::removeRegsNotPreserved (NFC) (#230035)

The loop can only resets live units and usually the set of units is very
sparse. Iterating over set bits only improves compile-time:

stage1-O3: -0.27%
stage1-ReleaseThinLTO: -0.19%
stage1-ReleaseLTO-g: -0.16%
stage1-aarch64-O3: -0.32%
stage2-O3: -0.17%
stage2-clang: -0.10%


https://llvm-compile-time-tracker.com/compare.php?from=99130f4391d9f232b303d5fe6b4aa5c6d37e1319&to=3f215a675693fa0b3dba8ac6b77e58305f05312e&stat=instructions:u

Analysis and implementation aided by Opus 5.5.

PR: https://github.com/llvm/llvm-project/pull/230035
DeltaFile
+4-3llvm/lib/CodeGen/LiveRegUnits.cpp
+4-31 files

LLVM/project 4405f4e — llvm/test/CodeGen/AArch64 bf16_fast_math.ll, llvm/test/CodeGen/AMDGPU legalize-amdgcn.raw.ptr.buffer.load.ll isel-amdgpu-cs-chain-preserve-cc.ll

SelectionDAG: Stop emitting kill flags in InstrEmitter

These is no point to maintaining these before register allocation.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+298-298llvm/test/CodeGen/AMDGPU/isel-amdgpu-cs-chain-cc.ll
+203-203llvm/test/CodeGen/AMDGPU/carryout-selection.ll
+174-174llvm/test/CodeGen/AMDGPU/llvm.amdgcn.make.buffer.rsrc.ll
+111-111llvm/test/CodeGen/AArch64/bf16_fast_math.ll
+88-88llvm/test/CodeGen/AMDGPU/legalize-amdgcn.raw.ptr.buffer.load.ll
+88-88llvm/test/CodeGen/AMDGPU/isel-amdgpu-cs-chain-preserve-cc.ll
+962-962163 files not shown
+2,757-2,818169 files

LLVM/project 15324b3 — clang/docs ReturnAddressAuthenticationHardening.md, clang/include/clang/Basic TargetInfo.h

Revert "[Clang][AArch64] Command-line options for A-profile's Return Address Authentication Hardening (#176171)" (#230115)

This reverts commit dc488b83639cc69ab9ecd06d770badc663720ede.
DeltaFile
+0-161clang/docs/ReturnAddressAuthenticationHardening.md
+0-91clang/test/Sema/aarch64-harden-pac-ret-attr.c
+30-45clang/test/CodeGen/AArch64/sign-return-address.c
+0-60clang/test/Driver/aarch64-security-options.c
+6-46clang/lib/Driver/ToolChains/Clang.cpp
+3-26clang/include/clang/Basic/TargetInfo.h
+39-42922 files not shown
+53-64228 files

LLVM/project 4ccbcae — mlir/include/mlir/Dialect/SPIRV/IR SPIRVCLOps.td, mlir/test/Dialect/SPIRV/IR ocl-ops.mlir

[mlir][SPIR-V] Add CL fclamp, s_clamp and u_clamp ops (#213594)
DeltaFile
+77-3mlir/include/mlir/Dialect/SPIRV/IR/SPIRVCLOps.td
+52-0mlir/test/Dialect/SPIRV/IR/ocl-ops.mlir
+10-0mlir/test/Target/SPIRV/ocl-ops.mlir
+139-33 files

LLVM/project de826a7 — mlir/include/mlir/Remark RemarkStreamer.h, mlir/lib/Remark CMakeLists.txt RemarkStreamer.cpp

[MLIR][Remark] Report why the LLVM remark streamer could not be created

LLVMRemarkStreamer::createToFile dropped the reason it failed: a file that
could not be opened and a serializer that could not be created both turned
into a bare failure, and enableOptimizationRemarksWithLLVMStreamer failed
without a diagnostic.

- createToFile opens the file with mlir::openOutputFile and, like it, takes
  an optional errorMessage out-parameter. The serializer error is reported
  the same way.
- enableOptimizationRemarksWithLLVMStreamer emits that message as an error
  on the context.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+44-0mlir/unittests/IR/RemarkTest.cpp
+13-10mlir/lib/Remark/RemarkStreamer.cpp
+7-2mlir/include/mlir/Remark/RemarkStreamer.h
+5-0mlir/test/Pass/remark-output-error.mlir
+1-0utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+1-0mlir/lib/Remark/CMakeLists.txt
+71-126 files

LLVM/project d3982d5 — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp InstCombineCalls.cpp, llvm/test/Transforms/InstCombine ldexp.ll

[InstCombine] Fix profile propagation in ldexp.ll (#229908)

In these cases we just reuse the same condition, so we can directly
propagate the metadata.
DeltaFile
+24-16llvm/test/Transforms/InstCombine/ldexp.ll
+10-4llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+6-2llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+0-1llvm/utils/profcheck-xfail.txt
+40-234 files

LLVM/project 14e8689 — llvm/lib/Transforms/InstCombine InstCombineAndOrXor.cpp, llvm/test/Transforms/InstCombine logical-select.ll

[InstCombine] Mark profiles unknown in matchSelectFromAndOr (#229963)

In the general case we have no idea of the distribution of the
synthesized condition, so just mark the profile unknown.
DeltaFile
+8-3llvm/test/Transforms/InstCombine/logical-select.ll
+5-1llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+0-1llvm/utils/profcheck-xfail.txt
+13-53 files

LLVM/project 72797f4 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

apply suggestions
DeltaFile
+7-11llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+7-111 files

LLVM/project bd53270 — clang/lib/Lex UnicodeCharSets.h UnicodeCharSetsGenerated.cpp, llvm/docs HowToUpdateUnicodeTables.md

Add a generator for Unicode properties. (#229072)

Over the past few years, I have been maintaining the unicode tables
mostly by hand with the help of an unwieldy python script that only
existed on my machine, and sed.

So I figured throwing an AI at the issue would be an improvement over
the status quo.
It took a lot of iteration and refinement but this is very much
AI-produced code.

This introduce a C++ program that parses the UCD data (in the xml format
which i find easier to read) and generate the tables.

I added some documentation.

As it stands, we have 3 different tools to update Unicode data, and some
that still needs manual work.
I plan to consolidate that a bit in future PRs, whenever I have the

    [3 lines not shown]
DeltaFile
+462-0llvm/lib/Support/UnicodeCharSetsGenerated.cpp
+11-445llvm/lib/Support/Unicode.cpp
+423-0clang/lib/Lex/UnicodeCharSetsGenerated.cpp
+8-410clang/lib/Lex/UnicodeCharSets.h
+257-0llvm/utils/UnicodeData/UnicodeCharSetsGenerator.cpp
+80-0llvm/docs/HowToUpdateUnicodeTables.md
+1,241-8556 files not shown
+1,278-86512 files

LLVM/project 0cfb9d3 — libcxx/test/libcxx-03/utilities exception_guard.odr.sh.cpp, libcxx/test/libcxx/utilities exception_guard.odr.sh.cpp

[libc++] Reorder link flags in exception_guard.odr.sh.cpp (#229589)

Moving `%{link_flags}` after the test object files resolves undefined
reference errors to ex: `strcmp` when using linkers that are more strict
about the command line order of objects.
DeltaFile
+1-1libcxx/test/libcxx/utilities/exception_guard.odr.sh.cpp
+1-1libcxx/test/libcxx-03/utilities/exception_guard.odr.sh.cpp
+2-22 files

LLVM/project c2ce58f — mlir/include/mlir/Remark RemarkStreamer.h, mlir/lib/Remark RemarkStreamer.cpp

[MLIR][Remark] Report why the LLVM remark streamer could not be created

LLVMRemarkStreamer::createToFile returned FailureOr and dropped the reason:
a file that could not be opened and a serializer that could not be created
both turned into a bare failure, and enableOptimizationRemarksWithLLVMStreamer
failed without a diagnostic.

- createToFile returns llvm::Expected with the open or serializer error.
- enableOptimizationRemarksWithLLVMStreamer emits
  "cannot initialize remark output '<file>': <reason>" on the context.
- The output file is opened with the same flags as
  llvm::setupLLVMOptimizationRemarks: OF_TextWithCRLF for YAML, OF_None for
  bitstream. Before, both used OF_Text, so on Windows YAML remark files now
  get CRLF line endings, as LLVM's own remark files do.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+45-0mlir/unittests/IR/RemarkTest.cpp
+16-12mlir/lib/Remark/RemarkStreamer.cpp
+6-2mlir/include/mlir/Remark/RemarkStreamer.h
+5-0mlir/test/Pass/remark-output-error.mlir
+72-144 files

LLVM/project edf2b4e — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

restore original positions of forwarding methods
DeltaFile
+98-64llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+98-641 files

LLVM/project b8850bb — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

remove CandidateState getters
DeltaFile
+48-131llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+48-1311 files

LLVM/project b89b532 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

remove setters from CandidateState
DeltaFile
+14-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+14-21 files

LLVM/project f0ede13 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[SLP] NFC: make candidate state ownership explicit

BoUpSLP contains a mixture of state which relates to the current
candidate and state which persists beyond its lifetime. Gather this
state onto a new CanidateState object which belongs to BoUpSLP.

I think this is compatible with the existing modularisation proposal.

Assisted-by: codex
DeltaFile
+2,133-1,769llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+2,133-1,7691 files

LLVM/project ecdba8e — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

make it private
DeltaFile
+183-135llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+183-1351 files

LLVM/project 50b1b8b — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

make CandidateState members private
DeltaFile
+18-7llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+18-71 files

LLVM/project 63d4565 — mlir/lib/IR Remarks.cpp, mlir/unittests/IR RemarkTest.cpp

[MLIR][Remark] Look through nested locations for the remark file location

Remark::generateRemark() and Remark::print() only handled a remark whose
location is a FileLineColLoc. Remarks emitted at a NameLoc, FusedLoc or
CallSiteLoc, which is how debug locations usually look, reached the LLVM
remark serializer as "<unknown file>" and printed without a location.

Use findInstanceOf<FileLineColLoc>() in both places, which takes the first
file location in a preorder walk (the callee for a CallSiteLoc).

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+37-0mlir/unittests/IR/RemarkTest.cpp
+4-2mlir/lib/IR/Remarks.cpp
+41-22 files

LLVM/project 773a8f3 — llvm/lib/Transforms/Vectorize VPlanTransforms.h LoopVectorize.cpp, llvm/test/Transforms/LoopVectorize/VPlan/AArch64 scalarize-after-call-widening.ll

[VPlan] Re-run makeScalarizationDecisions after call widening. (#229925)

Widened calls may only use the first lane of some operands, e.g. uniform
and linear parameters of vector variants. Those operands are only known
to be single-scalar once the calls have been widened, so run
makeScalarizationDecisions again after makeCallWideningDecisions.

Re-run scalarization if any calls were widened, so catch additional
opportunities. On its own it is not super useful currently, but enables
a few follow ups (https://github.com/llvm/llvm-project/pull/229099,
BuildStructVector removal)
DeltaFile
+4-2llvm/lib/Transforms/Vectorize/VPlanTransforms.h
+4-2llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+5-1llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+2-2llvm/test/Transforms/LoopVectorize/VPlan/AArch64/scalarize-after-call-widening.ll
+15-74 files

LLVM/project b0765aa — libcxx/include/__functional function_ref_impl.h, libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.ref/func.wrap.ref.inv invoke.pass.cpp

[libc++] Fix ill-formed return in function_ref's static-call path (#228868)

In function_ref, the current `__statically_callable` branch is ill-formed when
the lambda's return type `_Rp` is void but the target's static operator()
returns non-void. This patch discards the return value when `_Rp` is
void to make it behave the same as `invoke_r<_Rp>`.

Fixes #228717
DeltaFile
+39-0libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.ref/func.wrap.ref.inv/invoke.pass.cpp
+4-1libcxx/include/__functional/function_ref_impl.h
+43-12 files

LLVM/project d0c3d21 — mlir/lib/IR Remarks.cpp, mlir/unittests/IR RemarkTest.cpp

[MLIR][Remark] Look through nested locations for the remark file location

Remark::generateRemark() and Remark::print() only handled a remark whose
location is a FileLineColLoc. Remarks emitted at a NameLoc, FusedLoc or
CallSiteLoc, which is how debug locations usually look, reached the LLVM
remark serializer as "<unknown file>" and printed without a location.

Use findInstanceOf<FileLineColLoc>() in both places, which takes the first
file location in a preorder walk (the callee for a CallSiteLoc).

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+27-0mlir/unittests/IR/RemarkTest.cpp
+4-2mlir/lib/IR/Remarks.cpp
+31-22 files

LLVM/project 5786b8f — clang/lib/Sema SemaDeclCXX.cpp

Update clang/lib/Sema/SemaDeclCXX.cpp

Co-authored-by: Aaron Ballman <aaron at aaronballman.com>
DeltaFile
+0-2clang/lib/Sema/SemaDeclCXX.cpp
+0-21 files

LLVM/project 44cc46f — clang/include/clang/Basic DiagnosticSemaKinds.td

Update clang/include/clang/Basic/DiagnosticSemaKinds.td

Co-authored-by: Aaron Ballman <aaron at aaronballman.com>
DeltaFile
+1-1clang/include/clang/Basic/DiagnosticSemaKinds.td
+1-11 files

LLVM/project 6f57b75 — flang/lib/Lower PFTBuilder.cpp, flang/test/Lower do-loop-infinite-body-cycle.f90

[flang] Keep loops structured when a backward GOTO in their body can be left

A DO loop whose body branched backward, closing a cycle within the body,
was always lowered as unstructured, even when control could leave that
cycle and finish the iteration. Such loops lost their structured form: an
OpenACC loop directive could not take them over, so an independent loop of
this shape ran sequentially.

Reject a backward GOTO only when its cycle can never be left for the end
of the body. A cycle that can be left keeps the loop structured, with the
branching confined to its body, as is already done for other branches that
stay inside the body.
DeltaFile
+49-0flang/test/Lower/do-loop-infinite-body-cycle.f90
+47-0flang/test/Lower/OpenACC/acc-unstructured-backward-goto.f90
+21-8flang/lib/Lower/PFTBuilder.cpp
+9-8flang/test/Lower/OpenACC/Todo/acc-unstructured-combined-construct.f90
+126-164 files

LLVM/project 962b4e7 — flang/test/Integration/OpenMP target-firstprivate-mapnames.f90, flang/test/Lower/OpenMP declare-mapper.f90

[flang][mlir][OpenMP] Report Fortran names for privatized target maps… (#229823)

(repush of https://github.com/llvm/llvm-project/pull/228195, added test
`target-firstprivate-mapnames.f90` failed on systems that did not have
the flang-rt built on the gpu, so instead split the test into two
separate compile only checks `target-firstprivate-mapnames.f90` and
`omptarget-map-names.mlir`. Actual source / compiler changes are the
same from https://github.com/llvm/llvm-project/pull/228195)


Privatized, firstprivate and implicitly captured variables offloaded to
a target device were reported as "unknown" in LIBOMPTARGET_INFO debug
output. This PR addresses this by adding the variable names to the
offload mapping information:

- `MapsForPrivatizedSymbols` now sets the name on the omp.map.info it
creates,
recovering it from the hlfir.declare uniq name or, for anonymously boxed
values (e.g. a firstprivate array), from a NameLoc on the descriptor's

    [64 lines not shown]
DeltaFile
+31-0flang/test/Integration/OpenMP/target-firstprivate-mapnames.f90
+23-7mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+28-0mlir/test/Target/LLVMIR/omptarget-map-names.mlir
+23-0offload/test/offloading/fortran/target-firstprivate-info.f90
+11-11flang/test/Transforms/omp-map-info-finalization.fir
+10-10flang/test/Lower/OpenMP/declare-mapper.f90
+126-2830 files not shown
+230-11236 files

LLVM/project 701fe27 — llvm/docs LangRef.md, llvm/lib/CodeGen/SelectionDAG LegalizeVectorTypes.cpp

[IR][RFC] Add @llvm.mask.beforefirst intrinsic (#203874)

In the loop vectorizer we support early exit vectorization with side
effects by masking instructions after the first taken exit.

To do so it emits a mask that masks off every lane after the first exit
condition is met:

```llvm
%cttz = call i64 @llvm.experimental.cttz.elts(<vscale x 4 x i1> %exitcond, /*isZeroPoison*/ i1 false)
%mask = call <vscale x 4 x i1> @llvm.get.active.lane.mask(i64 0, i64 %cttz)
```

Which in turn is equivalent to

```llvm
%cttz = call i64 @llvm.experimental.cttz.elts(<vscale x 4 x i1> %exitcond, i1 false)
%cttz.head = insertelement <vscale x 4 x i64> poison, i64 %cttz, i32 0
%cttz.splat = shufflevector <vscale x 4 x i64> %cttz.head, <vscale x 4 x 64> poison, <vscale x 4 x i32> zeroinitializer

    [35 lines not shown]
DeltaFile
+170-0llvm/test/CodeGen/RISCV/rvv/fixed-vectors-mask-beforefirst.ll
+150-0llvm/test/CodeGen/AArch64/mask-beforefirst-sve.ll
+112-0llvm/test/CodeGen/RISCV/rvv/mask-beforefirst.ll
+97-0llvm/test/CodeGen/AArch64/mask-beforefirst.ll
+32-0llvm/docs/LangRef.md
+20-0llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+581-015 files not shown
+665-121 files

LLVM/project 17efa3b — clang/include/clang/CIR/Dialect/IR CIRDialect.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[mlir][CIR] Use OpFoldResults for the cir.scope fold

The CIR dialect now sets the `useOpFoldResults` bit. ODS then declares
`OpFoldResults fold(FoldAdaptor)` for each CIR op that does not have
exactly one fixed result. `cir.scope` is the only such op with a fold.
Its fold now returns the yielded value directly. The behavior does not
change. The existing test `clang/test/CIR/Transforms/canonicalize.cir`
covers this fold.

Signed-off-by: Víctor Pérez Carrasco <victor.pc.upm at gmail.com>


DeltaFile
+2-4clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+2-0clang/include/clang/CIR/Dialect/IR/CIRDialect.td
+4-42 files

LLVM/project 0552a68 — mlir/docs Canonicalization.md, mlir/docs/DefiningDialects _index.md

[mlir][tblgen] Warn about the deprecated multi-result fold form

The legacy form `LogicalResult fold(FoldAdaptor,
SmallVectorImpl<OpFoldResult> &)` will be removed. This patch makes
`mlir-tblgen -gen-op-decls` warn when a dialect keeps `useOpFoldResults`
at 0 and has an op with `hasFolder` that does not have exactly one fixed
result. The warning points at the dialect definition. A note names the
op that uses the legacy form and comes first in name order.

The warning comes once for each dialect in one `-gen-op-decls` run. A
dialect with ops in more than one `.td` file can warn once for each file
that contains such an op. `-gen-op-defs` does not warn.

No in-tree dialect warns, because each in-tree dialect with such an op
already sets the bit.

The diagnostic follows the `-on-deprecated` option: `none` silences it,
`warn` (the default) warns, and `error` reports an error and fails the
run. `MlirTblgenMain.h` exposes the option value through

    [5 lines not shown]
DeltaFile
+88-0mlir/test/mlir-tblgen/op-fold-results-deprecation.td
+39-0mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+6-3mlir/lib/Tools/mlir-tblgen/MlirTblgenMain.cpp
+6-0mlir/include/mlir/Tools/mlir-tblgen/MlirTblgenMain.h
+3-1mlir/docs/Canonicalization.md
+4-0mlir/docs/DefiningDialects/_index.md
+146-46 files

LLVM/project cce787a — clang/lib/CIR/Dialect/IR CIRDialect.cpp, clang/test/CIR/Transforms canonicalize.cir

[mlir] Deprecate the legacy fold APIs with a results vector

The legacy `Operation::fold` overloads with a
`SmallVectorImpl<OpFoldResult> &` parameter drop partial folds. The
overloads that return `NormalizedOpFoldResults` keep them.

This patch moves every in-tree caller of the legacy overloads to the
overloads that return `NormalizedOpFoldResults`, except the unit tests
of the legacy APIs. `OpFoldResultsTest.cpp` suppresses the deprecation
warnings for these tests. The test dialect keeps a legacy fold trait for
the fold tests, so `TestOps.cpp` suppresses the warning too. Then the
patch marks these APIs as deprecated: the two legacy `Operation::fold`
overloads, the legacy general `foldTrait` form, the legacy fold hook
overloads of `DynamicOpDefinition`, and the
`DynamicOpDefinition::LegacyFoldHookFn` alias. ODS cannot put an
attribute on an interface method, so only the documentation marks the
legacy `DialectFoldInterface::fold` method as deprecated.

The new code in `cir::CastOp::fold` also fixes a crash. The fold

    [21 lines not shown]
DeltaFile
+16-13mlir/lib/IR/ExtensibleDialect.cpp
+17-0clang/test/CIR/Transforms/canonicalize.cir
+11-4mlir/lib/IR/Operation.cpp
+6-8mlir/lib/Dialect/Affine/IR/AffineOps.cpp
+6-5clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+9-2mlir/include/mlir/IR/ExtensibleDialect.h
+65-3210 files not shown
+102-4916 files

LLVM/project 59cd445 — mlir/lib/Dialect/Math/IR MathOps.cpp, mlir/lib/Dialect/Shape/IR Shape.cpp

[mlir] Use OpFoldResults in more upstream dialects

The scf, shape, sparse_tensor, gpu, math, and builtin dialects now set
the `useOpFoldResults` bit. ODS then declares `OpFoldResults
fold(FoldAdaptor)` for each of their ops that does not have exactly one
fixed result. This patch moves the seven folds of such ops to the new
form: `scf.if`, `shape.split_at`, `sparse_tensor.crd_translate`,
`gpu.memcpy`, `gpu.memset`, `math.sincos`, and
`builtin.unrealized_conversion_cast`.

The behavior of the folds does not change, except in the case below.
Each fold builds the same normalized `OpFoldResults` object that the
legacy adapter built from the old return. The current tests of each
dialect cover these folds.

In a graph region or in an unreachable block, an operand that
`unrealized_conversion_cast` or `sparse_tensor.crd_translate` forwards
can be another result of the same op that the same fold replaces. The
new form drops the replacements of such a fold. For a forward chain, the

    [24 lines not shown]
DeltaFile
+37-0mlir/test/Dialect/Builtin/canonicalize.mlir
+8-11mlir/lib/Dialect/SparseTensor/IR/SparseTensorDialect.cpp
+16-0mlir/test/Dialect/SparseTensor/fold.mlir
+4-9mlir/lib/IR/BuiltinDialect.cpp
+3-7mlir/lib/Dialect/Math/IR/MathOps.cpp
+3-5mlir/lib/Dialect/Shape/IR/Shape.cpp
+71-328 files not shown
+81-3814 files