Skip to content

[GENX] Update GENX branch to LLVM 5e5a22c #12112

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 3,522 commits into from
Dec 13, 2023
Merged

[GENX] Update GENX branch to LLVM 5e5a22c #12112

merged 3,522 commits into from
Dec 13, 2023

Conversation

whitneywhtsang
Copy link
Contributor

No description provided.

jroelofs and others added 30 commits November 21, 2023 10:33
This showed up when simplifying some large testcase, where the cfi directives
became out of sync with the proc's they enclose.

Now restricted to platforms that support .subsections_via_symbols.

This reverts commit 797b68c.

Fixes: #72802

Differential revision: https://reviews.llvm.org/D153167

rdar://111459507
This is part-2 change to improve codegen for vec_fabs. In this patch,
v16f16 and v132f16 fabs are improved.

There will be at least two followups patches after this one.
1) fixing the ISEL crash when fabs.v32f16 uses custom lowering with
AVX512
2) better expansion for v16f16, v32f16 types on AVX1 subtargets.
We can use short forward branch to conditionally negate if the
value is negative.
Update tests in "vector-contract-matvec-transforms.mlir" so that they
are consistent with similar tests in:
 * "vector-contract-to-outerproduct-transforms.mlir".

This is to enable further refactoring in a follow-up patch, namely to:
  * remove duplication (this will be much easier once consistent naming
    is used),
  * extend tests in "vector-contract-matvec-transforms.mlir" with cases
    for scalable vectors,
  * merge "vector-contract-matvec-transforms.mlir" and
    "vector-contract-to-outerproduct-transforms.mlir"  (there's no need
    for 2 different files testing identical transformations).

Overview of changes in this patch:
  1. Simplify the test by removing MemRef wrappers - this test verifies
     Vector -> Vector transformations and  MemRefs are not needed.
  2. Use (m, k) indices instead of (i, j).
  3. Rename function names.

This is part of a larger effort to improve test coverage for scalable
vectors in the Vector dialect. Implements #72834.
`atomic` is required to be followed by a special `atomic clause`, so
this patch manages the parsing of that. We are representing each of the
variants of the atomic construct as separate kinds, because they have
distinct rules/application/etc, and this should make it easier to check
rules in the future.
… definitions and declarations (#72452)

https://reviews.llvm.org/D128482 regressed certain cases of VTT emission
which are no longer hidden with -fvisibility=hidden.

Fix this regression by marking both declarations and definitions.

Fixes [clang codegen][regression] VTT definitions missing
dso_local/hidden/etc markings #72451
The bots have been running smoothly for a while. Check out
https://libcxx.efcs.ca/cistats.html for more info.
Jakub Jelínek reports:

As mentioned in https://gcc.gnu.org/PR112563, the new DECLARE_WRAPPER
macro
added in 37445e9 and ammended in 85d3873 doesn't work on SPARC/Solaris
with
  Solaris as.

While clang and GNU as when used from GCC seems to be forgiving on most
architectures and allow both %function and @function (with the latter
not being
allowed on ARM/AArch64 I believe because @ is assembler comment start
there),
  Solaris as doesn't allow the %function form.

Fix it by using %function only for ARM.

Co-developed-by: Jakub Jelínek <jakub@redhat.com>
Reported-by: Jakub Jelínek <jakub@redhat.com>
Closes: llvm/llvm-project#72970
These assertions can only be triggered by bugs in the algorithm's
implementation; all user inputs should be handled gracefully.
OutputUnformattedBlock and InputUnformattedBlock are not used.
…2576)

Build clang with the host compiler and ccache enabled in order to speed
up the phase 1 builds. This helps reduce the amount of time spent
running on the non-free builders.
…le reader and writer (#73026)

Test fixture `MaybeSparseInstrProfTest` parameterize InstrProfWriter by
whether output is sparse or not. This test fixture has 20 test cases,
and 6 of them doesn't use profile reader and writer. Undo the
parameterization for these test cases will reduce redundant tests. This
is one clean-up PR. (A few more clean-ups to come soon, but they are not
inter-dependent)
This will help users analyze whether high register usage is coming from
inability of scheduler to reduce RP, or from sacrificing good RP to
improve ILP.
The NonNeg flag was being Anded with the Exact flag.
Baremetal targets tend to implement their own runtime support for
sanitizers. Clang driver gatekeeping of allowed sanitizer types is
counter productive.

This change allows anything that does not crash and burn in compilation,
and leaves any potential runtime issues for the user to figure out.
This skips the build of all the unittests and llvm/clang tools, reducing
the number of ninja targets from 4,826 to 3,816 in phase 1 and phase 2.
…acePrinter. (#73029)

Make some methods of StackTracPrinter that will have a common
implementation, non virtual.
Adds a new Implementation of StackTracePrinter that only
emits symbolizer markup. Currently this change only
affects Fuchsia OS. Should be NFC.
… test of value profiles (#73038)

This patch factor out the common code among three similar test cases.
The input data and test logic are pretty similar. Parameterize the
differences (prof-weight and endianness) as advised in
llvm/llvm-project#72611.
- Remove duplicated tests
removed two unused methods, removed obsoleted FIXME
Remove the run lines that check for the FIR lowering. HLFIR lowering
produce the same check lines.
…ebugger (#71564)

Use "__this" in DataMemberRecord, make vs debugger can be parsed normally

Fixes #71562
…ests (#73035)

HLFIR lowering as been set by default now and FIR lowering support will
be removed in the near future. This patch removes the specific FIR check
lines on enter/exit data tests.
paschalis-mpeis and others added 14 commits November 24, 2023 12:24
Update regex to _explicitly_ show which exp versions are added.
The previous regex used `exp[^e]` to avoid matching calls like:
`@llvm.experimental.stepvector`.

Note: ArmPL Mappings for scalable types are not yet utilized
(eg, `llvm.exp10.nxv2f64`, `llvm.exp10.nxv4f32`), as `replace-with-veclib`
pass needs improvements.
…(#72526)

The code in the CloneInstructionsIntoPredec... function modified by this
patch has a long history that dates back to 2011, see d715ec8.
There, when folding branches, all dbg.value intrinsics seen when folding
would be saved and then re-inserted at the end of whatever was folded. Over
the last 12 years this behaviour has been preserved.

However, IMO it's bad behaviour. If we have:

  inst1
  dbg.value1
  inst2
  dbg.value2

And we fold that sequence into a different block, then we would want the
instructions and variable assignments to appear in the same order. However
because of this old behaviour, the dbg.values are sunk, and we get:

  inst1
  inst2
  dbg.value1
  dbg.value2

This clustering of dbg.values can make assignments to the same variable
invisible, as well as reducing the coverage of other assignments.

This patch relaxes the CloneInstructions... function and allows it to clone
and update dbg.values in-place, causing them to appear in the original
order in the destination block. I've added some extra dbg.values to the
updated test: without the changes to the pass, the dbg.values sink into a
blob ahead of the select. The RemoveDIs code can't cope with this right now
so I've removed the "--try..." flag, restored in a commit to land in a
couple of hours.

(Metadata changes to make the LLVM-IR parser not drop the debug-info for it
being out of date. The RemoveDIs related RUN line has been removed because
it was spuriously passing due to the debug-info being dropped).
…n type of function. (#69724)

Import of a function with `auto` return type that is expanded to a
`SubstTemplateTypeParmType` could fail if the function itself is the
template specialization where the parameter was replaced.
Explicitly include some headers or forward-declare types, in
preparation for removing an include that pulls in many transitive
headers.
If GOTSym is not defined, we cannot call `GOTSym.getBlock()`. It failed with:
```
Assertion failed: (Base->isDefined() && "Not a defined symbol"), function getBlock, file JITLink.h, line 554.
```
Manually add clobbers for various register combinations to tests. This
highlights incorrectly performing shrink-wrapping, with
StoreSwiftAsyncContext expansion clobbering a live register.
The new libcxx workflow are run and failing in non llvm repo.
Skip it similar to other workflow.
There have been some minor but pervasive changes to the generated
CHECK lines, so regenerate all of them, to minimize future diffs.
Avoid some spurious changes in a future patch.
…ction (#73311)

Floating point properties are a combination of target OS, target
architecture and compiler support.
 - Adding target OS detection,
 - Moving floating point type detection to its own file.

This is in preparation of adding support for `_Float16` which requires
testing compiler **version** and target architecture.
@whitneywhtsang whitneywhtsang added the genx Pull requests or issues for genx branch label Dec 7, 2023
@whitneywhtsang whitneywhtsang self-assigned this Dec 7, 2023
@whitneywhtsang whitneywhtsang force-pushed the merge branch 2 times, most recently from 12c04ad to aa06c2e Compare December 7, 2023 23:24
@whitneywhtsang whitneywhtsang requested a review from pengtu December 8, 2023 01:21
whitneywhtsang and others added 3 commits December 8, 2023 17:02
Signed-off-by: Tsang, Whitney <whitney.tsang@intel.com>
Signed-off-by: Tsang, Whitney <whitney.tsang@intel.com>
@whitneywhtsang
Copy link
Contributor Author

Merge when triton-dse repo is ready to move to 34f165d6633713a2c9b667927c3baaf018157ef1.

@etiotto etiotto marked this pull request as ready for review December 13, 2023 19:14
@etiotto etiotto merged commit 728ce37 into intel:genx Dec 13, 2023
@whitneywhtsang whitneywhtsang deleted the merge branch December 14, 2023 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment