SuccessChanges

Summary

  1. AMD k8 family does not support SSE4.x which are required by x86-64-v2+ (details)
  2. [mlir][linalg] Lower PadTensorOp to InitTensorOp + FillOp + SubTensorInitOp (details)
  3. [mlir][linalg] Vectorize linalg.pad_op source copying (static source shape) (details)
  4. [mlir][linalg] Vectorize linalg.pad_op source copying (improved) (details)
  5. [LoopVectorize] precommit pr50686.ll for D104148 (details)
  6. Only consider built-in compound assignment operators for -Wunused-but-set-* (details)
  7. [mlir] Add ExpOp to Complex dialect. (details)
  8. [mlir][linalg] Lower PadTensorOps with non-constant pad value (details)
  9. [mlir][linalg] Add support for scalar input operands. (details)
  10. [mlir] Remove traits that require vector type support from ops in Complex dialect. (details)
  11. [VP] Binary floating-point intrinsics. (details)
  12. [flang] Add initial implementation for CPU_TIME (details)
  13. [llvm] remove Sequence::asSmallVector() (details)
Commit 092c303955cd18be6c0b923b1c0a1b96e2c91893 by sguelton
AMD k8 family does not support SSE4.x which are required by x86-64-v2+

So don't define __tune__k8__ for these micro architecture.

SSE, SSE2 and SSE3 appear in https://www.amd.com/system/files/TechDocs/25112.PDF
but not SSE4.x.

Differential Revision: https://reviews.llvm.org/D104116
The file was modifiedclang/lib/Basic/Targets/X86.cpp
Commit 98fff5153a81fc501a69a4c184de5236fc806b9f by springerm
[mlir][linalg] Lower PadTensorOp to InitTensorOp + FillOp + SubTensorInitOp

Currently limited to constant pad values. Any combination of dynamic/static tensor sizes and padding sizes is supported.

Differential Revision: https://reviews.llvm.org/D103679
The file was modifiedmlir/test/Dialect/Linalg/vectorization.mlir
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Commit 4c2f3d810b4a032792b632998d90baf4ab2ff7f3 by springerm
[mlir][linalg] Vectorize linalg.pad_op source copying (static source shape)

If the source operand of a linalg.pad_op operation has static shape, vectorize the copying of the source.

Differential Revision: https://reviews.llvm.org/D103747
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
The file was modifiedmlir/test/Dialect/Linalg/vectorization.mlir
Commit 01e3b344690dbb20298977015f13fd03b40132f4 by springerm
[mlir][linalg] Vectorize linalg.pad_op source copying (improved)

Vectorize linalg.pad_op source copying if source or result shape are static.

Differential Revision: https://reviews.llvm.org/D103791
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
The file was modifiedmlir/test/Dialect/Linalg/vectorization.mlir
Commit 8449af41e5c735960691f711ed9500c2a80a0b11 by guopeilin1
[LoopVectorize] precommit pr50686.ll for D104148
The file was addedllvm/test/Transforms/LoopVectorize/pr50686.ll
Commit b5b9489b2415dc48c39d4d7d4bae6197dc499f38 by sbergman
Only consider built-in compound assignment operators for -Wunused-but-set-*

At least LibreOffice has, for mainly historic reasons that would be hard to
change now, a class Any with an overloaded operator >>= that semantically does
not assign to the LHS but rather extracts into the (by-reference) RHS.  Which
thus caused false positive -Wunused-but-set-parameter and
-Wunused-but-set-variable after those have been introduced recently.

This change is more conservative about the assumed semantics of overloaded
operators, excluding compound assignment operators but keeping plain operator =
ones.  At least for LibreOffice, that strikes a good balance of not producing
false positives but still finding lots of true ones.

(The change to the BinaryOperator case in MaybeDecrementCount is necessary
because e.g. the template f4 test code in warn-unused-but-set-variables-cpp.cpp
turns the += into a BinaryOperator.)

Differential Revision: https://reviews.llvm.org/D103949
The file was modifiedclang/lib/Sema/SemaExprCXX.cpp
The file was modifiedclang/test/SemaCXX/warn-unused-but-set-variables-cpp.cpp
Commit 73cbc91c93dd5a7ee1b8b1a9d507e194e835b446 by akuegel
[mlir] Add ExpOp to Complex dialect.

Also add a conversion pattern from Complex to Standard/Math dialect.

Differential Revision: https://reviews.llvm.org/D104108
The file was modifiedmlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp
The file was modifiedmlir/test/Conversion/ComplexToStandard/convert-to-standard.mlir
The file was modifiedmlir/include/mlir/Dialect/Complex/IR/ComplexOps.td
Commit ddda52ce3cf2936d9ee05e06ed70e7d270cfcd73 by springerm
[mlir][linalg] Lower PadTensorOps with non-constant pad value

The padding of such ops is not generated in a vectorized way. Instead, emit a tensor::GenerateOp.

We may vectorize GenerateOps in the future.

Differential Revision: https://reviews.llvm.org/D103879
The file was modifiedmlir/test/Dialect/Linalg/vectorization.mlir
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
Commit 046922e1003795d67df89721e6b76c01b214d408 by gysit
[mlir][linalg] Add support for scalar input operands.

Up to now all structured op operands are assumed to be shaped. The patch relaxes this assumption and allows scalar input operands. In contrast to shaped operands scalar operands are not indexed and directly forwarded to the body of the operation. As all other operands, scalar operands are associated to an indexing map that in case of a scalar or a 0D-operand has an empty range.

We will use scalar operands as a replacement for the capture mechanism. In contrast to captures, the approach ensures we can generate the function signature from the operand list and it prevents outdated capture values in case a transformation updates only the capture operand but not the hidden body of a named operation.

Removing captures and updating existing operations such as linalg.fill is left for a later patch.

The patch depends on https://reviews.llvm.org/D103891 and https://reviews.llvm.org/D103890.

Differential Revision: https://reviews.llvm.org/D104109
The file was modifiedmlir/test/Dialect/Linalg/tile-and-pad-tensors.mlir
The file was modifiedmlir/test/Dialect/Linalg/drop-unit-extent-dims.mlir
The file was modifiedmlir/test/lib/Dialect/Linalg/TestLinalgFusionTransforms.cpp
The file was modifiedmlir/test/Dialect/Linalg/roundtrip.mlir
The file was modifiedmlir/test/lib/Dialect/Linalg/TestLinalgTransforms.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Loops.cpp
The file was modifiedmlir/test/Dialect/Linalg/fusion-tensor-pattern.mlir
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Transforms.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp
The file was modifiedmlir/test/Dialect/Linalg/reshape_fusion.mlir
The file was modifiedmlir/test/Dialect/Linalg/fusion-tensor.mlir
The file was modifiedmlir/test/Dialect/Linalg/loops.mlir
The file was modifiedmlir/test/Dialect/Linalg/invalid.mlir
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td
The file was modifiedmlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Fusion.cpp
The file was modifiedmlir/test/Dialect/Linalg/vectorization.mlir
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/DropUnitDims.cpp
Commit 2116eadf0994942fa99778d9b9d4315bc106f35f by akuegel
[mlir] Remove traits that require vector type support from ops in Complex dialect.

Actually, no vector types are supported so far. We should add the traits once
the vector types are supported (e.g. ElementwiseMappable.traits).
Instead add Elementwise trait to each op.

Differential Revision: https://reviews.llvm.org/D104103
The file was modifiedmlir/include/mlir/Dialect/Complex/IR/ComplexOps.td
Commit 74d45b884cfb13d8530a64ba538817bdab165c12 by simon.moll
[VP] Binary floating-point intrinsics.

This patch implements vector-predicated intrinsics on IR level for fadd,
fsub, fmul, fdiv and frem.  There operate in the default floating-point
environment. We will use constrained fp operand bundles for constrained
vector-predicated fp math (D93455).

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D93470
The file was modifiedllvm/docs/LangRef.rst
The file was modifiedllvm/include/llvm/IR/Intrinsics.td
The file was modifiedllvm/test/Verifier/vp-intrinsics.ll
The file was modifiedllvm/unittests/IR/VPIntrinsicTest.cpp
The file was modifiedllvm/include/llvm/IR/VPIntrinsics.def
Commit 57e85622bbdb2eb18cc03df2ea457019c58f6912 by diana.picus
[flang] Add initial implementation for CPU_TIME

Add an implementation for CPU_TIME based on std::clock(), which should
be available on all the platforms that we support.

Also add a test that's basically just a sanity check to make sure we
return positive values and that the value returned at the start of some
amount of work is larger than the one returned after the end.

Differential Revision: https://reviews.llvm.org/D104019
The file was addedflang/unittests/RuntimeGTest/Time.cpp
The file was modifiedflang/runtime/CMakeLists.txt
The file was addedflang/runtime/time-intrinsic.cpp
The file was modifiedflang/unittests/RuntimeGTest/CMakeLists.txt
Commit 1d49e5352f9538bb9c514dd627a93f9c40982d3a by gchatelet
[llvm] remove Sequence::asSmallVector()

There's no need for `toSmallVector()` as `SmallVector.h` already provides a `to_vector` free function that takes a range.

Reviewed By: Quuxplusone

Differential Revision: https://reviews.llvm.org/D104024
The file was modifiedllvm/include/llvm/ADT/Sequence.h
The file was modifiedmlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp