Skip to content

LLVM and SPIRV-LLVM-Translator pulldown (WW24) #6249

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
merged 2,634 commits into from
Jun 4, 2022
Merged

Conversation

pvchupin
Copy link
Contributor

@pvchupin pvchupin commented Jun 4, 2022

rsuderman and others added 30 commits June 1, 2022 11:45
Ctlz is an intrinsic in LLVM but does not have equivalent operations in SPIR-V.
Including a decomposition gives an alternative path for these platforms.

Reviewed By: NatashaKnk

Differential Revision: https://reviews.llvm.org/D126261
This reduces the time emitStabs() takes by about 275ms, or 3% of overall
linking time for the project I'm on. Although the parent function is run in
parallel, it's one of the slowest tasks in that concurrent batch (I have
another optimization for another slow task as well).

Differential Revision: https://reviews.llvm.org/D126785
Based on review comments in D110499.

Depends on D110499

Reviewed By: ldionne, #libc

Differential Revision: https://reviews.llvm.org/D125610
…lang/test/Driver/modules.cpp"

This reverts commit 35b1cfc as a dependency of D120540.
This reverts commit 738c20e as a dependency of D120540.
This reverts commit a544710.

See discussion in D120540.

This breaks C++ Clang modules on Darwin and also more than a dozen
tests in the LLDB testsuite.  I think we need to be more careful to
separate out the enabling of Clang C++ modules and C++20
modules. Either by having -fmodules-ts control the HaveModules flag,
or by adding a way to explicitly turn them off.
Adds MVT::v128i2, MVT::v64i4, and implied MVT::i2, MVT::i4.

Keeps MVT::i2, MVT::i4 lowering actions as `expand`, which should be
removed once targets set this explicitly.

Adjusts 11 lit tests to reflect slightly different behavior during
DAG combine.

Differential Revision: https://reviews.llvm.org/D125247
DXContainer files are structured as parts. This patch adds support for
parsing out the file part offsets and file part headers.

Reviewed By: kuhar

Differential Revision: https://reviews.llvm.org/D124804
Additional test cases for D114487.
This reverts commit 430ac5c.

Due to failures in Clang tests.

Differential Revision: https://reviews.llvm.org/D125247
This patch adds a the first bits of support for a yaml representation
of dxcontainer files.

Since the YAML representation's primary purpose is testing
infrastructure, the yaml representation supports both verbose and a
more friendly format by making computable sizes and offsets optional.
If provided they are validated to be correct, otherwise they are
computed on the fly during emission.

As I expand the format I'll be able to make more size fields optional,
and I will continue to make the format easier to work with.

Depends on D124804

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D124944
F18 doesn't accept INTEGER operands to the intrinsic LOGICAL operations;
some compilers do.  This usage is not portable, and not just because it's
non-conforming -- the bit representations of LOGICAL also vary between
compilers and options.  The "MIL-STD" bit intrinsics IAND() & al. have been
avaiable since the late 70's and should be used instead.

Differential Revision: https://reviews.llvm.org/D126798
This is failing on an arm32 builder, and it is going to take me a while
to debug. To not block further progress I'm disabling this test on
arm32 configuraitons.
Support the pattern where a test file uses multiple prefixes per run line:
one prefix that is unique to the run line, and additional prefixes that are
common with other run lines.

Decide on a per-function basis which prefix(es) to emit, based on which run
lines have the same output.

Move the renaming of vregs earlier, so that we can compare the output as it
would actually be printed in check lines.

Differential Revision: https://reviews.llvm.org/D126411
Replace "cache+" with "ext-tsp" in all BOLT tests

Test Plan:
```
ninja check-bolt
grep -rnw . -e "cache+"
```
no more tests containing "cache+"
"cache+" and "ext-tsp" are aliases

Reviewed By: rafauler

Differential Revision: https://reviews.llvm.org/D126714
Recently the terminology used has been changed from Exit->Exiting in
line with common LLVM loop terminology. Update a remaining use of the
old terminology.
…:kIndex

The trick of using an empty token in the `FOREVERY_O` x-macro relies on preprocessor behavior which is only standard since C99 6.10.3/4 and C++11 N3290 16.3/4 (whereas it was undefined behavior up through C++03 16.3/10).  Since the `ExecutionEngine/SparseTensorUtils.cpp` file is required to be compile-able under C++98 compatibility mode (unlike the C++11 used elsewhere in MLIR), we shouldn't rely on that behavior.

Also, using a non-empty suffix helps improve uniformity of the API, since all other primary/overhead suffixes are also non-empty.  I'm using the suffix `0` since that's the value used by the `SparseTensorEncoding` attribute for indicating the index overhead-type.

Depends On D126720

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D126724
This is failing on an arm32 builder, and it is going to take me a while
to debug. To not block further progress I'm disabling this test on
arm32 configuraitons.
Now that we have an AllocTensorOp (previously InitTensorOp) in the bufferization dialect, the InitOp in the sparse dialect is no longer needed.

Differential Revision: https://reviews.llvm.org/D126180
The option mdefault-visibility-export-mapping is created to allow
mapping default visibility to an explicit shared library export
(e.g. dllexport). Exactly how and if this is manifested is target
dependent (since it depends on how they map dllexport in the IR).

Three values are provided for the option:

* none: the default and behavior without the option, no additional export linkage information is created.
* explicit: add the export for entities with explict default visibility from the source, including RTTI
* all: add the export for all entities with default visibility

This option is useful for targets which do not export symbols as part of
their usual default linkage behaviour (e.g. AIX), such targets
traditionally specified such information in external files (e.g. export
lists), but this mapping allows them to use the visibility information
typically used for this purpose on other (e.g. ELF) platforms.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D126340
We use the `OffloadBinary` to create binary images of offloading files
and their corresonding metadata. This patch changes this to inherit from
the base `Binary` class. This allows us to create and insepect these
more generically. This patch includes all the necessary glue to
implement this as a new binary format, along with added the magic bytes
we use to distinguish the offloading binary to the `file_magic`
implementation.

Reviewed By: tra

Differential Revision: https://reviews.llvm.org/D126812
I've gotten tired of updating register allocation changes by hand, let's just autogen this even if we have to duplicate it.
topperc and others added 18 commits June 3, 2022 09:00
…tern. NFCI

Previously we had 3 different isel patterns for every scalar load
store instruction.

This reduces them to a single ComplexPattern that returns the Base
and Offset. Or an offset of 0 if there was no offset identified

I've done a similar thing for the 2 isel patterns that match add/or
with FrameIndex and immediate. Using the offset of 0, I was also
able to remove the custom handler for FrameIndex. Happy to split that
to another patch.

We might be able to enhance in the future to remove the post-isel
peephole or the special handling for ADD with constant added by D126576.

A nice side effect is that this removes nearly 3000 bytes from the isel
table.

Differential Revision: https://reviews.llvm.org/D126932
A new "cache-aware" strategy for tail duplication.

Differential Revision: https://reviews.llvm.org/D123050
…o::Syntax (NFC)

This is setup for allowing hasAttribute to work for plugin-provided attributes

Differential Revision: https://reviews.llvm.org/D126902
  CONFLICT (content): Merge conflict in clang/lib/Basic/Attributes.cpp

Opaque pointers are still temporarily disabled by default, so I've
explicitly re-enabled them in llvm-c-test and unit tests.
An LLVM change in the range 1f06398..80b3dcc caused this
test to fail.  XFAIL the test while investigating.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@dbf3aee
* Fix NVPTX backend build issue
* Fix few tests by adding -opaque-pointers explicitly. We are behind
upstream on opaque pointers enabling and opaque pointers currently OFF.
So explicit flag is required.
This is a relatively large change, as the original pass relied on being able to
track the initial bitcast <3 x i64>* to <6 x i32>* to know where to start
rewriting. Instead, this patch starts at the final invalid extractelement call
and works its way backwards as far as necessary to generate correct code.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@83b2dfd
OCLTypeToSPIRV is an analysis required by other passes, so we don't
need to run it explicitly.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@3cbf128
`clang/lib/AST/ItaniumMangle.cpp` doesn't include any `_t` in the
mangled name.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@d06c923
It seems to be another remnant of earlier versions of dealing with block types,
as it is looking for SPIR-V builtins that have function pointer arguments. With
blocks now represented as structs, it seems that nothing will trigger this code
any more. In any case, with opaque pointers, this code becomes unnecessary (as
the bitcasts that would be deleted won't exist anymore).

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@1341e54
The change in getScalarOrArrayConstantInt() is not actually exercised by the
current test suite, and it may be impossible to exercise it given that the
caller of the function relies on the parameter being a GEP of array type.
However, this change should correctly deduce the type were it a correct call.

The call in SPIRVRegularizeLLVM is of course unnecessary with opaque pointers:
addrspacecast can never change the pointee type of a pointer type in such
scenarios.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@4b415cb
LLVMExports.cmake from already installed packages references files
from the mlir-tools package.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@9de2805
@pvchupin pvchupin added the disable-lint Skip linter check step and proceed with build jobs label Jun 4, 2022
@pvchupin pvchupin requested review from a team as code owners June 4, 2022 02:38
@pvchupin
Copy link
Contributor Author

pvchupin commented Jun 4, 2022

Testing is clean.

"SYCL :: USM/allocator_rebind.cpp" issue is false-positive due to simultaneous changes in compiler (#6191) and llvm-test-suite (intel/llvm-test-suite#1038) done while this testing was in progress, this testing picked up llvm-test-suite change but not the compiler change.

@pvchupin
Copy link
Contributor Author

pvchupin commented Jun 4, 2022

/merge

@bb-sycl
Copy link
Contributor

bb-sycl commented Jun 4, 2022

Sat 04 Jun 2022 08:44:43 PM UTC --- Start to merge the commit into sycl branch. It will take several minutes.

@bb-sycl
Copy link
Contributor

bb-sycl commented Jun 4, 2022

Sat 04 Jun 2022 08:48:25 PM UTC --- Merge the branch in this PR to base automatically. Will close the PR later.

@bb-sycl bb-sycl merged commit 1927d21 into intel:sycl Jun 4, 2022
@pvchupin pvchupin deleted the pulldown branch June 4, 2022 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disable-lint Skip linter check step and proceed with build jobs
Projects
None yet
Development

Successfully merging this pull request may close these issues.