SuccessChanges

Summary

  1. [llvm-symbolizer] Add compatibility aliases for --inlining={true,false} (details)
  2. [InstSimplify] Add tests for icmp with urem divisor (NFC) (details)
  3. [InstSimplify] Peephole optimization for icmp (urem X, Y), X (details)
  4. [NFC][LV] Vectorized Loop Skeleton Refactoring (details)
  5. [mlir] [VectorOps] Add expand/compress operations to Vector dialect (details)
  6. [libc++abi] Make sure we use a 32 bit guard on 32 bit Aarch64 (details)
  7. AMDGPU/GlobalISel: Add baseline tests for andn2/orn2 matching (details)
  8. GlobalISel: Add node mappings for frameindex/blockaddress (details)
  9. [libc] Add implementations for isblank, iscntrl, isgraph, ispunct. (details)
  10. GlobalISel: Handle llvm.localescape (details)
  11. [llvm-symbolizer][test] Fix pdb/pdb.test after D83530 (details)
  12. [MLIR][Affine] Fix createPrivateMemRef in affine fusion (details)
  13. BPF: support type exist/size and enum exist/value relocations (details)
  14. [FastISel] Don't transform FSUB(-0, X) -> FNEG(X) in FastISel (details)
  15. [MLIR] Change FunctionType::get() and TupleType::get() to use TypeRange (details)
  16. [WebAssembly] Use "signed char" instead of "char" in SIMD intrinsics. (details)
  17. [libFuzzer] Fix endianness issue in ForEachNonZeroByte() (details)
  18. [SanitizerCoverage] Fix types of __stop* and __start* symbols (details)
  19. [libFuzzer] Enable for SystemZ (details)
Commit 12cb400fd25863154c6d4d26427642cac0e52da1 by i
[llvm-symbolizer] Add compatibility aliases for --inlining={true,false}

D83530 removed --inlining={true,false} which were used by old asan_symbolize.py script.
Add compatibility aliases so that old asan_symbolize.py and sanitizer
binaries can work with new llvm-symbolizer.

Reviewed By: thakis

Differential Revision: https://reviews.llvm.org/D85228
The file was modifiedllvm/test/tools/llvm-symbolizer/output-style-inlined.test
The file was modifiedllvm/tools/llvm-symbolizer/Opts.td
The file was modifiedllvm/test/tools/llvm-symbolizer/sym.test
Commit b778b04b69d02a2fa18b22a1858f3eb26c2f7f24 by nikita.ppv
[InstSimplify] Add tests for icmp with urem divisor (NFC)
The file was modifiedllvm/test/Transforms/InstSimplify/compare.ll
Commit 29fe3fe6155fd79ce731a119ce8065a8a0d26b56 by nikita.ppv
[InstSimplify] Peephole optimization for icmp (urem X, Y), X

This revision adds the following peephole optimization
and it's negation:

    %a = urem i64 %x, %y
    %b = icmp ule i64 %a, %x
    ====>
    %b = true

With John Regehr's help this optimization was checked with Alive2
which suggests it should be valid.

This pattern occurs in the bound checks of Rust code, the program

    const N: usize = 3;
    const T = u8;

    pub fn split_mutiple(slice: &[T]) -> (&[T], &[T]) {
        let len = slice.len() / N;
        slice.split_at(len * N)
    }

the method call slice.split_at will check that len * N is within
the bounds of slice, this bounds check is after some transformations
turned into the urem seen above and then LLVM fails to optimize it
any further. Adding this optimization would cause this bounds check
to be fully optimized away.

ref: https://github.com/rust-lang/rust/issues/74938

Differential Revision: https://reviews.llvm.org/D85092
The file was modifiedllvm/lib/Analysis/InstructionSimplify.cpp
The file was modifiedllvm/test/Transforms/InstSimplify/compare.ll
Commit 3c0f34700230fc4fd23ef408adb75387dcfeff41 by bmahjour
[NFC][LV] Vectorized Loop Skeleton Refactoring

This patch tries to improve readability and maintenance
of createVectorizedLoopSkeleton by reorganizing some lines,
updating some of the comments and breaking it up into
smaller logical units.

Reviewed By: pjeeva01

Differential Revision: https://reviews.llvm.org/D83824
The file was modifiedllvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Commit e8dcf5f87dc20b3f08005ac767ff934e36bf2a5b by ajcbik
[mlir] [VectorOps] Add expand/compress operations to Vector dialect

Introduces the expand and compress operations to the Vector dialect
(important memory operations for sparse computations), together
with a first reference implementation that lowers to the LLVM IR
dialect to enable running on CPU (and other targets that support
the corresponding LLVM IR intrinsics).

Reviewed By: reidtatge

Differential Revision: https://reviews.llvm.org/D84888
The file was modifiedmlir/lib/Dialect/Vector/VectorOps.cpp
The file was modifiedmlir/test/Dialect/Vector/invalid.mlir
The file was modifiedmlir/test/Dialect/Vector/ops.mlir
The file was modifiedmlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
The file was modifiedmlir/test/Target/llvmir-intrinsics.mlir
The file was modifiedmlir/include/mlir/Dialect/Vector/VectorOps.td
The file was modifiedmlir/test/Conversion/VectorToLLVM/vector-to-llvm.mlir
The file was modifiedmlir/integration_test/Dialect/Vector/CPU/test-scatter.mlir
The file was addedmlir/integration_test/Dialect/Vector/CPU/test-expand.mlir
The file was modifiedmlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp
The file was addedmlir/integration_test/Dialect/Vector/CPU/test-compress.mlir
Commit d0ad9e93ce546eb3d372f1b815b164ba137fd701 by Louis Dionne
[libc++abi] Make sure we use a 32 bit guard on 32 bit Aarch64
The file was modifiedlibcxxabi/include/__cxxabi_config.h
Commit 14ed5cf5c461cf34faf5729424b4221d30e24dcc by arsenm2
AMDGPU/GlobalISel: Add baseline tests for andn2/orn2 matching
The file was addedllvm/test/CodeGen/AMDGPU/GlobalISel/andn2.ll
The file was addedllvm/test/CodeGen/AMDGPU/GlobalISel/orn2.ll
Commit f2942f9c26a39340f8604857c7c90e6ade02a381 by arsenm2
GlobalISel: Add node mappings for frameindex/blockaddress
The file was modifiedllvm/include/llvm/Target/GlobalISel/SelectionDAGCompat.td
Commit 6cd50e7b75ed39ba1218c724401117cb6e12748d by gyurgyikcp
[libc] Add implementations for isblank, iscntrl, isgraph, ispunct.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D85059
The file was modifiedlibc/src/ctype/isalnum.cpp
The file was addedlibc/src/ctype/isblank.cpp
The file was addedlibc/src/ctype/isblank.h
The file was addedlibc/test/src/ctype/isblank_test.cpp
The file was addedlibc/src/ctype/iscntrl.cpp
The file was addedlibc/test/src/ctype/isgraph_test.cpp
The file was modifiedlibc/test/src/ctype/CMakeLists.txt
The file was modifiedlibc/config/linux/api.td
The file was addedlibc/src/ctype/iscntrl.h
The file was addedlibc/src/ctype/ispunct.h
The file was addedlibc/test/src/ctype/iscntrl_test.cpp
The file was modifiedlibc/src/ctype/ctype_utils.h
The file was modifiedlibc/spec/stdc.td
The file was addedlibc/src/ctype/isgraph.cpp
The file was modifiedlibc/config/linux/aarch64/entrypoints.txt
The file was modifiedlibc/config/linux/x86_64/entrypoints.txt
The file was addedlibc/src/ctype/isgraph.h
The file was addedlibc/test/src/ctype/ispunct_test.cpp
The file was modifiedlibc/src/ctype/CMakeLists.txt
The file was addedlibc/src/ctype/ispunct.cpp
Commit 3e16e2152cd1fb3914d4da47d83d5e023dd3f2cb by Matthew.Arsenault
GlobalISel: Handle llvm.localescape

This one is pretty easy and shrinks the list of unhandled
intrinsics. I'm not sure how relevant the insert point is. Using the
insert position of EntryBuilder will place this after
constants. SelectionDAG seems to end up emitting these after argument
copies and before anything else, but I don't think it really
matters. This also ends up emitting these in the opposite order from
SelectionDAG, but I don't think that matters either.

This also needs a fix to stop the later passes dropping this as a dead
instruction. DeadMachineInstructionElim's version of isDead special
cases LOCAL_ESCAPE for some reason, and I'm not sure why it's excluded
from MachineInstr::isLabel (or why isDead doesn't check it).

I also noticed DeadMachineInstructionElim never considers inline asm
as dead, but GlobalISel will drop asm with no constraints.
The file was modifiedllvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/irtranslator-localescape.ll
The file was addedllvm/test/CodeGen/AArch64/GlobalISel/labels-are-not-dead.mir
The file was modifiedllvm/lib/CodeGen/GlobalISel/Utils.cpp
Commit 0729a772806e5ae38603c164c2f60e5e9f9e65e5 by i
[llvm-symbolizer][test] Fix pdb/pdb.test after D83530

This is a Windows only test which requires HAVE_DIA_SDK, so I failed to notice it.
The file was modifiedllvm/test/tools/llvm-symbolizer/pdb/pdb.test
Commit 3bfbc5df87cb0e736fe917e4a8d5166bc0b4ea79 by diego.caballero
[MLIR][Affine] Fix createPrivateMemRef in affine fusion

Always define a remapping for the memref replacement (`indexRemap`)
with the proper number of inputs, including all the `outerIVs`, so that
the number of inputs and the operands provided for the map don't mismatch.

Reviewed By: bondhugula, andydavis1

Differential Revision: https://reviews.llvm.org/D85177
The file was modifiedmlir/test/Transforms/loop-fusion.mlir
The file was modifiedmlir/lib/Transforms/LoopFusion.cpp
Commit 6d218b4adb093ff2e9764febbbc89f429412006c by yhs
BPF: support type exist/size and enum exist/value relocations

Four new CO-RE relocations are introduced:
  - TYPE_EXISTENCE: whether a typedef/record/enum type exists
  - TYPE_SIZE: the size of a typedef/record/enum type
  - ENUM_VALUE_EXISTENCE: whether an enum value of an enum type exists
  - ENUM_VALUE: the enum value of an enum type

These additional relocations will make CO-RE bpf programs
more adaptive for potential kernel internal data structure
changes.

Differential Revision: https://reviews.llvm.org/D83878
The file was addedllvm/test/CodeGen/BPF/CORE/intrinsic-typeinfo-type-size-1.ll
The file was modifiedllvm/lib/Target/BPF/BPFCORE.h
The file was modifiedllvm/lib/Target/BPF/BTFDebug.h
The file was modifiedllvm/lib/Target/BPF/BTFDebug.cpp
The file was modifiedllvm/lib/Target/BPF/BPFAbstractMemberAccess.cpp
The file was addedllvm/test/CodeGen/BPF/CORE/intrinsic-typeinfo-enum-value.ll
The file was addedllvm/test/CodeGen/BPF/CORE/intrinsic-typeinfo-type-exist.ll
The file was addedllvm/test/CodeGen/BPF/CORE/intrinsic-typeinfo-type-size-2.ll
Commit 0f2b47b6da0be5e5a597a274bd5c2ae18cc406bd by mcinally
[FastISel] Don't transform FSUB(-0, X) -> FNEG(X) in FastISel

This corresponds with the SelectionDAGISel change in D84056.

Also, rename some poorly named tests in CodeGen/X86/fast-isel-fneg.ll with NFC.

Differential Revision: https://reviews.llvm.org/D85149
The file was modifiedllvm/test/CodeGen/X86/fast-isel-fneg.ll
The file was modifiedllvm/lib/CodeGen/SelectionDAG/FastISel.cpp
The file was removedllvm/test/CodeGen/X86/fast-isel-fneg-kill.ll
Commit 1d6a724aa1c11a37ff083cf637f91852e96ce11f by jurahul
[MLIR] Change FunctionType::get() and TupleType::get() to use TypeRange

- Moved TypeRange into its own header/cpp file, and add hashing support.
- Change FunctionType::get() and TupleType::get() to use TypeRange

Differential Revision: https://reviews.llvm.org/D85075
The file was modifiedmlir/include/mlir/IR/Builders.h
The file was modifiedmlir/include/mlir/IR/StandardTypes.h
The file was addedmlir/include/mlir/IR/TypeRange.h
The file was modifiedmlir/lib/IR/TypeDetail.h
The file was modifiedflang/lib/Lower/RTBuilder.h
The file was modifiedmlir/lib/IR/Builders.cpp
The file was modifiedmlir/lib/IR/StandardTypes.cpp
The file was modifiedmlir/lib/IR/Types.cpp
The file was modifiedmlir/include/mlir/IR/OperationSupport.h
The file was modifiedmlir/include/mlir/IR/Types.h
The file was modifiedmlir/lib/IR/CMakeLists.txt
The file was modifiedmlir/lib/IR/OperationSupport.cpp
The file was modifiedmlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
The file was modifiedmlir/lib/Dialect/StandardOps/IR/Ops.cpp
The file was addedmlir/lib/IR/TypeRange.cpp
Commit 47f7174ffa71d339c1a65d1dd9a2ac5ff2abc95d by sunfish
[WebAssembly] Use "signed char" instead of "char" in SIMD intrinsics.

This allows people to use `int8_t` instead of `char`, -funsigned-char,
and generally decouples SIMD from the specialness of `char`.

And it makes intrinsics like `__builtin_wasm_add_saturate_s_i8x16`
and `__builtin_wasm_add_saturate_u_i8x16` use signed and unsigned
element types, respectively.

Differential Revision: https://reviews.llvm.org/D85074
The file was modifiedclang/lib/Headers/wasm_simd128.h
The file was modifiedclang/include/clang/Basic/BuiltinsWebAssembly.def
The file was modifiedclang/test/CodeGen/builtins-wasm.c
Commit a4e537d9c47aa378a24636e2d90d208389ad93ab by iii
[libFuzzer] Fix endianness issue in ForEachNonZeroByte()

The usage pattern of Bundle variable assumes the machine is little
endian, which is not the case on SystemZ. Fix by converting Bundle to
little-endian when necessary.
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerUtil.h
The file was modifiedcompiler-rt/lib/fuzzer/FuzzerTracePC.h
Commit 153df1373e5d3e0f16464233a3c17feb8a9eb3e9 by iii
[SanitizerCoverage] Fix types of __stop* and __start* symbols

If a section is supposed to hold elements of type T, then the
corresponding CreateSecStartEnd()'s Ty parameter represents T*.
Forwarding it to GlobalVariable constructor causes the resulting
GlobalVariable's type to be T*, and its SSA value type to be T**, which
is one indirection too many. This issue is mostly masked by pointer
casts, however, the global variable still gets an incorrect alignment,
which causes SystemZ to choose wrong instructions to access the
section.
The file was modifiedllvm/test/Instrumentation/SanitizerCoverage/inline-bool-flag.ll
The file was modifiedllvm/test/Instrumentation/SanitizerCoverage/tracing.ll
The file was modifiedllvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
The file was modifiedllvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
Commit ea9b82da4180550c3ddc5e883c589474af9462b7 by iii
[libFuzzer] Enable for SystemZ

* Add SystemZ to the list of supported architectures.

* XFAIL a few tests.

Coverage reporting is broken, and is not easy to fix (see comment in
coverage.test). Interaction with sanitizers needs to be investigated
more thoroughly, since they appear to reduce coverage in certain cases.
The file was modifiedcompiler-rt/cmake/config-ix.cmake
The file was modifiedcompiler-rt/test/fuzzer/coverage.test
The file was modifiedcompiler-rt/test/fuzzer/msan.test
The file was modifiedcompiler-rt/test/fuzzer/swap-cmp.test