-
Notifications
You must be signed in to change notification settings - Fork 788
LLVM and SPIRV-LLVM-Translator pulldown (WW33) #2287
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
Conversation
This file contains hidden or 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
Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D85059
This one is pretty easy and shrinks the list of unhandled intrinsics. I'm not sure how relevant the insert point is. Using the insert position of EntryBuilder will place this after constants. SelectionDAG seems to end up emitting these after argument copies and before anything else, but I don't think it really matters. This also ends up emitting these in the opposite order from SelectionDAG, but I don't think that matters either. This also needs a fix to stop the later passes dropping this as a dead instruction. DeadMachineInstructionElim's version of isDead special cases LOCAL_ESCAPE for some reason, and I'm not sure why it's excluded from MachineInstr::isLabel (or why isDead doesn't check it). I also noticed DeadMachineInstructionElim never considers inline asm as dead, but GlobalISel will drop asm with no constraints.
This is a Windows only test which requires HAVE_DIA_SDK, so I failed to notice it.
Always define a remapping for the memref replacement (`indexRemap`) with the proper number of inputs, including all the `outerIVs`, so that the number of inputs and the operands provided for the map don't mismatch. Reviewed By: bondhugula, andydavis1 Differential Revision: https://reviews.llvm.org/D85177
Four new CO-RE relocations are introduced: - TYPE_EXISTENCE: whether a typedef/record/enum type exists - TYPE_SIZE: the size of a typedef/record/enum type - ENUM_VALUE_EXISTENCE: whether an enum value of an enum type exists - ENUM_VALUE: the enum value of an enum type These additional relocations will make CO-RE bpf programs more adaptive for potential kernel internal data structure changes. Differential Revision: https://reviews.llvm.org/D83878
This corresponds with the SelectionDAGISel change in D84056. Also, rename some poorly named tests in CodeGen/X86/fast-isel-fneg.ll with NFC. Differential Revision: https://reviews.llvm.org/D85149
- Moved TypeRange into its own header/cpp file, and add hashing support. - Change FunctionType::get() and TupleType::get() to use TypeRange Differential Revision: https://reviews.llvm.org/D85075
This allows people to use `int8_t` instead of `char`, -funsigned-char, and generally decouples SIMD from the specialness of `char`. And it makes intrinsics like `__builtin_wasm_add_saturate_s_i8x16` and `__builtin_wasm_add_saturate_u_i8x16` use signed and unsigned element types, respectively. Differential Revision: https://reviews.llvm.org/D85074
The usage pattern of Bundle variable assumes the machine is little endian, which is not the case on SystemZ. Fix by converting Bundle to little-endian when necessary.
If a section is supposed to hold elements of type T, then the corresponding CreateSecStartEnd()'s Ty parameter represents T*. Forwarding it to GlobalVariable constructor causes the resulting GlobalVariable's type to be T*, and its SSA value type to be T**, which is one indirection too many. This issue is mostly masked by pointer casts, however, the global variable still gets an incorrect alignment, which causes SystemZ to choose wrong instructions to access the section.
* Add SystemZ to the list of supported architectures. * XFAIL a few tests. Coverage reporting is broken, and is not easy to fix (see comment in coverage.test). Interaction with sanitizers needs to be investigated more thoroughly, since they appear to reduce coverage in certain cases.
Fixes error: implicit declaration of function 'printf' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
RTM Adaptive Locks are supported on msys2/mingw for clang and gcc. Differential Revision: https://reviews.llvm.org/D81776
The SVE instruction set only supports sdiv/udiv for 32-bit and 64-bit integers. If we see an 8-bit or 16-bit divide, widen the operands to 32 bits, and narrow the result. Differential Revision: https://reviews.llvm.org/D85170
When lldb cannot find source file thus IDE renders a disassembly view, add syntax highlighting for constants, registers and final line comments for better debugging experience. The original plain disassembly view looks like: {F12401687} An ideal view is like the screenshot attached. {F12401515} In this diff, the mimeType is a kind of media type for formatting the content in the response to a source request. Elements in the disassembly view, like constants, registers and final line comments are colored for highlighting. A built-in support in the VSCode IDE for syntax highlighting will identify the which mimeType to apply and render the disassembly view as expected. Reviewed By: wallace, clayborg Differential Revision: https://reviews.llvm.org/D84555
Get the argument register and ensure there's a copy to the virtual register. AMDGPU and AArch64 have similarish code to get the livein value, and I also want to use this in multiple places. This is a bit more aggressive about setting the register class than the original function, but that's probably OK. I think we're missing a few verifier checks for function live ins. I noticed AArch64's calling convention code is not actually adding liveins to functions, only the entry block (which apparently might not matter that much?). There should probably be a verifier check that entry block live ins are also live into the function. We also might need a verifier check that the copy to the livein virtual register is in the entry block.
We don't support getting the remote environment. The gdb remote protocol has no packet for that.
Also renamed a method - printTensor - to print; and added comments.
lldb-platform contains a very minimal support for the qfProcessInfo packet, only allowing the simplest query to get most of the testsuite running, and returning very little information about the matched processes.
This function has been reduced to an identity function for some time.
This is the last remaining use of ConstantProp, migrate it to InstSimplify in the goal of removing ConstantProp. Add -hexagon-instsimplify option to enable skipping of instsimplify in tests that can't handle the extra optimization. Differential Revision: https://reviews.llvm.org/D85047
It is technically legal for optimizations to create an alloca that is used by more than one dbg.declare, if one or both of them are inlined instances of aliasing variables. Differential Revision: https://reviews.llvm.org/D85172
The sorting is needed, because reaching defs are (logically) ordered, but are not collected in that order. This change will break up the single call to std::sort into a series of smaller sorts, each of which should use a cheaper comparison function than the original.
This improves performance of PhysicalRegisterInfo::makeRegRef.
Running ninja check-sanitizer fails for after that patch (commit 058f5f6) with the following error: libRTSanitizerCommon.test.nolibc.x86_64.a(sanitizer_posix.cpp.o): In function `__sanitizer::GetNamedMappingFd(char const*, unsigned long, int*)': ..../llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_posix.cpp:358: undefined reference to `fcntl' clang-12: error: linker command failed with exit code 1 (use -v to see invocation) This patch works around the problem by only calling fcntl if O_CLOEXEC is not defined. Reviewed By: plopresti Differential Revision: https://reviews.llvm.org/D85114
Unit.Format, Unit.Version and Unit.AddrSize are replaced with dwarf::FormParams in D84496 to get rid of unnecessary functions getOffsetSize() and getRefSize(). However, that change makes it difficult to make AddrSize optional (Optional<uint8_t>). This change pulls out dwarf::FormParams from DWARFYAML::Unit and use it as a helper struct in DWARFYAML::emitDebugInfo(). Reviewed By: jhenderson, MaskRay Differential Revision: https://reviews.llvm.org/D85296
`ninja check-all` currently fails on Illumos: [84/716] Generating default/Asan-i386-inline-Test FAILED: projects/compiler-rt/lib/asan/tests/default/Asan-i386-inline-Test cd /var/llvm/dist-amd64-release/projects/compiler-rt/lib/asan/tests && /var/llvm/dist-amd64-release/./bin/clang ASAN_INST_TEST_OBJECTS.gtest-all.cc.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_globals_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_interface_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_internal_interface_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_oob_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_mem_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_str_test.cpp.i386-inline.o ASAN_INST_TEST_OBJECTS.asan_test_main.cpp.i386-inline.o -o /var/llvm/dist-amd64-release/projects/compiler-rt/lib/asan/tests/default/./Asan-i386-inline-Test -g --driver-mode=g++ -fsanitize=address -m32 ld: fatal: unrecognized option '--no-as-needed' ld: fatal: use the -z help option for usage information clang-11: error: linker command failed with exit code 1 (use -v to see invocation) `clang` unconditionally passes `--as-needed`/`--no-as-needed` to the linker. This works on Solaris 11.[34] which added a couple of option aliases to the native linker to improve compatibility with GNU `ld`. Illumos `ld` didn't do this, so one needs to use the corresponding native options `-z ignore`/`-z record` instead. Because this works on both Solaris and Illumos, the current patch always passes the native options on Solaris. This isn't fully correct, however: when using GNU `ld` on Solaris (not yet supported; I'm working on that), one still needs `--as-needed` instead. I'm hardcoding this decision because a generic detection via a `cmake` test is hard: many systems have their own implementation of `getDefaultLinker` and `cmake` would have to duplicate the information encoded there. Besides, it would still break when `-fuse-ld` is used. Tested on `amd64-pc-solaris2.11` (Solaris 11.4 and OpenIndiana 2020.04), `sparcv9-sun-solaris2.11`, and `x86_64-pc-linux-gnu`. Differential Revision: https://reviews.llvm.org/D84412
Name: (-x) s> x --> x s< 0 %neg_x = sub nsw i8 0, %x ; %x must not be INT_MIN %r = icmp sgt i8 %neg_x, %x => %r = icmp slt i8 %x, 0 https://rise4fun.com/Alive/ZslD https://bugs.llvm.org/show_bug.cgi?id=39480
Replacement of the read-from operand with the result of its intrinsic call user should only happen for `llvm.ptr.annotation` calls. Signed-off-by: Artem Gindinson <[email protected]>
This patch introduces SPV_INTEL_arbitrary_precision_fixed_point extension, which adds operations for arbitrary precision fixed point numbers. The ac_fixed datatype is represented as a pseudo type using OpTypeInt. Its parameters are: * W - total width of the datatype. It's encoded in the width of the OpTypeInt. * I - determines the position of the decimal point. * S - determines if this is a signed or an unsigned number. Full specification can be found in intel#1934 Co-authored-by: Viktoria Maksimova <[email protected]>
This functionality is not used.
`SPIRVNameMapEnum.h` and `SPIRVIsValidEnum.h` have been clang-formatted to be consistent with rest of the code base. Apply those formatting changes to the script generating those files.
The `isValid(Op)` function is not used and the NameMap for opcodes is constructed in `SPIRVOpCode.h`.
Apply the change of fc83fc7 ("updated built-in variable names to match LLVM for SPIR-V documentation (issue intel#89)", 2016-03-14) to the script generating `SPIRVNameMapEnum.h`, such that the output of the script for builtins is aligned with the current code.
6a2fbcf
to
0559a89
Compare
/summary:run |
jsji
pushed a commit
that referenced
this pull request
Jan 11, 2024
This translator currently only supports the OpenCL/compute "flavour" of SPIR-V, but for the `llvm.bitreverse` intrinsic it could produce SPIR-V modules declaring the `Shader` Capability. When translating `llvm.bitreverse` without having the `SPV_KHR_bit_instructions` extension enabled, avoid producing SPIR-V modules declaring the `Shader` Capability and report an error instead. Original commit: KhronosGroup/SPIRV-LLVM-Translator@17a5d2d
Chenyang-L
pushed a commit
that referenced
this pull request
Feb 18, 2025
[Command-Buffer] Fix update validation for L0 and OpenCL
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@5060f568
SPIRV-LLVM-Translator: KhronosGroup/SPIRV-LLVM-Translator@b24a75c