- Mar 14, 2024
-
-
Timm Bäder authored
If the variable is additionally const(expr), visit them like normal but omit the initializer.
-
LLVM GN Syncbot authored
-
Janek van Oirschot authored
Adds AMDGPU specific variadic MCExpr operations 'max' and 'or'. Relands #82022 with fixes
-
zhongyunde 00443407 authored
According the discussion, except the fmul itself, all its operands should also have reassoc flag. Add new API m_AllowReassoc to check reassoc flag
-
zhongyunde 00443407 authored
-
zhongyunde 00443407 authored
Try to transform the powi(X, Y) * X into powi(X, Y+1) with Ofast For this case, when the Y is 3, then powi(X, 4) is replaced by X2 = X * X; X2 * X2 in the further step. Similar to D109954, who requires reassoc. Fixes https://github.com/llvm/llvm-project/issues/69862.
-
Timm Bäder authored
It returns the local offset, not an std::optional.
-
Jie Fu authored
llvm-project/clang/lib/AST/Interp/InterpBuiltin.cpp:1332:21: error: unused variable 'SrcDesc' [-Werror,-Wunused-variable] const Descriptor *SrcDesc = Src.getFieldDesc(); ^ 1 error generated. -
Timm Bäder authored
This way we can use their address, which is necessary in some scenarios. This requires us to create different descriptors for dummy arrays so we can get the diagnostics right.
-
Alexey Bataev authored
This improves overall analysis for minbitwidth in SLP. It allows to analyze the trees with store/insertelement root nodes. Also, instead of using single minbitwidth, detected from the very first analysis stage, it tries to detect the best one for each trunc/ext subtree in the graph and use it for the subtree. Results in better code and less vector register pressure. Metric: size..text Program size..text results results0 diff test-suite :: SingleSource/Benchmarks/Adobe-C++/simple_types_loop_invariant.test 92549.00 92609.00 0.1% test-suite :: External/SPEC/CINT2017speed/625.x264_s/625.x264_s.test 663381.00 663493.00 0.0% test-suite :: External/SPEC/CINT2017rate/525.x264_r/525.x264_r.test 663381.00 663493.00 0.0% test-suite :: MultiSource/Benchmarks/Bullet/bullet.test 307182.00 307214.00 0.0% test-suite :: External/SPEC/CFP2017speed/638.imagick_s/638.imagick_s.test 1394420.00 1394484.00 0.0% test-suite :: External/SPEC/CFP2017rate/538.imagick_r/538.imagick_r.test 1394420.00 1394484.00 0.0% test-suite :: External/SPEC/CFP2017rate/510.parest_r/510.parest_r.test 2040257.00 2040273.00 0.0% test-suite :: External/SPEC/CFP2017rate/526.blender_r/526.blender_r.test 12396098.00 12395858.00 -0.0% test-suite :: External/SPEC/CINT2006/445.gobmk/445.gobmk.test 909944.00 909768.00 -0.0% SingleSource/Benchmarks/Adobe-C++/simple_types_loop_invariant - 4 scalar instructions remain scalar (good). Spec2017/x264 - the whole function idct4x4dc is vectorized using <16 x i16> instead of <16 x i32>, also zext/trunc are removed. In other places last vector zext/sext removed and replaced by extractelement + scalar zext/sext pair. MultiSource/Benchmarks/Bullet/bullet - reduce or <4 x i32> replaced by reduce or <4 x i8> Spec2017/imagick - Removed extra zext from 2 packs of the operations. Spec2017/parest - Removed extra zext, replaced by extractelement+scalar zext Spec2017/blender - the whole bunch of vector zext/sext replaced by extractelement+scalar zext/sext, some extra code vectorized in smaller types. Spec2006/gobmk - fixed cost estimation, some small code remains scalar. Original Pull Request: https://github.com/llvm/llvm-project/pull/84334 The patch has the same functionality (no test changes, no changes in benchmarks) as the original patch, just has some compile time improvements + fixes for xxhash unittest, discovered earlier in the previous version of the patch. Reviewers: Pull Request: https://github.com/llvm/llvm-project/pull/84536 -
Timm Bäder authored
We create dummy descriptors for variables other than parameters these days.
-
Timm Bäder authored
-
Timm Bäder authored
-
Michael Maitland authored
We don't model the early vs late ALU so we just need to remove usage of SiFivePipeA for these instructions.
-
Michael Maitland authored
-
Timm Bäder authored
This doesn't happen in C++ since it will instead call the struct's copy constructor. However, in C, this needs to work.
-
Ingo Müller authored
This allows to define custom splitters, which is interesting for non-MLIR inputs and outputs to `mlir-translate`. For example, one may use `; -----` as a splitter of `.ll` files. The splitters are now passed as arguments into `splitAndProcessBuffer`, the input splitter defaulting to the previous default (`// -----`) and the output splitter defaulting to the empty string, which also corresponds to the previous default. The behavior of the input split marker should not change at all; however, outputs now have one new line *more* than before if there is no splitter (old: `insertMarkerInOutput = false`, new: `outputSplitMarker = ""`) and one new line *less* if there is one. The value of the input splitter is exposed as a command line options of `mlir-translate` and other tools as an optional value to the previously existing flag `-split-input-file`, which defaults to the default splitter if not specified; the value of the output splitter is exposed with the new `-output-split-marker`, which default to the empty string in `mlir-translate` and the default splitter in the other tools. In short, the previous usage or omission of the flags should result in previous behavior (modulo the new lines mentioned before).
-
Simon Pilgrim authored
Revert 4fef8c75 "[X86] splitVectorOp - share the same SDLoc argument instead of recreating it over and over again." This appears to have broken the clang-with-thin-lto-ubuntu buildbot somehow (unconfirmed but its a likely candidate)
-
Sergio Afonso authored
-
Timm Bäder authored
-
mahesh-attarde authored
Remove Expensive option copy and delete copy assignment
-
serge-sans-paille authored
Blocking that signal causes inter-blocking for profilers that monitor threads through that signal. Fix #83844 and #83561
-
Simon Pilgrim authored
-
Oleg Shyshkov authored
mlir/include/mlir/Target/Cpp/CppEmitter.h:27:45: error: unknown type name 'raw_ostream'; did you mean 'llvm::raw_ostream'? 27 | LogicalResult translateToCpp(Operation *op, raw_ostream &os, | ^~~~~~~~~~~ | llvm::raw_ostream -
Simon Pilgrim authored
-
Simon Pilgrim authored
[Support] KnownBitsTest - don't bother creating lambdas in testBinaryOpExhaustive callbacks if we can just use the raw KnownBits/APIntOps function reference. NFCI.
-
Stephen Tozer authored
This patch changes DPValue::filter to be a non-member method filterDbgVars. There are two reasons for this: firstly, the name of DPValue is about to change to DbgVariableRecord, which will result in every `for` loop that uses DPValue::filter to require a line break. This is a small thing, but it makes the rename patch more difficult to review, and is just generally more awkward for what is a fairly common loop. Secondly, the intent is to later break up the DPValue class into subclasses, at which point it would be better to have a non-member function that allows template arguments for the cases we want to filter with greater specificity.
-
Thorsten Schütt authored
Perform the requested arithmetic and produce a carry output in addition to the normal result. Clang has them as builtins (__builtin_add_overflow_p). The middle end has intrinsics for them (sadd_with_overflow). AArch64: ADDS Add and set flags On Neoverse V2, they run at half the throughput of basic arithmetic and have a limited set of pipelines.
-
Tim Northover authored
It's useful to provide an indicator code with the trap, which the generic __builtin_trap can't do. asm("brk #N") is an option, but following that with a __builtin_unreachable() leads to two traps when the compiler doesn't know the block can't return. So compiler support like this is useful. -
Stephen Tozer authored
This patch adds some small updates to the LLVM documentation regarding DbgRecords to accurately describe the current class structure. There are some more refactorings to come, so this isn't intended to be the final document update, but it covers the immediate task of updating references to DPValue that really refer to DbgRecord.
-
Florian Hahn authored
Update AnyOf reduction code generation to only keep track of the AnyOf property in a boolean vector in the loop, only selecting either the new or start value in the middle block. The patch incorporates feedback from https://reviews.llvm.org/D153697. This fixes the #62565, as now there aren't multiple uses of the start/new values. Fixes https://github.com/llvm/llvm-project/issues/62565 PR: https://github.com/llvm/llvm-project/pull/78304
-
Marius Brehler authored
-
Nikolas Klauser authored
This also moves `tuple_size_v` into `tuple_size` as a drive-by.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
-
Carlos Alberto Enciso authored
Add support for the WebAssembly binary format and be able to generate logical views. https://github.com/llvm/llvm-project/issues/69181 The README.txt includes information about how to build the test cases.
-
Atousa Duprat authored
Supports both signed and unsigned expansions. SelectionDAG now calls the APInt implementation of these functions. Fixes #84211.
-
Vyacheslav Levytskyy authored
This PR adds type inference of function parameters by call instances. Two use cases that demonstrate the problem are added.
-
Marius Brehler authored
-
Nemanja Ivanovic authored
Another instance where we produce an instruction that defines a vreg with an i32 value.
-