- Jun 02, 2021
-
-
Nico Weber authored
See "Proposal: Adding a toplevel .mailmap file" on llvm-dev: https://lists.llvm.org/pipermail/llvm-dev/2021-May/150741.html Differential Revision: https://reviews.llvm.org/D103360
-
Jingu Kang authored
This re-enables commit 107d19eb with bug fixes. Differential Revision: https://reviews.llvm.org/D99354
-
Bjorn Pettersson authored
This is a pre-commit of a test case D99439 which is a patch that updates @llvm.powi to handle different int sizes for the exponent. Problem is that @llvm.powi is used as an IR construct that maps to RT libcalls to __powi* functions, and those lib functions depend on sizeof(int) to use correct type for the exponent. The test cases show that we use i32 for the powi expenent, which later would result in wrong type being used in libcalls (miscompile). But there are also a couple of the negative test cases that show that we rewrite into using powi when having a uitofp conversion from i16, which would be wrong when doing the libcall as an "unsigned int" isn't guaranteed to fit inside the "int" argument in the called libcall function. Differential Revision: https://reviews.llvm.org/D102919
-
Bjorn Pettersson authored
Use RuntimeLibcalls to get a common way to pick correct RTLIB::POWI_* libcall for a given value type. This includes a small refactoring of ExpandFPLibCall and ExpandArgFPLibCall in SelectionDAGLegalize to share a bit of code, plus adding an ExpandFPLibCall version that can be called directly when expanding FPOWI/STRICT_FPOWI to ensure that we actually use the same RTLIB::Libcall when expanding the libcall as we used when checking the legality of such a call by doing a getLibcallName check. Differential Revision: https://reviews.llvm.org/D103050
-
Bjorn Pettersson authored
The FPOWI DAG node is normally lowered to a libcall to one of the RTLIB::POWI* runtime functions and the exponent should normally have a type matching sizeof(int) when making the call. Thus, type promotion of the exponent could lead to an FPOWI with a type for the second operand that would be incorrect when doing the libcall (a situation which would be hard to detect post-legalization if we allow such FPOWI nodes). This patch is changing DAGTypeLegalizer::PromoteIntOp_FPOWI to do the rewrite into a libcall directly instead of promoting the operand. This way we can check that the exponent is smaller than sizeof(int) and we can let TargetLowering handle promotion as part of making the libcall. It could be noticed here that makeLibCall has some knowledge about targets such as 64-bit RISCV, for which the libcall argument should be extended to a type larger than sizeof(int). Differential Revision: https://reviews.llvm.org/D102950
-
Bjorn Pettersson authored
When rewriting powf(2.0, itofp(x)) -> ldexpf(1.0, x) exp2(sitofp(x)) -> ldexp(1.0, sext(x)) exp2(uitofp(x)) -> ldexp(1.0, zext(x)) the wrong type was used for the second argument in the ldexp/ldexpf libc call, for target architectures with 16 bit "int" type. The transform incorrectly used a bitcasted function pointer with a 32-bit argument when emitting the ldexp/ldexpf call for such targets. The fault is solved by using the correct function prototype in the call, by asking TargetLibraryInfo about the size of "int". TargetLibraryInfo by default derives the size of the int type by assuming that it is 16 bits for 16-bit architectures, and 32 bits otherwise. If this isn't true for a target it should be possible to override that default in the TargetLibraryInfo initializer. Differential Revision: https://reviews.llvm.org/D99438
-
Adrian Kuegel authored
Differential Revision: https://reviews.llvm.org/D103507
-
Tomasz Miąsko authored
Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102729
-
Fraser Cormack authored
RVV vectors must be aligned to their element types, so anything less is unaligned. For regular loads and stores, our custom-lowering of fixed-length vectors meant that we opted out of LegalizeDAG's built-in unaligned expansion. This patch adds that logic in to our custom lower function. For masked intrinsics, we declare that anything unaligned is not legal, leaving the ScalarizeMaskedMemIntrin pass to do the expansion for us. Note that neither of these methods can handle the expansion of scalable-vector memory ops, so those cases are left alone by this patch. Scalable loads and stores already go through expansion by default but hit an assertion, and scalable masked intrinsics will silently generate incorrect code. It may be prudent to return an error in both of these cases. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D102493
-
Diana Picus authored
These should already pass with the current implementation. Differential Revision: https://reviews.llvm.org/D103402
-
Daniil Fukalov authored
Reviewed By: mkazantsev Differential Revision: https://reviews.llvm.org/D103456
-
Vitaly Buka authored
-
Vitaly Buka authored
This fix breaks the test. This reverts commit 6a2807bc.
-
Tobias Gysi authored
Replace the uses of deprecated Structured Op Interface methods in Sparsification.cpp. This patch is based on https://reviews.llvm.org/D103394. Differential Revision: https://reviews.llvm.org/D103436
-
Sriraman Tallam authored
D85085 was pushed earlier but broke tests on mac and win: http://lab.llvm.org:8080/green/job/clang-stage1-RA/21182/consoleFull#-706149783d489585b-5106-414a-ac11-3ff90657619c Recommitting it after adding mtriple to the llc commands. Emit correct location lists with basic block sections. This patch addresses multiple things: 1) It ensures that const_value is emitted when possible with basic block sections. 2) It emits location lists such that the labels are always within the section boundary. 3) It fixes a bug when the parameter is first used in a non-entry block which is in a different section from the entry block. Differential Revision: https://reviews.llvm.org/D85085
-
Bruce Mitchener authored
This is present when doing a `platform process list` and is tracked by the underlying code. To do something like the process list via the SB API in the future, this must be exposed. Differential Revision: https://reviews.llvm.org/D103375
-
Vitaly Buka authored
-
Vitaly Buka authored
Reviewed By: pcc, hctim Differential Revision: https://reviews.llvm.org/D103305
-
Louis Dionne authored
Differential Revision: https://reviews.llvm.org/D92508
-
Craig Topper authored
The first source has the same EEW as the destination, but we're using earlyclobber which prevents them from ever being the same register. To workaround this, add a special TIED pseudo to use whenever the first source and merge operand are the same value. This allows us to use a single operand for the merge operand and first source which we can then tie to the destination. A tied source disables earlyclobber for that operand. Reviewed By: arcbbb Differential Revision: https://reviews.llvm.org/D103211
-
LLVM GN Syncbot authored
-
Louis Dionne authored
This re-applies 9968896c, which was reverted in b13edf6e because it broke the build. Differential Revision: https://reviews.llvm.org/D103369
-
Matthias Springer authored
Differential Revision: https://reviews.llvm.org/D102668
-
Rahman Lavaee authored
This patch uses the `getSymbolIndexForFunctionAddress` helper function to print function names for BB address map entries. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D102900
-
Matthias Springer authored
Support for tensor types in the unrolled version will follow in a separate commit. Add a new pass option to activate lowering of transfer ops with tensor types (default: deactivated). Differential Revision: https://reviews.llvm.org/D102666
-
Yaxun (Sam) Liu authored
Recently we added diagnosing ODR-use of host variables in device functions, which includes ODR-use of const host variables since they are not really emitted on device side. This caused regressions since we used to allow ODR-use of const host variables in device functions. This patch allows ODR-use of const variables in device functions if the const variables can be statically initialized and have an empty dtor. Such variables are marked with implicit constant attrs and emitted on device side. This is in line with what clang does for constexpr variables. Reviewed by: Artem Belevich Differential Revision: https://reviews.llvm.org/D103108
-
Jim Ingham authored
Previously ignore counts were checked when we stopped to do the sync callback in Breakpoint::ShouldStop. That meant we would do all the ignore count work even when there is also a condition says the breakpoint should not stop. That's wrong, lldb treats breakpoint hits that fail the thread or condition checks as "not having hit the breakpoint". So the ignore count check should happen after the condition and thread checks in StopInfoBreakpoint::PerformAction. The one side-effect of doing this is that if you have a breakpoint with a synchronous callback, it will run the synchronous callback before checking the ignore count. That is probably a good thing, since this was already true of the condition and thread checks, so this removes an odd asymmetry. And breakpoints with sync callbacks are all internal lldb breakpoints and there's not a really good reason why you would want one of these to use an ignore count (but not a condition or thread check...) Differential Revision https://reviews.llvm.org/D103217
-
Ben Shi authored
These tests will show how (and r i) will be optimized to (BCLRI (BCLRI r, i0), i1) or (BCLRI (ANDI r, i0), i1) by future commits. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D103359
-
Yaxun (Sam) Liu authored
Currently clang and nvcc use c++14 as default std for C++. gcc 11 even uses c++17 as default std for C++. However, clang uses c++98 as default std for CUDA/HIP. As c++14 has been well adopted and became default for clang, it seems reasonable to use c++14 as default std for CUDA/HIP. Reviewed by: Artem Belevich Differential Revision: https://reviews.llvm.org/D103221
-
Xiang1 Zhang authored
This test contains a lot of manual changes which is not convenient to update, and the checks are duplicated with test amx-configO2toO0.ll
-
Amy Huang authored
Clang writes object files by first writing to a .tmp file and then renaming to the final .obj name. On Windows, if a compile is killed partway through the .tmp files don't get deleted. Currently it seems like RemoveFileOnSignal takes care of deleting the tmp files on Linux, but on Windows we need to call setDeleteDisposition on tmp files so that they are deleted when closed. This patch switches to using TempFile to create the .tmp files we write when creating object files, since it uses setDeleteDisposition on Windows. This change applies to both Linux and Windows for consistency. Differential Revision: https://reviews.llvm.org/D102876
-
Stanislav Mekhanoshin authored
Fixes: SWDEV-288006 Differential Revision: https://reviews.llvm.org/D103197
-
Arthur Eubanks authored
Some existing places use getPointerElementType() to create a copy of a pointer type with some new address space. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D103429
-
Chia-hung Duan authored
* A Reducer is a kind of RewritePattern, so it's just the same as writing graph rewrite. * ReductionTreePass operates on Operation rather than ModuleOp, so that * we are able to reduce a nested structure(e.g., module in module) by * self-nesting. Reviewed By: jpienaar, rriddle Differential Revision: https://reviews.llvm.org/D101046
-
Arthur Eubanks authored
We can look through invariant group intrinsics for the purposes of simplifying the result of a load. Since intrinsics can't be constants, but we also don't want to completely rewrite load constant folding, we convert the load operand to a constant. For GEPs and bitcasts we just treat them as constants. For invariant group intrinsics, we treat them as a bitcast. Reviewed By: lebedev.ri Differential Revision: https://reviews.llvm.org/D101103
-
Arthur Eubanks authored
-
Nico Weber authored
We used to not print dylibs referenced by other dylibs in `-t` mode. This affected reexports, and with `-flat_namespace` also just dylibs loaded by dylibs. Now we print them. Fixes PR49514. Differential Revision: https://reviews.llvm.org/D103428
-
Leonard Chan authored
All fuchsia targets will now use the relative-vtables ABI by default. Also remove -fexperimental-relative-c++-abi-vtables from test RUNs targeting fuchsia. Differential Revision: https://reviews.llvm.org/D102374
-
Michael Benfield authored
These are intended to mimic warnings available in gcc. Differential Revision: https://reviews.llvm.org/D100581
-