-
Notifications
You must be signed in to change notification settings - Fork 750
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 (WW02 2025) #16585
Draft
iclsrc
wants to merge
462
commits into
sycl
Choose a base branch
from
llvmspirv_pulldown
base: sycl
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains 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
…rsion (#121101) Use the regular dialect conversion driver instead of the 1:N dialect conversion driver. The 1:N dialect conversion driver will be removed soon.
The 1:N conversion driver will be removed soon. Note for LLVM integration: Please migrate your code base to the regular dialect conversion driver.
This patch makes sure YAML files are opened for reading as text file to trigger auto-conversion from EBCDIC encoding into expected ASCII encoding on z/OS platform. This is required to fix the following lit tests: ``` LLVM :: tools/llvm-gsymutil/ARM_AArch64/macho-gsym-callsite-info-exe.yaml LLVM :: tools/llvm-gsymutil/ARM_AArch64/macho-gsym-callsite-info-obj.test LLVM :: tools/llvm-gsymutil/ARM_AArch64/macho-gsym-callsite-info-dsym.yaml LLVM :: Transforms/PGOProfile/memprof_undrift_missing_leaf.ll ```
Move definitions to allow easy reuse in llvm/llvm-project#108378.
…s<> result. NFC. Reported by coverity static analyzer - we know the type is a BuiltinType so use castAs<>
…ExtractElementInst specific operand getters. NFC Noticed while investigating the hung builds reported after af83093
…to allow evaluation by DOS batch scripts. NFC. `-passes='default<O3>'` isn't correctly parsed on DOS, so when update_test_checks.py runs a system call on the opt RUN line, it fails to evaluate properly - use `-passes="default<O3>"` instead.
BusyBox `cat` has yet another slight variation of error formatting: ```console $ cat --help 2>&1 | head -1 BusyBox v1.37.0 (2024-09-30 10:39:57 UTC) multi-call binary. $ cat does-not-exist cat: can't open 'does-not-exist': No such file or directory ``` Rather than extend the test result regex with a third case, recognise that we only really care about the filename and errno string. Weaken the regex to ignore all "noise" around the filename. Note this also corrects what looks like a bug with the previous regex. Previously, the `cannot open does-not-exist` alternate did not assert the following errno message. This was introduced in https://reviews.llvm.org/D60553 (apparently) due to differences in the `cat` command on AIX. That bug doesn't include the specific AIX output, so it's unclear if this omission was intended.
Fixes error introduced by #120372.
The Intel Darwin CI bots had their Xcode updated, which brought in a debugserver with Brendan Shanks' change from September 7281e0c llvm/llvm-project#108663 where four general purpose registers are sent by debugserver when in certain process states. But most processes (nearly all in the testsuite) do not have these registers available, so we will get register read failures when requesting those four. These two tests would flag those as errors. There would have been an additional problem with the g/G packet (which lldb doesn't use w/ debugserver, but the testsuite tests) if placeholder values were not included in the full register context bytes; I fixed that issue with the SME patch to debugserver recently already.
…(#121384) I believe these are usually canonicalized to vector extracts in most situations, but under -O0 we might trigger failures in the widening code if we do not handle scalar destinations correctly. The simplest solution should be to lower the shuffle to an extract. Fixes #121365.
This ensures that all blocks created during VPlan execution are properly added to an enclosing loop, if present. Split off from llvm/llvm-project#108378 and also needed once more of the skeleton blocks are created directly via VPlan. This also allows removing the custom logic for early-exit loop vectorization added as part of llvm/llvm-project#117008.
Add missing test coverage of loops where the vector loop region can be removed that include replicate recipes as well as nested loops. Extra test coverage for llvm/llvm-project#108378.
Also verify loop info in tests added in 7d6ec3b.
…ry and (or) (#120352) Fixes #118108. Co-author: Yingwei Zheng (@dtcxzyw)
The SelectionDAG Isel supports the both version of combines mentioned below : ``` select Cond, Pow2, 0 --> (zext Cond) << log2(Pow2) select Cond, 0, Pow2 --> (zext !Cond) << log2(Pow2) ``` The GlobalIsel for now only supports the first one defined in it's generic combinerHelper.cpp. This patch adds the missing second one.
…turn_address(0)` into `_mcount` (#121107) On RISC-V, AArch64, and LoongArch, the `_mcount` function takes `__builtin_return_address(0)` as an argument since `__builtin_return_address(1)` is not available on these platforms. This patch fixes the argument passing to match the behavior of glibc/gcc. Closes llvm/llvm-project#121103.
…554) Required for `{start|stop}-{after-before}` cli
… non-dependent type (#121405)
This fixes #117438. If paths in dependency file are not absoulte, make (or ninja) will canonicalize them. While their canonicalization does not involves symbolic links expansion (for IO performance concerns), leaving a non-absolute path in dependency file may lead to unexpected canonicalization. For example, '/a/../b', where '/a' is a symlink to '/c/d', it should be '/c/b' but make (and ninja) canonicalizes it as '/b', and fails for file not found.
`LIU::Matrix` holds on to a pointer to the allocator in LiveRegMatrix and is left hanging when the allocator moves with the LiveRegMatrix. This extends the lifetime of the allocator so that it does not get destroyed when moving a LiveRegMatrix object.
… (#121352) This reverts commit 0ea40bf. Passes with llvm/llvm-project#121365 fix: https://lab.llvm.org/buildbot/#/builders/55/builds/4930
…(#121633) `X <<s BW - 1` and `X *s INT_MIN` are not equivalent. Alive2: https://alive2.llvm.org/ce/z/MKKFrj Closes llvm/llvm-project#121584
…c. (#121632) These were indicated by Clang include-cleaner.
…cond Follow-up to 82fecab
Update wide induction increments to use the same step as the corresponding wide induction. This enables detecting induction increments directly in VPlan and removes redundant splats.
….inc. NFC GET_PRCTX_DECL and GET_PRCTX_IMPl don't exist in AArch64GenSystemOperands.inc so this include does nothing. It looks like it was removed in 2050e7e.
Since #116524, an integration test started to become flaky (failure rate ~15%). ``` bin/mlir-opt mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_block_matmul.mlir --sparsifier="enable-arm-sve=true enable-runtime-library=false vl=2 reassociate-fp-reductions=true enable-index-optimizations=true" | mlir-cpu-runner --march=aarch64 --mattr="+sve" -e main -entry-point-result=void -shared-libs=./lib/libmlir_runner_utils.so,./lib/libmlir_c_runner_utils.so | bin/FileCheck mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_block_matmul.mlir # executed command: bin/mlir-opt mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_block_matmul.mlir '--sparsifier=enable-arm-sve=true enable-runtime-library=false vl=2 reassociate-fp-reductions=true enable-index-optimizations=true' # .---command stderr------------ # | mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_block_matmul.mlir:71:10: error: null operand found # | %0 = linalg.generic #trait_mul # | ^ # | mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_block_matmul.mlir:71:10: note: see current operation: %70 = "arith.mulf"(<<NULL VALUE>>, %69) <{fastmath = #arith.fastmath<none>}> : (<<NULL TYPE>>, vector<[2]xf64>) -> vector<[2]xf64> # `----------------------------- # error: command failed with exit status: 1 ``` I traced the issue back to the `DenseMap<ValueVector, ValueVector, ValueVectorMapInfo> mapping;` data structure: previously, some `mapping.erase(foo)` calls were unsuccessful (returning `false`), even though the `mapping` contains `foo` as a key.
…ad of StringRef separator. NFC
…ps` (#121285) This avoids some code duplication (handling `Register`, `zero_reg` and immediate operands).
…121653) When not in MinGW mode, the PE debug directory is placed in .rdata by the linker instead of .buildid. In addition to .buildid always explicitly preserve the section containing the debug directory to avoid causing errors later in patchDebugDirectory.
The HLSL SV_GroupID semantic attribute is lowered into @llvm.spv.group.id intrinsic in LLVM IR for SPIR-V target. In the SPIR-V backend, this is now translated to a `WorkgroupId` builtin variable. Fixes #118700 which's a follow-up work to #70120
…1239) When importing nested patterns, we create InsnMatcher for each pattern and miss them if consider only the top level InsnMatcher. Iterate PhysRegOperands instead. Change the type of PhysRegOperands from DenseMap to SmallMapVector to have stable generation. Also drop PhysRegInputs member from InsnMatcher as there are no users of it.
…1451) Also, simplify the existing test for NamespaceMacros. Like the options tested by the added tests, it's also a list of arbitrary strings and initialized to an empty list. (The other existing tests for list of strings either are initialized to a list of one or more strings or require specific strings.)
For now, we only need to annotate the token after #error or #warning. Fixes #117706.
…626) Fixes #105658.
Specifically: Updates SPIR-V headers to the latest tag, to pull in support for SPV_EXT_optnone (and more). Removes all internal enums for SPV_INTEL_optnone and uses the support in the headers instead. Registers the SPV_EXT_optnone extension. Uses the SPV_EXT_optnone extension if it is enabled, otherwise uses the SPV_INTEL_optnone extension if it is enabled, otherwise ignores the OptimizeNone attribute (the ignoring part is not new). Updates the OptNone test: Ensures that the right extension support is declared, depending on the enabled extensions. Ensures that the OptNone capability is declared when either extension is enabled. Note, the spelling for the capability is unconditionally the EXT version. Ensures that the Function Control is present when either extension is enabled. Original commit: KhronosGroup/SPIRV-LLVM-Translator@dd33e5952bfc1ef
Adds support for SPIR-V OpBitcast instructions where the source is a pointer and the destination is not a pointer, and where the source is not a pointer and the destination is a pointer. This needs to be handled as a special case because the LLVM bitcast instruction does not support this. Handles bitcasts between pointers and scalar integers, which is supported by all SPIR-V versions, and pointers and vectors of integers, which is supported by SPIR-V 1.5 (though only for vectors of 32-bit integers). Original commit: KhronosGroup/SPIRV-LLVM-Translator@aafca810e5cd645
Use clang's tablegen-driven mechanism for builtins, which is faster than parsing the opencl-c.h header. Original commit: KhronosGroup/SPIRV-LLVM-Translator@b33ca8d1868d24a
Motivations is similar as f729c49. This PR addresses SYCL device global which may have attributes "sycl-device-image-scope", "sycl-host-access" and "sycl-unique-id". Failure to preserve "sycl-unique-id" after llvm-spirv translation triggers assert at https://github.com/intel/llvm/blob/2824f61dd36790448a224cd596985bd01cbcd0f3/llvm/lib/SYCLLowerIR/DeviceGlobals.cpp#L85 Also preserve GlobalVariable metadata as an improvement, though there is no test to show this is really needed. Original commit: KhronosGroup/SPIRV-LLVM-Translator@f2d913cb1a22cb3
We disable PIE default in a9ac167, the test that use -shared is failing due to it. Add -fPIE to sync with llorg default.
iclsrc
had a problem deploying
to
WindowsCILock
January 10, 2025 05:01 — with
GitHub Actions
Failure
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: llvm/llvm-project@c1ea05e
SPIRV-LLVM-Translator: KhronosGroup/SPIRV-LLVM-Translator@f2d913cb1a22cb3