Changes

Summary

  1. [ARM] Allow selecting hard-float ABI in integer-only MVE. (details)
  2. [mlir][bufferization][NFC] Rename getAliasingOpOperand/getAliasingOpResult (details)
  3. [mlir][llvm] Opaque pointer support for atomic and call ops. (details)
  4. [NFC] Use GlobalObject::setAlignment that takes an Align in LLParser (details)
  5. XFAIL new test available_externally_alias.ll on NVPTX (details)
  6. [AArch64] Handle negative architecture features (details)
Commit 60ea6f35a270d11c91770a2fc366888e7d3859f4 by simon.tatham
[ARM] Allow selecting hard-float ABI in integer-only MVE.

Armv8.1-M can be configured to support the integer subset of the MVE
vector instructions, and no floating point. In that situation, the FP
and vector registers still exist, and so do the load, store and move
instructions that transfer data in and out of them. So there's no
reason the hard floating point ABI can't be supported, and you might
reasonably want to use it, for the sake of intrinsics-based code
passing explicit MVE vector types between functions.

But the selection of the hard float ABI in the backend was gated on
Subtarget->hasVFP2Base(), which is false in the case of integer MVE
and no FP.

As a result, you'd silently get the soft float ABI even if you
deliberately tried to select it, e.g. with clang options such as
--target=arm-none-eabi -mfloat-abi=hard -march=armv8.1m.main+nofp+mve

The hard float ABI should have been gated on the weaker condition
Subtarget->hasFPRegs(), because the only requirement for being able to
pass arguments in the FP registers is that the registers themselves
should exist.

I haven't added a new test, because changing the existing
CodeGen/Thumb2/float-ops.ll test seemed sufficient. But I've added a
comment explaining why the results are expected to be what they are.

Reviewed By: lenary

Differential Revision: https://reviews.llvm.org/D142703
The file was modifiedclang/docs/ReleaseNotes.rst (diff)
The file was modifiedllvm/lib/Target/ARM/ARMFastISel.cpp (diff)
The file was modifiedllvm/docs/ReleaseNotes.rst (diff)
The file was modifiedllvm/test/CodeGen/Thumb2/float-ops.ll (diff)
The file was modifiedllvm/lib/Target/ARM/ARMISelLowering.cpp (diff)
Commit 1ac248e485c2ee88fcaf1694942b599ea987a726 by springerm
[mlir][bufferization][NFC] Rename getAliasingOpOperand/getAliasingOpResult

* `getAliasingOpOperand` => `getAliasingOpOperands`
* `getAliasingOpResult` => `getAliasingOpResults`

Also a few minor code cleanups and better documentation.

Differential Revision: https://reviews.llvm.org/D142979
The file was modifiedmlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp (diff)
The file was modifiedmlir/lib/Dialect/Arith/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/lib/Dialect/SparseTensor/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Bufferization/IR/BufferizableOpInterface.td (diff)
The file was modifiedmlir/lib/Dialect/Bufferization/Transforms/OneShotAnalysis.cpp (diff)
The file was modifiedmlir/lib/Dialect/Shape/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/lib/Dialect/Bufferization/Transforms/FuncBufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Bufferization/IR/BufferizationOps.td (diff)
The file was modifiedmlir/include/mlir/Dialect/Bufferization/IR/BufferizableOpInterface.h (diff)
The file was modifiedmlir/lib/Dialect/SCF/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/lib/Dialect/Tensor/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/lib/Dialect/Linalg/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/Bufferization/IR/DstBufferizableOpInterfaceImpl.h (diff)
The file was modifiedmlir/lib/Dialect/Bufferization/IR/BufferizableOpInterface.cpp (diff)
The file was modifiedmlir/lib/Dialect/Vector/Transforms/BufferizableOpInterfaceImpl.cpp (diff)
Commit d8153ae29959e8e27a1458fab4107e93b5861240 by tobias.gysi
[mlir][llvm] Opaque pointer support for atomic and call ops.

This revision adapts the printers and parsers of the LLVM Dialect
AtomicRMWOp, AtomicCmpXchgOp, CallOp, and InvokeOp to support both
opaque and typed pointers by printing the pointer types explicitly.
Previously, the printers and parser of these operations silently assumed
typed pointers. This assumption is problematic if a lowering or the
LLVM IR import produce LLVM Dialect with opaque pointers and the IR is
then printed and parsed, for example, when running mlir-translate. In
LLVM IR itself all tests with typed pointers are already gone. It is
thus important to start switching to opaque pointers.

This revision can be seen as a preparation step for the switch of the
LLVM Dialect to opaque pointers. Once printing and parsing works
seamlessly, all lowerings to LLVM Dialect can be switched to produce
opaque pointers. After a transition period, LLVM Dialect itself can by
simplified to support opaque pointers only.

Reviewed By: ftynse, Dinistro

Differential Revision: https://reviews.llvm.org/D142884
The file was modifiedmlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp (diff)
The file was modifiedmlir/include/mlir/Dialect/LLVMIR/LLVMOps.td (diff)
The file was modifiedmlir/test/Conversion/FuncToLLVM/convert-funcs.mlir (diff)
The file was modifiedmlir/test/Dialect/OpenMP/ops.mlir (diff)
The file was modifiedmlir/test/Target/LLVMIR/Import/constant.ll (diff)
The file was modifiedmlir/test/Target/LLVMIR/openmp-reduction.mlir (diff)
The file was modifiedmlir/test/Target/LLVMIR/llvmir.mlir (diff)
The file was modifiedmlir/test/Conversion/MemRefToLLVM/memref-to-llvm.mlir (diff)
The file was modifiedmlir/test/Target/LLVMIR/Import/instructions.ll (diff)
The file was modifiedmlir/test/Dialect/LLVMIR/invalid.mlir (diff)
The file was modifiedmlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp (diff)
The file was modifiedmlir/test/Dialect/LLVMIR/roundtrip.mlir (diff)
The file was modifiedmlir/test/Dialect/OpenMP/invalid.mlir (diff)
Commit 6280cab0fe21682acd048e817f6b3d7c0590944a by gchatelet
[NFC] Use GlobalObject::setAlignment that takes an Align in LLParser
The file was modifiedllvm/lib/AsmParser/LLParser.cpp (diff)
Commit e302c04cfa10908858401a4845d6a9c773d6735f by jonas.hahnfeld
XFAIL new test available_externally_alias.ll on NVPTX
The file was modifiedllvm/test/CodeGen/Generic/available_externally_alias.ll (diff)
Commit f559e781b2bd918d8cac8a878639870a8f26196d by david.green
[AArch64] Handle negative architecture features

Currently negative architecture features passes to clang like -Xclang
-target-feature -Xclang -v9.3a will end up _enabling_ dependant target
features (like FEAT_MOPS). This patch fixes that by ensuring we don't
enable dependant target features when !Enabled.

Fixes #60375

Differential Revision: https://reviews.llvm.org/D142963
The file was modifiedclang/test/CodeGen/aarch64-targetattr.c (diff)
The file was modifiedclang/lib/Basic/Targets/AArch64.cpp (diff)
The file was modifiedclang/test/Preprocessor/aarch64-target-features.c (diff)