- Feb 04, 2024
-
-
Simon Pilgrim authored
-
Freddy Ye authored
This patch will also expand supports for attribute/target, while the priority of newly supported ISAs will be set to zero.
-
Yingwei Zheng authored
This patch replaces min/max intrinsic with one of its operands if possible. Alive2: https://alive2.llvm.org/ce/z/LoHfYf Fixes #75155.
-
Craig Topper authored
Previously we stored MachineInstr which restricted the implementation to only handle operand 0. The TH_LWD instruction has two sign extended destinations.
-
Congcong Cai authored
table.grow is valid with type `[t i32] -> [i32]`. Fixes: #79966.
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Tom Stellard authored
Modifying a cherry-picked patch to fix code formatting issues can be risky, so we don't typically do this. Therefore, it's not necessary to run this job on the release branches.
-
Tom Stellard authored
This action is really just a wrapper around cmake and ninja. It doesn't add any value to the builds, and I don't think we need it now that there are reusable workflows.
-
Serge Pavlov authored
Implement handling of get/set floating point environment for ARM in Global Instruction Selector. Lowering of these intrinsics to operations on FPSCR was previously inplemented in DAG selector, in GlobalISel it is reused.
-
Koakuma authored
This adds GCC-compatible names for code model selection on 64-bit SPARC with absolute code. Testing with a 2-stage build then running codegen tests works okay under all of the supported code models. (32-bit target does not have selectable code models) Reviewed By: @brad0, @MaskRay
-
Craig Topper authored
-
Yingwei Zheng authored
According to the C++ standard, `dynamic_cast` of pointers either returns a pointer (7.6.1.7) or results in undefined behavior (11.9.5). This patch marks `__dynamic_cast` as `willreturn` to remove unused calls. Fixes #77606.
-
Craig Topper authored
-
Craig Topper authored
We had the isel patterns, but no tests that used them. We only had sextload and zextload tests. Also reduce the alignment on some of the test cases that were unnecessarily over aligned.
-
Harald van Dijk authored
For the current version of the PR43024 test, we should be able to optimize away the operations but fail to do so. This commit adds a strictfp version of the test where we should not be able to optimize away the operations, as a verification that changes to improve the other effect have no adverse effect.
-
LLVM GN Syncbot authored
-
Nikolas Klauser authored
This reapplies #76657. Non-trivial elements didn't get destroyed previously. This fixes the bug and adds tests for all the vector insertion functions.
-
Yingwei Zheng authored
This patch folds: ``` (icmp eq (and (bitcast X to int), ExponentMask), ExponentMask) --> llvm.is.fpclass(X, fcInf|fcNan) (icmp ne (and (bitcast X to int), ExponentMask), ExponentMask) --> llvm.is.fpclass(X, ~(fcInf|fcNan)) ``` Alive2: https://alive2.llvm.org/ce/z/_hXAAF
-
Craig Topper authored
This is needed with RV64LegalI32 when the setcc is created after type legalization. An i1 xor would have been promoted to i32, but the setcc would have i64 result.
-
Joseph Huber authored
Summary: The current logic tries to map target mapping tables to the current device. Right now it assumes that data is only mapped a single time per device. This is only true if we have a single instance of the runtime running on a single program. However, in the case of dynamic library loads or shared libraries, this may happen multiple times. Given a case of a simple dynamic library load which has its own target kernel instruction, the current logic had only the first call to `__tgt_target_kernel` to the data mapping for that device. Then, when the next dynamic library load got called, it would see that the global were already mapped for that device and skip registering its own entires, even though they were distinct. This resulted in none of the mappings being done and hitting an assertion. This patch simply gets rid of this per-device check. The check should instead be on the host offloading entries. We already have logic that calls `continue` if we already have entries for that pointer, so we can simply rely on that instead.
-
David Green authored
-
Craig Topper authored
This matches the non-rv64-legal-i32 version.
-
Craig Topper authored
The default legalization uses 2 compares and an xor. We can instead use add+addw+xor+snez like we do without RV64LegaI32.
-
Craig Topper authored
The default lowering will use shifts to make use of an i32 setcc. We don't support i32 setcc, so its better to sig extend the low 32 bits and compare the full 64 bit result. This gives produces mul+mulw+xor+snez like we do without RV64LegalI32.
-
David Green authored
A collection of tests from #69152 and for constant offsets with scalable typesizes.
-
LLVM GN Syncbot authored
-
Nikolas Klauser authored
Differential Revision: https://reviews.llvm.org/D147869
-
Cyndy Ishida authored
Silences: ` error C4716: 'read_link': must return a value` windows error
-
Cyndy Ishida authored
Appeases bots for now.
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Cyndy Ishida authored
When given a directory input `llvm-readtapi` traverses through the directory to find dylibs or tbd files to operate on. TBD files will be created with the same base file name as the dylib. Symlinks should be created if the input is one. This also introduces options to delete input files which are defined as library files that existed before `readtapi -stubify` was invoked. Also the ability to delete private libraries where private libraries are in a predefined file system locations on darwin based platforms.
-
Mark de Wever authored
The valarray<>::operator[](...) const functions return proxy objects. The valarray<>::operator[](...) functions return valarray objects. However the standard allows functions returning valarray objects to return custom proxy objects instead. Libc++ returns __val_expr proxies. Functions taking a valarray object must work with the custom proxies too. Therefore several operations have a custom proxy overload instead of valarray overloads. Libc++ doesn't specify a valarray overload. This is an issue with the standard proxy types; these can implicitly be converted to a valarray. The solution is to allow the standard proxies to behave as-if they are custom proxies. This patch fixes the valarray compound assignments. Other operations, like the binary non-member functions are not fixed. These will be done in a followup patch. Fixes: https://github.com/llvm/llvm-project/issues/21320
-