- Nov 24, 2023
-
-
Shengchen Kan authored
-
Phoebe Wang authored
-
Phoebe Wang authored
-
Shengchen Kan authored
PUSH2 and POP2 are two new instructions for (respectively) pushing/popping 2 GPRs at a time to/from the stack. The opcodes of PUSH2 and POP2 are those of “PUSH r/m” and “POP r/m” from legacy map 0, but we require ModRM.Mod = 3 in order to disallow memory operand. The 1-bit Push-Pop Acceleration hint described in #73092 applies to PUSH2/POP2 too, then we have PUSH2P/POP2P. For AT&T syntax, PUSH2[P] pushes the registers from right to left onto the stack. POP2[P] pops the stack to registers from right to left. Intel syntax has the opposite order - from left to right. The assembly syntax is aligned with GCC & binutils https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637718.html
-
wangpc authored
-
Shengchen Kan authored
-
Shengchen Kan authored
-
Shengchen Kan authored
-
Shengchen Kan authored
-
Alexander Kornienko authored
This reverts commit 52df67ba, which causes spurious clang crashes. See https://github.com/llvm/llvm-project/commit/52df67ba76a03ad33132d1d4f4202d5a2313a3cd#commitcomment-133381701
-
ZhangYin authored
[libc++] <experimental/simd> Add implicit type conversion constructor for class simd/simd_mask (#71132)
-
Louis Dionne authored
The runtimes now have a principled way of doing assertions in relation to hardening, so we should use that instead of raw calls to assert() inside libc++abi. This patch aims to maintain the behavior of the demangler code when it is used from within LLVM by introducing a simple DEMANGLE_ASSERT(...) macro that is then defined to the appropriate assertion mechanism.
-
Craig Topper authored
-
Florian Hahn authored
This patch refactors the logic to compute the dependence distance, stride, size and write info to a separate function. This limits the scope of various A* and B* variables, which in turn makes it easier to reason about their uses. In particular this makes it more explicit why dropping the various std::swaps as done in https://github.com/llvm/llvm-project/pull/70819/ is valid.
-
Oleksandr "Alex" Zinenko authored
Existing implementation of the LLVM type converter for LLVM structs containing incompatible types was attempting to change identifiers of the struct in case of name clash post-conversion (all identified structs have different names post-conversion since one cannot change the body of the struct once initialized). Beyond a trivial error of not updating the counter in renaming, this approach was broken for recursive structs that can't be made aware of the renaming and would use the pre-existing struct with clashing name instead. For example, given `!llvm.struct<"_Converted.foo", (struct<"_Converted.foo">, f32)>` the following type `!llvm.struct<"foo", (struct<"foo", index>)>` would incorrectly convert to ``` !llvm.struct<"_Converted_1.foo", (struct<"_Converted.foo", (struct<"_Converted.foo">, f32)>)> ``` Remove this incorrect renaming and simply refuse to convert types if it would lead to identifier clashes for structs with different bodies. Document the expectation that such generated names are reserved and must not be present in the input IR of the converter. If we ever actually need to use handle such cases, this can be achieved by temporarily renaming structs with reserved identifiers to an unreserved name and back in a pre/post-processing pass that does _not_ use the type conversion infra. -
philnik777 authored
We have quite a few macros scattered around in `<__config>` which are there for QoI purposes. To make things a bit simpler this patch moves all these attributes into a single place.
-
Craig Topper authored
-
Craig Topper authored
-
Stefan Gränitz authored
Exercise transformation of BL into BLX instructions, if instruction set mode differs between origin and target.
-
Florian Hahn authored
Extra test coverage for precondition generation.
-
LLVM GN Syncbot authored
-
ShatianWang authored
This commit modifies BinaryContext::calculateEmittedSize() to update the BinaryBasicBlock::OutputAddressRange of each basic block in the function in place. BinaryBasicBlock::getOutputSize() now gives the emitted size of the basic block.
-
Florian Hahn authored
Commit was pushed by accident. This reverts commit 0e15f245.
-
Florian Hahn authored
Revert "[clang] Avoid memcopy for small structure with padding under -ftrivial-auto-var-init (#71677)" This reverts commit fe5c360a. The commit causes the tests below to fail on many buildbots, e.g. https://lab.llvm.org/buildbot/#/builders/245/builds/17047 Clang :: CodeGen/aapcs-align.cpp Clang :: CodeGen/aapcs64-align.cpp
-
Florian Hahn authored
-
Fred Fu authored
Reverts llvm/llvm-project#67349 There are some issues with the sanitizers. We will reland once that's fixed.
-
Anton Rydahl authored
[libc++] Unify __is_trivial_equality_predicate and __is_trivial_plus_operation into __desugars_to (#68642) When working on an OpenMP offloading backend for standard parallel algorithms (https://github.com/llvm/llvm-project/pull/66968 ) we noticed the need of a generalization of `__is_trivial_plus_operation`. This patch merges `__is_trivial_equality_predicate` and `__is_trivial_plus_operation` into `__desugars_to`, and in the future we might extend the latter to support other binary operations as well. Co-authored-by:
Louis Dionne <ldionne.2@gmail.com>
-
Egor Zhdan authored
This upstreams more of the Clang API Notes functionality that is currently implemented in the Apple fork: https://github.com/apple/llvm-project/tree/next/clang/lib/APINotes
-
David Green authored
-
Petr Maj authored
Adds assertion that the base/derived pointers are of the same size. --------- Co-authored-by:Petr Maj <pmaj@azul.com>
-
Adam Paszke authored
-
Fred Fu authored
Differential Revision: https://reviews.llvm.org/D159128
-
Graham Hunter authored
We can determine the VF from a combination of the mangled name (which indicates the arguments that take vectors) and the element sizes of the arguments for the scalar function the mapping has been established for. The assert when demangling fails has been removed in favour of just not adding the mapping, which prevents the crash seen in https://github.com/llvm/llvm-project/issues/71892 This patch also stops using _LLVM_ as an ISA for scalable vector tests, since there aren't defined rules for the way vector arguments should be handled (e.g. packed vs. unpacked representation).
-
Björn Pettersson authored
In the StackColoring pass we first scan for possible stack slot merges. A SlotRemap map is setup with the remappings that should be performed. Then the main work is done by calling remapInstructions and providing that map. Most of the work in remapInstructions would just be a waste of time in situations when the SlotRemap map is empty, but it turns out that the part that adjusts Alias Analysis information could end up dropping AA metadata even when there are no stack slot merges being done. This happens since all instruction's machine memory operands are considered, and if we can't determine the underlying object that is accessed (using getUnderlyingObjectsForCodeGen) then we conservatively drop AA metadata. This patch simply avoids calling remapInstructions if we don't intend to do any remappings (i.e. if SlotRemap is empty). That avoids touching AA metadata when all we do is to remove lifetime markers. That seems like a safe thing to do, as it is the same thing as happens when we bail out early due to other reasons (e.g. when only having one lifetime marker). For targets that do not care about Alias Analysis information after the StackColoring pass this shouldn't have any impact, except that it might improve compile time slightly as we now skip spending time in remapInstructions when not doing any stack merges.
-
Jeremy Morse authored
This patch makes jump-threading handle non-instruction debug-info stored in DPValues in the same way that it updates dbg.values nowadays. This involves re-targetting their operands as with dbg.values getting moved from one block to another, and manually cloning them when duplicating blocks. The SSAUpdater class also grows some functions for SSA-updating DPValues in the same way as dbg.values. All of this is largely covered by existing debug-info tests, except for the cloning of DPValues attached to elidable instructions and branches, where I've added a test to thread-debug-info.ll. Where previously we could rely on dbg.values being copied and cloned as normal instructions are, as we need to explicitly perform that operation now I've added some explicit testing for it.
-
Florian Hahn authored
-
Simon Pilgrim authored
Revert rG67275263 "[X86] X86DAGToDAGISel - attempt to merge XMM/YMM loads with YMM/ZMM loads of the same ptr (#73126)" Missed an issue that we were calling continue from within the for loop - fixed version incoming shortly.
-
Jay Foad authored
Define target names and ELF numbers for new GFX12 targets gfx1200 and gfx1201. For now they behave identically to GFX11.
-
serge-sans-paille authored
Recommit of 0d2860b7 with extra test cases fixed.
-
Youngsuk Kim authored
Opaque ptr cleanup effort
-