-
Notifications
You must be signed in to change notification settings - Fork 769
LLVM and SPIRV-LLVM-Translator pulldown (WW14-15) #3488
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Reviewed By: cryptoad Differential Revision: https://reviews.llvm.org/D99766
We wasted a good deal of time trying to figure out whether our implementation was correct. In the end, it was, but it wasn't so easy to determine. This patch dumbs down the implementation and improves the documentation to make it easier to validate. See https://lists.llvm.org/pipermail/libcxx-dev/2020-December/001060.html. Differential Revision: https://reviews.llvm.org/D97802
These are basically all the attributor tests for the same attribute with some minor cleanup for readability and autogened.
…rands. This occurs when we type legalize an i64 scalar input on RV32. We need to manually splat, which requires a vector input. Rather than special case this in lowering just pattern match it.
…st them This makes it possible to build libLLVM.so without first creating a static library for each component. In the case where only libLLVM.so is built (i.e. ninja LLVM) this eliminates 150 linker jobs. Reviewed By: stellaraccident Differential Revision: https://reviews.llvm.org/D95727
Adds APIs, implementations, and unit tests for AINT, ANINT, CEILING, EXPONENT, FLOOR, FRACTION, MOD, MODULO, NEAREST, NINT, RRSPACING, SCALE, SET_EXPONENT, & SPACING. Differential Revision: https://reviews.llvm.org/D99764
Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D99622
A new unit test for the Fortran runtime needs to allow for some architectural variation on Infinity and NaN edge cases of NINT().
Setting the builder from a block is looking up for a parent operation to get a context, instead by setting up the builder with an explicit context we can support invoking this helper in absence of a parent operation.
Fix the many cases of use of undefined SIVAR/SVAR/SFVAR in OpenMP *private_codegen tests, due to a missing BLOCK directive to capture the IR variable when it is declared. It also fixes a few typo in its use. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D99770
OpenMP test target_data_use_device_ptr_if_codegen contains a CHECK-NOT directive using an undefined DECL FileCheck variable. It seems copied from target_data_use_device_ptr_codegen where there's a CHECK for a load that defined the variable. Since there is no corresponding load in this testcase, the simplest is to simply forbid any store and get rid of the variable altogether. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D99771
Remove the CHECK-NOT directive referring to as-of-yet undefined VAR_PRIV variable since the pattern of the following CHECK-NOT in the same CHECK-NOT block covers a superset of the case caught by the first CHECK-NOT. Reviewed By: ABataev Differential Revision: https://reviews.llvm.org/D99775
… SetUp() from gtest Also, make it structurally required so it can't be forgotten and re-introduce the bug that led to the rotten green tests. Differential Revision: https://reviews.llvm.org/D99692
… up with SetUp() from gtest" Forgot to apply commit message changes from phabricator This reverts commit 3a016e3.
LLVM test CodeGen/Mips/sr1.ll tries to check for the absence of a sequence of instructions with several CHECK-NOT with one of those directives using a variable defined in another. However CHECK-NOT are checked independently so that is using a variable defined in a pattern that should not occur in the input. This commit removes the definition and uses of variable to check each line independently, making the check stronger than the current one. Reviewed By: dsanders Differential Revision: https://reviews.llvm.org/D99776
Due to architectural variation on the C++ functions std::ceil, std::floor, and std::trunc, diable some new Fortran unit tests for now that depending on specifical results for IEEE floating-point edge cases of infinities and NaNs.
Trying to build the builtins code fails because `arm64_32_SOURCES` is missing. Setting it to the same list used for `aarch64_SOURCES` solves that problem and allow the builtins to compile for that architecture. Additionally, arm64_32 is added as a possible architecture for watchos platforms. Reviewed By: compnerd Differential Revision: https://reviews.llvm.org/D99690
Add a new architecture definition for arm64_32. The change should allow the new architecture arm64_32 to be recognized in several pieces of code, TextAPI parsing one of them. llvm-lipo will also recognize the architecture and will allow lipoing files with this architecture without failing. Includes a small test that the architecture is recognized by llvm-nm. Reviewed By: cishida Differential Revision: https://reviews.llvm.org/D99673
…mbols This diff addresses FIXME in SyntheticSections.cpp and removes the dependency of emitEndFunStab on .subsections_via_symbols. Test plan: make check-lld-macho Differential revision: https://reviews.llvm.org/D99054
The code is assuming that having an exact exit count for the loop implies that exit counts for every exit are known. This used to be true, but when we added handling for dead exits we broke this invariant. The new invariant is that an exact loop count implies that any exits non trivially dead have exit counts. We could have fixed this by either a) explicitly checking for a dead exit, or b) just testing for SCEVCouldNotCompute. I chose the second as it was simpler. (Debugging this took longer than it should have since I'd mistyped the original assert and it wasn't checking what it was meant to...) p.s. Sorry for the lack of test case. Getting things into a state to actually hit this is difficult and fragile. The original repro involves loop-deletion leaving SCEV in a slightly inprecise state which lets us bypass other transforms in IndVarSimplify on the way to this one. All of my attempts to separate it into a standalone test failed.
Reviewed By: msearles Differential Revision: https://reviews.llvm.org/D99781
Rationale: Small indices and values, when allowed by the required range of the input tensors, can reduce the memory footprint of sparse tensors even more. Note, however, that we must be careful zero extending the values (since sparse tensors never use negatives for indexing), but LLVM treats the index type as signed in most memory operations (like the scatter and gather). This CL dots all the i's in this regard. Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D99777
For DBX, it does not handle column info well. Set -gno-column-info by default for DBX. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D99703
GCC warning: ``` /llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:9212:13: warning: ‘bool isHorizOp(unsigned int)’ defined but not used [-Wunused-function] 9212 | static bool isHorizOp(unsigned Opcode) { | ^~~~~~~~~ ```
The moved `populate` methods are only relevant to Linalg operations. So they are better of in `linalg` namespace. Also rename `populateLinalgTensorOpsFusionPatterns` to `populateElementwiseOpsFusionPatterns`. This makes the scope of these patterns explicit and disambiguates it with fusion on tensors using tile + fuse. Differential Revision: https://reviews.llvm.org/D99819
Added basic parsing/sema/serialization support for the 'nocontext' clause. Differential Revision: https://reviews.llvm.org/D99848
These look like $00A0cf for hex and %001010101 for binary. They are used in Motorola assembly syntax. Differential Revision: https://reviews.llvm.org/D98519
FP would need VFSLIDE1UP_VF which uses an FP register.
For use in an uncoming patch. Left out the phi case (which could otherwise fit in this framework) as it would cause infinite recursion in said patch. We can probably also leverage this in instcombine to ensure we keep the two sets of related analysis and transforms in sync.
Several of these weren't testing what was intented.
It's a bit silly, but it allows us to write stricter type constraints for isel. There's still some extra type checks in the generated table due to some type interference limitations around HWMode.
…slide1up.vx/vslide1down.vx. The scalar type is already marked as XLenVT. The floating point version would need a different rule.
Clang test CodeGenOpenCL/fpmath.cl uses a variable defined in an earlier CHECK-NOT directive. However, by definition the pattern in that directive is not supposed to occur so no variable will be defined. This commit solves the issue by using a regex match with the same regex as in the definition. It also changes the definition into a regex match since no variable is going to be defined. Reviewed By: yaxunl Differential Revision: https://reviews.llvm.org/D99857
We need a sibling fix to c590a98 ( https://llvm.org/PR49832 ) to avoid miscompiling.
This is the sibling fix to c590a98 - as there, we can't subsitute a vector value the equality compare replacement that we are trying requires that the comparison is true for the entire value. Vector select can be partly true/false.
Differential Revision: https://reviews.llvm.org/D99093
Differential Revision: https://reviews.llvm.org/D99899
This changes our approach to processing statement attributes to be more similar to how we process declaration attributes. Namely, ActOnAttributedStmt() now calls ProcessStmtAttributes() instead of vice-versa, and there is now an interface split between building an attributed statement where you already have a list of semantic attributes and building an attributed statement with attributes from the parser. This should make it easier to support statement attributes that are dependent on a template. In that case, you would add a TransformFooAttr() function in TreeTransform.h to perform the semantic checking (morally similar to how Sema::InstantiateAttrs() already works for declaration attributes) when transforming the semantic attribute at instantiation time.
@vmaksimo, there are no LLVM changes in this pull request - only SPIRV-LLVM-Translator. Is it expected? |
CONFLICT (content): Merge conflict in clang/lib/Sema/TreeTransform.h CONFLICT (content): Merge conflict in clang/lib/Sema/SemaStmtAttr.cpp
It was expected as there were no new changes in sycl-web till today's morning. I'll test and merge new changes later. |
Temporary disable this extension until some targets support it.
/summary:run |
It means if you take |
LLVM: llvm/llvm-project@9711118
SPIRV-LLVM-Translator: KhronosGroup/SPIRV-LLVM-Translator@56988bb