- Mar 21, 2024
-
-
Simon Pilgrim authored
Allow targets to rely on TargetLowering::isGuaranteedNotToBeUndefOrPoisonForTargetNode to test nodes for canCreateUndefOrPoisonForTargetNode + all arguments are isGuaranteedNotToBeUndefOrPoison. Targets can still perform this themselves for specific special case nodes (e.g. target shuffles). Matches the fallback in SelectionDAG::isGuaranteedNotToBeUndefOrPoison
-
Alexey Bataev authored
if cost threshold is very low.
-
Nikita Popov authored
Document expectations for contributions to InstCombine, especially regarding test coverage and alive2 proofs.
-
Jonas Paulsson authored
Check for all frame instructions in finalize isel, not just for the frame setup opcode. This was proven necessary, see #78001 for discussion.
-
Joe Nash authored
NFC. Fix CHECK lines that seem to have a copy paste error. Move the test that was formerly in gfx12_dasm_vinterp.txt (see #85949).
-
Joe Nash authored
NFC. gfx11_asm_vinterp.s already contained GFX12 run lines. Rename the assembler and disassembler tests to be sorted based on real16 or fake16 instead of gfxip. Note, both GFX11 and GFX12 currently only have fake16 (fake16 in encoding, but not by name) upstream, so that is why the test files have a -fake16 suffix. One test input is changed, and that is the disassembler test for unsupported bits in the instruction. It is now an input that is valid on both GFX11 and GFX12. This was necessary because the size of the opcode field changed.
-
Benjamin Maxwell authored
This adds a new API built with the `ValueBoundsConstraintSet` to compute the bounds of possibly scalable quantities. It uses knowledge of the range of vscale (which is defined by the target architecture), to solve for the bound as either a constant or an expression in terms of vscale. The result is an `AffineMap` that will always take at most one parameter, vscale, and returns a single result, which is the bound of `value`. The API is defined as follows: ```c++ FailureOr<ConstantOrScalableBound> vector::ScalableValueBoundsConstraintSet::computeScalableBound( Value value, std::optional<int64_t> dim, unsigned vscaleMin, unsigned vscaleMax, presburger::BoundType boundType, bool closedUB = true, StopConditionFn stopCondition = nullptr); ``` Note: `ConstantOrScalableBound` is a thin wrapper over the `AffineMap` with a utility for converting the bound to a single quantity (i.e. a size and scalable flag). We believe this API could prove useful downstream in IREE (which uses a similar analysis to hoist allocas, which currently fails for scalable vectors).
-
Mark de Wever authored
This adds a libc++ to modules.json as is currently used by libc++. When libc++.so is not found the function will search for libc++.a as fallback.
-
Akira Hatanaka authored
macosx and darwin in triples are equivalent. rdar://124246653
-
LLVM GN Syncbot authored
-
Janek van Oirschot authored
Kernel descriptor attributes, with their respective emit and asm parse functionality, converted to MCExpr.
-
Yingwei Zheng authored
`fneg + copysign` is better than fmul for analysis/codegen. godbolt: https://godbolt.org/z/eEs6dGd1G Alive2: https://alive2.llvm.org/ce/z/K3M5BA
-
David Green authored
-
Simon Pilgrim authored
[VectorCombine] Add DataLayout to VectorCombine class instead of repeated calls to getDataLayout(). NFC.
-
Kirill Chibisov authored
Make form-expressions not create `emitc.expression`s for operations inside the `emitc.expression`s, since they are invalid.
-
chrulski-intel authored
This has been a supported option for ELF and is added to the COFF Linker in #85701
-
Matthias Gehre authored
This converts `memref.alloca`, `memref.load` & `memref.store` to `emitc.variable`, `emitc.subscript` and `emitc.assign`.
-
Christian Sigg authored
-
Alexey Bataev authored
better bitwidth.
-
Paul T Robinson authored
Make sure all float/double comparison intrinsics specify what happens with a NaN input. Update some existing descriptions of comparison results to make them all consistent. Also replace "yields" with "returns" throughout.
-
Spenser Bauman authored
The existing implementation of tosa-layerwise-constant-fold only works for constant values backed by DenseElementsAttr. For constants which hold DenseResourceAttrs, the folder will end up asserting at runtime, as it assumes that the backing data can always be accessed through ElementsAttr::getValues. This change reworks the logic so that types types used to perform folding are based on whether the ElementsAttr can be converted to a range of that particular type. --------- Co-authored-by:
Spenser Bauman <sabauma@mathworks.com> Co-authored-by:
Tina Jung <tinamaria.jung@amd.com>
-
Sergio Afonso authored
Reapply "[Flang][OpenMP][Lower] NFC: Move clause processing helpers into the ClauseProcessor (#85258)" (#85807) This patch contains slight modifications to the reverted PR #85258 to avoid issues with constructs containing multiple reduction clauses, uncovered by a test on the gfortran testsuite. This reverts commit 9f80444c.
-
paperchalice authored
Mistakenly believing that checking Expected is sufficient.
-
Ilia Kuklin authored
Add --skip-symbol and --skip-symbols options that allow to skip symbols when executing other options that can change the symbol's name, binding or visibility, similar to an existing option --keep-symbol that keeps a symbol from being removed by other options.
-
Christian Sigg authored
-
Alexey Bataev authored
Projected bitwidth should be less than the original, not greater.
-
SahilPatidar authored
Update amdgpu_gfx functions to use s0-s3 for inreg SGPR arguments on targets using scratch instructions for stack #78226 (#81394) Resolve #78226
-
Christian Sigg authored
Move 3 interface headers in `//mlir:IR` from `hdrs` to `srcs`. Header files should not be added to multiple targets, but this is hard to avoid because CMake is less strict with headers. But we should at least avoid exposing them as headers by multiple targets because it confuses tooling.
-
AtariDreams authored
[SelectionDAG] Add MaskedValueIsZero check to allow folding of zero extended variables we know are safe to extend (#85573) Add ones for every high bit that will cleared. This will allow us to evaluate variables that have their bits known to see if they have no risk of overflow despite the shift amount being greater than the difference between the two types.
-
Mark de Wever authored
Implements: - LWG3869 Deprecate std::errc constants related to UNIX STREAMS
-
Ulrich Weigand authored
When building the OpenMP runtime with libomptarget support, the runtimes configure step needs to have a dependency on various tools, in particular opt, so that cmake configure checks yield the correct results. This did not work correctly, as the dependencies were only added if the OPENMP_ENABLE_LIBOMPTARGET was set - but that variable is only set by the openmp/CMakeLists.txt file, which isn't even parsed during the initial cmake run (in fact, it is only parsed when executing the runtimes configure step itself, but then it is too late). Fixed by just adding those dependencies always. In addition, the list of dependencies collected in ${extra_deps}, including those required for OpenMP, was only actually used when configuring runtimes for the default set of targets - when the user specifies a non-default LLVM_RUNTIME_TARGETS, those extra dependencies were ignored (with the exception of ${hdrgen_deps}). Fixed by passing the full ${extra_deps} in this case as well. Fixes: https://github.com/llvm/llvm-project/issues/85933 -
Ulrich Weigand authored
Commit a7d5f73a introduced an error in a target_compile_definitions on the SystemZ, causing the build to break. Fixed by adding the missing "PRIVATE".
-
Nikolas Klauser authored
`copy_n` has been used to allow constant evaluation of `char_traits`. We now have `__constexpr_memmove`, which `copy_n` just forwards to. We can call `__constexpr_memmove` directly, avoiding a bunch of instantiations. This reduces the time it takes to include `<string>` from 321ms to 285ms.
-
Pierre van Houtryve authored
Reland of #75333
-
Jacek Caban authored
And use it in EC lowering code. It will be useful for LLD too.
-
Jacek Caban authored
This is compatible with MSVC, `-machine:arm64x` is essentially an alias to `-machine:arm64ec`. To make a type library that exposes both native and EC symbols, an additional `-defArm64Native` argument is needed in both cases.
-
Pierre van Houtryve authored
Refactor the logic that checks if a module contains mixed absolute/non-lowered LDS GVs. The check now happens latter when the "worklists" are formed. This is because in some cases (OpenMP) we can have non-lowered GVs in a lowered module, and this is normal because those GVs are just unused and removed from the list at some point before the end of `getUsesOfLDSByFunction`. Doing the check later ensures that if a mixed module is spotted, then it's a _real_ mixed module that needs rejection, not a module containing an intentionally ignored GV.
-
Simon Pilgrim authored
Seriously simplifies the commutation matching logic.
-
Simon Pilgrim authored
-