- Jun 05, 2023
-
-
Simon Pilgrim authored
I've kept the legalForCartesianProduct call, but this requires us to maintain 32-bit/64-bit integer lists - we might want to just use legalIf and perform the type pair set matching manually.
-
- Jun 04, 2023
-
-
Ben Shi authored
Reviewed By: aykevl, Patryk27 Differential Revision: https://reviews.llvm.org/D152087
-
Sergei Barannikov authored
The constructor hasn't been used since its introduction.
-
Simon Pilgrim authored
[GlobalIsel][X86] Move G_PTRTOINT/G_INTTOPTR legalization before legacy handling and merge 32-bit/64-bit handling I've kept the legalForCartesianProduct call, but this requires us to maintain 32-bit/64-bit integer lists - we might want to just use legalIf and perform the type pair set matching manually.
-
LLVM GN Syncbot authored
-
Sergei Barannikov authored
Make `qualifyWindowsLibrary` and `addStackProbeTargetAttributes` protected members of `TargetCodeGenInfo`. These are helper functions used by `getDependentLibraryOption` and `setTargetAttributes` methods when targeting Windows. The change will allow these functions to be reused after splitting `TargetInfo.cpp`. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D150178
-
Simon Pilgrim authored
We're moving away from using per-ISA legalization controls and using LegalIf etc. to handle specific ISAs instead.
-
Alexey Lapshin authored
This reverts commit e0ba9b2a.
-
LLVM GN Syncbot authored
-
Alexey Lapshin authored
This patch creates skeleton implementation for the DWARFLinkerParallel. It also integrates DWARFLinkerParallel into dsymutil and llvm-dwarfutil, so that empty DWARFLinker::link() can be called. To do this new command line option is added "--linker apple/llvm". Additionally it changes existing DWARFLinker interfaces/implementations to be compatible: use Error for error reporting for the DWARFStreamer, make DWARFFile to owner of referenced resources, other small refactorings. Differential Revision: https://reviews.llvm.org/D147952
-
Sergei Barannikov authored
The lists contain differences between register numbers, not the register numbers themselves. Since a difference can also be negative, this also changes its type to signed. Changing the type to signed exposed a "bug". For AMDGPU, which has many registers, the first element of a sequence could be as big as ~45k. The value does not fit into int16_t, but fits into uint16_t. The bug didn't show up because of unsigned wrapping and truncation of the Val field in the advance() method. To fix the issue, I changed the way regunit difflists are encoded. The 4-bit 'scale' field of MCRegisterDesc::RegUnit was replaced by 12-bit number of the first regunit, and the first element of each of the lists was removed. The higher 20 bits of RegUnit field contain the initial offset into DiffLists array. AMDGPU has 1'409 regunits (2^12 = 4'096), and the biggest offset is 80'041 (2^20 = 1'048'576). That is, there is enough room. Changing the encoding method also resulted in a smaller array size, the numbers are below (I omitted targets with less than 100 elements). ``` AMDGPU | 80052 | 78741 | -1,6% RISCV | 6498 | 6297 | -3,1% ARM | 4181 | 3966 | -5,1% AArch64 | 2770 | 2592 | -6,4% PPC | 1578 | 1441 | -8,7% Hexagon | 994 | 740 | -25,6% R600 | 508 | 398 | -21,7% VE | 471 | 459 | -2,5% Sparc | 381 | 363 | -4,7% X86 | 326 | 208 | -36,2% Mips | 253 | 200 | -20,9% SystemZ | 186 | 162 | -12,9% ``` Reviewed By: foad, arsenm Differential Revision: https://reviews.llvm.org/D151036
-
Simon Pilgrim authored
Replace the legacy G_AND/G_OR/G_XOR legalizer, this handles all scalar promotion and vector clamping (allows AVX1 to handle 256-bit logic ops).
-
Sergei Barannikov authored
D151036 adds an assertions that prohibits iterating over sub- and super-registers of a null register. This is already the case when iterating over register units of a null register, and worked by accident for sub- and super-registers. Reviewed By: kparzysz Differential Revision: https://reviews.llvm.org/D151406
-
Amara Emerson authored
In some rare corner cases where in between the div/rem pair there's a def of the second instruction's source (but a different vreg due to the combine's eqivalence checks), it will place the DIVREM at the first instruction's point, causing a use-before-def. There wasn't an obvious fix that stood out to me without doing more involved analysis than a combine should really be doing. Fixes issue #60516 I'm open to new suggestions on how to approach this, as I'm not too happy at bailing out here. It's not the first time we run into issues with value liveness that the DAG world isn't affected by. Differential Revision: https://reviews.llvm.org/D144336
-
khei4 authored
Differential Revision: https://reviews.llvm.org/D152056
-
Kazu Hirata authored
-
Kazu Hirata authored
The corresponding function definition was removed by: commit 087a8eea Author: Nikita Popov <nikita.ppv@gmail.com> Date: Sun Jul 25 18:21:13 2021 +0200
-
Kazu Hirata authored
The corresponding function definition was removed by: commit 95a8e8a2 Author: Jonas Devlieghere <jonas@devlieghere.com> Date: Tue Dec 3 11:10:04 2019 -0800
-
Kazu Hirata authored
The corresponding function definition was removed by: commit f634c900 Author: Richard Smith <richard-llvm@metafoo.co.uk> Date: Fri Mar 16 06:12:59 2012 +0000
-
Timm Bäder authored
Use the proper capitalization here as well as a init capture for better identifiers.
-
Patryk Wychowaniec authored
Fixes https://github.com/llvm/llvm-project/issues/63098 Reviewed by: benshi001 Differential Revision: https://reviews.llvm.org/D152063
-
Matt Arsenault authored
-
Aiden Grossman authored
This patch moves the location of libllvmlibc.a within the build tree to within ./lib/<target triple>. This more closely matches the behavior of other runtime builds and allows for clang in the same build tree to automatically be able to link against llvmlibc since this path is by default included by the driver. Also removes the LIBC_BINARY_DIR CMake flag since it isn't used anywhere in the tree (based on a quick grep). Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D151624
-
Aiden Grossman authored
This patch sets the LLVM_ENABLE_HTTPLIB flag to ON in the stage 2 build similar to how many of the other dependency flags are already specified. This is necessary to configure the stage 2 build by itself, otherwise the CMake configuration crashes. This is currently causing the MLGO demo to fail since we're only using stage 2 to avoid having to build stage 1 to save some compile time. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D152057
-
Aiden Grossman authored
This patch adds LLVM_ENABLE_HTTPLIB to the list of CMake options to make it more clear exactly what it does and also provide clarity on which specific project it is referring to/installation. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D152060
-
Martin Storsjö authored
clangIncludeCleaner isn't part of libclang-cpp, so link it with target_link_libraries instead of clang_target_link_libraries. This fixes a regression from c28506ba. Fix suggested by Michal Gorny.
-
Martin Storsjö authored
On Windows, the underlying file descriptors for stdout/stdin/stderr can be reconfigured to wide mode. In the default (narrow) mode, the charset usually isn't utf8 (as libcxx assumes), but normally a locale specific codepage (where each codepage only can represent a small subset of unicode characters). By configuring the stdout file descriptor to wide mode, the user can output wchar_t based strings without convesion to the narrow charset. Within libcxx, don't try to use codecvt to convert this to a narrow character encoding, but output these strings as such with fputwc. In wide mode, such strings could be output directly with fwrite too, but if the file descriptor hasn't been configured in wide mode, that breaks the output (which currently works reasonably). By always outputting one character at a time with fputwc, it works regardless of mode of the stdout file descriptor. For the narrow output stream, std::cout, outputting (via fwrite) does fail when the file descriptor is set to wide mode. This matches how it behaves with both MS STL and GNU libstdc++ too, so this is probably acceptable. This fixes https://github.com/llvm/llvm-project/issues/46646, and the downstream bugs https://github.com/mstorsjo/llvm-mingw/issues/145 and https://github.com/mstorsjo/llvm-mingw/issues/222. Differential Revision: https://reviews.llvm.org/D146398
-
Owen Pan authored
If the first token of an annotated line is finalized, reuse its NewlinesBefore value to avoid potential overlapping whitespace replacements before preprocessor branching directives. Fixes #62892. Differential Revision: https://reviews.llvm.org/D151954
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Simon Pilgrim authored
Replace the legacy G_MUL legalizer, this handles all scalar promotion and vector clamping, however we still need to add custom legalization for many vector multiplies.
-
eopXD authored
[Clang][RISCV] Avoid generating MaskedPrototype if the intrinsic does not have a masked version. NFC The function should not be called if an intrinsic does not have a masked version. Signed-off by: eop Chen <eop.chen@sifive.com>
-
Kazu Hirata authored
-
Kazu Hirata authored
The last use was removed by: commit 603cd869 Author: Douglas Gregor <dgregor@apple.com> Date: Fri Mar 22 18:50:14 2013 +0000
-
Kazu Hirata authored
-
- Jun 03, 2023
-
-
Corentin Jabot authored
P0960R3 and P1975R0 were marked not implemented because of #61145, This issue has been fixed and backported to LLVM 16, the status page should reflect that. Reviewed By: #clang-language-wg, ayzhao, erichkeane Differential Revision: https://reviews.llvm.org/D150122
-