- Dec 16, 2023
-
-
SingleAccretion authored
It is beneficial to preallocate a certain number of pages in the linear memory (i. e. use the "minimum" field of WASM memories) so that fewer "memory.grow"s are needed at startup. So far, the way to do that has been to pass the "--initial-memory" option to the linker. It works, but has the very significant downside of requiring the user to know the size of static data beforehand, as it must not exceed the number of bytes passed-in as "--initial-memory". The new "--initial-heap" option avoids this downside by simply appending the specified number of pages to static data (and stack), regardless of how large they already are. Ref: https://github.com/emscripten-core/emscripten/issues/20888.
-
Martin Storsjö authored
The llvm::sys::ExecuteAndWait function doesn't resolve the file to be executed from $PATH - i.e. it is similar to execv(), not execvp(). Due to this, specifying a --preprocessor argument to llvm-windres only worked if it specified an absolute path to the preprocessor executable. This was observed as one of the issues in https://github.com/msys2/MINGW-packages/pull/19157. Before d2fa6b69, this usage of --preprocessor seemed to work, because the first argument of Args[] was ignored and llvm-windres just executed the autodetected clang executable regardless. Also improve the error messages printed if preprocessing failed. (If the preprocessor executable was started but itself returned an error, we don't get any error string.)
-
Martin Storsjö authored
If passing the windres option --preprocessor, the default arguments "-E -xc -DRC_INVOKED" aren't passed. If these are passed explicitly by the user via --preprocessor-arg instead, we need to make sure that "-xc" is passed before the input filename, as this compiler/preprocessor option only has an effect on input files that follow it. This fixes one of the issues with llvm-windres observed in https://github.com/msys2/MINGW-packages/pull/19157.
-
Martin Storsjö authored
This allows avoiding including some stray DWARF sections (e.g. from toolchain provided files), when writing a PDB file. While that probably could be considered reasonable default behaviour, PDB writing and including DWARF sections are two entirely orthogonal concepts, and GNU ld (which can generate PDB files these days) does include DWARF unless -S/-s is passed, when creating a PDB.
-
Martin Storsjö authored
These allow tweaking what gets implied by /debug and /debug:dwarf.
-
Martin Storsjö authored
Most option handling is like it was before; the last /debug: option takes effect. However, the options /debug:dwarf or /debug:symtab don't reset all flags into the specific behaviour they chose before - e.g. if an earlier option enables writing a PDB, a later /debug:dwarf or /debug:symtab doesn't disable that. This allows combining these options with options for controlling PDB writing, for finetuning what is done.
-
Martin Storsjö authored
Don't treat the options as unique enum items, but more as flags that can be composed, like the /opt: options. This still only processes the last option on the command line though, so the behaviour should still remain exactly as it was, in all corner cases.
-
Martin Storsjö authored
This shouldn't have any user visible effect, but makes the logic within the linker implementation more explicit. Note how DWARF debug info sections were retained even if enabling a link with PDB info only; that behaviour is preserved.
-
Andrzej Warzyński authored
Updates the vectorisation of 1D depthwise convolution when flattening the channel dimension (introduced in #71918). In particular - how the convolution filter is "flattened". ATM, the vectoriser will use `vector.shape_cast`: ```mlir %b_filter = vector.broadcast %filter : vector<4xf32> to vector<3x2x4xf32> %sc_filter = vector.shape_cast %b_filter : vector<3x2x4xf32> to vector<3x8xf32> ``` This lowering is not ideal - `vector.shape_cast` can be convenient when it's folded away, but that's not happening in this case. Instead, this patch updates the vectoriser to use `vector.shuffle` (the overall result is identical): ```mlir %sh_filter = vector.shuffle %filter, %filter [0, 1, 2, 3, 0, 1, 2, 3] : vector<4xf32>, vector<4xf32> %b_filter = vector.broadcast %sh_filter : vector<8xf32> to vector<3x8xf32> ``` -
Arthur Eubanks authored
In #74514 and #74778 we marked various instrumentation-added sections as large. This causes an extra PT_LOAD segment if using the small code model. Since people using the small code model presumably aren't hitting relocation limits, disable this when using the small code model to avoid the extra segment. This uses Module::getCodeModel() which isn't necessarily reliable since it reads module metadata (which right now only the clang frontend sets), but it would be nice to get to a point where we reliably put this sort of information (e.g. PIC/code model/etc) in the IR. This requires duplicating the existing tests since opt/llc currently don't set these metadata. If we get to a point where they do set the code model metadata based on command line arguments then we can deduplicate these tests.
-
Valentin Clement (バレンタイン クレメン) authored
`baseAddr` is not used in `genBaseBoundsOps` just remove it.
-
Aiden Grossman authored
This patch adds in validation at two different levels that address annotations are page aligned. This is necessary as otherwise the mmap calls will fail as MAP_FIXED/MAP_FIXED_NOREPLACE require page aligned addresses. This happens silently in the subprocess. This patch adds validation at snippet parsing time to give feedback to the user and also adds asserts at code generation/address usage time to ensure that other users of the Exegesis APIs conform to the same requirements.
-
Florian Hahn authored
As suggested post-commit for a0022719, remove the stale comment, SetVector is no longer used here.
-
Reid Kleckner authored
Issue is covered by existing test llvm/test/Transforms/SLPVectorizer/RISCV/phi-const.ll See issue #75632 for ideas for how we could catch these more easily in the future.
-
Peiming Liu authored
-
Philip Reames authored
If we're lowering a fixed length vector load or store which happens to exactly VLEN in size (when VLEN is exactly known), we can use a whole register load or store instead of the unit strided variants. This doesn't require a vsetvli in some cases, allows additional flexibility of vsetvli cases in others, and doesn't have a runtime dependency on the value of VL.
-
Youngsuk Kim authored
Remove calls to CreatePointerCast which are just doing no-op ptr-to-ptr bitcasts. Opaque ptr cleanup effort (NFC).
-
Craig Topper authored
These test cases where intended to get a single vsetvli by using the vmv.s.x intrinsic with the same LMUL as the reduction. This works for FP, but does not work for integer. I believe #71501 will break this for FP too. Hopefully the vsetvli pass can be taught to fix this.
-
Thomas Preud'homme authored
-
LLVM GN Syncbot authored
-
Reid Kleckner authored
This Op<2> usage was missed in 1ee6ec2b, which replaced the third shuffle operand with a vector of integer mask constants. I noticed this when attempting to make changes to the layout of llvm::Value.
-
Mariusz Sikora authored
Co-authored-by:Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>
-
Nikolas Klauser authored
``` -------------------------------------------------------------------------- Benchmark old new -------------------------------------------------------------------------- bm_find<std::deque<char>>/1 6.06 ns 10.6 ns bm_find<std::deque<char>>/2 15.5 ns 10.6 ns bm_find<std::deque<char>>/3 19.0 ns 10.6 ns bm_find<std::deque<char>>/4 20.8 ns 10.6 ns bm_find<std::deque<char>>/5 22.0 ns 10.6 ns bm_find<std::deque<char>>/6 23.0 ns 10.5 ns bm_find<std::deque<char>>/7 24.8 ns 10.7 ns bm_find<std::deque<char>>/8 25.7 ns 10.6 ns bm_find<std::deque<char>>/16 28.3 ns 10.6 ns bm_find<std::deque<char>>/64 ...
-
- Dec 15, 2023
-
-
Benjamin Chetioui authored
…b052e.
-
Krzysztof Parzyszek authored
The function `instantiateVariable` in Bridge.cpp has the following code: ``` if (var.getSymbol().test( Fortran::semantics::Symbol::Flag::OmpThreadprivate)) Fortran::lower::genThreadprivateOp(*this, var); if (var.getSymbol().test( Fortran::semantics::Symbol::Flag::OmpDeclareTarget)) Fortran::lower::genDeclareTargetIntGlobal(*this, var); ``` Implement `handleOpenMPSymbolProperties` in OpenMP.cpp, move the above code there, and have `instantiateVariable` call this function instead. This would further separate OpenMP-related details into OpenMP.cpp. -
Benjamin Chetioui authored
…7dca9
-
Andrzej Warzyński authored
The new name better reflects what the variable represents.
-
Andrzej Warzyński authored
Refactor how the Fortran runtime libs are added to the linker invocation. This is a non-functional change.
-
Krzysztof Parzyszek authored
This is the first step towards exploiting `genEval` functionality from inside of OpenMP-generating functions. This follows discourse discussion: https://discourse.llvm.org/t/openmp-lowering-from-pft-to-fir/75263
-
Guillaume Chatelet authored
`StorageType` may be a `BigInt` under the hood. Initializing it with `-1` does not yields the maximum value.
-
Jessica Del authored
This is an experimental address space for strided buffers. These buffers can have structs as elements and a stride > 1. These pointers allow the indexed access in units of stride, i.e., they point at `buffer[index * stride]`. Thus, we can use the `idxen` modifier for buffer loads. We assign address space 9 to 192-bit buffer pointers which contain a 128-bit descriptor, a 32-bit offset and a 32-bit index. Essentially, they are fat buffer pointers with an additional 32-bit index.
-
Simon Pilgrim authored
[CodeGenPrepare] Remove unused TypePromotionTransaction::moveBefore to fix gcc Wunused-function warning. NFC.
-
Simon Pilgrim authored
-
Boian Petkantchin authored
Add verification and canonicalization for broadcast, gather, recv, reduce, scatter, send and shift. The canonicalizations only remove trivial collectives with empty mesh_axes attrubutes.
-
fel-cab authored
This reverts commit 47d9fbc0 . It creates a segmentation falt on SPEChpc soma on Frontier on a GPU for the kernel generate_new_beads Co-authored-by:
fel-cab <fel-cab@github.com>
-
Mariya Podchishchaeva authored
a01307a6 broke silencing of -Wmissing-field-initializers warnings in C for nested designators. This fixes the issue.
-
Mirko Brkušanin authored
-
Rafael Ubal authored
This feature had been marked as `TODO` in the `tensor.splat` documentation for a while. This MR includes: - Support for dynamically shaped tensors in the return type of `tensor.splat` with the syntax suggested in the `TODO` comment. - Updated op documentation. - Bufferization support. - Updates in op folders affected by the new feature. - Unit tests for valid/invalid syntax, valid/invalid folding, and lowering through bufferization. - Additional op builders resembling those available in `tensor.empty`.
-
Quinn Dawkins authored
When the concatenated dim is statically sized but the inputs are dynamically sized, reifyResultShapes must return the static shape. Fixes the implementation of the interface for tensor.concat in such cases.
-
Florian Hahn authored
As suggested post-commit for a0022719, replace unnecessary getNumUsers calls by boolean variable to indicate if users changed. Note that this also requires an early exit to detect the case where a value is replaced by itself.
-