SuccessChanges

Summary

  1. [AMDGPU] Deduplicate VOP tablegen asm & ins (details)
  2. [mlir] Add Python bindings for AffineExpr (details)
  3. [mlir] More Python bindings for AffineMap (details)
  4. [mlir] Expose MemRef layout in Python bindings (details)
  5. [flang][openxx][NFC] Remove duplicated function to check required clauses (details)
  6. -funique-internal-linkage-names appends a hex md5hash suffix to the symbol name which is not demangler friendly, convert it to decimal. (details)
  7. Introduce new quiet mode and new option handling for -print-changed. (details)
  8. Fix minor build issue (NFC) (details)
  9. [SystemZ][z/OS] Fix Permission denied pattern matching (details)
  10. [mlir] Add structural conversion to async dialect lowering. (details)
Commit bcec0f27a2c37b64d5e8b84bbbfa563edae6affe by Joseph.Nash
[AMDGPU] Deduplicate VOP tablegen asm & ins

VOP3 and VOP DPP subroutines to generate input
operands and asm strings were essentially copy
pasted several times. They are deduplicated to
reduce the maintenance burden and allow faster
development.

Reviewed By: dp

Differential Revision: https://reviews.llvm.org/D94102

Change-Id: I76225eed3c33239d9573351e0c8a0abfad0146ea
The file was modifiedllvm/lib/Target/AMDGPU/VOP3Instructions.td
The file was modifiedllvm/lib/Target/AMDGPU/SIInstrInfo.td
Commit 74628c43053b482f35f0f1e6b4eac743fbe425e5 by zinenko
[mlir] Add Python bindings for AffineExpr

This adds the Python bindings for AffineExpr and a couple of utility functions
to the C API. AffineExpr is a top-level context-owned object and is modeled
similarly to attributes and types. It is required, e.g., to build layout maps
of the built-in memref type.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D94225
The file was modifiedmlir/lib/CAPI/IR/AffineExpr.cpp
The file was modifiedmlir/test/CAPI/ir.c
The file was modifiedmlir/include/mlir-c/AffineExpr.h
The file was modifiedmlir/lib/Bindings/Python/IRModules.cpp
The file was modifiedmlir/include/mlir-c/Bindings/Python/Interop.h
The file was modifiedmlir/lib/Bindings/Python/IRModules.h
The file was addedmlir/test/Bindings/Python/ir_affine_expr.py
Commit e79bd0b4f25e68130a2ac273d6508ea322028b61 by zinenko
[mlir] More Python bindings for AffineMap

Now that the bindings for AffineExpr have been added, add more bindings for
constructing and inspecting AffineMap that consists of AffineExprs.

Depends On D94225

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D94297
The file was modifiedmlir/test/CAPI/ir.c
The file was modifiedmlir/lib/Bindings/Python/IRModules.cpp
The file was modifiedmlir/include/mlir-c/AffineExpr.h
The file was modifiedmlir/test/Bindings/Python/ir_affine_map.py
The file was modifiedmlir/include/mlir-c/AffineMap.h
The file was modifiedmlir/lib/CAPI/IR/AffineMap.cpp
Commit 547e3eef14a8e75a867dfcc6b45cd1f0547d4e07 by zinenko
[mlir] Expose MemRef layout in Python bindings

This wasn't possible before because there was no support for affine expressions
as maps. Now that this support is available, provide the mechanism for
constructing maps with a layout and inspecting it.

Rework the `get` method on MemRefType in Python to avoid needing an explicit
memory space or layout map. Remove the `get_num_maps`, it is too low-level,
using the length of the now-avaiable pseudo-list of layout maps is more
pythonic.

Depends On D94297

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D94302
The file was modifiedmlir/lib/CAPI/IR/BuiltinTypes.cpp
The file was modifiedmlir/lib/Bindings/Python/IRModules.cpp
The file was modifiedmlir/test/Bindings/Python/ir_types.py
The file was modifiedmlir/include/mlir-c/BuiltinTypes.h
Commit 47567ca5faca147bcc28bcbbaa6bf448354bb5d4 by clementval
[flang][openxx][NFC] Remove duplicated function to check required clauses

Remove duplicated function to check for required clauses on a directive. This was
still there from the merging of OpenACC and OpenMP common semantic checks and it can now be
removed so we use only one function.

Reviewed By: sameeranjoshi

Differential Revision: https://reviews.llvm.org/D93575
The file was modifiedflang/test/Semantics/omp-device-constructs.f90
The file was modifiedflang/lib/Semantics/check-directive-structure.h
The file was modifiedflang/lib/Semantics/check-omp-structure.cpp
Commit d8c6d24359f17c55a8966231ef74e8f4b03ad282 by tmsriram
-funique-internal-linkage-names appends a hex md5hash suffix to the symbol name which is not demangler friendly, convert it to decimal.

Please see D93747 for more context which tries to make linkage names of internal
linkage functions to be the uniqueified names. This causes a problem with gdb
because breaking using the demangled function name will not work if the new
uniqueified name cannot be demangled. The problem is the generated suffix which
is a mix of integers and letters which do not demangle. The demangler accepts
either all numbers or all letters. This patch simply converts the hash to decimal.

There is no loss of uniqueness by doing this as the precision is maintained.
The symbol names get longer by a few characters though.

Differential Revision: https://reviews.llvm.org/D94154
The file was modifiedllvm/lib/Transforms/Utils/UniqueInternalLinkageNames.cpp
The file was modifiedllvm/test/Transforms/UniqueInternalLinkageNames/unique_symbol_names.ll
The file was modifiedclang/test/CodeGen/unique-internal-linkage-names.cpp
Commit 43a830ed94180f72533263bb1c40af29510c017a by schmeise
Introduce new quiet mode and new option handling for -print-changed.
Summary:
Introduce a new mode of operation for -print-changed that only reports
after a pass changes the IR with all of the other messages suppressed (ie,
no initial IR and no messages about ignored, filtered or non-modifying
passes).

The option processing for -print-changed is changed to take an optional
string indicating options for print-changed. Initially, the only option
supported is quiet (as described above). This new quiet mode is specified
with -print-changed=quiet while -print-changed will continue to function
in the same way. It is intended that there will be more options in the
future.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>
Reviewed By: aeubanks (Arthur Eubanks)
Differential Revision: https://reviews.llvm.org/D92589
The file was modifiedllvm/test/Other/change-printer.ll
The file was modifiedllvm/include/llvm/Passes/StandardInstrumentations.h
The file was modifiedllvm/lib/Passes/StandardInstrumentations.cpp
Commit 5464baaae8c19997c5b0b76930d2b5ee13f68dfa by rnk
Fix minor build issue (NFC)

Change [x86] Fix tile register spill issue was causing problems for our build
using gcc-5.4.1

The problem was caused by this line:

for (const MachineInstr &MI : make_range(MIS.begin(), MI))

where MI was previously defined as a MachineBasicBlock iterator.

Differential Revision: https://reviews.llvm.org/D94415
The file was modifiedllvm/lib/CodeGen/InlineSpiller.cpp
Commit 1027a22ccd72bb127253cf7d27f528712fa21fa0 by Abhina.Sreeskantharajan
[SystemZ][z/OS] Fix Permission denied pattern matching

On z/OS, the error message "EDC5111I Permission denied." is not matched correctly in lit tests. This patch updates the check expression to match successfully.

Reviewed By: fanbo-meng

Differential Revision: https://reviews.llvm.org/D94432
The file was modifiedllvm/test/tools/llvm-elfabi/fail-file-write.test
Commit 195728c75aa41d80254175c5d7ac2f881333b139 by csigg
[mlir] Add structural conversion to async dialect lowering.

Lowering of async dialect uses a fixed type converter and therefore does not support lowering non-standard types.

This revision adds a structural conversion so that non-standard types in `!async.value`s can be lowered to LLVM before lowering the async dialect itself.

Reviewed By: ezhulenev

Differential Revision: https://reviews.llvm.org/D94404
The file was modifiedmlir/include/mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h
The file was modifiedmlir/lib/Conversion/AsyncToLLVM/AsyncToLLVM.cpp