- Jun 03, 2022
-
-
Mehdi Amini authored
This reverts commit 1350c988. Shared library build is broken with undefined references.
-
Matt Arsenault authored
This isn't the most natural place for it, but it avoids a circular include dependency in an out of tree patch.
-
Julien Pages authored
This patch improves the codegen of extractelement and insertelement for vector containing 8 elements. Before, a dag combine transformation was generating a sequence of 8 select/cmp. This patch changes the upper limit for this transformation and the movrel instruction will eventually be used instead. Extractlement/insertelement for vectors containing less than 8 elements are unchanged. Differential Revision: https://reviews.llvm.org/D126389
-
Alexander Smarus authored
This makes it possible to crosscompile runtimes with cl.exe on Windows. An external project is completely misconfigured otherwise because cmake_args is set only for native builds or builds crosscompiled with clang. Differential Revision: https://reviews.llvm.org/D122578 Reviewed By: beanz, compnerd
-
David Blaikie authored
While it's not as robust as using the attribute on enums/classes (the type information may be lost through a function pointer, a declaration or use of the underlying type without using the typedef, etc) but I think there's still value in being able to attribute a typedef and have all return types written with that typedef pick up the warn_unused_result behavior. Specifically I'd like to be able to annotate LLVMErrorRef (a wrapper for llvm::Error used in the C API - the underlying type is a raw pointer, so it can't be attributed itself) to reduce the chance of unhandled errors. Differential Revision: https://reviews.llvm.org/D102122
-
Craig Topper authored
If the imm is out of range for an ADDI, we will materialize it in a register using multiple instructions. If the ADD is used by a load/store, doPeepholeLoadStoreADDI can try to pull an ADDI from the constant materialization into the load/store offset. This only works if the ADD has a single use, otherwise the peephole would have to rebuild multiple nodes. This patch instead tries to solve the problem when the add is selected. We check that the add is only used by loads/stores and if it is we will select it to (ADDI (ADD X, Imm-Lo12), Lo12). This will enable the simple case in doPeepholeLoadStoreADDI that can bypass an ADDI used as a pointer. As a result we can remove the more complicated peephole from doPeepholeLoadStoreADDI. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D126576
-
Florian Hahn authored
Currently the MaxUsesToExplore limit only applies to the number of users per value, not the total number of users to explore. The current limit of 20 pessimizes IR with opaque pointers in some cases. Without opaque pointers, we have deeper pointer def-use chains in general due to extra bitcasts and geps for structs with index 0. With opaque pointers the def-use chain is not as deep but wider, due to bitcasts & 0-geps missing. To improve the situation for opaque pointers, this patch does 2 things: 1. Apply the limit to the total number of uses visited. From the wording in the description of the option it seems like this may be the original intention. With the current implementation we could still end up walking a lot of uses. 2. Increase the limit to 100. This is quite arbitrary, but enables a good number of additional optimizations. Those adjustments have a noticeable compile-time impact though. In part that is likely due to additional transformations (and conversely the current baseline misses optimizations after switching to opaque pointers). This recovers some regressions that showed up after enabling opaque pointers. Limit=100: * NewPM-O3: +0.21% * NewPM-ReleaseThinLTO: +0.87% * NewPM-ReleaseLTO-g: +0.46% https://llvm-compile-time-tracker.com/compare.php?from=2e50ecb2ef4e1da1aeab05bcf66380068e680991&to=7e6fbe519d958d09f32f01d5d44a622f551e2031&stat=instructions Limit=60: * NewPM-O3: +0.14% * NewPM-ReleaseThinLTO: +0.41% * NewPM-ReleaseLTO-g: +0.21% https://llvm-compile-time-tracker.com/compare.php?from=aeb19817d66f1a15754163c7f48e01e9ebdd6d45&to=520563fdc146319aae90d06f88d87f2e9e1247b7&stat=instructions Limit=40: * NewPM-O3: +0.11% * NewPM-ReleaseThinLTO: +0.12% * NewPM-ReleaseLTO-g: +0.09% https://llvm-compile-time-tracker.com/compare.php?from=aeb19817d66f1a15754163c7f48e01e9ebdd6d45&to=c9182576e9fe3f1c84a71479665aef91a416318c&stat=instructions Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D126236 -
Fangrui Song authored
.zdebug is unlikely used any longer: gcc -gz switched from legacy .zdebug to SHF_COMPRESSED with binutils 2.26 (2016), which has been several years. clang 14 dropped -gz=zlib-gnu support. According to Debian Code Search (`gz=zlib-gnu`), no project uses -gz=zlib-gnu. Remove .zdebug support to (a) simplify code and (b) allow removal of llvm-mc's --compress-debug-sections=zlib-gnu. In case the old object file `a.o` uses .zdebug, run `objcopy --decompress-debug-sections a.o` Reviewed By: peter.smith Differential Revision: https://reviews.llvm.org/D126793
-
Fangrui Song authored
-
Krzysztof Drewniak authored
This commit defines a dataflow analysis for integer ranges, which uses a newly-added InferIntRangeInterface to compute the lower and upper bounds on the results of an operation from the bounds on the arguments. The range inference is a flow-insensitive dataflow analysis that can be used to simplify code, such as by statically identifying bounds checks that cannot fail in order to eliminate them. The InferIntRangeInterface has one method, inferResultRanges(), which takes a vector of inferred ranges for each argument to an op implementing the interface and a callback allowing the implementation to define the ranges for each result. These ranges are stored as ConstantIntRanges, which hold the lower and upper bounds for a value. Bounds are tracked separately for the signed and unsigned interpretations of a value, which ensures that the impact of arithmetic overflows is correctly tracked during the analysis. The commit also adds a -test-int-range-inference pass to ...
-
Mingming Liu authored
advisor. This patch has no functional change, and merely a preparation patch for main functional change. The motivating use case is to annotate inline remark pass name with context information (e.g. prelink or postlink, CGSCC or always-inliner), see D125495 for more details. Differential Revision: https://reviews.llvm.org/D126824
-
Adrian Prantl authored
With opaque pointers, the LLVM IR expected by this function changed.
-
Philip Reames authored
Calling the non-MI version directly was unsound (as fixed in dcdb0bf2), so remove that version to decrease likelyhood of future mistakes.
-
Xiang Li authored
One clang builtins are introduced uint WaveActiveCountBits( bool bBit ) as Langugage builtin function for HLSL. The detail for WaveActiveCountBits is at https://github.com/microsoft/DirectXShaderCompiler/wiki/Wave-Intrinsics#uint-waveactivecountbits-bool-bbit- This is only clang part change to make WaveActiveCountBits into AST. llvm intrinsic for WaveActiveCountBits will be add in separate PR. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D126857
-
Sanjay Patel authored
-
Sanjay Patel authored
We could go either way on this and several similar matches. Just matching as a binop is possibly slightly more efficient; we don't need to re-confirm the opcode of the instruction.
-
Maksim Panchenko authored
Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D126844
-
Craig Topper authored
If C is non-negative, the result of the smax must also be non-negative, so all sign bits of the result are 0. This allows DAGCombiner to remove a zext_inreg in the modified test. This zext_inreg started as a sext that became zext before type legalization then was promoted to a zext_inreg. Reviewed By: reames Differential Revision: https://reviews.llvm.org/D126896
-
Joe Loser authored
In 6423a9f0, I accidentally thought this was getting tested, but these variables are unused. Just remove the lines instead of leaving them commented out. Differential Revision: https://reviews.llvm.org/D126901
-
Daniel Douglas authored
The memkind library is only available for linux. Calling dlopen here can also be problematic in a client app that fork'ed. Differential Revision: https://reviews.llvm.org/D126579
-
Paul Robinson authored
-
Paul Robinson authored
-
Florian Hahn authored
Test for capture-tracking-max-uses-to-explore, adjusted in D126236.
-
Aart Bik authored
The example was still using the -now- removed sparse_tensor.init_tensor. Also, I made the input operands of the matrix multiplication sparse too (since it looks a bit strange to multiply two dense matrices into a sparse). Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D126897
-
Adrian Prantl authored
With opaque pointers, the LLVM IR expected by this function changed.
-
Joe Nash authored
This patch includes MC layer support for VOP3 encoded instructions and generic VOP support classes. Some VOP1 and VOP2 instructions which share an encoding with gfx10 and are using the AssemblerPredicate = isGFX10Plus are also enabled. That predicate will be changed to isGFX10Only in a later patch. Patch 15/N for upstreaming of AMDGPU gfx11 architecture. Depends on D126468 Reviewed By: dp Differential Revision: https://reviews.llvm.org/D126475
-
Chia-hung Duan authored
In strict mode, only the new inserted operation is allowed to add to the worklist. Before this change, it would add the users of a replaced op and it didn't check if the users are allowed to be pushed into the worklist Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D126899
-
Alexey Bataev authored
Improved/fixed cost modeling for shuffles by providing masks, improved cost model for non-identity insertelements. Differential Revision: https://reviews.llvm.org/D115462
-
Anders Waldenborg authored
The "#!" line in all scan-build-py scripts were using just bare "/usr/bin/python" which according to PEP-0394 can be either python3, python2 or not exist at all. E.g in latest debian and ubuntu releases "/usr/bin/python" does not exist at all by default and user must install python-is-python2 or python-is-python3 packages to get the bare version less "python" command. Until recently (70b06fe8 "scan-build-py: Force the opening in utf-8" changed "libscanbuild") these scripts worked in both python2 and python3, but now they (rightfully) are python3 only, and broke on systems where the "python" command means python2. By changing the "#!" to be "python3" it is not only explicit that the scripts require python3 it also works on systems where "python" command is python2 or nonexistent. Differential Revision: https://reviews.llvm.org/D126804
-
Paul Pluzhnikov authored
The function promises to canonicalize the path, but neglected to do so for the root component. For example, calling remove_dots("/tmp/foo.c", Style::windows_backslash) resulted in "/tmp\foo.c". Now it produces "\tmp\foo.c". Also fix FIXME in the corresponding test. Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D126412 -
Joe Nash authored
MC layer support for ds instructions Contributors: Piotr Sobczak <Piotr.Sobczak@amd.com> Patch 14/N for upstreaming of AMDGPU gfx11 architecture. Depends on D126463 Reviewed By: arsenm, #amdgpu Differential Revision: https://reviews.llvm.org/D126468
-
Paul Robinson authored
-
Paul Robinson authored
-
Balazs Benics authored
Reviewed By: martong Differential Revision: https://reviews.llvm.org/D126803
-
Balazs Benics authored
Reviewed By: martong Differential Revision: https://reviews.llvm.org/D126802
-
Balazs Benics authored
I'm also hoisting common code from the existing specializations into a common trait impl to reduce code duplication. Reviewed By: martong Differential Revision: https://reviews.llvm.org/D126801
-
Will Hawkins authored
Small typo fix(es) for struct definition of __optional_storage_base for a reference type. Reviewed By: #libc, jloser, philnik Differential Revision: https://reviews.llvm.org/D126621
-
Ashay Rane authored
Prior to this patch, the lowering of memref.reshape operations to the LLVM dialect failed if the shape argument had a static shape with dynamic dimensions. This patch adds the necessary support so that when the shape argument has dynamic values, the lowering probes the dimension at runtime to set the size in the `MemRefDescriptor` type. This patch also computes the stride for dynamic dimensions by deriving it from the sizes of the inner dimensions. Reviewed By: ftynse Differential Revision: https://reviews.llvm.org/D126604
-
Craig Topper authored
One of the operands of the smax is a positive value so computeKnownBits determines the result of the smax must always be positive. This allows DAG combiner to convert the sign extend to zero extend before type legalization. After type legalization the smax is promoted to i64 by sign extending its inputs and the zero extend becomes an AND instruction. We are unable to remove the AND at this point and it becomes a pair of shifts or a zext.w. The result of smax has as many sign bits as the minimum of its inputs. Had we kept the sign extend instead of turning it into a zero extend it would be removed by DAG combiner after type legalization.
-
Luís Ferreira authored
This patch renames DW_ACCESS_to_AccessType function and move it to the abstract DWARFASTParser, since there is no clang-specific code there. This is useful for plugins other than Clang. Reviewed By: shafik, bulbazord Differential Revision: https://reviews.llvm.org/D114719
-