-
Notifications
You must be signed in to change notification settings - Fork 8
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
Feature/merge upstream 20231106 #289
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Adding sched_barrier, sched_group_barrier, and iglp_opt.
…#71118) RegisterBank no longer has a default constructor so there's no way to create an invalid register bank. Remove InvalidID and the isValid method. Replace the one use of isValid outside of RegBank with a check that the ID matches so there's still some check of sanity.
This doesn't change upstream behaviour, but for downstream users it makes sure these tests work even if the ABI compat version is modified.
Previously the kill flags of the source register were unconditionally cleared when a `str` pair was merged, which results in suboptimal register allocation and inhibits some renaming opportunities which may allow further merging `str`.
Previously, after the algorithm fixpointed, the state was manually patched by emitting BDVs for EE instructions earlier, while marking some (but not all) vector and vector<->scalar instructions as conflict. This causes issues as not all instructions that required BDVs had them emitted and due to after-fixpoint patching, the extra BDVs did not propagate to their users. This change fixes both by rewriting the logic for BDV insertion & patching. Instead of inserting the BDV for EE earlier, it merely marks every EE instruction as a conflict. The two phase insertion algorithm (first insert empty instructions and patch the BDVState, then actually connect the BDV instructions to their input bases) then ensures correct propagation to all its users. Furthermore the shufflevector instruction as well as all instances of IE instruction are conservatively marked as conflicts as well, fixing the second problem. This change does not fix the handling of constant values and vectors in the BDV. --------- Co-authored-by: Petr Maj <[email protected]>
…es directly. NFC (#71105) RegBanks are allocated as global variables. The use of BitVector causes a static global constructor to be used. The BitVector is initialized from a table of bits that is created by tablegen. We can keep a pointer to that data and use it as the bit vector instead. This does require a little bit of manual indexing and reimplementation of BitVector::count.
Enables having attribute that has another from same file as member.
RegBanks are constructed as global objects. Making the constructor constexpr helps the compiler construct it without a global constructor. clang's optimizer seems to figure this out on its own, but at least gcc 8 does not.
…k operation (#70542) Fix the compile crash when the default result has no result for llvm/llvm-project#65835 Fixes llvm/llvm-project#65120 Reviewed By: zmodem, nikic
This patch builds on the support for vectors by adding ability to parse scalable vectors in MIR and updates error messages to reflect that ability.
Bfloat16 Matrix Multiply Accumulate Instruction https://sifive.cdn.prismic.io/sifive/c391d53e-ffcf-4091-82f6-c37bf3e883ed_xsfvfwmaccqqq-spec.pdf
FP32-to-int8 Ranged Clip Instructions https://sifive.cdn.prismic.io/sifive/0aacff47-f530-43dc-8446-5caa2260ece0_xsfvfnrclipxfqf-spec.pdf
Tested on `amd64-pc-solaris2.11`.
Pull request #65409 changed the brace kind heuristic to not treat a preprocessor if directive as a in statement, however, this caused some regressions. If the contents of a brace don't immediately determine the brace kind, the heuristic will look at the characters immediately before and after the closing brace to determine the brace type. Unfortunately, if the closing brace was preceded by a preprocessor directive, for example `#endif`, the preceding token was `endif`, seen as just an identifier, so the braces were understood as a braced list. This patch fixes this behaviour by skipping all preprocessor directives when calculating brace types. Comments were already being skipped, so now preprocessor lines are skipped alongside comments. Fixes llvm/llvm-project#68404
…141) `'XSfvfnrclipxfqf' (FP32-to-int8 Ranged Clip Instructions)` -> `'XSfvfnrclipxfqf' (SiFive FP32-to-int8 Ranged Clip Instructions)`
…ular identifier (#71134) `ModuleDeclState` is incorrectly changed to `NamedModuleImplementation` for `struct module {}; void foo(module a);`. This is mostly benign but leads to a spurious warning after #69555. A real world example is: ``` // pybind11.h class module_ { ... }; using module = module_; // tensorflow void DefineMetricsModule(pybind11::module main_module); // `module main_module);` incorrectly changes `ModuleDeclState` to `NamedModuleImplementation` #include <algorithm> // spurious warning ```
DummySyntheticFrontEnd is implementing correctly CalculateNumChildren but not MightHaveChildren, where instead of delegating its action, it was returning true. This fixes that simple bug.
This comment was not updated when we changed from xor back to sub.
This adds a new helper that can be called from application code to ensure that no mutexes are held on specific code paths. This is useful for multiple scenarios, including ensuring no locks are held: - at thread exit - in peformance-critical code - when a coroutine is suspended (can cause deadlocks) See this discourse thread for more discussion: https://discourse.llvm.org/t/add-threadsanitizer-check-to-prevent-coroutine-suspending-while-holding-a-lock-potential-deadlock/74051
llvm/include/llvm/Support/VersionTuple.h doesn't need anything from llvm/Support/Endian.h, but llvm/lib/DebugInfo/BTF/BTFParser.cpp relies on a transitive inclusion of llvm/Support/Endian.h.
Similarly to commit 3935a29, forward spec file arguments to the driver if they appear in the compile database. Spec files can affect the include search path. fixes clangd/clangd#1410
…ss (#71107) This commit removes typed pointers from the Func to LLVM test pass. Typed pointers have been deprecated for a while now and it's planned to soon remove them from the LLVM dialect. Related PSA: https://discourse.llvm.org/t/psa-removal-of-typed-pointers-from-the-llvm-dialect/74502
This reverts commit 3d54976. This was added as a temporary courtesy to a misuse https://android-review.googlesource.com/c/platform/ndk/+/1419436 (2020).
… (#71073) Following PR #70792 for issue #70464 Adding test cases for issue #59493 and #54533
This patch adds std::experimental::observer_ptr (n4282) and also fixes LWG2516. Co-Authored-By: Louis Dionne <[email protected]> Differential Revision: https://reviews.llvm.org/D63230
Removes the `SPIRVAttributes.h` header from `GPU/Transforms/Passes.h`
- Do not emit variables-at-top for literals - Do not emit an error for a missing name for literals used as call operands.
…ustment from RISCVCallLowering::lowerCall. Other targets don't do this and no tests are affected by removing it.
…ring::lowerCall. This is needed to mark the stack usage for the call. With this change, I'm now able to succesfully execute spec2006int compiled with -O0. There are still many fallbacks that need to be addressed.
This includes a couple of changes to pass behavior for OpenCL kernels. Vulkan shaders are not impacted by the changes. 1. SPIR-V module is placed inside GPU module. This change is required for gpu-module-to-binary to work correctly as it expects kernel function to be inside the GPU module. 2. A dummy func.func with same kernel name as gpu.func is created. GPU compilation pipeline defers lowering of gpu launch kernel op. Since spirv.func is not directly tied to gpu launch kernel, a dummy func.func is required to avoid legalization issues. 3. Use correct mapping when mapping MemRef memory space to SPIR-V storage class for OpenCL kernels.
BF16 implementation based on @joshua-arch1's https://reviews.llvm.org/D152498 Fixed the incorrect f16 type introduced in llvm/llvm-project#68296 --------- Co-authored-by: Jun Sha (Joshua) <[email protected]>
This reverts commit e9a48f9 because it breaks 3 sollve 5.0 tests: test_loop_reduction_and_device.c test_loop_reduction_bitand_device.c test_loop_reduction_multiply_device.c
…9432) In non C++ mode, struct definitions does not create a scope for declaration.
Fix target triple so address locations are host independent.
These files do not use anything from llvm/Support/Endian.h.
…ent (#70647) llvm.experimental.vp.splice has different semantics from llvm.experimental.splice (since it takes uses the EVL arguments in a way other than just masking the tail elements), so it shouldn't be expanded to the unpredicated version. Coincidentally there's no support for llvm.experimental.vp.splice in ExpandVectorPredication, so it wasn't getting expanded, but we shouldn't mark it as functionally equivalent anyway since there's other users of the property now e.g. in VectorCombine.
7e42545 rejects unsupported mcmodel options, but small and large should be a supported model for 32-bit AIX targets.
Leftovers from 3e6ce58.
This is similar to vector.reverse, but only reverses the first EVL elements. I extracted this code from our downstream. Some of it may have come from https://repo.hca.bsc.es/gitlab/rferrer/llvm-epi/ originally.
`pthread_exit`'s return type is void.
…(#71359) Copy 85451f4 over to AVR, FreeBSD and Fuchsia.
…merge-upstream-20231106
…merge-upstream-20231106
This patch has been passed the internal regression tests. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merge main up to 2023/11/3.