- Nov 08, 2021
-
-
Ben Shi authored
Optimize (add (mul x, c0), c1) -> (add (mul (add x, c1/c0+1), c0), c1%c0-c0), if c1/c0+1 and c1%c0-c0 are simm12, while c1 is not. Optimize (add (mul x, c0), c1) -> (add (mul (add x, c1/c0-1), c0), c1%c0+c0), if c1/c0-1 and c1%c0+c0 are simm12, while c1 is not. Reviewed By: craig.topper, asb Differential Revision: https://reviews.llvm.org/D111141 -
Chen Zheng authored
Add comments to explain why XXPERMDIs and XXPERMDI have different input register classes, vsfrc for XXPERMDIs and vsrc for XXPERMDI. This addresses the comments in abandoned patch D113178, we keep using `f0` instead of using `vs0` for XXPERMDIs on purpose.
-
Zi Xuan Wu authored
CSKY is a ARCH which supports mixture of 16-bit and 32-bit instructions natively, and there is not an indivual predictor or feature to enable/disable 16-bit instruction. So I think it's better to add 16-bit instruction early, and naturally to use 16-bit and 32-bit instructions. Differential Revision: https://reviews.llvm.org/D112919
-
Chen Zheng authored
Reviewed By: jsji Differential Revision: https://reviews.llvm.org/D113173
-
Chen Zheng authored
-
Kazu Hirata authored
-
Simon Pilgrim authored
For v8i16 shuffle patterns that are lowered with AND+PACKUS, check to see if the sources are from a 256-bit vector and perform the masking using BLENDW at the 256-bit level. With the test changes we can see more examples of duplicate XMM/YMM zero vectors (PR26018) :(
-
Valentin Clement authored
This patch add the conversion pattern for fir.extract_value and fir.insert_value. fir.extract_value is lowered to llvm.extractvalue anf fir.insert_value is lowered to llvm.insertvalue. This patch also adds the type conversion for the BoxType and RecordType needed to have some comprehensive tests. This patch is part of the upstreaming effort from fir-dev branch. This patch was landed and reverted once. TypeBuilderFunc getModel<Fortran::ISO::CFI_index_t>() was clashing with getModel<long long> on windows since they both are 64 bits signed interger. On linux CFI_index_t is long. Change CFI_index_t to getModel<long>. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D112961 Co-authored-by:
Jean Perier <jperier@nvidia.com> Co-authored-by:
Eric Schweitz <eschweitz@nvidia.com>
-
Nikita Popov authored
For some optimizations on comparisons it's necessary that the union/intersect is exact and not a superset. Add methods that return Optional<ConstantRange> only if the result is exact. For the sake of simplicity this is implemented by comparing the subset and superset approximations for now, but it should be possible to do this more directly, as unionWith() and intersectWith() already distinguish the cases where the result is imprecise for the preferred range type functionality.
-
Nikita Popov authored
From an API perspective, it does not make a lot of sense that 0 is not a valid argument to this function. Add the exact check needed to support it.
-
Jonas Devlieghere authored
Somehow every pointer looks like it's tagged on GreenDragon. Removing the check to unblock the bot until we can get to the bottom of this.
-
David Green authored
This rewrites the fcvt-fixed.ll test case to be separate functions, not one large function with volatile global stores. It also adds fp16 and fptoi.sat testing at the same time.
-
Nikita Popov authored
When accumulating the GEP offset in BasicAA, we should use the pointer index size rather than the pointer size. Differential Revision: https://reviews.llvm.org/D112370
-
Kazu Hirata authored
The function body proper was removed on Feb 20, 2019 in commit 79b5c384.
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Manoj Gupta authored
D98452 introduced a mismatch between clang expectations for builtin name for baremetal targets on arm. Fix it by adding a case for baremetal. This now matches the output of "clang -target armv7m-none-eabi -print-libgcc-file-name \ -rtlib=compiler-rt" Reviewed By: mstorsjo Differential Revision: https://reviews.llvm.org/D113357
-
- Nov 07, 2021
-
-
Benjamin Kramer authored
-
Mark de Wever authored
-
Nikolas Klauser authored
Make test_allocator etc. constexpr-friendly so they can be used to test constexpr string and possibly constexpr vector Reviewed By: Quuxplusone, #libc, ldionne Differential Revision: https://reviews.llvm.org/D110994
-
Simon Pilgrim authored
-
Simon Pilgrim authored
Be more consistent in the naming convention for the various RET instructions to specify in terms of bitwidth. Helps prevent future scheduler model mismatches like those that were only addressed in D44687. Differential Revision: https://reviews.llvm.org/D113302
-
Benjamin Kramer authored
-
Benjamin Kramer authored
-
Simon Pilgrim authored
D109434 addressed the v2f64 -> v4f64 case, an internal test has found an equivalent crash for the v4f32 -> v8f32 case.
-
Simon Pilgrim authored
Noticed on D113212
-
Simon Pilgrim authored
Currently FoldConstantArithmetic only handles binops, so replacing other uses of FoldConstantVectorArithmetic (in particular for SETCC nodes), still require more work.
-
Mats Larsen authored
The LLVM-C API is relatively small so we've previously added doxygen tags so it's easier to navigate the LLVM-C web docs. Over the years, more headers were added without proper doxygen tags, effectively hiding them from the main LLVM-C doxygen page. This patch adds comments to headers which did not have them. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D112474
-
Fangrui Song authored
https://sourceware.org/bugzilla/show_bug.cgi?id=22742 uc_mcontext.__reserved probably should not be considered user visible API but unfortunate it is: it is the only way to access cpu states of some Linux asm/sigcontext.h extensions. That said, the declaration may be long double __reserved[256]; (used by musl) instead of unsigned char __reserved[4096] __attribute__((__aligned__(16))); (glibc) to avoid dependency on a GNU variable attribute.
-
Fangrui Song authored
GCC introduced `__attribute__((mode(unwind_word)))` to work around Cell Broadband Engine SPU (which was removed from GCC in 2019-09), which is irrelevant to hwasan. _Unwind_GetGR/_Unwind_GetCFA from llvm-project/libunwind don't use unwind_word. Using _Unwind_Word can lead to build failures if libunwind's unwind.h is preferred over unwind.h in the Clang resource directory (e.g. built with GCC).
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Yonghong Song authored
Nathan Chancellor reported a crash due to commit 3466e007 (Reland "[Attr] support btf_type_tag attribute"). The following test can reproduce the crash: $ cat efi.i typedef unsigned long efi_query_variable_info_t(int); typedef struct { struct { efi_query_variable_info_t __attribute__((regparm(0))) * query_variable_info; }; } efi_runtime_services_t; efi_runtime_services_t efi_0; $ clang -m32 -O2 -g -c -o /dev/null efi.i The reason is that FunctionTypeLoc.getParam(Idx) may return a nullptr which should be checked before dereferencing the result pointer. This patch fixed this issue.
-
Fangrui Song authored
This makes it easy to write tests where the irrelevant fields are not needed.
-
Luke Benes authored
Fix a dangling else that gcc-11 warned about. The EXPECT_EQ macro expands to an if-else, so the whole construction contains a hidden dangling else. Differential Revision: https://reviews.llvm.org/D113346
-
Nikita Popov authored
Add a variant of getEquivalentICmp() that produces an optional offset. This allows us to create an equivalent icmp for all ranges. Use this in the with.overflow folding code, which was doing this adjustment separately -- this clarifies that the fold will indeed always apply.
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-