Skip to content
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

LLVM and SPIRV-LLVM-Translator pulldown (WW34) #10903

Closed
wants to merge 1,519 commits into from
Closed

Conversation

sys-ce-bb
Copy link
Contributor

kkwli and others added 30 commits August 18, 2023 10:18
This prevents further parsing of tokens (that'll be freed) inside method
body by propagating EOF emitted by reaching code completion token up the parsing
stack.

Differential Revision: https://reviews.llvm.org/D158269
This is the next preparation patch to support widenable conditions
widening instead of branches widening.

We've added parseWidenableGuard util which parses guard condition and
collects all checks existing in the expression tree: D157276

Here we are adding util which walks similar way through the expression
tree but looks up for widenable condition without collecting the checks.
Therefore llvm::extractWidenableCondition could parse widenable branches
with arbitrary position of widenable condition in the expression tree.

llvm::parseWidenableBranch which is we are going to get rid of is being
replaced by llvm::extractWidenableCondition where it's possible.

Reviewed By: anna

Differential Revision: https://reviews.llvm.org/D157529
This is a partial revert of https://reviews.llvm.org/D157837 - it turns
out that the LLVM test suite needs to be updated first not to use any of
the unsupported Flang options:
  * https://github.com/llvm/llvm-test-suite
Sample errors:
```
flang-new: error: unknown argument: '-fbounds-check'
flang-new: error: unknown argument: '-fcheck=all'
flang-new: error: unknown argument: '-fcheck-array-temporaries'
```

Once the test suite is updated, we can restore the reverted setting.

Broken bot:
  * https://lab.llvm.org/buildbot/#/builders/197/builds/9001

Differential Revision: https://reviews.llvm.org/D158289
…n_drv_overriding_flag_option (-Woverriding-option)

warn_drv_overriding_flag_option was added for clang-cl `/T*` options (D1290) and its group name was planned to be renamed to overriding-option.
The name -Woverriding-t-option does not make sense for other uses,
mostly related to -ffp-model= related diagnostics.

Reviewed By: hans, skan, dexonsmith

Differential Revision: https://reviews.llvm.org/D158137
D155991 changed the file lookup to do a full string compare on the
filename; however, this added ~0.5% to compile time with -g.
Go back to the previous pointer-based lookup, but capture the main
file's checksum as well as its name to use when creating the extra
DIFile entry. This causes all entries to be consistent and also
avoids computing the checksum twice.

This reverts commit 5956648.
There was a string lifetime issue that is now corrected.

Differential Revision: https://reviews.llvm.org/D156571
…e declare

Split the tests for declare in module specification and the declare in
function/subroutine specificatons. Since the lowering is specific to the
location of the declare it will make it easier to update these files.
This also remove the duplicate parts shared by the FIR vs HLFIR tests.

Reviewed By: razvanlupusoru

Differential Revision: https://reviews.llvm.org/D158222
…testing"

`llvm-cov convert-for-testing` only functions properly when the input binary contains a single source file. When the binary has multiple source files, a `Malformed coverage data` error will occur when the generated .covmapping is read back. This is because the testing format lacks support for indicating the size of its file records, and current implementation just assumes there's only one record in it. This patch fixes this problem by introducing a new testing format version.

Changes to the code:

- Add a new format version. The version number is stored in the the last 8 bytes of the orignial magic number field to be backward-compatible.
- Output a LEB128 number before the file records section to indicate its size in the new version.
- Change the format parsing code correspondingly.
- Update the document to formalize the testing format.
- Additionally, fix the bug when converting COFF binaries.

Reviewed By: phosek, gulfem

Differential Revision: https://reviews.llvm.org/D156611
To enable signature conversions to be used in CIRCT, locations should no longer be dropped from block arguments.

Reviewed By: Mogball, springerm

Differential Revision: https://reviews.llvm.org/D157882
When updating the return type of deoptimize call during inline, we need
to drop incompatible return attributes.  This bug was exposed once we
relaxed the contraint of adding the attributes through D156844. With
that change deoptimize (are not willreturn) will start having return
attributes added to it.

Fixes llvm/llvm-project#64804.

Differential Revision: https://reviews.llvm.org/D158286
It's possible to write an integer constant in hexadecimal, but you need to
prefix it with u or s. I couldn't find this mentioned anywhere in the LangRef,
so this adds a small note about it.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D158288
Since we build the dylib with C++20, there's no need to use conditional
macros anymore.

Differential Revision: https://reviews.llvm.org/D157995
Add support for f16 in the expansion of math.roundeven.
Associated GitHub issue: iree-org/iree#13522
This version addresses the build issues on Windows reported on
https://reviews.llvm.org/D157204

Test plan: ninja check-mlir check-all

Differential revision: https://reviews.llvm.org/D158234
The fuzzer found that a 100,000 digit number could possibly return an
incorrect result. This patch fixes the issue.

Reviewed By: lntue

Differential Revision: https://reviews.llvm.org/D158118
…bit, a SMIN/SMAX node can be simplified to a OR/AND node respectively."

This reverts commit 54d663d, which breaks the test CodeGen/SystemZ/ctpop-01.ll for stage2-ubsan check (see https://lab.llvm.org/buildbot/#/builders/85/builds/18410)

I manually confirmed that the test had been passing immediately prior to that commit
(BUILDBOT_REVISION=4772c66cfb00d60f8f687930e9dd3aa1b6872228 llvm-zorg/zorg/buildbot/builders/sanitizers/buildbot_bootstrap_ubsan.sh)
Feedback I hear regularly is that the LLDB website is hard to navigate.
This patch is an attempt to simplify things by breaking the website up
in 3 major areas: "Using LLDB", "Scripting LLDB" and "Developing LLDB".

  - The majority of the "project" pages were eliminated. The projects
    page was moved under "Developing LLDB". The releases page was
    replaced with a link under "External links". The other pages (goals,
    features and status) were pretty outdated and while they probably
    made sense in the past, they don't feel all that relevant anymore
    now that LLDB is an established debugger.

  - "USE & EXTENSION" was renamed to "Using LLDB". Besides that, this
    section remained mostly unchanged. The exception are the Python
    pages which were moved under "Scripting LLDB".

  - "Development" was renamed to "Developing LLDB" and now houses all the
    resources for LLDB developers. The old "Design" section (which only
    contained two pages) was moved back under here too.

Differential revision: https://reviews.llvm.org/D158023
…ndeven"

This reverts commit 40bf363.
The build bot ppc64le-mlir-rhel-test got broken by these changes,
see https://lab.llvm.org/buildbot#builders/88/builds/61048 .
We had some instances when LLVM would not inline fixed-count memcpy and ended up
attempting to lower it a a libcall, which would not work on NVPTX as there's no
standard library to call.

The patch relaxes the threshold used for -Os compilation so we're always allowed
to inline memory copy functions.

Differential Revision: https://reviews.llvm.org/D158226
Dump verification errors to a local buffer instead of racing stdio and
potentially showing interleaved output.
Today I learnt about their existence (D158288), they just need to be prefixed
with a u or s.

Reviewed By: goldstein.w.n

Differential Revision: https://reviews.llvm.org/D158290
…on-matching types

We have an existing DAG combine for when an insert/extract subvector pair is entirely a nop, but we hadn't handled the case where the net result was either an insert or an extract (but not both).  The transform is restricted to index = 0 to avoid having to adjust indices after the transform.

Reviews, a couple comments on the test changes:
* Mostly RISCV, mostly schedule reordering.
* One real regression in splats-with-mixed-vl.ll due to a different overly aggressive combine, fix in a follow up patch.
* The test/CodeGen/X86/vector-replicaton-i1-mask.ll diff looked concerning at first, but not the mask size at most 4 i1s.  I think the type changes on the mask loads are correct, but would welcome a second opinion with someone more familiar with AVX512 codegen.

Differential Revision: https://reviews.llvm.org/D158201
…dedBits to when simplifying UMIN/UMAX to AND/OR.

DemandedBits is forced to all ones if there are multiple users.

The changes X86 test cases looks like they were miscompiles before.
The value of eax/rax from the cmov is returned from the function in
addition to being used by the sar. That usage needs all bits even
though the sar doesn't.
…0 with non-matching types"

This reverts commit 770be43.

Forgot to remove from my tree while experimenting.
This change adds the option of using different units for blocktimes specified via the KMP_BLOCKTIME environment variable. The parsing of the environment now recognizes units suffixes: ms and us. If a units suffix is not specified, the default unit is ms. Thus default behavior is still the same, and any previous usage still works the same. Internally, blocktime is now converted to microseconds everywhere, so settings that exceed INT_MAX in microseconds are considered "infinite".

kmp_set/get_blocktime are updated to use the units the user specified with KMP_BLOCKTIME, and if not specified, ms are used.

Added better range checking and inform messages for the two time units. Large values of blocktime for default (ms) case (beyond INT_MAX/1000) are no longer allowed, but will autocorrect with an INFORM message.

The delay for determining ticks per usec was lowered.  It is now 1 million ticks which was calculated as ~450us based on 2.2GHz clock which is pretty typical base clock frequency on X86:
(1e6 Ticks)  /  (2.2e9 Ticks/sec)  *  (1e6 usec/sec)  =  454 usec
Really short benchmarks can be affected by longer delay.

Update KMP_BLOCKTIME docs.

Portions of this commit were authored by Johnny Peyton.

Differential Revision: https://reviews.llvm.org/D157646
`clang` currently lacks PIE support on Solaris.  This patch fixes this,
also linking with `crtbeginS.o` and `crtendS.o` for `-pie` and `-shared`.

Tested on `amd64-pc-solaris2.11`, `sparcv9-sun-solaris2.11`, and
`x86_64-pc-linux-gnu`.

Differential Revision: https://reviews.llvm.org/D158206
RKSimon and others added 21 commits August 21, 2023 11:22
…s implicitly truncated

D152276 wasn't handling the case where the inserted element is implicitly truncated into the vector - resulting in a i1 element (implicitly truncated from i8) overwriting 8 bits instead of 1 bit.

This patch is intended to be merged into 17.x so I've just disallowed any vector element vs inserted element type mismatch - technically we could be more elegant and permit truncated stores (as long as the store is still byte sized), but the use cases for that are so limited I'd prefer to play it safe for now.

Candidate patch for #64655 17.x merge

Differential Revision: https://reviews.llvm.org/D158366
Add support for following vector to tile (MOVA) intrinsics to ArmSME
dialect:

  llvm.aarch64.sme.write.vert
  llvm.aarch64.sme.write.horiz

Includes the definition of new type predicate
'ScalableVectorOfRankAndLengthAndType' in OpBase.td.

Reviewed By: awarzynski, dcaballe

Differential Revision: https://reviews.llvm.org/D157004
This will represent functions with the amdgpu_cs_chain or
amdgpu_cs_chain_preserve calling conventions.

Differential Revision: https://reviews.llvm.org/D156410
…file

We will need to check the output of medium code model.

Reviewed By: wangpc

Differential Revision: https://reviews.llvm.org/D157965
In D146245, we have supported lowering inline asm `m` with offset
to `register+imm`, but we didn't handle the case that the offset
is the low part of global address.

This patch will emit `%lo(g)` when `g` is a global address.

Fixes #64656

Reviewed By: asb

Differential Revision: https://reviews.llvm.org/D157839
…4 varargs

This fixes a regression since 1c10d5b
/ https://reviews.llvm.org/D130903 by applying the same fix from
SelectionDAG from 8cb3667 /
https://reviews.llvm.org/D35720.

This could possibly have been detected if the existing testcases
in win64_vararg.ll had been tested with GlobalISel too, but all
the IR snippets there fail to be translated with GlobalISel.

This adds a separate testcase based on real world LLVM IR (instead of
hand-reduced IR), which GlobalISel does translate happily - tested
with both SelectionDAG and GlobalISel.

Before this change, the stack object locations (visible in MIR
with "llc -print-after-all") didn't match with what the prologue
emitted by AArch64FrameLowering actually looked like, which caused
clobbered callee saved registers when function local stack objects
aliased the actual location of the callee saved registers.

This fixes llvm/llvm-project#64740.

Differential Revision: https://reviews.llvm.org/D158272
  Refresh of the generic scheduling model to use A510 instead of A55.
  Main benefits are to the little core, and introducing SVE scheduling information.
  Changes tested on various OoO cores, no performance degradation is seen.

  Differential Revision: https://reviews.llvm.org/D156799
The test creates two maps, which explode in output size when subtracting,
causing the test to take +11 seconds on a debug build. Removing the slow
test until more simplifications in subtraction are added.

Reviewed By: arjunp

Differential Revision: https://reviews.llvm.org/D158406
We previously provided the `try_open` facility to indicate if opening a
port failed. This is used on the server to continuously poll and quit if
there is no work. However the Client currently has no way to recover
from not finding a port and simply spins repeatedly. The abstraction
here costs us some resources. This patch changes the interface to only
allow `open` on the client side and merges the loops. This saves us a
branch and a good number of registers.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D158365
`DIFile`'s checksum fields became optional as part of
https://reviews.llvm.org/D43043. This updates the description in the docs to
match.

Fixes llvm/llvm-project#39151

Differential Revision: https://reviews.llvm.org/D158281
Ensure the correct clang-format binary is picked up, as
`clang-format-diff.py` currently seems to look for clang-format-17
while we install clang-format-18.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@2bb5fed
This is a bulk conversion done using the migration script.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@36936af
When translating the `spirv.Extension` metadata of an LLVM Module,
report an error when encountering an extension that has been
explicitly disabled.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@2e917c9
This is a bulk conversion done using the migration script.

There are more transcoding tests to be converted; however they will
need manual fixups, so leave them out of this bulk conversion.

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@76fcc39
After bitcast float to integer we should use not SAbs but UAbs call. But since
UAbs is a bit useless - we shouldn't generate *Abs at all.

Signed-off-by: Sidorov, Dmitry <dmitry.sidorov@intel.com>

Original commit:
KhronosGroup/SPIRV-LLVM-Translator@d021f75
@sys-ce-bb sys-ce-bb added the disable-lint Skip linter check step and proceed with build jobs label Aug 21, 2023
@jsji jsji closed this Aug 29, 2023
@jsji
Copy link
Contributor

jsji commented Aug 29, 2023

Close this , as we have enabled INTEL_SYCL_OPAQUEPOINTER_READY in #10888 , it is better to create a new pulldown based on latest sycl-web branch.

@jsji jsji deleted the llvmspirv_pulldown branch August 30, 2023 15:15
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.