- Aug 31, 2023
-
-
Philip Reames authored
In particular, at mixed LMULS, high LMULS, and types which require splitting.
-
Mikhail Goncharov authored
warning was updated in 92023b15
-
Ben Langmuir authored
If there is no output filename we should not assert when writing output for -MJ. Differential Revision: https://reviews.llvm.org/D159016
-
Andrzej Warzynski authored
Just a small follow-up for https://reviews.llvm.org/D159122
-
Arthur Eubanks authored
-
Craig Topper authored
Only pass it +unaligned-scalar-mem/-unaligned-scalar-mem if the user has passed one of the alignment options. This allows us to add unaligned-scalar-mem as a feature on CPUs that support it. Reviewed By: wangpc Differential Revision: https://reviews.llvm.org/D159145
-
Fangrui Song authored
For function multi-versioning using the target or target_clones function attributes, currently we incorrectly set comdat for internal linkage resolvers. This is problematic for ELF linkers as GRP_COMDAT deduplication will kick in even with STB_LOCAL signature (https://groups.google.com/g/generic-abi/c/2X6mR-s2zoc "GRP_COMDAT group with STB_LOCAL signature"). In short, two `__attribute((target_clones(...))) static void foo()` in two translation units will be deduplicated. Fix this. Fix #65114 Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D158963
-
Anton Rydahl authored
The motivation for this patch is that many code bases use exception handling. As GPUs are not expected to support exception handling in the near future, we can experiment with compiling the code for GPU targets anyway. This will allow us to run the code, as long as no exception is thrown. The overall idea is very simple: - If a throw expression is compiled to AMDGCN or NVPTX, it is replaced with a trap during code generation. - If a try/catch statement is compiled to AMDGCN or NVPTX, we generate code for the try statement as if it were a basic block. With this patch, the compilation of the following example ``` int gaussian_sum(int a,int b){ if ((a + b) % 2 == 0) {throw -1;}; return (a+b) * ((a+b)/2); } int main(void) { int gauss = 0; #pragma omp target map(from:gauss) { try { gauss = gaussian_sum(1,100); } catch (int e){ gauss = e; } } std::cout << "GaussianSum(1,100)="<<gauss<<std::endl; #pragma omp targe... -
Ying Yi authored
An execute-only target disallows data access to code sections. -fsanitize=function and -fsanitize=kcfi instrument indirect function calls to load a type hash before the function label. This results in a non-execute access to the code section and a runtime error. To solve the issue, -fsanitize=function should not be included in any check group (e.g. undefined) on an execute-only target. If a user passes -fsanitize=undefined, there is no error and no warning. However, if the user explicitly passes -fsanitize=function or -fsanitize=kcfi on an execute-only target, an error will be emitted. Fixes: https://github.com/llvm/llvm-project/issues/64931. Reviewed By: MaskRay, probinson, simon_tatham Differential Revision: https://reviews.llvm.org/D158614
-
Philip Reames authored
This makes it much easier to understand which vector length is being considered when the same set of nodes are evaluated at multiple vector lengths.
-
Pravin Jagtap authored
Reviewed By: arsenm, #amdgpu Differential Revision: https://reviews.llvm.org/D157388
-
Pravin Jagtap authored
Expand-Atomic pass emits the CAS loop for FP operations which limits the optimizations offered by atomic optimizer. Moving atomic optimizer before expand-atomics allows better codegen. Reviewed By: arsenm, #amdgpu Differential Revision: https://reviews.llvm.org/D157265
-
- Aug 30, 2023
-
-
Pravin Jagtap authored
Reduction and Scan are implemented using `Iterative` and `DPP` strategy for `float` type. Reviewed By: arsenm, #amdgpu Differential Revision: https://reviews.llvm.org/D156301
-
Ellis Hoag authored
This fixes a build error introduced by https://reviews.llvm.org/D153587
-
Matt Arsenault authored
Also picks up a few improvements (Some of the fcmp.ll test names imply they aren't quite testing what was intended. Checking the sign bit can't be performed with a compare to a 0). Much of the logic in here is the same as the class detection logic of fcmpToClassTest. We could unify more with a weaker version of fcmpToClassTest which returns implied classes rather than exact class-like compares. Also could unify more with detection of possible classes in non-splat vectors. One problem here is we now only perform folds that used to always work now require a context instruction. This is because fcmpToClassTest requires the parent function. Either fcmpToClassTest could tolerate a missing context function, or we could require passing in one to simplifyFCmpInst. Without this it's possible to hit the !isNan assert (which feels like an unnecessary assert). In any case, these cases don't appear in any tests. https://reviews.llvm.org/D151887
-
Matt Arsenault authored
This was working around the lack of operator| on FastMathFlags. We have that now which revealed the bug.
-
Matthew Voss authored
-
Mark de Wever authored
Fixes https://llvm.org/PR65011 Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D158940
-
Mikhail Goncharov authored
for 92023b15
-
Florian Hahn authored
-
Ellis Hoag authored
Extend `GlobPattern` to support brace expansions, e.g., `foo.{c,cpp}` as discussed in https://reviews.llvm.org/D152762#4425203. The high level change was to turn `Tokens` into a list that gets larger when we see a new brace expansion term. Then in `GlobPattern::match()` we must check against each token group. This is a breaking change since `{` will no longer match a literal without escaping. However, `\{` will match the literal `{` before and after this change. Also, from a brief survey of LLVM, it seems that `GlobPattern` is mostly used for symbol and path matching, which likely won't need `{` in their patterns. See https://github.com/devongovett/glob-match#syntax for a nice glob reference. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D153587 -
Mikhail R. Gadelha authored
This patch adds two new macros to setjmp (STORE, STORE_FP) and two new macros to longjmp (LOAD, LOAD_FP) that takes a register and a buff, then select the correct asm instruction for rv32 and rv64. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D158640
-
Amara Emerson authored
Differential Revision: https://reviews.llvm.org/D159097
-
Florian Hahn authored
-
Cyndy Ishida authored
* Check and emit out differences in rpath inputs * Prevent rpaths from being overwritten * Capture file path for tbd-v5
-
Matt Arsenault authored
Also improves undef handling https://reviews.llvm.org/D159006
-
Mikhail R. Gadelha authored
This patch changes the instruction in set_thread_ptr from ld to mv, as rv32 doesn't have the ld instruction, and mv is supported by both rv32 and rv64. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D159110
-
Marius Brehler authored
Reviewed By: simon-camp Differential Revision: https://reviews.llvm.org/D159195
-
Jie Fu authored
/data/home/jiefu/llvm-project/flang/lib/Optimizer/CodeGen/CodeGen.cpp:2905:20: error: unused function 'attributeTypeIsCompatible' [-Werror,-Wunused-function] static inline bool attributeTypeIsCompatible(mlir::MLIRContext *ctx, ^ 1 error generated. -
Mikhail R. Gadelha authored
This patch changes a test case that tests for overflow when time_t is 32-bit long, however, it was checking size_t instead of time_t. This in on par with other testcases that correctly check the size of time_t (asctime_test.cpp, gmtime_r_test.cpp and gmtime_test.cpp). Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D159113
-
Luke Lau authored
From the discussion in https://reviews.llvm.org/D158853, moving the truncate into the splat helps more splatted scalar operands get selected on RISC-V, and also avoids the need for splat_vector_parts on RV32. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D159147
-
Matt Arsenault authored
-
Leandro Lupori authored
Add support for representing complex array constants with MLIR dense attribute. This improves compile time and greatly reduces memory usage of programs with large complex array constants. Fixes https://github.com/llvm/llvm-project/issues/63610 Reviewed By: vzakhari Differential Revision: https://reviews.llvm.org/D155951
-
Benjamin Maxwell authored
0-D vectors are now supported, so the special case of returning the just the element type can now be removed. A few callers that relied on the old behaviour have been updated. Reviewed By: awarzynski, nicolasvasilache Differential Revision: https://reviews.llvm.org/D159122
-
Andrzej Warzynski authored
Updates optimization-remark.f90. Makes sure that every RUN line: * discords the actual output of the compilation (we only care about the optimisation remarks), * re-uses the same definition of the output (better code re-use), * doesn't generate object files - no need to use `-c` if `-emit-llvm` is sufficient. Differential Revision: https://reviews.llvm.org/D158951
-
Matthias Springer authored
Do not inline IR with multiple blocks into ops that may not support unstructured control flow. This fixes #64978. Differential Revision: https://reviews.llvm.org/D159072
-
Matthias Springer authored
`SingleBlockImplicitTerminator` is now a combination of two traits: `SingleBlock` and `SingleBlockImplicitTerminatorImpl` (the original `SingleBlockImplicitTerminator`). This change makes it possible to check if the `SingleBlock` op trait is implemented. Until now, `Operation::hasTrait<OpTrait::SingleBlock>()` returned `false` for ops that implement `SingleBlockImplicitTerminator`. Differential Revision: https://reviews.llvm.org/D159078
-
Louis Dionne authored
This patch adds a CI job for Clang on Windows that is separate from the monolithic job that gets added automatically via the Phabricator integration with Buildkite. This way, we will retain the Windows testing for Clang when we move to GitHub Pull Requests. Differential Revision: https://reviews.llvm.org/D158995
-
Sander de Smalen authored
__arm_new_za is a declaration attribution, not a type attribute, and is therefore not part of the interface of a function.
-
Tobias Gysi authored
Change the LLVM dialect to LLVM IR translation to convert the alias scope attributes lazily to LLVM IR metadata. Previously, the alias scopes have been translated upfront walking the alias scopes of operations that implement the AliasAnalysisOpInterface. As a result, the translation of a module that contains only a noalias scope intrinsic failed, since its alias scope attribute has not been translated due to the intrinsic not implementing AliasAnalysisOpInterface. Reviewed By: zero9178 Differential Revision: https://reviews.llvm.org/D159187
-