Skip to content

LLVM and SPIRV-LLVM-Translator pulldown (WW20) #6109

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 1,382 commits into from
May 10, 2022
Merged

Conversation

pvchupin
Copy link
Contributor

@pvchupin pvchupin commented May 6, 2022

michaelrj-google and others added 30 commits May 3, 2022 10:07
This patch fixes the string to long double tests for systems that use
long double is double, and don't support uint128.

Reviewed By: sivachandra, lntue

Differential Revision: https://reviews.llvm.org/D124803
The printf implmentation is made up of three main pieces, the parser,
the converter, and the writer. This patch adds the implementation for
the writer, as well as the function for writing to a string, along with
tests.

Reviewed By: sivachandra, lntue

Differential Revision: https://reviews.llvm.org/D124421
Per feedback on D123086 after submit.

Also added a test for vec_malloc et al attribute inference to show it's
doing the right thing.

The new tests exposed a defect, corrected by adding vec_free to the list of
free functions in MemoryBuiltins.cpp, which had been overlooked all the
way back in D94710, over a year ago.

Differential Revision: https://reviews.llvm.org/D124859
After cd0a588, unittest would run in shard mode where many tests
share a single process. Need to clear some global state to make the test
results stable.

Reviewed By: thetruestblue, rsundahl

Differential Revision: https://reviews.llvm.org/D124591
Also adds conversions for those ops to math + arith.

Differential Revision: https://reviews.llvm.org/D124773
This adds a setting (`target.max-children-depth`) that will provide a default value for the `--depth` flag used by `expression` and `frame variable`.

The new setting uses the same default that's currently fixed in source: `UINT32_MAX`.

This provides two purposes:

1. Allowing downstream forks to provide a customized default.
2. Allowing users to set their own default.

Following `target.max-children-count`, a warning is emitted when the max depth is reached. The warning lets users know which flags or settings they can customize. This warning is shown only when the limit is the default value.

rdar://87466495

Differential Revision: https://reviews.llvm.org/D123954
If a randomized structure has an initializer with a dedicated
initializer in it, the field initialzed by that dedicated initializer
may end up at the end of the RecordDecl. This however may skip the
random layout initization check.

  struct t {
     int a, b, c, d, e;
  } x = { .a = 2, 4, 5, 6 };

Let's say that "a" is lands as the last field after randomization. The
call to CheckDesignatedInitializer sets the iterator to the end of the
initializer list. During the next iteration of the initializer list
check, it detects that and fails to issue the error about initializing
a randomized struct with non-designated initializer. Instead, it issues
an error about "excess elements in struct initializer", which is
confusing under these circumstances.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D124694
This patch implements a standard GLR parsing algorithm, the
core piece of the pseudoparser.

- it parses preprocessed C++ code, currently it supports correct code
  only and parse them as a translation-unit;
- it produces a forest which stores all possible trees in an efficient
  manner (only a single node being build for per (SymbolID, Token Range));
  no disambiguation yet;

Reland with a fix for g++'s -fpermissive error on previous declaration `GSS& GSS;`.

Differential Revision: https://reviews.llvm.org/D121150
PseudoObjectExpr is only used for ObjC properties and subscripts.

For now, these assumptions are generally correct, but that's not part of
the design of PseudoObjectExpr. No functionality change intended.
Fix one test (enum.c) in ExtractAPI to use %clang_cc1 and -verify
instead of calling the full driver and FileCheck. This is an example for
my comment from https://reviews.llvm.org/D121873.

Differential Revision: https://reviews.llvm.org/D124634
Address X86 tests failures on AArch64 builder:
https://lab.llvm.org/staging/#/builders/211/builds/82

Inputs fail to cross-compile due to a missing header:
```
/usr/include/stdio.h:27:10: fatal error: 'bits/libc-header-start.h' file not found
#include <bits/libc-header-start.h>
```

As inputs are linked with `-nostdlib` anyway, don't include stdio.h.

Reviewed By: yota9

Differential Revision: https://reviews.llvm.org/D124863
This patch tries to fix sporadic test failure after the change
https://reviews.llvm.org/D122107.
Made the test wait until every thread has at least one loop iteration.

Differential Revision: https://reviews.llvm.org/D124812
If alignment specified with align clause is less than natural alignment for
list item type, the alignment should be set to the natural alignment.

See OMP5.1 specification, page 185, lines 7-10

Differential Revision: https://reviews.llvm.org/D124676
This is an intrinsic version of the existing fold for binops.
As a first step, I only allowed min/max, but the code is set
up to make adding more intrinsics easy (with more or less than
2 arguments).

This (and possible follow-ups) are discussed in issue #46238.
Adding lowering for Unary and Binary required several changes due to
their unique nature of containing custom code for different "regions"
of the sparse structure being operated on. Along with a Kind, a pointer
to the Operation is passed along to be merged once the lattice
structure is figured out.

The original operation is maintained, as it is required for subsequent
lattice decisions. However, sparse_tensor.binary has some branches
are considered as fully handled and therefore are marked with as
kBinaryBranch to distinguish them.

A unique aspect of the custom code is that sometimes the desired result
is no result at all -- i.e. a user wants overlapping sparse entries to
become empty in the output. The solution to this is to return an
uninitialized Value(), which is checked and handled elsewhere in the
code and results in nothing being written to the output tensor for that
case.

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D123057
There are only a couple of warnings when compiling with VS on Windows. This fixes the last remaining warnings so that we can enable LLVM_ENABLE_WERROR on the mlir windows bot.

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D124862
The assertion is to check we always get backedge taken count
(`BECount`) of zero when the exit condition is in select form
(`isa<BinaryOperation>(ExitCond)`) and the exit limit for the
first operand is zero `EL0.ExactNotTaken->isZero()`). However
the assertion is checking that the exit condition is NOT in
select form. Removing the the whole assertion since we now handle
select form in ScalarEvolution::getSequentialMinMaxExpr.

Reviewed By: reames, nikic

Differential Revision: https://reviews.llvm.org/D122835
This will enable our usual set of element types in external
environments, such as PyTACO support.

Reviewed By: bixia

Differential Revision: https://reviews.llvm.org/D124875
This gets identify_magic working correctly for DXContainer files
lhames and others added 11 commits May 5, 2022 13:56
…::lookup.

Clients don't care about linkage, and ExecutorAddr is much more ergonomic.
When picking the UnwindPlan row to use to backtrace,
off of the zeroth frame, decrement the return pc so
we're in the address range of the call instruction.
If this is a noretrun function call, the instruction
at the "return address" is likely an entirely different
basic block with possibly very different unwind rules,
and this can cause the backtrace to be incorrect.

Differential Revision: https://reviews.llvm.org/D124957
rdar://84651805
The ShouldShiftBeAdded lambda checks if extra space should be
added before the wrapped part of a braced list. If the first
element of the list is wrapped, no extra space should be added.

Fixes #55161.

Differential Revision: https://reviews.llvm.org/D124956
This is the easiest tranche of changes: where the pointer element type is
usually retrieved by looking a little further afield for the element type, or
via scavenging from sret/byval parameters.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@33012ca
LLVM commit c99424f ("[IR] Deprecate
Type::getPointerElementType() (NFC)", 2022-04-20) caused out-of-tree
builds to fail (as these use `-Werror`).  Replacing all
`Type::getPointerElementType` calls is a longer term effort so turn
deprecation errors back into warnings to resume out-of-tree builds.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@55d1de8
Most of this tranche of calls were being used to disambiguate between different
built-ins that share the same or similar names.

The exception is the change in visitCallSPIRVPipeBuiltin, which is a convoluted
way of adding a cast to i8 addrspace(4)* if not already i8 addrspace(4)*, so it
is instead rewritten to check if a cast needs to be added without querying
getPointerElementType.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@f727f4d
@pvchupin pvchupin added the disable-lint Skip linter check step and proceed with build jobs label May 6, 2022
Return back additional switch for test, that was introduced in intel#5900
@pvchupin pvchupin marked this pull request as ready for review May 9, 2022 20:42
@pvchupin pvchupin requested review from a team as code owners May 9, 2022 20:42
@pvchupin
Copy link
Contributor Author

pvchupin commented May 9, 2022

/summary:run

@asudarsa
Copy link
Contributor

asudarsa commented May 9, 2022

It looks good from the SPIRV side. I will check from the DPCPP tools perspective soon. Thanks.

@pvchupin
Copy link
Contributor Author

pvchupin commented May 9, 2022

Thanks @asudarsa. I don't expect actual reviews in these pulldown PRs as these are usually hundreds of changes coming from upstream projects (llvm or spirv), they've been reviewed and merged there and we just picking these up as is.
Sometimes they may produce problems in our downstream project and may require changes on top. If there is anything blocking I'll raise it separately. It seems this is almost good to go. I'm running some final checks.

@pvchupin
Copy link
Contributor Author

Remaining testing issues were fixed already.

@pvchupin
Copy link
Contributor Author

/merge

@bb-sycl
Copy link
Contributor

bb-sycl commented May 10, 2022

Tue 10 May 2022 09:05:42 PM UTC --- Start to merge the commit into sycl branch. It will take several minutes.

@bb-sycl
Copy link
Contributor

bb-sycl commented May 10, 2022

Tue 10 May 2022 09:09:31 PM UTC --- Merge the branch in this PR to base automatically. Will close the PR later.

@bb-sycl bb-sycl merged commit 66d34e2 into intel:sycl May 10, 2022
@pvchupin pvchupin deleted the pulldown branch May 10, 2022 21:11
@bader
Copy link
Contributor

bader commented May 12, 2022

@pvchupin, this PR broke the build on Windows platform.

d:\github\_work\llvm\llvm\build\bin\..\include\sycl\CL/sycl/half_type.hpp:390:17: error: use of overloaded operator '-' is ambiguous (operand type 'const sycl::detail::half_impl::StorageT' (aka 'const sycl::detail::host_half_impl::half_v2'))
    return half(-other.Data);
                ^~~~~~~~~~~

@elizabethandrews
Copy link
Contributor

@pvchupin, this PR broke the build on Windows platform.

d:\github\_work\llvm\llvm\build\bin\..\include\sycl\CL/sycl/half_type.hpp:390:17: error: use of overloaded operator '-' is ambiguous (operand type 'const sycl::detail::half_impl::StorageT' (aka 'const sycl::detail::host_half_impl::half_v2'))
    return half(-other.Data);
                ^~~~~~~~~~~

I believe this will be fixed by - #6143

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.