- Dec 13, 2021
-
-
Lei Zhang authored
The previous "optimization" that tries to reuse existing block for selection header block can be problematic for deserialization because it effectively pulls in previous ops in the selection op's enclosing block into the selection op's header. When deserializing, those ops will be placed in the selection op's region. If any of the previous ops has usage after the section op, it will break. That is, the following IR cannot round trip: ```mlir ^bb: %def = ... spv.mlir.selection { ... } %use = spv.SomeOp %def ``` This commit removes the "optimization" to always create new blocks for the selection header. Along the way, also made error reporting better in deserialization by turning asserts into proper errors and add check of uses outside of sinked structured control flow region blocks. Reviewed By: Hardcode84 Differential Revision: https://reviews.llvm.org/D115582 -
Chuanqi Xu authored
-
Louis Dionne authored
-
Sanjay Patel authored
I noticed this while reviewing the test diffs in D115460 (and so the diffs in that patch will be reduced if this one is applied first). This is effectively a revert of 3436dc29 ( https://reviews.llvm.org/rG3436dc29239d ) - since that commit, we've made several enhancements, so the reasoning there is no longer valid. Specifically, we added a poison value to IR, and we clarified the behavior of undef/poison elements in a shuffle mask: https://llvm.org/docs/LangRef.html#shufflevector-instruction Alive2 seems to agree that the propagation of flags in the test diffs shown here are valid: https://alive2.llvm.org/ce/z/UuY-jr https://alive2.llvm.org/ce/z/GXoMD9 https://alive2.llvm.org/ce/z/nVCyVH Differential Revision: https://reviews.llvm.org/D115526
-
Mogball authored
Despite handling regions and inferred return types, the builder was never generated for ops with both InferReturnTypeOpInterface and regions. Reviewed By: jpienaar Differential Revision: https://reviews.llvm.org/D115525
-
Kadir Cetinkaya authored
-
gysit authored
Use the current instead of the new source type to compute the rank-reduction map in getCanonicalSubViewResultType. Otherwise, the computation of the rank-reduction map fails when folding a cast into a subview since the strides of the new source type cannot be related to the strides of the current result type. Depends On D115428 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D115446
-
Jay Foad authored
-
Jay Foad authored
canShrink already calls hasVALU32BitEncoding, so there is no need to call it again here.
-
Jay Foad authored
-
Nikita Popov authored
Use the load result type instead of the element type of the load pointer operand.
-
Pavel Labath authored
This is a swig-4 feature.
-
Nikita Popov authored
With opaque pointers there will be no bitcast, so don't assume that.
-
Daniil Fukalov authored
1. Fixed costs inconsistency for llvm.fma.vXf16 instinsiscs. 2. Added tests for llvm.sadd.sat, llvm.ssub.sat, llvm.uadd.sat, llvm.usub.sat intrisics since they have special processing in cost model. 3. Minor intrisics' costs tests updat and refinement. Reviewed By: rampitec Differential Revision: https://reviews.llvm.org/D115385
-
Markus Böck authored
Using this implementation of the interface it is possible to query the size, ABI alignment as well as the preferred alignment of a struct. It should yield the same results as LLVMs `llvm::DataLayout` on an equivalent `llvm::StructType`, including for packed structs. Additionally it is also possible to increase the ABI and preferred alignment using a data layout entry with the type `llvm.struct<()>, which serves the same functionality as the `a:` component in LLVMs data layout string. Differential Revision: https://reviews.llvm.org/D115600
-
Jon Chesterfield authored
-
Florian Hahn authored
Test case for D113223.
-
gysit authored
Do not compose pad tensor operations if the extract slice of the outer pad tensor operation is rank reducing. The inner extract slice op cannot be rank-reducing since it source type must match the desired type of the padding. Depends On D115359 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D115428
-
gysit authored
Tighten the matcher of the PadTensorOpVectorizationWithInsertSlicePattern pattern. Only match if the PadOp result is used by the InsertSliceOp source. Fail if the result is used by the InsertSliceOp dest. Depends On D115336 Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D115359
-
gysit authored
Adapt the computation of a static bounding box to take rank-reducing slice operations into account by filtering out reduced size one dimensions. The revision is needed to make padding work for decomposed convolution operations. The decomposition introduces rank reducing extract slice operations that previously let padding fail. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D115336
-
Nico Weber authored
This reverts commit 7c51a128. Breaks SemaCXX/modules-ts.cppm in check-clang.
-
Florian Hahn authored
-
Nico Weber authored
-
Evgeniy Brevnov authored
-
Chuanqi Xu authored
-
Dmitry Vyukov authored
This enables the new runtime (D112603) by default. Depends on D112603. Differential Revision: https://reviews.llvm.org/D115624
-
Dmitry Vyukov authored
This change switches tsan to the new runtime which features: - 2x smaller shadow memory (2x of app memory) - faster fully vectorized race detection - small fixed-size vector clocks (512b) - fast vectorized vector clock operations - unlimited number of alive threads/goroutimes Depends on D112602. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D112603
-
Peter Waller authored
-(Za + Zm * Zn) != (-Za + Zm * (-Zn)) when the FMA produces a zero output (e.g. all zero inputs can produce -0 output) Add a PatFrag to check presence of nsz on the fneg, add tests which ensure the combine does not fire in the absense of nsz. See https://reviews.llvm.org/D90901 for a similar discussion on X86. Differential Revision: https://reviews.llvm.org/D109525
-
Matt Devereau authored
Adds svset_neonq, svget_neonq, svdup_neonq AArch64 intrinsics. These are described in the ACLE specification: https://github.com/ARM-software/acle/pull/72 https://reviews.llvm.org/D114713
-
Kazushi (Jam) Marukawa authored
Support R_VE_SREL32 in symbol references in MC layer. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D115591
-
Kazushi (Jam) Marukawa authored
Change getELFRelativeRelocationType() to return R_VE_RELATIVE as a preparation of lld for VE. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D115592
-
Matt Devereau authored
Use predicated SEL for vector.insert instead of going through memory Differential Revision: https://reviews.llvm.org/D115259
-
Florian Hahn authored
-
Dmitry Vyukov authored
Currently the test calls dlclose in the thread concurrently with the main thread calling a function from the dynamic library. This is not good. Wait for the main thread to call the function before calling dlclose. Depends on D115612. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D115613
-
Dmitry Vyukov authored
The test contains a race and checks that it's detected. But the race may not be detected since we are doing aggressive flushes and if the state flush happens between racing accesses, tsan won't detect the race). So return 1 to make the test deterministic regardless of the race. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D115612
-
Fraser Cormack authored
This patch fixes an issue during SelectionDAG construction. When the target is unable to lower the function's return value, a hidden sret parameter is created. It is initialized and copied to a stored variable (DemoteRegister) with CopyToReg and is later fetched with CopyFromReg. The bug is that the chains used for each copy are inconsistent, and thus in rare cases the scheduler may issue them out of order. The fix is to ensure that the CopyFromReg uses the DAG root which is set as the chain corresponding to the initial CopyToReg. Fixes https://llvm.org/PR52475 Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D114795
-
Nikita Popov authored
One test shows a miscompile when bitcasts are involved, the others cases where we can perform the optimization despite a capture.
-
Simon Moll authored
Cleanup VE vector isel patterns and follow the downstream LLVM-VE pattern naming convention. Reviewed By: kaz7 Differential Revision: https://reviews.llvm.org/D115516
-
Siva Chandra Reddy authored
They were accidentally removed in a previous change.
-
Evgeniy Brevnov authored
For the simple copy loop (see test case) vectorizer selects VF equal to 32 while the loop is known to have 17 iterations only. Such behavior makes no sense to me since such vector loop will never be executed. The only case we may want to select VF large than TC is masked vectoriztion. So I haven't touched that case. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D114528
-