- Mar 18, 2020
-
-
Simon Tatham authored
Summary: These are complicated integer multiply+add instructions with extra saturation, taking the high half of a double-width product, and optional rounding. There's no sensible way to represent that in standard IR, so I've converted the clang builtins directly to target-specific intrinsics. Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard Reviewed By: miyuki Subscribers: kristof.beyls, hiraditya, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76123
-
Simon Tatham authored
Summary: These instructions compute multiply+add in integers, with one of the operands being a splat of a scalar. (VMLA and VMLAS differ in whether the splat operand is a multiplier or the addend.) I've represented these in IR using existing standard IR operations for the unpredicated forms. The predicated forms are done with target- specific intrinsics, as usual. When operating on n-bit vector lanes, only the bottom n bits of the i32 scalar operand are used. So we have to tell that to isel lowering, to allow it to remove a pointless sign- or zero-extension instruction on that input register. That's done in `PerformIntrinsicCombine`, but first I had to enable `PerformIntrinsicCombine` for MVE targets (previously all the intrinsics it handled were for NEON), and make it a method of `ARMTargetLowering` so that it can get at `SimplifyDemandedBits`. Reviewers: dmgreen, MarkMurrayARM, miyuki, ostannard Reviewed By: dmgreen Subscribers: kristof.beyls, hiraditya, danielkiss, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76122
-
serge-sans-paille authored
Correctly set RelocationModel, thanks @modocache for spotting this. Related to differential revision: https://reviews.llvm.org/D75579
-
Simon Pilgrim authored
These shifts are masked to be inrange so we should be able to replace them with generic shifts.
-
Florian Hahn authored
For selects with an unknown condition, we can approximate the result by merging the state of both options. This automatically takes care of the case where on operand is undef. Reviewers: davide, efriedma, mssimpso Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D71935
-
Sam Parker authored
Test the costs of selects for thumbv8m.base too.
-
Haojian Wu authored
Summary: Fix https://github.com/clangd/clangd/issues/293 Reviewers: sammccall Subscribers: ilya-biryukov, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76320
-
Guillaume Chatelet authored
Summary: This is patch is part of a series to introduce an Alignment type. See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html See this patch for the introduction of the type: https://reviews.llvm.org/D64790 Reviewers: courbet Subscribers: jholewinski, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D76301
-
Pengfei Wang authored
Summary: Bug fix for https://bugs.llvm.org/show_bug.cgi?id=45182 Exception handle may indirectly jump to catch pad, So we should add ENDBR instruction before catch pad instructions. Reviewers: craig.topper, hjl.tools, LuoYuanke, annita.zhang, pengfei Reviewed By: LuoYuanke Subscribers: hiraditya, llvm-commits Patch By: Xiang Zhang (xiangzhangllvm) Differential Revision: https://reviews.llvm.org/D76190
-
Alex Brachet authored
Summary: This patch adds `sigaction` and the `sa_restorer` signal trampoline function `__restore_rt` Reviewers: sivachandra, MaskRay, PaulkaToast Reviewed By: sivachandra Subscribers: gchatelet, mgorny, tschuett, libc-commits Differential Revision: https://reviews.llvm.org/D75802
-
Vitaly Buka authored
The patch introduced use-after-poison. This reverts commit d0fe13ec.
-
River Riddle authored
This helps when looking at the debug log and understanding what properties the invalid operation has when legalization fails.
-
Richard Smith authored
in the process of being initialized.
-
QingShan Zhang authored
If it is a*b-c*d, it could be also folded into fma(a, b, -c*d) or fma(-c, d, a*b). This patch is trying to respect the uses of a*b and c*d to make the best choice. Differential Revision: https://reviews.llvm.org/D75982
-
River Riddle authored
Summary: This adds support in RewriterGen for calling into the new `PatternRewriter::notifyMatchFailure` hook. This lets derived pattern rewriters display this information to users, an example from DialectConversion is shown below: ``` Legalizing operation : 'std.and'(0x60e0000066a0) { * Fold { } -> FAILURE : unable to fold * Pattern : 'std.and -> (spv.BitwiseAnd)' { ** Failure : operand 0 of op 'std.and' failed to satisfy constraint: '8/16/32/64-bit integer or vector of 8/16/32/64-bit integer values of length 2/3/4' } -> FAILURE : pattern failed to match * Pattern : 'std.and -> (spv.LogicalAnd)' { ** Failure : operand 0 of op 'std.and' failed to satisfy constraint: 'bool or vector of bool values of length 2/3/4' } -> FAILURE : pattern failed to match } -> FAILURE : no matched legalization pattern ``` Differential Revision: https://reviews.llvm.org/D76335
-
River Riddle authored
This also replaces usages of matchSuccess/matchFailure with success/failure respectively. Differential Revision: https://reviews.llvm.org/D76313
-
Nicolas Vasilache authored
Summary: This revision restructures the calling of vector transforms to make it more flexible to ask for lowering through LLVM matrix intrinsics. This also makes sure we bail out in degenerate cases (i.e. 1) in which LLVM complains about not being able to scalarize. Differential Revision: https://reviews.llvm.org/D76266
-
Stephen Neuendorffer authored
LLVM has a documented mechanism for passing configuration information to an out of tree project using cmake. See https://llvm.org/docs/CMake.html#embedding-llvm-in-your-project. This patch adds similar support for MLIR. Using this requires something like: cmake_minimum_required(VERSION 3.4.3) project(SimpleProject) find_package(MLIR REQUIRED CONFIG) include_directories(${LLVM_INCLUDE_DIRS}) include_directories(${MLIR_INCLUDE_DIRS}) link_directories(${LLVM_BUILD_LIBRARY_DIR}) add_definitions(${LLVM_DEFINITIONS}) set(CMAKE_MODULE_PATH ${LLVM_CMAKE_DIR} ${MLIR_CMAKE_DIR} ) include(AddLLVM) include(TableGen) include(AddMLIR) add_executable(test-opt test-opt.cpp) llvm_update_compile_flags(test-opt) get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS) get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS) message(dialects=${dialect_libs}) set(LIBS ${dialect_libs} ${conversion_libs} MLIRLoopOpsTransforms MLIRLoopAnalysis MLIRAnalysis MLIRDialect MLIREDSC MLIROptLib MLIRParser MLIRPass MLIRQuantizerFxpMathConfig MLIRQuantizerSupport MLIRQuantizerTransforms MLIRSPIRV MLIRSPIRVTestPasses MLIRSPIRVTransforms MLIRTransforms MLIRTransformUtils MLIRTestDialect MLIRTestIR MLIRTestPass MLIRTestTransforms MLIRSupport MLIRIR MLIROptLib LLVMSupport LLVMCore LLVMAsmParser ) target_link_libraries(test-opt ${LIBS}) Differential Revision: https://reviews.llvm.org/D76047
-
Jin Lin authored
Summary: The following change is to allow the machine outlining can be applied for Nth times, where N is specified by the compiler option. By default the value of N is 1. The motivation is that the repeated machine outlining can further reduce code size. Please refer to the presentation "Improving Swift Binary Size via Link Time Optimization" in LLVM Developers' Meeting in 2019. Reviewers: aschwaighofer, tellenbach, paquette Reviewed By: paquette Subscribers: tellenbach, hiraditya, llvm-commits, jinlin Tags: #llvm Differential Revision: https://reviews.llvm.org/D71027
-
Nico Weber authored
This reverts commit 65b21282. Breaks sanitizer bots (https://reviews.llvm.org/D75712#1927668) and causes https://crbug.com/1062021 (which may or may not be a compiler bug, not clear yet).
-
Paula Toth authored
Summary: These dependencies are needed for testing on the buildbots until we migrate AORs into libc. Reviewers: sivachandra Reviewed By: sivachandra Subscribers: MaskRay, tschuett, libc-commits Tags: #libc-project Differential Revision: https://reviews.llvm.org/D76330
-
Michael Liao authored
-
Matt Arsenault authored
-
Jonas Devlieghere authored
Make sure that `process` is not None before calling is_alive. Otherwise this might result in an AttributeError: 'NoneType' object has no attribute 'is_alive'. Although lldb.process and friends could already be None in the past, for example after leaving an interactive scripting session, the issue became more prevalent after `fc1fd6bf`. I audited the other interface files for usages of target, process, thread and frame, but this seems the only place where a global is used from an SB class.
-
Scott Linder authored
Summary: Explanation is in a comment in the diff, but essentially printing a physical register name here is ambiguous. Until we can implement printing a DWARF register name here just use the encoding directly. Tags: #llvm Differential Revision: https://reviews.llvm.org/D76253
-
Jon Chesterfield authored
-
- Mar 17, 2020
-
-
Jonas Devlieghere authored
Always return a POSIX-style path from FindXcodeContentsDirectoryInPath so that the output is identical on all host platforms.
-
Rob Suderman authored
Summary: Renamed VectorOps to Vector to avoid the redundant Ops suffix. Differential Revision: https://reviews.llvm.org/D76317
-
Rob Suderman authored
Summary: Renamed QuantOps to Quant to avoid the Ops suffix. All dialects will contain ops, so the Ops suffix is redundant. Differential Revision: https://reviews.llvm.org/D76318
-
Jon Chesterfield authored
-
Nathan Ridge authored
Fixes https://github.com/clangd/clangd/issues/296 Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76103
-
Michael Liao authored
- After https://reviews.llvm.org/D68578, the implicit conversion from `FunctionDecl` to `GlobalDecl` needs replacing with `getGlobalDecl`; otherwise, assertion is triggered.
-
Jacques Pienaar authored
Summary: Add targets and basic printing/parsing of types in Shape dialect. Differential Revision: https://reviews.llvm.org/D76321
-
Louis Dionne authored
Some compilation-only flags were in %flags, but they should have been in %compile_flags only.
-
Jian Cai authored
Summary: The current relaxation implementation is not correctly adjusting the size and offsets of fragements in one section based on changes in size of another if the layout order of the two happened to be such that the former was visited before the later. Therefore, we need to invalidate the fragments in all sections after each iteration of relaxation, and possibly further relax some of them in the next ieration. This fixes PR#45190. Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D76114
-
Jonas Devlieghere authored
The current implementation isn't very resilient when it comes to the output of xcrun. Currently it cannot deal with: - Trailing newlines. - Leading newlines and errors/warnings before the Xcode path. - Xcode not being named Xcode.app. This extract the logic into a helper in PlatformDarwin and fixes those issues. It's also the first step towards removing code duplication between the different platforms and downstream Swift. Differential revision: https://reviews.llvm.org/D76261
-
Louis Dionne authored
-
Simon Pilgrim authored
ISD::ROTL/ROTR rotation values are guaranteed to act as a modulo amount, so for power-of-2 bitwidths we only need the lowest bits. Differential Revision: https://reviews.llvm.org/D76201
-
Jon Chesterfield authored
Summary: [Clang] Attribute to allow defining undef global variables Initializing global variables is very cheap on hosted implementations. The C semantics of zero initializing globals work very well there. It is not necessarily cheap on freestanding implementations. Where there is no loader available, code must be emitted near the start point to write the appropriate values into memory. At present, external variables can be declared in C++ and definitions provided in assembly (or IR) to achive this effect. This patch provides an attribute in order to remove this reason for writing assembly for performance sensitive freestanding implementations. A close analogue in tree is LDS memory for amdgcn, where the kernel is responsible for initializing the memory after it starts executing on the gpu. Uninitalized variables in LDS are observably cheaper than zero initialized. Patch is loosely based on the cuda __shared__ and opencl __local variable implementation which also produces undef global variables. Reviewers: kcc, rjmccall, rsmith, glider, vitalybuka, pcc, eugenis, vlad.tsyrklevich, jdoerfert, gregrodgers, jfb, aaron.ballman Reviewed By: rjmccall, aaron.ballman Subscribers: Anastasia, aaron.ballman, davidb, Quuxplusone, dexonsmith, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D74361
-