- Sep 26, 2021
-
-
Jon Chesterfield authored
Store queues in unique_ptr so they are destroyed when the global DeviceInfo is. Currently they leak which raises an assert in debug builds of hsa. Reviewed By: pdhaliwal Differential Revision: https://reviews.llvm.org/D109511
-
Sanjay Patel authored
This is another regression noted with the proposal to canonicalize to the min/max intrinsics in D98152. Here are Alive2 attempts to show correctness without specifying exact constants: https://alive2.llvm.org/ce/z/bvfCwh (smax) https://alive2.llvm.org/ce/z/of7eqy (smin) https://alive2.llvm.org/ce/z/2Xtxoh (umax) https://alive2.llvm.org/ce/z/Rm4Ad8 (umin) (if you comment out the assume and/or no-wrap, you should see failures) The different output for the umin test is due to a fold added with c4fc2cb5 : // umin(x, 1) == zext(x != 0) We probably want to adjust that, so it applies more generally (umax --> sext or patterns where we can fold to select-of-constants). Some folds that were ok when starting with cmp+select may increase instruction count for the equivalent intrinsic, so we have to decide if it's worth altering a min/max. Differential Revision: https://reviews.llvm.org/D110038
-
Simon Pilgrim authored
Based off worst case btver2 (AVX1) and haswell (AVX2) llvm-mca reports
-
Michael Kruse authored
Inline assembly was not handled at all and treated like a llvm::Value. In particular, it tried to create a pointer it which is not allowed. Fix by handling like a llvm::Constant such that it is just reused when required, instead of trying to marshall it in memory. Fixes llvm.org/PR51960
-
Michael Kruse authored
VirtualUse ensures consistency over different source of values with Polly. In particular, this enables its use of instructions moved between Statement. Before the patch, the code wrongly assumed that the BB's instructions are also the ScopStmt's instructions. Reference are determined for OpenMP outlining and GPGPU kernel extraction. GPGPU CodeGen had some problems. For one, it generated GPU kernel parameters for constants. Second, it emitted GPU-side invariant loads which have already been loaded by the host. This has been partially fixed, it still generates a store for the invariant load result, but using the value that the host has already written. WARNING: I did not test the generated PollyACC code on an actual GPU. The improved consistency will be made use of in the next patch.
-
Michael Kruse authored
The function was intended to catch OpenMP functions such as get_thread_id(). If matched, the call would be considered synthesizable. There were a few problems with this: * get_thread_id() is not 'const' in the sense of have the gcc manual defines it: "do not examine any values except their arguments". get_thread_id() reads OpenCL runtime libreary global state. What was inteded was probably 'speculable'. * isConstCall was implemented using mayReadOrWriteMemory(). 'const' is stricter than that, mayReadOrWriteMemory is e.g. true for malloc(), since it may only read/write addresses that are considered inaccessible fro the application. However, malloc is certainly not speculable. * Values that are isConstCall were not handled consistently throughout Polly. In particular, it was not considered for referenced values (OpenMP outlining and PollyACC). Fix by removing special handling for isConstCall entirely.
-
Alexandre Rames authored
This avoids a -pedantic warning: warning: ISO C++11 requires at least one argument for the "..." in a variadic macro See also https://github.com/google/googletest/issues/2271 Reviewed By: arames, bkramer Differential Revision: https://reviews.llvm.org/D110283
-
Mehdi Amini authored
MLIR can't support -Bsymbolic link option, fail at CMake time with a helpful message instead of broken runtime Differential Revision: https://reviews.llvm.org/D110483
-
Lang Hames authored
Disconnect should block until handleDisconnect completes, otherwise we might destroy the SimpleRemoteEPC instance while it's still in use. Thanks to Dave Blaikie for helping me track this down.
-
Lang Hames authored
Spotted by Dave Blaikie. Thanks Dave!
-
Fangrui Song authored
__rela_iplt_start uses spurious STB_WEAK, but it doesn't matter because STV_HIDDEN overrides the binding.
-
Fangrui Song authored
All architectures define R_*_NONE to 0.
-
Fangrui Song authored
Most architectures use .got instead of .got.plt, so switching the default can minimize customization. This fixes an issue for SPARC V9 which uses .got . AVR, AMDGPU, and MSP430 don't seem to use _GLOBAL_OFFSET_TABLE_.
-
Nikita Popov authored
This is a followup to D109844 (and alternative to D109907), which integrates the new "earliest escape" tracking into AliasAnalysis. This is done by replacing the pre-existing context-free capture cache in AAQueryInfo with a replaceable (virtual) object with two implementations: The SimpleCaptureInfo implements the previous behavior (check whether object is captured at all), while EarliestEscapeInfo implements the new behavior from DSE. This combines the "earliest escape" analysis with the full power of BasicAA: It subsumes the call handling from D109907, considers a wider range of escape sources, and works with AA recursion. The compile-time cost is slightly higher than with D109907. Differential Revision: https://reviews.llvm.org/D110368
-
Nikita Popov authored
It is sufficient that the object has not been captured before the load that produces the pointer we're loading. A capture after that can not affect the already loaded pointer. This is small part of D110368 applied separately.
-
Nikita Popov authored
The case of an Argument and an identified function local is already handled earlier, because we don't care about captures in that case. As such, we don't need to additionally consider the combination of an Argument with a non-escaping identified function local. This ensures that isEscapeSource() only returns true for instructions, which is necessary for D110368.
-
Lang Hames authored
Renames StartAddress and EndAddress members to Start and End. Adds contains and overlap methods. Adds a constructor from an address and size. These changes are counterparts to LLVM commits ef391df2, c0d88999, and 37f1b7a3.
-
Fangrui Song authored
-
Lang Hames authored
This reverts commit bef55a2b while I investigate failures on some bots. Also reverts "[lli] Add ChildTarget dependence on OrcTargetProcess library." (7a219d80) which was a fallow-up to bef55a2b.
-
Lang Hames authored
ChildTarget depends on OrcTargetProcess after bef55a2b.
-
Lang Hames authored
EPCGenericRTDyldMemoryMnaager is an EPC-based implementation of the RuntimeDyld::MemoryManager interface. It enables remote-JITing via EPC (backed by a SimpleExecutorMemoryManager instance on the executor side) for RuntimeDyld clients. The lli and lli-child-target tools are updated to use SimpleRemoteEPC and SimpleRemoteEPCServer (rather than OrcRemoteTargetClient/Server), and EPCGenericRTDyldMemoryManager for MCJIT tests. By enabling remote-JITing for MCJIT and RuntimeDyld-based ORC clients, EPCGenericRTDyldMemoryManager allows us to deprecate older remote-JITing support, including OrcTargetClient/Server, OrcRPCExecutorProcessControl, and the Orc RPC system itself. These will be removed in future patches.
-
Simon Pilgrim authored
One of the cases identified in PR45116 - we don't need to limit store narrowing to ABI alignment, we can use allowsMemoryAccess - which tests using getABITypeAlign, but also checks if a target permits (fast) misaligned memory access by checking allowsMisalignedMemoryAccesses as a fallback.
-
mydeveloperday authored
[clang-format] Left/Right alignment fixer can cause false positive replacements when they don't actually change anything Earlier during the development of {D69764} I felt it was no longer necessary to ensure we were not trying to change code which didn't need to change and we felt this could be removed, however I'd like to bring this back for now as I am seeing some false positives in terms of the "replacements" What I see is the generation of a replacement which is a "No Op" on the original code, I think this comes about because of the merging of replacements: ``` static const a; -> const static a; -> static const a; ``` The replacements don't really merge, in such a way as to identify when we have gone back to the original Also remove the Penalty as I'm not using it (and it became marked as set and no used, I'd rather get rid of it if it means nothing) I think we need to do this step for now, as many people use the --output-replacements-xml to identify that the file "needs a clang-format" The same can be seen with the -n or --dry-run option as this uses the replacements to drive the error/warning output. Reviewed By: HazardyKnusperkeks Differential Revision: https://reviews.llvm.org/D110392
-
- Sep 25, 2021
-
-
Simon Pilgrim authored
Update the costs to match the codegen from combineMulToPMADDWD - not only can we use PMADDWD is its zero-extended, but also if its a constant or sign-extended from a vXi16 (which can be replaced with a zero-extension).
-
Simon Pilgrim authored
If we are multiplying by a sign-extended vXi32 constant, then we can mask off the upper 16 bits to allow folding to PMADDWD and make use of its implicit sign-extension from i16
-
Simon Pilgrim authored
-
Kazu Hirata authored
Note that identical declarations immediately precede what's being removed in this patch. Identified with readability-redundant-declaration.
-
Simon Pilgrim authored
We already do this on SSE41 targets where we have sext/zext instructions, now that combineShiftToPMULH handles SSE2 targets, we can enable this here as well.
-
Simon Pilgrim authored
[X86] X86FastISel::fastMaterializeConstant - break if-else chain to fix llvm-else-after-return warning. NFCI All previous if-else cases return
-
Simon Pilgrim authored
With improved shuffle combines (in particular canonicalizeShuffleWithBinOps), we can now usefully perform this on any SSE2+ target. We should be able to remove this entirely and just use DAGCombiner's combineShiftToMULH if we can someday get it to support illegal (pre-widened) types.
-
Michał Górny authored
Replace misc. StringConvert uses with llvm::to_integer() and llvm::to_float(), except for cases where further refactoring is planned. The purpose of this change is to eliminate the StringConvert API that is duplicate to LLVM, and less correct in behavior at the same time. Differential Revision: https://reviews.llvm.org/D110447
-
Valentin Clement authored
This patch is part of the upstreaming effort from fir-dev branch. Add a description for the fir.array_load opeartion and rename lenParams to typeparams. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D110393 Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Simon Pilgrim authored
We can get here before out of range shift amounts have been handled - limit to BW-2 for sdiv and BW-1 for udiv Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=38078
-
Markus Böck authored
Linking against the LibXml2::LibXml2 target has the advantage of not only importing the library, but also adding the include path as well as any definitions the library requires. In case of a static build of libxml2, eg. a define is set on Windows to remove any DLL imports and export. LLVM already makes use of the target, but c-index-test and lldb were still linking against the library only. The workaround for Mac OS-X that I removed seems to have also been made redundant since https://reviews.llvm.org/D84563 I believe Differential Revision: https://reviews.llvm.org/D109975
-
Simon Pilgrim authored
Avoid unnecessary copy by value.
-
Simon Pilgrim authored
Avoids an unnecessary (void).
-
Kunwar Shaanjeet Singh Grover authored
This patch adds functionality to FlatAffineConstraints to remove local variables using equalities. This helps in keeping output representation of FlatAffineConstraints smaller. This patch is part of a series of patches aimed at generalizing affine dependence analysis. Reviewed By: bondhugula Differential Revision: https://reviews.llvm.org/D110056
-
David Green authored
Given: - A jump table - Which jumps to the next block - The next block ends in a WLS - Where the WLS conditionally jumps to block earlier in the program. The Arm block placement pass would attempt to move the block containing the WLS earlier, as the WLS instruction can only branch forward. In doing so it would add a branch from the jumptable block to the WLS block, thinking it previously fell-through. This in itself would be fine, if a little inefficient, but the constant island pass expects all instructions after a jump-table branch to have been removed by analyzeBranch. So it gets confused and can assign the same labels to multiple jump table blocks. I've changed the condition to the same as used in analyzeBranch.
-
Dmitry Vyukov authored
It's only used during race reporting. There is no point in polluting the main header file with it. Reviewed By: xgupta Differential Revision: https://reviews.llvm.org/D110470
-
Simon Pilgrim authored
Otherwise fallback to the generic 'unknown index' path Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=29050
-