- Oct 19, 2023
-
-
Pierre van Houtryve authored
Solves #68315
-
Florian Hahn authored
-
Michael Klemm authored
[libomptarget][OpenMP] Initial implementation of omp_target_memset() and omp_target_memset_async() (#68706) Implement a slow-path version of omp_target_memset*() There is a TODO to implement a fast path that uses an on-device kernel instead of the host-based memory fill operation. This may require some additional plumbing to have kernels in libomptarget.so
-
Joseph Huber authored
Summary: The `libcgpu.a` file provides its own implementation of `__assert_fail`. This adds a test to make sure it's usable in OpenMP offloading as expected. Currently this requires linking `libcgpu.a` before the OpenMP device RTL however. We also disable the test on the CPU as the format of the string will be different.
-
Timm Bäder authored
For this code: struct O { int &&j; }; O o1(0); The generated AST for the initializer of o1 is: VarDecl 0x62100006ab08 <array.cpp:119:3, col:9> col:5 o1 'O':'O' parenlistinit `-ExprWithCleanups 0x62100006b250 <col:7, col:9> 'O':'O' `-CXXParenListInitExpr 0x62100006b210 <col:7, col:9> 'O':'O' `-MaterializeTemporaryExpr 0x62100006b1f0 <col:8> 'int' xvalue `-IntegerLiteral 0x62100006abd0 <col:8> 'int' 0 Before this patch, we create a local temporary variable for the MaterializeTemporaryExpr and destroy it again when destroying the EvalEmitter we create to interpret the initializer. However, since O::j is a reference, this reference now points to a local variable that doesn't exist anymore. Differential Revision: https://reviews.llvm.org/D156453 -
Simon Pilgrim authored
[DAG] canCreateUndefOrPoison - remove AssertSext/AssertZext assumption that they never create undef/poison We need to assume that we generate poison if the assertions failed Fixes #66603
-
Simon Pilgrim authored
-
Timm Bäder authored
-
Igor Kirillov authored
-
Momchil Velikov authored
This reverts revert 19505072. An issue was fixed in bea36849 and some newly appeared tests updated.
-
Ramkumar Ramachandra authored
The issue #55208 noticed that std::rint is vectorized by the SLPVectorizer, but a very similar function, std::lrint, is not. std::lrint corresponds to ISD::LRINT in the SelectionDAG, and std::llrint is a familiar cousin corresponding to ISD::LLRINT. Now, neither ISD::LRINT nor ISD::LLRINT have a corresponding vector variant, and the LangRef makes this clear in the documentation of llvm.lrint.* and llvm.llrint.*. This patch extends the LangRef to include vector variants of llvm.lrint.* and llvm.llrint.*, and lays the necessary ground-work of scalarizing it for all targets. However, this patch would be devoid of motivation unless we show the utility of these new vector variants. Hence, the RISCV target has been chosen to implement a custom lowering to the vfcvt.x.f.v instruction. The patch also includes a CostModel for RISCV, and a trivial follow-up can potentially enable the SLPVectorizer to vectorize std::lrint and std::llrint, fixing #55208. The patch includes tests, obviously for the RISCV target, but also for the X86, AArch64, and PowerPC targets to justify the addition of the vector variants to the LangRef.
-
Lawrence Benson authored
In #69582, I accidentally disabled all tests for the changed introduced in #69010. This change should use the correct `REQUIRES` syntax to en-/disable target-specific tests.
-
Pierre-Andre Saulais authored
This is done by lowering v16i8 loads into LoadV4 operations with i32 results instead of letting ReplaceLoadVector split it into smaller loads during legalization. This is done at dag-combine1 time, so that vector operations with i8 elements can be optimised away instead of being needlessly split during legalization, which involves storing to the stack and loading it back.
-
Stanislav Mekhanoshin authored
The immediate legality checks are now embedded into the isOperandLegal(). It is not needed to check it again.
-
Simon Pilgrim authored
Similar to what we already do for add/sub + saturation variants. Scalar support will be added in a future patch covering the other variants at the same time. Alive2: https://alive2.llvm.org/ce/z/rBDrNE Fixes #69080
-
Caroline Concatto authored
As described in: https://github.com/ARM-software/acle/pull/257 Patch by : David Sherwood <david.sherwood@arm.com> Reviewed By: kmclaughlin Differential Revision: https://reviews.llvm.org/D151307
-
Timm Bäder authored
We already save the information about signedness ourselves.
-
Dominik Wójt authored
When the FPU was selected with "+(no)fp(.dp)" extensions in "-march" or "-mcpu" options, the FPU used for multilib selection was still the default one for given architecture or CPU.
-
Lawrence Benson authored
Small fix for failing tests after merge of #69010. The tests need `REQUIRES` to ensure that the correct headers are available. I've also added a generic x86 build which does not need headers, so there is at least one run per test.
-
Pierre van Houtryve authored
To fix that ticket we only needed to address the V_LSHLREV_B16 case, but I did it for all insts just in case. Fixes #66899
-
Timm Bäder authored
-
Sergio Afonso authored
[Flang][OpenMP][Sema] Add directive rewrite pass to support atomic_default_mem_order REQUIRES clause This patch creates the `OmpRewriteMutator` pass that runs at the end of `RewriteParseTree()`. This pass is intended to make OpenMP-specific mutations to the PFT after name resolution. In the case of the `atomic_default_mem_order` clause of the REQUIRES directive, name resolution results in populating global symbols with information about the REQUIRES clauses that apply to that scope. The new rewrite pass is then able to use this information in order to explicitly set the memory order of ATOMIC constructs for which that is not already specified. Given that this rewrite happens before semantics checks, the check of the order in which ATOMIC constructs without explicit memory order and REQUIRES directives with `atomic_default_mem_order` appear is moved earlier into the rewrite pass. Otherwise, these problems would not be caught by semantics checks, since the PFT would be modified by that stage. This is patch 4/5 of a series splitting D149337 to simplify review. Depends on D157983. Differential Revision: https://reviews.llvm.org/D158096
-
Sam McCall authored
This reverts commit 3353f7dd. Fixed test bug (unspecified order of arg evaluation)
-
alfredfo authored
Building helloworld.c currently errors with "undefined symbol: __llvm_libc_syscall" See: https://github.com/llvm/llvm-project/pull/67032
-
Ingo Müller authored
This reverts commit c122b972 but fixes tests that were added between submitting #69329 for review and landing it for the first time.
-
Caroline Concatto authored
As described in: https://github.com/ARM-software/acle/pull/257 Patch by : Sander de Smalen<sander.desmalen@arm.com> Reviewed By: dtemirbulatov Differential Revision: https://reviews.llvm.org/D151199
-
Ingo Müller authored
This reverts commit f6812257. That commit changed the organization of the tests of the transform dialect interpreter but did not take into account some tests that were added in the meantime.
-
serge-sans-paille authored
The _mm_cmpistri instruction can be used to quickly parse identifiers. With this patch activated, clang pre-processes <iostream> 1.8% faster, and sqlite3.c amalgametion 1.5% faster, based on time measurements and number of executed instructions as measured by valgrind. The introduction of an extra helper function in the regular case has no impact on performance, see https://llvm-compile-time-tracker.com/compare.php?from=30240e428f0ec7d4a6d1b84f9f807ce12b46cfd1&to=12bcb016cde4579ca7b75397762098c03eb4f264&stat=instructions:u --------- Co-authored-by:
serge-sans-paille <sguelton@mozilla.com>
-
Ingo Müller authored
A recent commit (#69190) broke the bazel builds. Turns out that Bazel uses symlinks for providing the test files, which the path expansion of the module loading mechanism did not handle correctly. This PR fixes that. It also reorganizes the tests better: It puts all `.mlir` files that are included by some other test into a common `include` folder. This greatly simplifies the definition of the dependencies between the different `.mlir` files in Bazel's `BUILD` file. The commit also adds a comment to all included files why these aren't tested themselves direclty and uses the `%{fs-sep}` expansion for paths more consistently. Finally, it uncomments all but one of the tests excluded in Bazel because they seem to run now. (The remaining one includes a file that it itself a test, so it would have to live *in* and *outside* of the `include` folder.) -
Lawrence Benson authored
Adds a new `__builtin_vectorelements()` function which returns the number of elements for a given vector either at compile-time for fixed-sized vectors, e.g., created via `__attribute__((vector_size(N)))` or at runtime via a call to `@llvm.vscale.i32()` for scalable vectors, e.g., SVE or RISCV V. The new builtin follows a similar path as `sizeof()`, as it essentially does the same thing but for the number of elements in vector instead of the number of bytes. This allows us to re-use a lot of the existing logic to handle types etc. A small side addition is `Type::isSizelessVectorType()`, which we need to distinguish between sizeless vectors (SVE, RISCV V) and sizeless types (WASM). This is the [corresponding discussion](https://discourse.llvm.org/t/new-builtin-function-to-get-number-of-lanes-in-simd-vectors/73911).
-
Nikita Popov authored
Add tests with argmem variations.
-
Guray Ozen authored
This PR adds `nvvm.stmatrix` Op to NVVM dialect. The Op collectively store one or more matrices across all threads in a warp to the given address location in shared memory.
-
Yeting Kuo authored
It's only beneficial when cond is setcc with integer equality condition code. For other case, it has same instruction count as the original.
-
Francesco Petrogalli authored
* `dump`, added in https://github.com/llvm/llvm-project/pull/68793 * `!repr`, added in https://github.com/llvm/llvm-project/pull/68716 The keyword `assert` was missing, so I have added that too.
-
Francesco Petrogalli authored
* `dump`, added in https://github.com/llvm/llvm-project/pull/68793 * `!repr`, added in https://github.com/llvm/llvm-project/pull/68716
-
Kazu Hirata authored
This patch fixes: compiler-rt/lib/builtins/cpu_model.c:590:5: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough] by adding a missing "break;".
-
Francesco Petrogalli authored
The keyword is intended for debugging purpose. It prints a message to stderr. This patch is based on code originally written by Adam Nemet, and on the feedback received by the reviewers in https://reviews.llvm.org/D157492.
-
Freddy Ye authored
-
Nikita Popov authored
replaceValuesPerBlockEntry() only handled simple and coerced load values, however the load may also be referenced by a select value. Additionally, I suspect that the previous code might have been incorrect if a load had an offset, as it always constructed the AvailableValue from scratch. Fixes https://github.com/llvm/llvm-project/issues/69301.
-