- Dec 02, 2023
-
-
Mircea Trofin authored
Opcode value change.
-
Shraiysh authored
This patch addresses the concern about multiple devices and also adds more tests for `map(to:)`, `map(from:)` and named common blocks.
-
Youngsuk Kim authored
Users should migrate to IRBuilderBase::getPtrTy.
-
cor3ntin authored
https://wiki.edg.com/pub/Wg21kona2023/StrawPolls/p2308r1.html This implements P2308R1 as a DR and resolves CWG2459, CWG2450 and CWG2049. Fixes #73666 Fixes #58434 Fixes #41227 Fixes #49978 Fixes #36296
-
Jon Chesterfield authored
The plugin checks the values of HSA_AMD_INTERFACE_VERSION_* so we now set them to something safe in the header.
-
Dmitri Gribenko authored
Revert "Reland [X86] With large code model, put functions into .ltext with large section flag (#73037)" This reverts commit 4bf8a688. This commit seems to be breaking the semantics of the ObjectFile::isSectionText method, which breaks numba/llvmlite bindings.
-
Ramkumar Ramachandra authored
Follow up on 9468de48 (TargetInstrInfo: make getOperandLatency return optional (NFC)) to squelch a signedness warning on MSVC, reported by Simon Pilgrim.
-
- Dec 01, 2023
-
-
Daniel Grumberg authored
[clang][ExtractAPI] Ensure LocationFileChecker doesn't try to traverse VFS when determining file path (#74071) As part of https://reviews.llvm.org/D154130 the logic of LocationFileChecker changed slightly to try and get the absolute external file path instead of the name as requested when the file was openened which would be before VFS mappings in our usage. Ensure that we only check against the name as requested instead of trying to generate the external canonical file path. rdar://115195433
-
Jon Roelofs authored
When we lower calls, the sequence of argument copy-to-reg nodes are glued to the smstart. In the InstrEmitter, these glued copies are turned into implicit defs, since the actual call instruction uses those physregs, resulting in the register allocator adding unnecessary copies of regs that are preserved anyway.
-
Spenser Bauman authored
The lowering of tosa.conv2d produces an illegal tensor.empty operation where the number of inputs do not match the number of dynamic dimensions in the output type. The fix is to base the generation of tensor.dim operations off the result type of the conv2d operation, rather than the input type. The problem and fix are very similar to this fix https://github.com/llvm/llvm-project/pull/72724 but for convolution.
-
Spenser Bauman authored
The current lowering of tosa.fully_connected produces a linalg.matmul followed by a linalg.generic to add the bias. The IR looks like the following: %init = tensor.empty() %zero = linalg.fill ins(0 : f32) outs(%init) %prod = linalg.matmul ins(%A, %B) outs(%zero) // Add the bias %initB = tensor.empty() %result = linalg.generic ins(%prod, %bias) outs(%initB) { // add bias and product } This has two down sides: 1. The tensor.empty operations typically result in additional allocations after bufferization 2. There is a redundant traversal of the data to add the bias to the matrix product. This extra work can be avoided by leveraging the out-param of linalg.matmul. The new IR sequence is: %init = tensor.empty() %broadcast = linalg.broadcast ins(%bias) outs(%init) %prod = linalg.matmul ins(%A, %B) outs(%broadcast) In my experiments, this eliminates one loop and one allocation (post bufferization) from the generated code. -
Nikita Popov authored
My initial patch contained a typo, resulting in the wrong value being checked for non-negativeness. ----- If the lshr operand is non-negative, we can treat it the same way as an ashr. Ideally we would represent this as "lshr nneg", but for now just perform the necessary ValueTracking query. Proof: https://alive2.llvm.org/ce/z/Ahg4ri
-
Nikita Popov authored
-
Spenser Bauman authored
TOSA operators consumed by non-TOSA ops generally do not have their types inferred, as that would alter the types expected by their consumers. This prevents type refinement on many TOSA operators when the IR contains a mix of dialects. This change modifies tosa-infer-shapes to update the types of all TOSA operators during inference. When a consumer of that TOSA op is not safe to update, a tensor.cast is inserted back to the original type. This behavior is similar to how TOSA ops consumed by func.return are handled. This allows for more type refinement of TOSA ops, and the additional tensor.cast operators may be removed by later canonicalizations.
-
Nikita Popov authored
This reverts commit b92693ac. I've made a silly typo in the condition. Will reapply the corrected version.
-
Quinn Dawkins authored
This does the same as #72142 for vector.transfer_write. Previously the pattern would silently drop the mask.
-
Nikita Popov authored
If the lshr operand is non-negative, we can treat it the same way as an ashr. Ideally we would represent this as "lshr nneg", but for now just perform the necessary ValueTracking query. Proof: https://alive2.llvm.org/ce/z/Ahg4ri
-
Nikita Popov authored
-
Adam Paszke authored
…ation The previous code was technically incorrect in that the type indicated that the memref only has 1 dimension, while the code below was happily dereferencing the size array out of bounds. Now, if the compiler doesn't get too smart about optimizations, this code *might even work*. But, if the compiler realizes that the array has 1 element it might starrt doing silly things. This generates a specialization per each supported rank, making sure we don't do any UB.
-
Nikita Popov authored
In order to use SQ inside of these. There doesn't seem to be any strong need for these to be static.
-
Matthew Devereau authored
See https://github.com/ARM-software/acle/pull/217 Patch by: Kerry McLaughlin kerry.mclaughlin@arm.com
-
Benjamin Maxwell authored
This folds transpose(shape_cast) into a new shape_cast, when the transpose just permutes a unit dim from the result of the shape_cast. Example: ``` %0 = vector.shape_cast %vec : vector<[4]xf32> to vector<[4]x1xf32> %1 = vector.transpose %0, [1, 0] : vector<[4]x1xf32> to vector<1x[4]xf32> ``` Folds to: ``` %0 = vector.shape_cast %vec : vector<[4]xf32> to vector<1x[4]xf32> ``` This is an (alternate) fix for lowering matmuls to ArmSME.
-
Louis Dionne authored
This reverts commit 61aef978, which broke the CI on GCC.
-
Vlad Serebrennikov authored
This patch continues the work started with ea5b1ef0. See that commit and its corresponding PR for details.
-
Eleanor Bonnici authored
Follow-up on https://github.com/llvm/llvm-project/pull/72873/ When ADR/LDR instructions reference a label in a different section, the offset is not known until link time, however, the assembler assumes it can resolve them in some cases. The previous patch addressed the issue for most LDR instructions, focusing on little-endian targets. This patch addresses the remaining work for ADRs and big-endian targets.
-
Nikita Popov authored
Extract a function and call it with both operand orders, so that we don't have to explicitly commute every single pattern.
-
Guillaume Chatelet authored
-
Guillaume Chatelet authored
To make it consistent with https://github.com/llvm/llvm-project/pull/73948 and https://github.com/llvm/llvm-project/pull/73950
-
Guillaume Chatelet authored
-
Dominik Adamski authored
Libomptarget cannot be build because of the recent refactoring introduced in patch 148dec9f : [OpenMP][NFC] Separate Envar (environment variable) handling (#73994) That patch moved handling of environment variables from libomptarget library. That's why we don't need usage of "llvm::omp::target" namespace if we handle environment variables.
-
Paul Walker authored
DenseMapAPIntKeyInfo looks like a redundant definition because it mirrors the default used by DenseMap when not specified. Replacing DenseMapAPFloatKeyInfo with a specialisation of DenseMapInfo allows DenseMap<T> to be more easily used when T is an aggregate type containing an APFloat.
-
Simon Tatham authored
This allows a YAML-based multilib configuration to specify explicitly that a subset of its library directories are alternatives to each other, i.e. at most one of that subset should be selected. So if you have multiple sysroots each including a full set of headers and libraries, you can mark them as members of the same mutually exclusive group, and then you'll be sure that only one of them is selected, even if two or more are compatible with the compile options. This is particularly important in multilib setups including the libc++ headers, where selecting the include directories from two different sysroots can cause an actual build failure. This occurs when including <stdio.h>, for example: libc++'s stdio.h is included first, and will try to use `#include_next` to fetch the underlying libc's version. But if there are two include directories from separate multilibs, then both of their C++ include directories will end up on the include path first, followed by both the C directories. So the `#include_next` from the first libc++ stdio.h will include the second libc++ stdio.h, which will do nothing because it has the same include guard macro, and the libc header won't ever be included at all. If more than one of the options in an exclusive group matches the given flags, the last one wins. The syntax for specifying this in multilib.yaml is to define a Groups section in which you specify your group names, and for each one, declare it to have Type: Exclusive. (This reserves space in the syntax for maybe adding other group types later, such as a group of mutually _dependent_ things that you must have all or none of.) Then each Variant record that's a member of a group has a Group: property giving that group's name.
-
Shivam Gupta authored
The rendered document is not correctly indentated because of this space.
-
Oleksandr "Alex" Zinenko authored
-
Ramkumar Ramachandra authored
getOperandLatency has the following behavior: it returns -1 as a special value, negative numbers other than -1 on some target-specific overrides, or a valid non-negative latency. This behavior can be surprising, as some callers do arithmetic on these negative values. Change the interface of getOperandLatency to return a std::optional<unsigned> to prevent surprises in callers. While at it, change the interface of getInstrLatency to return unsigned instead of int. This change was inspired by a refactoring in TargetSchedModel::computeOperandLatency.
-
Nikita Popov authored
If both icmps have the same operands and the RHS is constant, we would currently go into the isImpliedCondMatchingOperands() code path, instead of the isImpliedCondCommonOperandWithConstants() path. Both are correct, but the latter can produce more accurate results if the implication is dependent on the sign.
-
Nikita Popov authored
-
Nikita Popov authored
Make sure %x does not get folded to "or disjoint %x, %x" without dropping the flag, as this would be a derefinement.
-
Nikita Popov authored
The absorption case is already handled correctly, but the idempentence case is not.
-
Vlad Serebrennikov authored
-