- Mar 15, 2022
-
-
Pavel Labath authored
The decision which categories are relevant for a particular test run happen very early in the test setup process. They use the SBPlatform object to determine which categories should be skipped. The platform object created for this purpose transcends individual test runs. This setup is not compatible with the direction discussed in <https://discourse.llvm.org/t/multiple-platforms-with-the-same-name/59594> -- when platform objects are tied to a specific (SB)Debugger, they need to be created alongside it, which currently happens in the test setUp method. This patch is the first step in that direction -- it rewrites the category skipping logic to avoid depending on a global SBPlatform object. Fortunately, the skipping logic is fairly simple (and I believe it outght to stay that way) and mainly consists of comparing the platform name against some hardcoded lists. This patch bases this comparison on the platform name instead of the os part of the triple (as reported by the platform). Differential Revision: https://reviews.llvm.org/D121605
-
Florian Hahn authored
@mul_may_overflow_var_nonzero_minabsvarindex_one_index shows BasicAA incorrectly determining noalias for (%gep.917, i8* %gep.idx). If %v == 10581764700698480926, %idx == 917 and the GEPs alias. https://alive2.llvm.org/ce/z/yzDgnn
-
Matthias Springer authored
This improves the modularity of the bufferization. From now on, all ops that do not implement BufferizableOpInterface are considered hoisting barriers. Previously, all ops that do not implement the interface were not considered barriers and such ops had to be marked as barriers explicitly. This was unsafe because we could've hoisted across unknown ops where it was not safe to hoist. As a side effect, this allows for cleaning up AffineBufferizableOpInterfaceImpl. This build unit no longer needed and can be deleted. Differential Revision: https://reviews.llvm.org/D121519
-
Marek Kurdej authored
Fixes https://github.com/llvm/llvm-project/issues/54257. Reviewed By: MyDeveloperDay, HazardyKnusperkeks, owenpan Differential Revision: https://reviews.llvm.org/D121456
-
Simon Pilgrim authored
[X86] combineSelect - canonicalize (vXi1 bitcast(iX Cond)) with combineToExtendBoolVectorInReg before legalization This replaces the attempt in 20af71f8 to use combineToExtendBoolVectorInReg to create X86ISD::BLENDV masks directly, instead we use it to canonicalize the iX bitcast to a sign-extended mask and then truncate it back to vXi1 prior to legalization breaking it apart. Fixes #53760
-
Marek Kurdej authored
Fixes https://github.com/llvm/llvm-project/issues/54374.
-
Florian Hahn authored
Also update test to not use branch on undef.
-
Dmitry Makogon authored
This method just calls LazyValueInfoImpl::clear
-
Marek Kurdej authored
Fixes https://github.com/llvm/llvm-project/issues/54245. Reviewed By: MyDeveloperDay, HazardyKnusperkeks, owenpan Differential Revision: https://reviews.llvm.org/D121584
-
Ivan Butygin authored
Introduce OpenCL-style global_id op and corresponding spirv lowering. Differential Revision: https://reviews.llvm.org/D121548
-
Ivan Butygin authored
Differential Revision: https://reviews.llvm.org/D121601
-
Matthias Springer authored
This makes bufferization more modular. This is in preparation of future refactorings. Differential Revision: https://reviews.llvm.org/D121362
-
Nikita Popov authored
Hardcode the function type as ParallelTask, which is the guaranteed pointee type of this runtime function argument (if pointee types exist). The elimination of the callee bitcast is left for InstCombine. Differential Revision: https://reviews.llvm.org/D120885
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D121361
-
Jean Perier authored
`semantics::IsSaved()` was not applying -Msave/-fno-automatic for main programs. This caused issues since lowering relies on it to allocate static variables. This did not match nvfortran/gfortran behaviors where -fno-automatic/-Msave control the static allocation of scalars in main programs. Some program may rely on main program scalars to be statically allocated in bss (and therefore initialized to zero) with -Msave/-fno-automatic flags. Differential Revision: https://reviews.llvm.org/D121603
-
Matthias Springer authored
Also add a TODO to switch to a custom walk instead of the GreedyPatternRewriter, which should be more efficient. (The bufferization pattern is guaranteed to apply only a single time for every op, so a simple walk should suffice.) We currently specify a top-to-bottom walk order. This is important because other walk orders could introduce additional casts and/or buffer copies. These canonicalize away again, but it is more efficient to never generate them in the first place. Note: A few of these canonicalizations are not yet implemented. Differential Revision: https://reviews.llvm.org/D121518
-
Siva Chandra Reddy authored
-
Jean Perier authored
Type codes for COMPLEX kinds 2, 3, and 10 were added in https://reviews.llvm.org/D117336 but handling for these kinds in TypeCode(cat, kind) has not been added yet. Differential Revision: https://reviews.llvm.org/D121587
-
Fangrui Song authored
-
Florian Hahn authored
Update places still referencing LoopVectorBody to use the vector loop to get the vector loop header. This is needed to move vector loop code-generation to VPlan completely, which in turn is needed to model pre-header & exit blocks in VPlan as well.
-
River Riddle authored
These have been deprecated for ~1 month now and can be removed. Differential Revision: https://reviews.llvm.org/D121090
-
Stanislav Gatev authored
Model nullopt, inplace, value, and conversion constructors. Reviewed-by: ymandel, xazax.hun, gribozavr2 Differential Revision: https://reviews.llvm.org/D121602
-
Adrian Kuegel authored
-
Qiu Chaofan authored
We are going to remove the old 'perfect shuffle' optimization since it brings performance penalty in hot loop around vectors. For example, in following loop sharing the same mask: %v.1 = shufflevector ... <0,1,2,3,8,9,10,11,16,17,18,19,24,25,26,27> %v.2 = shufflevector ... <0,1,2,3,8,9,10,11,16,17,18,19,24,25,26,27> The generated instructions will be `vmrglw-vmrghw-vmrglw-vmrghw` instead of `vperm-vperm`. In some large loop cases, this causes 20%+ performance penalty. The original attempt to resolve this is to pre-record masks of every shufflevector operation in DAG, but that is somewhat complex and brings unnecessary computation (to scan all nodes) in optimization. Here we disable it by default. There're indeed some cases becoming worse after this, which will be fixed in a more careful way in future patches. Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D121082
-
River Riddle authored
There is currently an awkwardly complex set of rules for how a parser/printer is generated for AttrDef/TypeDef. It can change depending on if a mnemonic was specified, if there are parameters, if using the assemblyFormat, if individual parser/printer code blocks were specified, etc. This commit refactors this to make what the attribute/type wants more explicit, and to better align with how formats are specified for operations. Firstly, the parser/printer code blocks are removed in favor of a `hasCustomAssemblyFormat` bit field. This aligns with the operation format specification (and is nice to remove code blocks from ODS). This commit also adds a requirement to explicitly set `assemblyFormat` or `hasCustomAssemblyFormat` when the mnemonic is set and the attr/type has no parameters. This removes the weird implicit matrix of behavior, and also encourages the author to make a conscious choice of either C++ or declarative format instead of implicitly opting them into the C++ format (we should be pushing towards declarative when possible). Differential Revision: https://reviews.llvm.org/D121505
-
River Riddle authored
The current documentation is super old, crusty, and at times wrong. This commit rewrites the documentation to focus on the TableGen declarative definition, expounds on various components, and moves the doc out of Tutorials/ and into a new top level `AttributesAndTypes.md` doc. As part of this, the AttrDef/TypeDef documentation in OpDefinitions.md is removed. Differential Revision: https://reviews.llvm.org/D120011
-
River Riddle authored
OpBase.td has formed into a huge monolith of all ODS constructs. This commits starts to rectify that by splitting out some constructs to their own .td files. Differential Revision: https://reviews.llvm.org/D118636
-
Mogball authored
This patch adds support for custom directives in attribute and type formats. Custom directives dispatch calls to user-defined parser and printer functions. For example, the assembly format "custom<Foo>($foo, ref($bar))" expects a function with the signature ``` LogicalResult parseFoo(AsmParser &parser, FailureOr<FooT> &foo, BarT bar); void printFoo(AsmPrinter &printer, FooT foo, BarT bar); ``` Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D120944
-
esmeyi authored
Reviewed By: jhenderson, DiggerLin Differential Revision: https://reviews.llvm.org/D120858
-
Fangrui Song authored
Remove Expected<CompressedSection> factory functions in favor of constructors now that zlib::compress returns void (D121512). Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D121644
-
Fangrui Song authored
Make .debug_line so larger so that MC will more assuredly compress .debug_line (it doesn't compress a section if compressed content is not smaller).
-
Chris Lattner authored
This reverts commit f18d6af7. This patch is a more controversial than I expected, it is better to revert while the discussion continues. xref this thread: https://discourse.llvm.org/t/doc-mlir-translate-mlir-opt/60751/ xref this phab patch: https://reviews.llvm.org/D120970 Differential Revision: https://reviews.llvm.org/D121668
-
Thomas Raoux authored
The ldmatrix intrinsic trans option was inverted. Bug found by @christopherbate! Differential Revision: https://reviews.llvm.org/D121666
-
Jonas Devlieghere authored
While working on dde487e5 I noticed that the MacOSX platforms were in need of some love. This patch cleans up the headers: - Move platforms into the lldb_private namespace. - Remove lldb_private:: prefixes to improve readability. - Fix header includes and use forward declarations (iwyu). - Fix formatting
-
Keith Smiley authored
On unix systems this logic would not separate the file and directory of the DIFile unless they shared more components at the start than just the root path character. The logic to do this was unix specific so it didn't work on Windows. Now we check if the entire root_path is the same as what you were going to set as the Dir and use the full filepath in that case. Differential Revision: https://reviews.llvm.org/D111579
-
Keith Smiley authored
This adds 2 new lit helpers `%{fs-src-root}` and `%{fs-sep}`, these allow writing tests that correctly handle slashes on Windows. In the case of tests like clang/test/CodeGen/debug-prefix-map.c, these are unable to correctly test behavior on both platforms, unless they fork and add OS requirements, because the relevant logic hits host specific codepaths like checking if paths are absolute. Differential Revision: https://reviews.llvm.org/D111457 -
-
Ruiling Song authored
I met the issue here when working on something else. Actually we have already reserved EXEC, but it looks like the register coalescer is causing the sub-register of EXEC appears in LiveIntervals. I have not looked deeper why register coalscer have such behavior, but removeAllRegUnitsForPhysReg() is the right way. Reviewed By: critson, foad, arsenm Differential Revision: https://reviews.llvm.org/D117014
-
Petr Hosek authored
We should be building iossim for x86_64, not arm64. Differential Revision: https://reviews.llvm.org/D121659
-
Jez Ng authored
All references to interposable symbols can be redirected at runtime to point to a different symbol definition (with the same name). For example, if both dylib A and B define symbol _foo, and we load A before B at runtime, then all references to _foo within dylib B will point to the definition in dylib A. ld64 makes all extern symbols interposable when linking with `-flat_namespace`. TODO 1: Support `-interposable` and `-interposable_list`, which should just be a matter of parsing those CLI flags and setting the `Defined::interposable` bit. TODO 2: Set Reloc::FinalDefinitionInLinkageUnit correctly with this info (we are currently not setting it at all, so we're erring on the conservative side, but we should help the LTO backend generate more optimal code.) Reviewed By: modimo, MaskRay Differential Revision: https://reviews.llvm.org/D119294
-