- May 31, 2023
-
-
Xin Ouyang authored
-
- Oct 19, 2022
-
-
Xin Ouyang authored
-
- Sep 22, 2022
-
-
Xin Ouyang authored
-
- Mar 31, 2022
-
-
Craig Topper authored
This allows for a custom encoding to be emitted. It can also be used with inline assembly to allow the custom instruction to be register allocated like other instructions. I initially started from SystemZ's implementation, but some of the formats allow operands to be specified in multiple ways so I had to add support for matching different operand class lists for the same format. That implementation is a simplified version of what is emitted by tablegen for regular instructions. I've left out the compressed formats. And I haven't supported the named opcodes like LUI or OP_IMM_32. Those can be added in future patches. Documentation can be found here https://sourceware.org/binutils/docs-2.37/as/RISC_002dV_002dFormats.html Reviewed By: jrtc27, MaskRay Differential Revision: https://reviews.llvm.org/D108602
-
- Aug 23, 2021
-
-
Stella Laurenzo authored
* Resolves a TODO by making this configurable by downstreams. * This seems to be the last thing allowing full use of the Python bindings as a library within another project (i.e. be embedding them). Differential Revision: https://reviews.llvm.org/D108523
-
Nikita Popov authored
This test was not modifying the pointer in the loop, so the loads just ended up as undef, without relation to loop load PRE. Pass the alloca to the called function, so the memory is potentially modified.
-
Nikita Popov authored
4ad41902 changed this code to propagate Changed if scalar GEP PRE is performed. However, as implemented this would skip the load PRE entirely if GEP indices were PREd. Make sure load PRE runs even if Changed is already true. This likely has no functional effect as load PRE would then occur on a later GVN iteration.
-
Amy Kwan authored
It is possible that libatomic does not exist on some systems. This patch updates the scudo standalone tests to link against libatomic if the library exists. This is an update to the original patch: https://reviews.llvm.org/D64134 and aims to resolve https://bugs.llvm.org/show_bug.cgi?id=51431. Differential Revision: https://reviews.llvm.org/D108503
-
Philip Reames authored
-
Philip Reames authored
This special cases an unconditional latch and a conditional branch latch exit to improve codegen and test readability. I am hoping to reuse this function in the runtime unroll code, but without this change, the test diffs are far too complex to assess.
-
Simon Pilgrim authored
combineMul is now used for other things as well as the mul-with-constant expansion - move the comment to where its actually relevant.
-
Alexey Lapshin authored
verifyDieRanges function checks for the intersected address ranges. It adds child DieRangeInfo into parent DieRangeInfo to check whether children have overlapping address ranges. It is safe to not add DieRangeInfo with empty address range into parent's children list. This decreases the number of children which should be navigated and as a result decreases execution time(parents having a lot of children with empty ranges spend much time navigating them). For this command: "llvm-dwarfdump --verify clang-repl" execution time decreased from 220 sec till 75 sec. Differential Revision: https://reviews.llvm.org/D107554
-
Kazu Hirata authored
The corresponding definition has been missing for at least 5 years.
-
- Aug 22, 2021
-
-
Arthur O'Dwyer authored
When `_Compare` is a function parameter already (so it's not `void` and it's not an abominable function type), `add_lvalue_reference_t<_Compare>` is simply a synonym for `_Compare&`. We don't need to pull in `<type_traits>` and instantiate a template trait to figure that out. Differential Revision: https://reviews.llvm.org/D108400
-
Nikita Popov authored
The pattern matched here is too complex for the general logical and/or to bitwise and/or conversion to trigger. However, the fold is poison-safe, so match it with a select root as well: https://alive2.llvm.org/ce/z/vNzzSg https://alive2.llvm.org/ce/z/Beyumt
-
Nikita Popov authored
We currently only handle this with a bitwise and/or instruction, but not a logical.
-
Simon Pilgrim authored
Extend matchShuffleAsBlend to not only match against known in-place elements for BLEND shuffles, but use isElementEquivalent to determine if the shuffle mask's referenced element is the same as the in-place element. This allows us to replace a number of insertps instructions with more general blendps instructions (better opportunities for commutation, concatenation etc.).
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Also replace X32 with X86 check prefixes for i686 tests (we tend to try to use X32 for gnux32 targets)
-
Simon Pilgrim authored
Before lowering shuffles, see if we can merge horizontal ops or canonicalize the shuffle mask to point to the same LHS/RHS of the HOps when an HOp's args are repeated.
-
Sanjay Patel authored
This is part of solving more general rotate patterns seen in bugs related to: https://llvm.org/PR51575 https://alive2.llvm.org/ce/z/GpkFCt
-
Sanjay Patel authored
This is part of solving more general rotate patterns seen in bugs related to: https://llvm.org/PR51575 https://alive2.llvm.org/ce/z/fjKwqv
-
Sanjay Patel authored
-
Simon Pilgrim authored
Broadwell is mainly a die shrink of Haswell, but the model had many of the scheduling classes in different orders, making side-by-side comparisons very difficult. The InstRW overrides are still quite different, but at least that part of the side-by-side diff is now in the same position. This was noticed while I was trying to investigate diffs between llvm-mca and other perf analyzers in https://uica.uops.info/ - we used to be able to do diffs between most of the models very easily, but we seem to have lost that simplicity as classes have been altered, models have been refined and other models have rotted.
-
Sanjay Patel authored
The motivation was to get min/max intrinsics to parity with cmp+select idioms, but this unlocks a few more folds because isFreeToInvert recognizes add/sub with constants too. In the min/max example, we have too many extra uses for smaller folds to improve things, but this fold is able to eliminate uses even though we can't reduce the number of instructions.
-
Simon Pilgrim authored
Don't pass the struct by value.
-
Florian Hahn authored
Adjusting the reduction recipes still relies on references to the original IR, which can become outdated by the first-order recurrence handling. Until reduction recipe construction does not require IR references, move it before first-order recurrence handling, to prevent a crash as exposed by D106653.
-
Ben Shi authored
Reviewed by: lebedev.ri, spatel, craig.topper, luismarques, jrtc27 Differential Revision: https://reviews.llvm.org/D107711
-
luxufan authored
This patch supported the R_X86_64_32S relocation and add the Pointer32Signed generic edge kind. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D108446
-
Lang Hames authored
-
Lang Hames authored
Renames the blobSerializationRoundTrip test helper function to spsSerializationRoundTrip ('blob' was the placeholder name for the serialization scheme during prototyping, this function was missed when renaming everything for the mainline). Also drops explicit template arguments at call sites where they can be inferred (and are obvious) from the call argument type. -
Wang, Pengfei authored
Enable FP16 unary operator instructions. Ref.: https://software.intel.com/content/www/us/en/develop/download/intel-avx512-fp16-architecture-specification.html Reviewed By: LuoYuanke Differential Revision: https://reviews.llvm.org/D105267
-
Lang Hames authored
Should fix bot failure at https://green.lab.llvm.org/green/job/clang-stage2-Rthinlto/4367
-
Fangrui Song authored
This avoids unneeded MVT->EVT conversion.
-
Fangrui Song authored
CCState::AllocateReg handles aliased registers.
-
Fangrui Song authored
clang CodeGenModule shouldAssumeDSOLocal has set dso_local.
-
Fangrui Song authored
-
Kazu Hirata authored
-
- Aug 21, 2021
-
-
Sanjay Patel authored
This may overlap partially with the reassociate pass, but it seems simple enough that we should try it here in InstCombine to enable other folds. This shows up as an opportunity and potential regression if we improve a subtract fold with 'not' ops to be more general.
-
Sanjay Patel authored
-