- Jun 18, 2020
-
-
Sander de Smalen authored
For example: svint32_t svget4(svint32x4_t tuple, uint64_t imm_index) returns the subvector at `index`, which must be in range `0..3`. svint32x3_t svset3(svint32x3_t tuple, uint64_t index, svint32_t vec) returns a tuple vector with `vec` inserted into `tuple` at `index`, which must be in range `0..2`. Reviewers: c-rhodes, efriedma Reviewed By: c-rhodes Tags: #clang Differential Revision: https://reviews.llvm.org/D81464
-
Hans Wennborg authored
-
Jean-Michel Gorius authored
-
Jeremy Morse authored
We're missing a plain English explanation of how this pass is supposed to operate -- add one to the file comment. Differential Revision: https://reviews.llvm.org/D80929
-
Florian Hahn authored
This patch add __builtin_matrix_column_major_load to Clang, as described in clang/docs/MatrixTypes.rst. In the initial version, the stride is not optional yet. Reviewers: rjmccall, rsmith, jfb, Bigcheese Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D72781
-
Alex Zinenko authored
The ScopedBuilder class in EDSC is being gradually phased out in favor of core OpBuilder-based helpers with callbacks. Provide helper functions that are compatible with `edsc::ScopedContext` and can be used to create and populate blocks using callbacks that take block arguments as callback arguments. This removes the need for `edsc::BlockHandle`, forward-declaration of `Value`s used for block arguments and the tag `edsc::Append` class, leading to noticable reduction in the verbosity of the code using helper functions. Remove "eager mode" construction tests that are only relevant to the `BlockBuilder`-based approach. `edsc::BlockHandle` and `edsc::BlockBuilder` are now deprecated and will be removed soon. Differential Revision: https://reviews.llvm.org/D82008
-
lorenzo chelini authored
Replace C++ MatvecOp, now that DRR rules have been dropped. Differential Revision: https://reviews.llvm.org/D82007
-
Ayke van Laethem authored
This needed two fixes: * 32-bit instructions were read in the wrong order. The machine code swaps the two 16-bit instruction words, which wasn't undone when decoding instructions. * Jump and call instructions don't encode the lowest address bit, which is always zero. Therefore, the address needed to be shifted by one to fix that. Differential Revision: https://reviews.llvm.org/D81961 -
Sander de Smalen authored
The svcreate builtins allow constructing a tuple from individual vectors, e.g. svint32x2_t svcreate2(svint32_t v2, svint32_t v2)` Reviewers: c-rhodes, david-arm, efriedma Reviewed By: c-rhodes, efriedma Tags: #clang Differential Revision: https://reviews.llvm.org/D81463
-
Guillaume Chatelet authored
-
Florian Hahn authored
-
David Sherwood authored
Added NextPowerOf2() routine to TypeSize and rewritten the code in getVectorTypeBreakdown to avoid warnings being generated. Differential Revision: https://reviews.llvm.org/D81578
-
Florian Hahn authored
This patch adjust the load/store matrix intrinsics, formerly known as llvm.matrix.columnwise.load/store, to improve the naming and allow passing of extra information (volatile). The patch performs the following changes: * Rename columnwise.load/store to column.major.load/store. This is more expressive and also more in line with the naming in Clang. * Changes the stride arguments from i32 to i64. The stride can be larger than i32 and this makes things more uniform with the way things are handled in Clang. * A new boolean argument is added to indicate whether the load/store is volatile. The lowering respects that when emitting vector load/store instructions * MatrixBuilder is updated to require both Alignment and IsVolatile arguments, which are passed through to the generated intrinsic. The alignment is set using the `align` attribute. The changes are grouped together in a single patch, to have a single commit that breaks the compatibility. We probably should be fine with updating the intrinsics, as we did not yet officially support them in the last stable release. If there are any concerns, we can add auto-upgrade rules for the columnwise intrinsics though. Reviewers: anemet, Gerolf, hfinkel, andrew.w.kaylor, LuoYuanke, nicolasvasilache, rjmccall, ftynse Reviewed By: anemet, nicolasvasilache Differential Revision: https://reviews.llvm.org/D81472
-
David Sherwood authored
Instead of asserting the number of elements is the same, we should be comparing the element counts instead. In addition, when looking at concats of extract_subvectors it's fine to use getVectorMinNumElements() for scalable vectors. I discovered these warnings when compiling the structured loads tests in this file: test/CodeGen/AArch64/sve-intrinsics-loads.ll Differential Revision: https://reviews.llvm.org/D81936
-
serge-sans-paille authored
Differential Revision: https://reviews.llvm.org/D81238
-
Pierre Oechsel authored
Differential Revision: https://reviews.llvm.org/D81934
-
David Sherwood authored
We should either call getVectorMinNumElements() or getVectorElementCount(). Differential Revision: https://reviews.llvm.org/D81945
-
Frederik Gossen authored
Replace implemented rewrite patterns with equivalent declarative rules. Differential Revision: https://reviews.llvm.org/D82023
-
Frederik Gossen authored
Setup declarative rewrite rules to lower the `shape` dialect to the `std` dialect with two exemplary rules for `from/to_extent_tensor`. Differential Revision: https://reviews.llvm.org/D82022
-
David Green authored
The rearranges PerformANDCombine and PerformORCombine to try and make sure we don't call isConstantSplat on any i1 vectors. As pointed out in D81860 it may not be very well defined in those cases.
-
David Sherwood authored
This reverts commit fb495c31. Was causing test failures and broke buildbot.
-
David Sherwood authored
In EVT::getVectorElementCount() when the type is not simple we should return getExtendedVectorElementCount() from the function instead of constructing the ElementCount object manually. I discovered this warning in an existing test: test/CodeGen/AArch64/sve-intrinsics-loads.ll Differential Revision: https://reviews.llvm.org/D81927
-
David Sherwood authored
There are now quite a few SVE tests in LLVM and Clang that do not emit warnings related to invalid use of EVT::getVectorNumElements() and VectorType::getNumElements(). For these tests I have added additional checks that there are no warnings in order to prevent any future regressions. Differential Revision: https://reviews.llvm.org/D80712
-
Haojian Wu authored
Summary: Also delete two overloads, which don't seem necessary. Reviewers: sammccall Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D82047
-
Jean Perier authored
Summary: This patch changes speficic extremum functions rewrite to generic MIN/MAX. It applies to AMAX0, AMIN0, AMAX1, AMIN1, MAX0, MIN0, MAX1, MIN1, DMAX1, and DMIN1. - Do not re-write specific extremums to MAX/MIN in intrinsic Probe and let folding rewrite it and introduc the conversion on the MIN/MAX result. - Also make operand promotion explicit in MIN/MAX folding. For instance, after this patch: AMAX0(int8, int4) is rewritten to REAL(MAX(int8, INT(int4, 8))) All this care is to avoid rewritting it to MAX(REAL(int8), REAL(int4)) that may not always be numerically equivalent to the first rewrite. Reviewers: klausler, schweitz, sscalpone, jdoerfert, DavidTruby Reviewed By: klausler, schweitz Subscribers: llvm-commits, flang-commits Tags: #flang, #llvm Differential Revision: https://reviews.llvm.org/D81940
-
Kristof Beyls authored
-
Kristof Beyls authored
This also enables running the AArch64 SLSHardening pass with GlobalISel, so add a test for that. Differential Revision: https://reviews.llvm.org/D81403
-
Kristof Beyls authored
The enum values for AArch64 registers are not all consecutive. Therefore, the computation "__llvm_slsblr_thunk_x" + utostr(Reg - AArch64::X0) is not always correct. utostr(Reg - AArch64::X0) will not generate the expected string for the registers that do not have consecutive values in the enum. This happened to work for most registers, but does not for AArch64::FP (i.e. register X29). This can get triggered when the X29 is not used as a frame pointer. Differential Revision: https://reviews.llvm.org/D81997
-
Max Kazantsev authored
-
Xing GUO authored
This patch helps make the `Code` optional in abbreviations table. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D81826
-
Rahul Joshi authored
- This will allow calling these functions from Op's that support this interface (like FuncOp) directly: ``` FuncOp func = ... func.isPrivate() ``` Differential Revision: https://reviews.llvm.org/D82060
-
Greg McGary authored
Summary: Forgot to `git add` it when patching D80677
-
Greg McGary authored
Summary: Add front-end support for `lld::macho::Configuration::frameworkSearchPath`. Depends on D80582. Reviewers: ruiu, pcc, MaskRay, smeenai, int3, Ktwu, alexshap, christylee Reviewed By: int3 Subscribers: ormris, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80677
-
Jez Ng authored
Summary: Previously, we weren't updating isecAddr when aligning InputSections, resulting in truncated sections under the right conditions. Reviewers: #lld-macho, compnerd Reviewed By: #lld-macho, compnerd Subscribers: smeenai, compnerd, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81298
-
Jez Ng authored
Summary: llvm-mc emits `__bss` sections with an offset of zero, but we weren't expecting that in our input, so we were copying non-zero data from the start of the file and putting it in `__bss`, with obviously undesirable runtime results. (It appears that the kernel will copy those nonzero bytes as long as the offset is nonzero, regardless of whether S_ZERO_FILL is set.) I debated on whether to make a special ZeroFillSection -- separate from a regular InputSection -- but it seemed like too much work for now. But I'm happy to refactor if anyone feels strongly about having it as a separate class. Depends on D80857. Reviewers: ruiu, pcc, MaskRay, smeenai, alexshap, gkm, Ktwu, christylee Reviewed By: smeenai Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80859
-
Jez Ng authored
Summary: Turns out this case is actually really common -- it happens whenever there's a reference to an `extern` variable that ends up statically linked. Depends on D80856. Reviewers: ruiu, pcc, MaskRay, smeenai, alexshap, gkm, Ktwu, christylee Reviewed By: smeenai Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80857
-
Jez Ng authored
Summary: As far as I can tell, it's identical to _GOT_LOAD. llvm-mc has the following comment explaining why _GOT exists: ``` // x86_64 distinguishes movq foo@GOTPCREL so that the linker can // rewrite the movq to an leaq at link time if the symbol ends up in // the same linkage unit. ``` Depends on D80855. Reviewers: ruiu, pcc, MaskRay, smeenai, alexshap, gkm, Ktwu, christylee Reviewed By: MaskRay, smeenai Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80856
-
Jez Ng authored
Summary: Depends on D80854. Reviewers: ruiu, pcc, MaskRay, smeenai, alexshap, gkm, Ktwu, christylee Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D80855
-
Jez Ng authored
Summary: As mentioned in https://reviews.llvm.org/D81326#2093931, I'm not sure it makes sense to use the default target triple to determine -arch. Long-term we should probably detect it from the input object files, but in the meantime it would be nice not to have to add it to all our tests by using a convenient default. Reviewers: #lld-macho Subscribers: arphaman, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D81983
-
Mehdi Amini authored
This is fixing warning from clang: warning: private field 'ModuleSlice' is not used [-Wunused-private-field] SmallPtrSetImpl<Function *> &ModuleSlice; ^ Differential Revision: https://reviews.llvm.org/D82027
-