- Feb 06, 2020
-
-
Stephen Neuendorffer authored
Summary: MLIRAnalysis depended on MLIRVectorOps MLIRVectorOps depended on MLIRAnalysis for Loop information. Both of these can be solved by factoring out libraries related to loop analysis into their own library. The new MLIRLoopAnalysis might be better off with the Loop Dialect in the future. Reviewers: nicolasvasilache, rriddle!, mehdi_amini Reviewed By: mehdi_amini Subscribers: Joonsoo, vchuravy, merge_guards_bot, mgorny, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73655
-
Stephen Neuendorffer authored
Summary: This makes it consistent with other test passes. Reviewers: rriddle Reviewed By: rriddle Subscribers: merge_guards_bot, mgorny, mehdi_amini, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, aartbik, liufengdb, Joonsoo, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74068
-
Stephen Neuendorffer authored
Summary: This breaks a cyclic library dependency where MLIRPass used the verifier in MLIRAnalysis, but MLIRAnalysis also contained passes used for testing. The presence of the test passes here is archaeology, predating test/lib/Transform. Reviewers: rriddle Reviewed By: rriddle Subscribers: merge_guards_bot, mgorny, mehdi_amini, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74067
-
LLVM GN Syncbot authored
-
Nico Weber authored
This reverts commit fc62b36a. Breaks tests on mac: http://45.33.8.238/mac/7301/step_11.txt
-
shafik authored
Currently when generating debug-info for a BlockDecl we are setting the Name to the mangled name and not setting the LinkageName. This means we see the mangled name for block invcations ends up in DW_AT_Name and not in DW_AT_linkage_name. This patch fixes this case so that we also set the LinkageName as well. Differential Revision: https://reviews.llvm.org/D73282
-
Jan Korous authored
This reverts commit 05807089.
-
Kostya Kortchinsky authored
Summary: I tried to move the `madvise` calls outside of one of the secondary mutexes, but this backfired. There is situation when a low release interval is set combined with secondary pressure that leads to a race: a thread can get a block from the cache, while another thread is `madvise`'ing that block, resulting in a null header. I changed the secondary race test so that this situation would be triggered, and moved the release into the cache mutex scope. Reviewers: cferris, pcc, eugenis, hctim, morehouse Subscribers: jfb, #sanitizers, llvm-commits Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D74072
-
Shu-Chun Weng authored
contractCrossBankCopyIntoStore() finds the instruction defines the source register and uses its output to replace the register. There are, however, instructions that have multiple outputs, e.g. G_UNMERGE_VALUES. Current implementation hardcodes to operand 0 and has no way of knowing which output should be used. This change adds another function to directly return the register that is the source of the register and use that for folding. This fixes https://bugs.llvm.org/show_bug.cgi?id=44783 Differential Revision: https://reviews.llvm.org/D74005
-
David Green authored
-
River Riddle authored
Summary: This details the structure of the format, it's requirements, and gives a few examples. Differential Revision: https://reviews.llvm.org/D73983
-
Fangrui Song authored
-
Matt Arsenault authored
This is safer in case anyone tries to run MI optimization passes on pre-selected MIR. If there turns out to be a real reason to do this, we might need to add separate convergent intrinsic opcodes.
-
LLVM GN Syncbot authored
-
Nick Desaulniers authored
Summary: The output from llvm-reduce still has significantly more attributes than bugpoint does. Teach llvm-reduce to remove attributes. Reviewers: diegotf, dblaikie, george.burgess.iv Subscribers: mgorny, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73853
-
Jessica Paquette authored
This implements walking over G_ASHR in the same way as `getTestBitOperand` in AArch64ISelLowering. ``` (tbz (ashr x, c), b) -> (tbz x, b+c) or (tbz x, msb) if b+c is > # bits in x ``` Differential Revision: https://reviews.llvm.org/D73933
-
Christopher Tetreault authored
This reverts commit a0544103, reapplying commit 31574d38
-
Petr Hosek authored
These don't build on MSVC at the moment, so filter these out altogether from the list of runtimes and print a warning. Differential Revision: https://reviews.llvm.org/D73812
-
Matt Arsenault authored
These have a better chance of combining with other operations and are currently much better supported than G_EXTRACT.
-
Jessica Paquette authored
(1) The check needs to be on the 0th operand of whatever we're folding (2) Checks for validity should happen before we change the bit Fixes a bug which caused MultiSource/Applications/JM/lencod to fail at -O3. Differential Revision: https://reviews.llvm.org/D74002
-
Matt Arsenault authored
Rewrite the result register pair into the expected sinigle register format in the legalizer. I'm also operating under the assumption that TFE doesn't apply to stores or atomics, but don't know if this is true or not.
-
Jonathan Coe authored
Summary: Skip access specifiers before record definitions when deciding whether or not to wrap lines so that C# class definitions do not get wrapped into a single line. Reviewers: krasimir, MyDeveloperDay Reviewed By: krasimir Tags: #clang-format Differential Revision: https://reviews.llvm.org/D74050
-
Hiroshi Yamauchi authored
Summary: Tune the profile threshold flag value for instrumentation PGO based on internal benchmarks. Also, add flags to allow profile guided size optimizations for non-cold code to be enabled separately for instrumentation and sample PGSO. Neither changes the default behavior (yet) as it's disabled for non-cold code. Reviewers: davidxl Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D72937
-
Michał Górny authored
Pass the correct library directory from CMake to dotest.py when linking liblldb, instead of trying to reconstruct the path from executable path. This fixes link failures on platforms having non-null LLVM_LIBDIR_SUFFIX. Differential Revision: https://reviews.llvm.org/D73767
-
Matt Arsenault authored
The mask results of these should be uniform. The trickier part is the dummy booleans used as IR glue need to be treated as divergent. This should make the divergence analysis results correct for the IR the DAG is constructed from. This should allow us to eliminate requiresUniformRegister, which has an expensive, recursive scan over all users looking for control flow intrinsics. This should avoid recent compile time regressions.
-
Jonathan Coe authored
Summary: Merge '[', 'target' , ':' into a single token for C# attributes to prevent the target from being seen as a label. Reviewers: MyDeveloperDay, krasimir Reviewed By: krasimir Tags: #clang-format Differential Revision: https://reviews.llvm.org/D74043
-
Jordan Rupprecht authored
-
Kazu Hirata authored
This reverts commit 41784bed. Since the original revision ead81592, this revision fixes three issues: - This revision fixes the Windows build. My original patch improperly copied EH pads on Windows. This patch disregards jump threading opportunities having to do with EH pads. - This revision fixes jump threading to a wrong destination. Specifically, my original patch treated any Constant other than 0 as 1 while evaluating the branch condition. This bug led to treating constant expressions like: icmp ugt i8* null, inttoptr (i64 4 to i8*) to "true". This patch fixes the bug by calling isOneValue. - This revision fixes the cost calculation of two basic blocks being threaded through. Note that getJumpThreadDuplicationCost returns "(unsigned)~0" for those basic blocks that cannot be duplicated. If we sum of two return values from getJumpThreadDuplicationCost, we could have an unsigned overflow like: (unsigned)~0 + 5 = 4 and mistakenly determine that it's safe and profitable to proceed with the jump threading opportunity. The patch fixes the bug by checking each return value before summing them up. [JumpThreading] Thread jumps through two basic blocks Summary: This patch teaches JumpThreading.cpp to thread through two basic blocks like: bb3: %var = phi i32* [ null, %bb1 ], [ @a, %bb2 ] %tobool = icmp eq i32 %cond, 0 br i1 %tobool, label %bb4, label ... bb4: %cmp = icmp eq i32* %var, null br i1 %cmp, label bb5, label bb6 by duplicating basic blocks like bb3 above. Once we duplicate bb3 as bb3.dup and redirect edge bb2->bb3 to bb2->bb3.dup, we have: bb3: %var = phi i32* [ @a, %bb2 ] %tobool = icmp eq i32 %cond, 0 br i1 %tobool, label %bb4, label ... bb3.dup: %var = phi i32* [ null, %bb1 ] %tobool = icmp eq i32 %cond, 0 br i1 %tobool, label %bb4, label ... bb4: %cmp = icmp eq i32* %var, null br i1 %cmp, label bb5, label bb6 Then the existing code in JumpThreading.cpp can thread edge bb3.dup->bb4 through bb4 and eventually create bb3.dup->bb5. Reviewers: wmi Subscribers: hiraditya, jfb, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70247
-
Alina Sbirlea authored
Summary: Make InductiveRangeCheckElimination a FunctionPass. Reviewers: reames, mkazantsev Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D73592
-
Stephan Herhut authored
The recent refactoring of build files broke building with the MIR CUDA integration enabled. This fixes it by adding some additional dependencies to mlir-opt. Differential Revision: https://reviews.llvm.org/D74041
-
LLVM GN Syncbot authored
-
Matt Arsenault authored
The 96-bit results need to be widened. I find the interaction between LegalizerHelper and MIRBuilder somewhat awkward. The custom legalization is called by the LegalizerHelper, but then does not have access to the helper. You have to construct a new helper, which then does not own the MachineIRBuilder, but does modify it. Maybe custom legalization should be passed the helper?
-
Teresa Johnson authored
Summary: Currently type test assume sequences inserted for devirtualization are removed during WPD. This patch delays their removal until later in the optimization pipeline. This is an enabler for upcoming enhancements to indirect call promotion, for example streamlined promotion guard sequences that compare against vtable address instead of the target function, when there are small number of possible vtables (either determined via WPD or by in-progress type profiling). We need the type tests to correlate the callsites with the address point offset needed in the compare sequence, and optionally to associated type summary info computed during WPD. This depends on work in D71913 to enable invocation of LowerTypeTests to drop type test assume sequences, which will now be invoked following ICP in the ThinLTO post-LTO link pipelines, and also after the existing export phase LowerTypeTests invocation in regular LTO (which is already after ICP). We cannot simply move the existing import phase LowerTypeTests pass later in the ThinLTO post link pipelines, as the comment in PassBuilder.cpp notes (it must run early because when performing CFI other passes may disturb the sequences it looks for). This necessitated adding a new type test resolution "Unknown" that we can use on the type test assume sequences previously removed by WPD, that we now want LTT to ignore. Depends on D71913. Reviewers: pcc, evgeny777 Subscribers: mehdi_amini, Prazek, hiraditya, steven_wu, dexonsmith, arphaman, davidxl, cfe-commits, llvm-commits Tags: #clang, #llvm Differential Revision: https://reviews.llvm.org/D73242
-
Adam Balogh authored
STL Algorithms are usually implemented in a tricky for performance reasons which is too complicated for the analyzer. Furthermore inlining them is costly. Instead of inlining we should model their behavior according to the specifications. This patch is the first step towards STL Algorithm modeling. It models all the `find()`-like functions in a simple way: the result is either found or not. In the future it can be extended to only return success if container modeling is also extended in a way the it keeps track of trivial insertions and deletions. Differential Revision: https://reviews.llvm.org/D70818
-
Matt Arsenault authored
The adjusted iterator range included the last we just inserted, and don't want to process. Figure out the new iterator range before inserting phis. This was a harmless problem, but added an unnecessary complication for a future patch.
-
Matt Arsenault authored
I want to re-use widenScalarDst/moreElementsVectorDst directly.
-
Matt Arsenault authored
If we have s_pack_* instructions, legalize this to G_BUILD_VECTOR_TRUNC from s32 elements. This is closer to how how the s_pack_* instructions really behave. If we don't have s_pack_ instructions, expand this by creating a merge to s32 and bitcasting. This expands to the expected bit operations. I think this eventually should go in a new bitcast legalize action type in LegalizerHelper. We already directly emit the shift operations in RegBankSelect for the vector case. This could possibly be cleaned up, but I also may want to defer doing this expansion to selection anyway. I'll see about that when I try to actually match VOP3P instructions. This breaks the selection of the build_vector since tablegen doesn't know how to match G_BUILD_VECTOR_TRUNC yet, so just xfail it for now.
-
Med Ismail Bennani authored
When a thread stops, this checks depending on the platform if the top frame is an abort stack frame. If so, it looks for an assert stack frame in the upper frames and set it as the most relavant frame when found. To do so, the StackFrameRecognizer class holds a "Most Relevant Frame" and a "cooked" stop reason description. When the thread is about to stop, it checks if the current frame is recognized, and if so, it fetches the recognized frame's attributes and applies them. rdar://58528686 Differential Revision: https://reviews.llvm.org/D73303 Signed-off-by:
Med Ismail Bennani <medismail.bennani@gmail.com>
-
Momchil Velikov authored
The patch at https://reviews.llvm.org/D64048 added "negative" dependency handling in `ARM::appendArchExtFeatures`: feature "noX" removes all features, which imply "X". This patch adds the "positive" handling: feature "X" adds all the feature strings implied by "X". (This patch also comes from the suggestion here https://reviews.llvm.org/D72633#inline-658582) Differential Revision: https://reviews.llvm.org/D72762
-
Sven van Haastregt authored
Apply the fix of f780e15c ("[OpenCL] Fix support for cl_khr_mipmap_image_writes", 2020-01-27) also to the TableGen OpenCL builtin function definitions.
-