- Feb 27, 2023
-
-
Noah Goldstein authored
Added: OR, SMAX, SMIN, UMAX, UMIN, ABS, SHL, SRL, SRA, MUL Intentionally not generically using TLI.isBinOp as that causes regressions as there are many binops that cannot combine with masked instructions. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D143860
-
Noah Goldstein authored
Differential Revision: https://reviews.llvm.org/D144144
-
Noah Goldstein authored
`{v}blend{d|ps|pd}` is preferable to `{v}blendw` so widen so that we can match it. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D143789 -
Noah Goldstein authored
Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D143788
-
Simon Pilgrim authored
-
William S. Moses authored
Invariant.group's are not sufficiently handled by LICM. Specifically, if a given invariant.group loaded pointer is not overwritten between the start of a loop, and its use in the load, it can be hoisted. The invariant.group (on an already invariant pointer operand) ensures the result is the same. If it is not overwritten between the start of the loop and the load, it is therefore legal to hoist. Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D144053
-
zhongyunde authored
Fix https://github.com/llvm/llvm-project/issues/59740. NOTE: retry as we can't reproduce the break locally when first commit. Reviewed By: vitalybuka Differential Revision: https://reviews.llvm.org/D141188
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
- Feb 26, 2023
-
-
Brad Smith authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
bitselect(52,-6553,m) -> xor(and(xor(52,-6553),m),52) folds much better than or(and(52,not(m)),and(-6553,m))
-
Sanjay Patel authored
-
Simon Pilgrim authored
As noted on Issue #45817 we didn't have scalar coverage for this
-
Piotr Zegar authored
Implemented support for bit-field members as a loop variable or upper limit. Supporting also non bit-field integer members. Fixes issues: https://github.com/llvm/llvm-project/issues/58614 Reviewed By: carlosgalvezp Differential Revision: https://reviews.llvm.org/D142587
-
Mehdi Amini authored
The flag name isn't the best: avoiding negative is in general more readable and conveys the intent better.
-
Simon Pilgrim authored
Extend tests for D144449 to ensure we aren't regressing code on targets with a slow INC/DEC instruction (or i686 without CMOV)
-
Roy Jacobson authored
A somewhat common code-pattern is to default a destructor in the source file and not in the header. For example, this is the way to use smart pointers with forward-declared classes: ```c++ struct Impl; struct A { ~A(); // Can't be defaulted in the header. private: std::unique_ptr<Impl> impl; }; ``` To be able to use this check with this pattern, I modified the behavior with `AllowSoleDefaultDtor` to not trigger on destructors if they aren't defined yet. Since a declared destructor should still be defined somewhere in the program, this won't miss bad classes, just diagnose on less translation units. Reviewed By: carlosgalvezp Differential Revision: https://reviews.llvm.org/D143851 -
Mark de Wever authored
The current clang-tidy settings work in the CI but not on all systems outside the CI. - The range 16...17 doesn't work when only clang-17 is installed. - Running CMake a second time will fail. This addresses these issues. Reviewed By: philnik, #libc Differential Revision: https://reviews.llvm.org/D144785
-
Younan Zhang authored
We don't want to produce inlay hints for arguments for which user has left param name comments. But we're not decomposing location of the parameter correctly at the moment because the location we've passed into `SM.getDecomposedLoc` is not always FileID. Fixes clangd/clangd#1495 Reviewed By: nridge Differential Revision: https://reviews.llvm.org/D144074
-
Simon Pilgrim authored
-
Valentin Clement authored
Calling the runtime on disassociated pointer or unallocated allocatable will trigger a segfault. Reviewed By: PeteSteinfeld Differential Revision: https://reviews.llvm.org/D144752
-
Piotr Zegar authored
Correct example, and add information about limitations. Fixes: https://github.com/llvm/llvm-project/issues/55572 Reviewed By: carlosgalvezp Differential Revision: https://reviews.llvm.org/D144594
-
Alexis Murzeau authored
The CharPrinter is a typo and should have been named CharPointer as it configures the hungarian notation prefix for char pointers (char*). As all configuration options within readability-identifier-naming.HungarianNotation.CString.* were not read at all in the previous clang-tidy version (fixed in D144431), this option rename won't break existing users. A note in release notes is added to let users know these options were renamed. Reviewed By: carlosgalvezp Differential Revision: https://reviews.llvm.org/D144790
-
Kazu Hirata authored
This patch precommits a test for: https://github.com/llvm/llvm-project/issues/60374
-
Craig Topper authored
-
Brad Smith authored
Since GCC 4.2 was removed with 10.0 and newer the respective Driver bits can be removed. Reviewed By: dim Differential Revision: https://reviews.llvm.org/D144778
-
Mehdi Amini authored
The list of boolean flags and others is becoming unresonnably long. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D143829
-
Simon Pilgrim authored
Replace dyn_cast<> with isa<> as we don't actually need the variable
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Simon Pilgrim authored
A move towards using the generic ISD::ABDU nodes on more backends Also support ISD::ABDS for v4i32 types using the existing signbit flip trick PowerPC has a select(icmp_ugt(x,y),sub(x,y),sub(y,x)) -> abdu(x,y) combine that I intend to move to DAGCombiner in a future patch. The ABS(SUB(X,Y)) -> PPCISD::VABSD(X,Y,1) v4i32 combine wasn't legal (https://alive2.llvm.org/ce/z/jc2hLU) - so I've removed it, having already added the legal sub nsw tests equivalent. Differential Revision: https://reviews.llvm.org/D142313
-
Craig Topper authored
To do this we need to remove the always matching behavior from condop. This requires us to add more 'select' isel patterns with a bare GPR as the condition. Rename condop/invcondop to riscv_setne/riscv_seteq. This centralizes the ADDI/XORI/XOR tricks into one place.
-
Simon Pilgrim authored
As detailed on D142313, this fold should be restricted by sub nsw
-
Craig Topper authored
-
Piotr Zegar authored
Ignoring std::array type when matching 'std:array == std::array()'. In such case we shouldn't propose to use empty(). Fixes: https://github.com/llvm/llvm-project/issues/48286 Differential Revision: https://reviews.llvm.org/D144217
-
Craig Topper authored
-
Craig Topper authored
HWMode expansion of GPR can create patterns with i32 types with Subtarget->is64Bit() or i64 types with !Subtarget->is64Bit(). These patterns will never match. They just waste space in the table. By adding explicit i32 or i64 to patterns that only apply to RV32 or RV64 we can filter these patterns.
-
Nikolas Klauser authored
`views::as_rvalue` was implemented in D137637, but we forgot to set the feature test macro. Fixes #60986. Reviewed By: Mordante, #libc Spies: libcxx-commits, arichardson Differential Revision: https://reviews.llvm.org/D144781
-
Sebastian Pop authored
The two tests were failing on arm64-linux with: BOLT-ERROR: invalid target 'x86-64'. Differential Revision: https://reviews.llvm.org/D144593
-