- Jun 06, 2024
-
-
Matt Arsenault authored
There is simply way too much going on inside getNode. The complicated constant folding of vector handling works by looking for build_vector operands, and then tries to getNode the scalar element and then checks if constants were the result. As a side effect, this produces unused scalar operation nodes (previously, without flags). If the vector operation were later scalarized, it would find the flagless constant folding temporary and lose the flag. I don't think this is a reasonable way for constant folding to operate, but for now fix this by ensuring flags on the original operation are preserved in the temporary. This yields a clear code improvement for AMDGPU when f16 isn't legal. The Wasm cases switch from using a libcall to compare and select. We are evidently missing the fcmp+select to fminimum/fmaximum handling, but this would be further improved when that's handled. AArch64 also avoids the libcall, but looks worse and has a different call for some reason. -
Timm Bäder authored
We already assert that the given PC is in range and that the function has a body, so the SrcMap should generally never be empty. However, when generating destructors, we create quite a few instructions for which we have no source information, which may cause the previous assertion to fail. Return the end of the source map in this case.
-
Florian Hahn authored
Extra tests for https://github.com/llvm/llvm-project/pull/94610.
-
Vyacheslav Levytskyy authored
This PR is to add validation to the test case with get_image_array_size/get_image_dim calls (transcoding/check_ro_qualifier.ll). This test case didn't pass validation because of invalid emission of OpCompositeExtract instruction (Result Type must be the same type as Composite.). In order to fix the problem this PR improves type inference in general and partially addresses issues: * https://github.com/llvm/llvm-project/issues/91998 * https://github.com/llvm/llvm-project/issues/91997 A reproducer from the description of the latter issue is added as a new test case as a part of this PR.
-
Wei Zhao authored
Oryon is an ARM V8 AArch64 CPU from Qualcomm. --------- Co-authored-by:Wei Zhao <wezhao@qti.qualcomm.com>
-
Sayhaan Siddiqui authored
Create a new class and file for functions that update GDB index.
-
Spenser Bauman authored
Extend the folding ability of the RewriteAsConstant patterns to include tensor.pad operations on constants. The new pattern with constant fold tensor.pad operations which operate on tensor constants and have statically resolvable padding sizes/values. %init = arith.constant dense<[[6, 7], [8, 9]]> : tensor<2x2xi32> %pad_value = arith.constant 0 : i32 %0 = tensor.pad %init low[1, 1] high[1, 1] { ^bb0(%arg1: index, %arg2: index): tensor.yield %pad_value : i32 } : tensor<2x2xi32> to tensor<4x4xi32> becomes %cst = arith.constant dense<[[0, 0, 0, 0], [0, 6, 7, 0], [0, 8, 9, 0], [0, 0, 0, 0]]> : tensor<4x4xi32> Co-authored-by:Spenser Bauman <sabauma@fastmail>
-
Gábor Spaits authored
`unmerge_i64` and `unmerge_i32` were exactly the same test cases. This PR would fix that, so `unmerge_i32` would actually unmerge a 32 bit value into two 16 bit values.
-
Joachim authored
PR #75125 introduced upward propagation of some OMPT-related CMake variables. For stand-alone builds this results in a warning that `SCOPE_PARENT` has no meaning in a top-level directory.
-
Marianne Mailhot-Sarrasin authored
Co-authored-by:Marianne Mailhot-Sarrasin <marianne.mailhot-sarrasin@octasic.com>
-
Jie Fu authored
/llvm-project/llvm/lib/Target/NVPTX/NVVMIntrRange.cpp:33:12: error: private field 'SmVersion' is not used [-Werror,-Wunused-private-field] unsigned SmVersion; ^ 1 error generated. -
Haojian Wu authored
-
Graham Hunter authored
Adds an AArch64-specific version of isLSRCostLess, changing the relative importance of the various terms from the formulae being evaluated. This has been split out from my vscale-aware LSR work, see the RFC for reference: https://discourse.llvm.org/t/rfc-vscale-aware-loopstrengthreduce/77131
-
Haojian Wu authored
-
Alex MacLean authored
Revamp the NVVMIntrRange pass making the following updates: - Use range attributes over range metadata. This is what instcombine has move to for ranges on intrinsics in https://github.com/llvm/llvm-project/pull/88776 and it seems a bit cleaner. - Consider the `!"maxntid{x,y,z}"` and `!"reqntid{x,y,z}"` function metadata when adding ranges for `tid` srge instrinsics. This can allow for smaller ranges and more optimization. - When range attributes are already present, use the intersection of the old and new range. This complements the metadata change by allowing ranges to be shrunk when an intrinsic is in a function which is inlined into a kernel with metadata. While we don't call this more then once yet, we should consider adding a second call after inlining, once this has had a chance to soak for a while and no issues have arisen. I've also re-enabled this pass in the TM, it was disabled years ago due to "numerical discrepancies" https://reviews.llvm.org/D96166. In our testing we haven't seen any issues with adding ranges to intrinsics, and I cannot find any further info about what issues were encountered.
-
Joseph Huber authored
Summary: This reverts commit 574ab7e7.
-
Shilei Tian authored
-
Simon Pilgrim authored
IceLakeServer/SkylakeServer can only use Port01 for the FADD/FSUB stage Confirmed with uops.info + Agner
-
Simon Pilgrim authored
IceLakeServer was copying these from SkylakeServer, but integer HADD/SUB can now run on an extra port
-
Joseph Huber authored
Summary: Currently, we register images into a linear table according to the logical OpenMP device identifier. We then initialize all of these images as one block. This logic requires that images are compatible with *all* devices instead of just the one that it can run on. This prevents us from running on systems with heterogeneous devices (i.e. image 1 runs on device 0 image 0 runs on device 1). This patch reworks the logic by instead making the compatibility check a per-device query. We then scan every device to see if it's compatible and do it as they come.
-
Phoebe Wang authored
This fixes compile time regression after #93692.
-
Tom Stellard authored
This will be used for a new CI job that runs the static analyzer.
-
WÁNG Xuěruì authored
The test case is adapted from llvm/test/CodeGen/RISCV/fp16-promote.ll, because it covers some more IR patterns that ought to be common. Fixes #93894
-
Florian Hahn authored
Test cases inspired by https://github.com/llvm/llvm-project/issues/90417.
-
Krzysztof Parzyszek authored
There were a handlful of scope flags that were not handled in the dump function, which would then lead to an assert.
-
Krzysztof Parzyszek authored
Derived type components may use a given `Symbol` regardless of what parent objects they are a part of. Because of that, simply using a symbol address is not sufficient to determine object identity. Make the designator a part of the IdTy. To compare identities, when symbols are equal (and non-null), compare the designators.
-
Simon Pilgrim authored
Noticed while working on #94601
-
lntue authored
The conversion between _Float16 and long double will crash clang-11 on aarch64. This is fixed in clang-12: https://godbolt.org/z/8ceT9454c
-
Nikita Popov authored
clangAnalysis is already being pulled in via clang_target_link_libraries(). Also listing it in LINK_LIBS means that we'll link both against the static libraries and the shared libclang-cpp.so library if CLANG_LINK_CLANG_DYLIB is enabled, and waste time on unnecessary LTO.
-
David Green authored
VPT blocks that do not produce an interesting 'output' (like a stored value or reduction result), do not need to be predicated on vctp for the whole loop to be tail-predicated. Just producing results for the valid tail predication lanes should be enough.
-
Jie Fu authored
/llvm-project/llvm/lib/Transforms/IPO/ExpandVariadics.cpp:426:14: error: unused variable 'OriginalFunctionIsDeclaration' [-Werror,-Wunused-variable] const bool OriginalFunctionIsDeclaration = OriginalFunction->isDeclaration(); ^ /llvm-project/llvm/lib/Transforms/IPO/ExpandVariadics.cpp:445:13: error: unused variable 'VariadicWrapperDefine' [-Werror,-Wunused-variable] Function *VariadicWrapperDefine = ^ 2 errors generated. -
Jon Chesterfield authored
-
Haojian Wu authored
Remove some #includes in ExpandVariadics.cpp as it will cause layering violations.
-
Thorsten Schütt authored
We need them for scalable address calculation and legal scalable addressing modes.
-
LLVM GN Syncbot authored
-
Kerry McLaughlin authored
Adds a calling convention for calls to the `__arm_get_current_vg` support routine, which preserves X1-X15, X19-X29, SP, Z0-Z31 & P0-P15. See https://github.com/ARM-software/abi-aa/pull/263
-
bgra8 authored
Revert "Reapply "[Clang][CWG1815] Support lifetime extension of temporary created by aggregate initialization using a default member initializer" (#92527)" (#94600) Reverting due to https://github.com/llvm/llvm-project/pull/92527#issuecomment-2149120420. This reverts commit f049d72a . Co-authored-by:
Bogdan Graur <bgraur@google.com>
-
Chuanqi Xu authored
This reverts commit 97c866f6. This fails on 32bit machines. See https://github.com/llvm/llvm-project/pull/92083
-
Timm Bäder authored
-
bgra8 authored
Revert "[Analyzer][CFG] Correctly handle rebuilt default arg and default init expression (#91879)" (#94597) This depends on https://github.com/llvm/llvm-project/pull/92527 which needs to be reverted due to https://github.com/llvm/llvm-project/pull/92527#issuecomment-2149120420. This reverts commit 905b402a . Co-authored-by:
Bogdan Graur <bgraur@google.com>
-