- Oct 23, 2022
-
-
Simon Pilgrim authored
We only need this for std::abs, but since we're also testing the sign of the same value, then its not really necessary. As detailed in https://commondatastorage.googleapis.com/chromium-browser-clang/llvm-include-analysis.html - APInt.h is the generic header with the highest expanded size, due to the dependency on <cmath>
-
Simon Pilgrim authored
This is already included in APInt.h
-
Benjamin Kramer authored
-
Simon Pilgrim authored
[DAG] Add freeze(sign/zero_extend_vector_inreg(x)) -> sign/zero_extend_vector_inreg(freeze(x)) folding
-
Schrodinger ZHU Yifan authored
Reviewed By: gchatelet Differential Revision: https://reviews.llvm.org/D135540
-
Guillaume Chatelet authored
-
John McIver authored
Resolves undefined references to vtable for clang::ASTConsumer, PCHContainerOperations::PCHContainerOperations(), and CodeGenOptions::CodeGenOptions(). Reviewed By: Izaron Differential Revision: https://reviews.llvm.org/D136546
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Add X86 isGuaranteedNotToBeUndefOrPoisonForTargetNode / canCreateUndefOrPoisonForTargetNode overrides and add X86ISD::PSHUFD/VPERMILPI handling.
-
Simon Pilgrim authored
Its going to be easier to add some basic target shuffle handling than generic ISD::SHUFFLE_VECTOR nodes which is going to need special handling for unused/undef operands. Both freeze_pshufd and freeze_permilps tests lower to vpermilps, but only in domain switching later on.
-
Kazu Hirata authored
This patch fixes: mlir/include/mlir/Tools/mlir-translate/Translation.h:93:35: warning: extra ‘;’ [-Wpedantic]
-
Mike Hommey authored
Fixes #58307 Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D135738
-
Kazu Hirata authored
-
Craig Topper authored
If the divisor is even, we can first shift the dividend and divisor right by the number of trailing zeros. Now the divisor is odd and we can do the original algorithm to calculate a remainder. Then we shift that remainder left by the number of trailing zeros and add the bits that were shifted out of the dividend. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D135541
-
Craig Topper authored
This reverts commit e8b3ffa5. The AMDGPU/mad_64_32.ll seems to fail on some of the build bots but passes locally. I'm really confused.
-
Craig Topper authored
-
Craig Topper authored
(sra X, BW-1) is either 0 or -1. So the multiply is a conditional negate of Y. This pattern shows up when type legalizing wide multiplies involving a sign extended value. Fixes PR57549. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D133399
-
Yuanfang Chen authored
`|| fold` is not disjunction; `&& fold` is not conjunction. Both are atomic per current wording. See http://cplusplus.github.io/concepts-ts/ts-active.html#28. D128750 accidentally tried to partially addresss this which is not desirable. This patch reverts that part and associated test cases.
-
Craig Topper authored
The CanFoldNonConst doesn't work correctly with opaque constants because getNode won't constant fold constants if one is opaque. Even if the operation is AND/OR. This can lead to infinite loops. This patch does the folding manually in the DAGCombine. Alternatively, we could improve getNode but that seemed likely to have bigger impact and possibly increase compile time for the additional checks. We wouldn't want to directly constant fold because we need to preserve the opaque flag. Fixes PR58511. Reviewed By: spatel Differential Revision: https://reviews.llvm.org/D136472
-
Craig Topper authored
-
Nirvedh Meshram authored
Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D136521
-
Krzysztof Parzyszek authored
Handle MULH[US] by normalizing them into newly invented nodes HexagonISD::(S|U|US)MUL_LOHI. On HVX v60, if only the high part of SMUL_LOHI is used, use the original MULHS expansion. In all other cases, expand the full product. On HVX v62, always expand the full product. Introduce Hexagon-specific LLVM IR intrinsics for 32x32 multiplication returning low/high parts.
-
Krzysztof Parzyszek authored
-
Craig Topper authored
There was an early out that prevented us from calling this for (and (sext_inreg (shl X, C1), i32), C2).
-
Tomás Longeri authored
Also clean up redundant public access specifiers. Reviewed By: mehdi_amini, rriddle Differential Revision: https://reviews.llvm.org/D135924
-
Guillaume Chatelet authored
This provides the equivalent of std::byte. std::byte is a distinct type that implements the concept of byte as specified in the C++ language definition. https://en.cppreference.com/w/cpp/types/byte Differential Revision: https://reviews.llvm.org/D136294
-
Christopher Bate authored
Prior to this change, the "ExtractSliceFromReshape" pattern would transform ``` %collapsed = tensor.collapse_shape %input [[0, 1], [2]] : tensor<1x11x100xf32> into tensor<11x100xf32> %slice = tensor.extract_slice %collapsed [%offt, 0] [%size, 100] [1, 1] : tensor<11x100xf32> to tensor<?x100xf32> ``` into a loop that iterated over the range `%size - %offt`, that pieces together multiple sub-slices of `%input` along the first dimension. This is correct but obviously inefficient. The technical condition is that collapsing at-most-one non-unit dimension of `%src` will not result in a subsequent slice along the corresponding dimension of `%collapsed` mapping across discontinuities in the index space of `%src`. Thus, the definition of a "linearized dimension" (from the perspective of `tensor.collapse_shape`) is updated to reflect this condition. The transform will now generate ``` %slice = tensor.extract_slice %input [0, %offt, 0][1, %size, 100] [1, 1] : tensor<1x11x100xf32> to tensor<1x?x100xf32> %result = tensor.collapse_shape [[0, 1], [2]] : tensor<1x?x100xf32> to tensor<?x100xf32> ``` which can be further canonicalized. Additional tests are added to check this family of edge cases. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D135726 -
Simon Pilgrim authored
Initial tidyup and it will make it easier to adjust additional Operands in a future patch.
-
Simon Pilgrim authored
-
Ivan Butygin authored
Differential Revision: https://reviews.llvm.org/D136534
-
Simon Pilgrim authored
The funnel-shift amount is always modulo, so won't introduce poison/undef
-
Simon Pilgrim authored
Unlike most other freeze tests in the file, this is showing a missing SimplifyDemandedBits simplification instead of a merge of the ops
-
Kazu Hirata authored
-
Peter Klausler authored
-
Simon Pilgrim authored
The rotation amount is always modulo, so won't introduce poison/undef
-
- Oct 22, 2022
-
-
Kazu Hirata authored
-
Simon Pilgrim authored
-
Peixin Qiao authored
This reverts commit c1bf4c3c.
-
Qiongsi Wu authored
This patch adds more tests for AIX. It follows https://reviews.llvm.org/D134820 which added a minimal set of tests for the newly added AIX options. These new tests were originally created by https://reviews.llvm.org/D119109. Since we do not plan to land https://reviews.llvm.org/D119109 in its current shape to add the AIX specific options, we incorporate the relevant tests developed. Reviewed By: w2yehia Differential Revision: https://reviews.llvm.org/D135885
-
Phoebe Wang authored
Fixes #58545
-