- Feb 23, 2022
-
-
Tim Northover authored
We were producing invalid instructions like "ubfx w0, w0, #20, #16".
-
Sven van Haastregt authored
Until now, subgroup builtins are available with `opencl-c.h` when at least one of `cl_intel_subgroups`, `cl_khr_subgroups`, or `__opencl_c_subgroups` is defined. With `-fdeclare-opencl-builtins`, subgroup builtins are conditionalized on `cl_khr_subgroups` only. Align `-fdeclare-opencl-builtins` to `opencl-c.h` by introducing the internal `__opencl_subgroup_builtins` macro. Differential Revision: https://reviews.llvm.org/D120254
-
Nikita Popov authored
This function only works on the RHS operand.
-
Balazs Benics authored
This reverts commit 2acead35. Let's try `REQUIRES: asserts`.
-
Balazs Benics authored
This reverts commit d16c5f41. Let's try `REQUIRES: asserts`.
-
Dawid Jurczak authored
Before this change without any good reason Lexer::LangOpts is sometimes accessed by getter and another time read directly in Lexer functions. Since getLangOpts is a bit more verbose prefer direct access to LangOpts member when possible. Differential Revision: https://reviews.llvm.org/D120333
-
Nikita Popov authored
This is the same special logic we apply for SPF signed clamps when computing the number of sign bits, just for intrinsics. This just uses the same logic as the select case, but there's multiple directions this could be improved in: We could also use the num sign bits from the clamped value, we could do this during constant range calculation, and there's probably unsigned analogues for the constant range case at least.
-
Nikita Popov authored
Add intrinsic versions of existing SPF tests.
-
iains authored
This switches the testcase committed for initial C++20 modules import tracking to use split-file rather than preprocessor directives. Differential Revision: https://reviews.llvm.org/D120352
-
Alex Bradbury authored
[RISCV] Avoid infinite loop between DAGCombiner::visitMUL and RISCVISelLowering::transformAddImmMulImm See https://github.com/llvm/llvm-project/issues/53831 for a full discussion. The basic issue is that DAGCombiner::visitMUL and RISCVISelLowering;:transformAddImmMullImm get stuck in a loop, as the current checks in transformAddImmMulImm aren't sufficient to avoid all cases where DAGCombiner::isMulAddWithConstProfitable might trigger a transformation. This patch makes transformAddImmMulImm bail out if C0 (the constant used for multiplication) has more than one use. Differential Revision: https://reviews.llvm.org/D120332
-
Anton Afanasyev authored
Expand `TruncInstCombine` to handle loops by adding `phi` nodes to expression graph. Reviewed by: RKSimon, lebedev.ri Differential Revision: https://reviews.llvm.org/D109817
-
Nikita Popov authored
We were handling sub of umax, but not the conjugated umin case. https://alive2.llvm.org/ce/z/4fdZfy https://alive2.llvm.org/ce/z/BhUQBM
-
Nikita Popov authored
We should be converting these into usub.sat.
-
Valery Pykhtin authored
add –allow-unused-prefixes. This test has two runs that differ in what functions are left after the inliner, for example: barney exists on OLDPM path but don’t exist on NEWPM path. I restored prefixes this test had had after automatic checks were introduced for this test. For now there are no checks left for ALL_NEWPM path, but the behavior seem to change over time so I added –allow-unused-prefixes to ease following check updates. Renamed %tmp => %temp IR values to avoid update warning. Differential revision: https://reviews.llvm.org/D120207
-
Stanislav Gatev authored
This reverts commit 7ea103de.
-
Iain Sandoe authored
It is useful to be able to visualise the C++20 modules content of a PCM file both for inspection and for testing. In particular, when adding more module types to support C++20 Partitions and Header Units, we would like to be able to confirm that the output PCM has the intended structure. The existing scheme for dumping data is restricted to the content of the AST file control block, which does not include structural data beyond imports. The change here makes use of the AST unit that is set up by BeginSourceFile to query for the information on the primary and sub-modules. We can then inspect each of these in turn, accounting for Global, Private, Imported and Exported modules/fragments and then showing the sub-stucture of the main module(s). The disadvantage of this mechanism is that it has no easy method to control the granularity of the output. Perhaps more detailed inspection would be better handled by a stand-alone module inspection tool. Differential Revision: https://reviews.llvm.org/D119823
-
LLVM GN Syncbot authored
-
Simon Pilgrim authored
The pointers are used immediately, so assert the cast is correct instead of returning nullptr
-
Andrzej Warzynski authored
Currently, the driver generates the tables with "run-time type information for derived types" only when specific actions are run. However, the corresponding data might be required by the subsequent compilation stages (e.g. lowering, code-gen) and should be generated unconditionally. Note that this is only possible once the semantic checks have been run. Note that when generating these tables, extra semantic errors might be generated. The driver will always report these and in most cases such semantic errors will cause the driver to exit immediately. The only exception are actions inheriting from `PrescanAndSemaDebugAction`. Currently, there's only one such action: `DebugDumpAllAction` (corresponds to `-fdebug-dump-all` command-line flag). I've updated the comments for this action to clarify this. This change will mostly affect lowering, which currently is only available for most basic examples (e.g. empty programs). I wasn't able to find a working case that would demonstrate the new behaviour. I hope that this change is straightforward enough and am submitting it without a test. Differential Revision: https://reviews.llvm.org/D120051
-
Alexey Lapshin authored
libtool uses file names to name members of an static library. Files, located in different directories and having matching name, would have the same name inside an archive. This is not a problem for ld, but may be a problem for ar. This patch renames files from ObjCopy library to avoid names clashing. See https://reviews.llvm.org/D88827#3335814 Differential Revision: https://reviews.llvm.org/D120345
-
Adrian Kuegel authored
-
Anton Afanasyev authored
-
Balazs Benics authored
This reverts commit b8ae323c. Let's try `REQUIRES: asserts`.
-
Simon Moll authored
Separate vector isel functions to the module they belong to. Keep scalar stuff and calls into vector isel in the VEISelLowering.
-
serge-sans-paille authored
accumulated preprocessed size: before: 1065515095 after: 1065629059 Discourse thread: https://discourse.llvm.org/t/include-what-you-use-include-cleanup Differential Revision: https://reviews.llvm.org/D120195
-
Bill Wendling authored
-
Bill Wendling authored
-
Tobias Hieta authored
clang-cl doesn't support -target <target>, instead it only supports --target=<target> so building a RUNTIME configuration for clang-cl ended up in never building builtins. Which in turn lead to clang-cl not being able to find the runtime libraries because we depend on the compiler_rt.builtins.lib being in the runtime dir for the Driver to add it as a candidate. I don't think this should have any downsides since most the code these days are using --target=<target> instead of the old syntax. Reviewed By: mstorsjo Differential Revision: https://reviews.llvm.org/D120308
-
Bill Wendling authored
-
David Green authored
We have some recognition of SSAT and USAT from SELECT_CC at the moment. This extends the matching to SMIN/SMAX which can help catch more cases, either from min/max being the canonical form in instcombine or from some expanded nodes like fp_to_si_sat. Differential Revision: https://reviews.llvm.org/D119819
-
Nikita Popov authored
This one-use limitation is artificial, we do not increase instruction count if we perform the fold with multiple uses. The motivating case is shown in @sub_eq_zero_select, where the one-use limitation causes us to miss a subsequent select fold. I believe the backend is pretty good about reusing flag-producing subs for cmps with same operands, so I think doing this is fine. Differential Revision: https://reviews.llvm.org/D120337
-
Nathan James authored
The tristate is a little redundant as we can determine if the item was already in the cache based on the return from try_emplace. Reviewed By: salman-javed-nz Differential Revision: https://reviews.llvm.org/D120196
-
Nathan James authored
Add support to the `isInline` matcher for C++17's inline variables. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D118900
-
Chuanqi Xu authored
-
Stanislav Gatev authored
This is part of the implementation of the dataflow analysis framework. See "[RFC] A dataflow analysis framework for Clang AST" on cfe-dev. Reviewed-by: ymandel, xazax.hun Differential Revision: https://reviews.llvm.org/D120149
-
LLVM GN Syncbot authored
-
Haojian Wu authored
This patch introduces a dense implementation of the LR parsing table, which is used by LR parsers. We build a SLR(1) parsing table from the LR(0) graph. Statistics of the LR parsing table on the C++ spec grammar: - number of states: 1449 - number of actions: 83069 - size of the table (bytes): 334928 Differential Revision: https://reviews.llvm.org/D118196
-
Lian Wang authored
Supplement tests for some aliaes of gorci. RV32: add orc4.h/orc2.h in rv32zbp.ll add orc.h/orc16/orc8/orc4/orc2/orc in rv32zbp-intrinsic.ll RV64: add orc4.h/orc2.h in rv64zbp.ll add orc.h/orc32/orc16/orc8/orc4/orc2/orc/orc16.w/orc8.w/ orc4.w/orc2.w/orc.w in rv64zbp-intrinsic.ll Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D120388 -
Valentin Clement authored
This patch handles lowering of real constant. This patch is part of the upstreaming effort from fir-dev branch. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D120354 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com> Co-authored-by:
Jean Perier <jperier@nvidia.com>
-
Lian Wang authored
Supplement tests for some aliaes of grevi. RV32: add rev4.h/rev2.h in rv32zbp.ll add rev/rev2/rev4/rev8/rev16 in rv32zbp-intrinsic.ll RV64: add rev4.h/rev2.h in rv64zbp.ll add rev.h/rev/rev2/rev4/rev8/rev16/rev32/rev.w/rev2.w/ rev4.w/rev8.w/rev16.w in rv64zbp-intrinsic.ll Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D120304
-