-
Notifications
You must be signed in to change notification settings - Fork 787
LLVM and LLVM-SPIRV-Translator pulldown #1656
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
Merged
vladimirlaz
merged 845 commits into
intel:sycl
from
vladimirlaz:private/vlazarev/llvmspirv_pulldown
May 8, 2020
Merged
LLVM and LLVM-SPIRV-Translator pulldown #1656
vladimirlaz
merged 845 commits into
intel:sycl
from
vladimirlaz:private/vlazarev/llvmspirv_pulldown
May 8, 2020
Conversation
This file contains hidden or 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
CONFLICT (content): Merge conflict in clang/include/clang/Basic/LangOptions.h
This seems to be working by accident.
We don't require the type to be trivially assignable. While the standard says that only is_trivially_copyable types may be memcpy'd, this seems overly strict. We never assign the type, so there's no way for the type to observe that the copy/move construction got elided. This is important for std::pair<POD, POD>, which is not trivially assignable and probably never will be because changing that would break ABI. As a side-effect this no longer allows types with deleted copy/move constructors in SmallVector. That's an unintended side-effect of is_trivially_copyable anyways. Shrinks Release+Asserts clang by 20k.
This generalizes the main Windows command line tokenizer to be able to produce StringRef substrings as well as freshly copied C strings. The implementation is still shared with the normal tokenizer, which is important, because we have unit tests for that. .drective sections can be very long. They can potentially list up to every symbol in the object file by name. It is worth avoiding these string copies. This saves a lot of memory when linking chrome.dll with PGO instrumentation: BEFORE AFTER % IMP peak memory: 6657.76MB 4983.54MB -25% real: 4m30.875s 2m26.250s -46% The time improvement may not be real, my machine was noisy while running this, but that the peak memory usage improvement should be real. This change may also help apps that heavily use dllexport annotations, because those also use linker directives in object files. Apps that do not use many directives are unlikely to be affected. Reviewed By: thakis Differential Revision: https://reviews.llvm.org/D79262
CONFLICT (content): Merge conflict in clang/include/clang/Basic/LangOptions.h
The failures only happened in fully clean builds. Also put all current dependencies of LibraryDependencies.inc in the build graph, so that this type of thing will cause a failure in incremental builds next time as well.
std::pair has a trivial copy ctor, std::tuple doesn't.
CONFLICT (content): Merge conflict in clang/include/clang/Basic/LangOptions.h
… missing /bigobj Summary: Unable to build sema library on MSVC with Debug target ``` C:\clang\llvm-project\clang\lib\Sema\SemaOpenMP.cpp : fatal error C1128: number of sections exceeded object file format limit: compile with /bigobj ``` Reviewed By: aaron.ballman Subscribers: mgorny, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D79292
rL368553 added SimplifyMultipleUseDemandedBits handling for ISD::TRUNCATE to SimplifyDemandedBits so we don't need to duplicate this (and it gets rid of another GetDemandedBits call which is slowly being replaced with SimplifyMultipleUseDemandedBits anyhow).
…dedBits call" Causing buildbot failures
This is useful for several reasons: * In some situations the user can guarantee that thread-safety isn't necessary and don't want to pay the cost of synchronization, e.g., when parsing a very large module. * For things like logging threading is not desirable as the output is not guaranteed to be in stable order. This flag also subsumes the pass manager flag for multi-threading. Differential Revision: https://reviews.llvm.org/D79266
This makes the BindingDecl accessible to consumers of libclang as CXCursor_UnexposedDecl where previously these AST nodes were not visited at all from the libclang API. Differential Revision: https://reviews.llvm.org/D78213
This makes the previously unaccessible AST nodes for C++17 "if with init statements" accessible to consumers of libclang. Differential Revision: https://reviews.llvm.org/D78214
CONFLICT (content): Merge conflict in clang/include/clang/Basic/LangOptions.h
Summary: Lld test ELF/linkerscript/thunk-gen-mips.s was accidentally disabled due to the use of wrong FileCheck directives. As a result the test seems to have bitrotted as it fails to pass if fixing the directive. To ease updates to the test in case of change of the __start address the checks have been changed to use numeric variables to express all the addresses based on the __start address. Reviewed By: atanasyan Differential Revision: https://reviews.llvm.org/D79270
Otherwise an ArgumentParser is constructed for every directive section, and that involves copying the entire table of options into a vector. There is no need for this, just have one option table.
The two code paths have the same goal, legalizing a load of a non-byte-sized vector by loading the "flattened" representation in memory, slicing off each single element and then building a vector out of those pieces. The technique employed by `ExpandLoad` is slightly more convoluted and produces slightly better codegen on ARM, AMDGPU and x86 but suffers from some bugs (D78480) and is wrong for BE machines. Differential Revision: https://reviews.llvm.org/D79096
Summary: FileCheck documentation contains an example of a numeric variable defined and used on the same line. This is not currently supported by FileCheck so this commit fixes the example to use CHECK-SAME for the variable use. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D79253
This particular overload allocates memory, and we do this for every S_[GL]PROC32_ID record. Instead, hardcode the offset of the typeindex that we are looking for in the LF_[MEM]FUNC_ID record. We already assumed that looking up the item index already found a record of this kind.
This accounts for a large portion of the memory allocations in LLD. This DebugSubsectionRecordBuilder object can be stored directly in C13Builders, it mostly wraps other subsections. Remove the container kind field from the object. It is always the same for all elements in the vector, and we can pass it in during writing.
…ilders does not use unique_ptr. These asserts used to check that unique_ptr was not null. This fixes failures from 7af4bb1
Don't use $noreg for instructions that take register inputs. Only allow $noreg for parts of memory operands. Don't use index register with $rip base. Use RETQ instead of the RET pseudo. This pass is after the ExpandPseudo pass that converts RET to RETQ.
This reverts commit bd7ea86. Breaks check-lld everywhere.
The number of public symbols is very large, and each deserialization does a few heap allocations. The public symbols are serialized by the linker, so we can assume they have the expected layout and use it directly. Saves O(#publics) temporary heap allocations and shrinks some data structures.
This is a Test commit.
Summary: Introduces an endpoint to Tracer for tracking metrics on internal events. Reviewers: sammccall Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D78429
…h mode. We have the option to stop running commands in batch mode when an error occurs. When that happens we should exit the driver with a non-zero exit code. Differential revision: https://reviews.llvm.org/D78825
Summary: This patch teaches shouldBeDeferred to take into account the total cost of inlining. Suppose we have a call hierarchy {A1,A2,A3,...}->B->C. (Each of A1, A2, A3, ... calls B, which in turn calls C.) Without this patch, shouldBeDeferred essentially returns true if TotalSecondaryCost < IC.getCost() where TotalSecondaryCost is the total cost of inlining B into As. This means that if B is a small wraper function, for example, it would get inlined into all of As. In turn, C gets inlined into all of As. In other words, shouldBeDeferred ignores the cost of inlining C into each of As. This patch adds an option, inline-deferral-scale, to replace the expression above with: TotalCost < Allowance where - TotalCost is TotalSecondaryCost + IC.getCost() * # of As, and - Allowance is IC.getCost() * Scale For now, the new option defaults to -1, disabling the new scheme. Reviewers: davidxl Subscribers: eraman, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79138
This reverts commit 7cbbf89. The regression tests fail with the expensive checks.
When doing a standalone build of flang against an LLVM that contains a built flang, the tests were run on the flang from LLVM rather than on the one that was just built. The problem was in the lit configuration for finding %flang etc. Fix it to look only in the directory where it was built. Differential Revision: https://reviews.llvm.org/D79327
DMA operation classes in the Standard dialect (`DmaStartOp` and `DmaWaitOp`) provide helper functions that make numerous assumptions about the number and order of operands, and about their types. However, these assumptions were not checked in the verifier, leading to assertion failures or crashes when helper functions were used on ill-formed ops. Some of the assuptions were checked in the custom parser (and thus could not check assumption violations in ops constructed programmatically, e.g., during rewrites) and others were not checked at all. Introduce the verifiers for all these assumptions and drop unnecessary checks in the parser that are now covered by the verifier. Addresses PR45560. Differential Revision: https://reviews.llvm.org/D79408
This addresses a compilation failure on GCC 5: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support Differential Revision: https://reviews.llvm.org/D79439
Duplicate keys in a literal break NSDictionary's invariants. rdar://50454461A Differential revision: https://reviews.llvm.org/D78660
These are permitted in all language modes, not just C++11.
Summary: - Skip copying function arguments and unnecessary casting by using them directly. Reviewers: rjmccall, kerbowa, yaxunl Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D79394
Summary: - If the coerced type is still a pointer, it should be set with proper parameter attributes, such as `noalias`, `nonnull`, and etc. Hoist that (pointer) parameter attribute setting so that the coerced pointer parameter could be marked properly. Depends on D79394 Reviewers: rjmccall, kerbowa, yaxunl Subscribers: jvesely, nhaehnle, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D79395
CONFLICT (content): Merge conflict in clang/lib/AST/DeclPrinter.cpp
CONFLICT (content): Merge conflict in clang/lib/CodeGen/CGCall.cpp
…llvmspirv_pulldown
Since the translator has to lower LLVM constant expressions to be able to represent them in SPIR-V, we now need to support not only single constexprs but vectors of constexprs as well.
Tests on |
… fixes" This reverts commit f5360d4.
Fznamznon
pushed a commit
to Fznamznon/llvm
that referenced
this pull request
Nov 8, 2022
This extension adds conversion instruction from float to tensor float (TF32) data format. TF32 uses 1 bit for a sign, 8 bits for an exponent and 10 bits for a fraction. This extension doesn’t introduce TF32 type in SPIR-V, instead instruction below uses 32-bit float type to represent TF32 value. Spec: intel#6990 Signed-off-by: Sidorov, Dmitry <[email protected]> Original commit: KhronosGroup/SPIRV-LLVM-Translator@ea3ddc1
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.
LLVM: 9142c0b
LLVM-SPIRV-Translator: KhronosGroup/SPIRV-LLVM-Translator@8b58a7f