XChy [Thu, 6 Jul 2023 05:44:56 +0000 (00:44 -0500)]
[InstCombine] Add tests for (A > 0) | (A < 0) -> zext (A != 0) fold (NFC)
Tests for an upcoming (A > 0) | (A < 0) -> zext (A != 0) fold.
Related issue:
[[ https://github.com/llvm/llvm-project/issues/62586 | (a > b) | (a < b) is not simplified only for the case b=0 ]]
Differential Revision: https://reviews.llvm.org/D154089
Martin Braenne [Wed, 5 Jul 2023 07:46:52 +0000 (07:46 +0000)]
[clang][dataflow] Bug fix: `BuiltinFnToFnPtr` cast does not produce a pointer.
See comments in the code for details.
Reviewed By: xazax.hun
Differential Revision: https://reviews.llvm.org/D154479
Valery Pykhtin [Fri, 9 Jun 2023 11:40:37 +0000 (13:40 +0200)]
[AMDGPU] Fix register class for a subreg in GCNRewritePartialRegUses.
1. Improved code that deduces register class from instruction definitions. Previously if some instruction didn't contain a reg class for an operand it was considered as no information on register class even if other instructions specified the class.
2. Added check on required size of resulting register because in some cases classes with smaller registers had been selected (for example VReg_1).
Reviewed By: arsenm, #amdgpu
Differential Revision: https://reviews.llvm.org/D152832
Jim Lin [Thu, 6 Jul 2023 02:15:22 +0000 (10:15 +0800)]
[LibCallsShrinkWrap] Set IsFPConstrained is true for creating quiet floating comparision if function has strictfp attribute
Create a quiet floating-point comparision if function has strictfp attribute.
Avoid unexpected FP exception raised during libcall domain error checking.
It raises an FP exception only in case where an input is a signaling NaN.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D152776
Fangrui Song [Thu, 6 Jul 2023 04:34:02 +0000 (21:34 -0700)]
[XRay][test] Remove unneeded REQUIRES: x86_64-target-arch
fdr-thread-order.cpp can be very slow when the thread contention is large.
Enable it for AArch64 and x86-64 for now.
fdr-mode.cpp fails on a ppc64le machine. Unsupport it on ppc64le for now.
The remaining modified tests pass on AArch64, ppc64le, and x86-64.
Fangrui Song [Thu, 6 Jul 2023 04:08:30 +0000 (21:08 -0700)]
[LTO] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after D123803
Fangrui Song [Thu, 6 Jul 2023 03:56:00 +0000 (20:56 -0700)]
[XRay][AArch64] Implement __xray_ArgLoggerEntry
Jianjian GUAN [Wed, 5 Jul 2023 09:10:48 +0000 (17:10 +0800)]
[RISCV][NFC] Use common prefix to simlify test.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D154487
Tom Stellard [Thu, 6 Jul 2023 03:09:58 +0000 (20:09 -0700)]
GetClangResourceDir: Fix downstream projects that bundle llvm source
A project that bundles the llvm source code may have their own
PACKAGE_VERSION variable, so only use this to compute the
CLANG_RESOURCE_DIR if CLANG_VERSION_MAJOR is undefined.
Reviewed By: sebastian-ne
Differential Revision: https://reviews.llvm.org/D152608
zhanglimin [Thu, 6 Jul 2023 02:50:32 +0000 (10:50 +0800)]
[profile] Enable loongarch64
Mark loongarch64 as supported for profile. All tests passed.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D154405
Fangrui Song [Thu, 6 Jul 2023 03:06:37 +0000 (20:06 -0700)]
[XRay][test] Replace some XFAIL with more appropriate REQUIRES
Tom Stellard [Thu, 6 Jul 2023 00:02:34 +0000 (17:02 -0700)]
AMDGPU: Remove add_dependencies calls from CMakeLists.txt
These are redundant. The same dependencies are being added as part
of the add_llvm_component_library() call. I confirmed this by diff'ing
the build.ninja files before and after the change and saw no change.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D153166
Jacques Pienaar [Thu, 6 Jul 2023 03:01:32 +0000 (20:01 -0700)]
[mlir][shape] Remove overzealous Dim verifier
Follow up of D143999 and follow
https://mlir.llvm.org/getting_started/DeveloperGuide/#ir-verifier.
Fixes #60808.
Craig Topper [Thu, 6 Jul 2023 02:35:13 +0000 (19:35 -0700)]
[RISCV] Add DAG combine for (fmv_w_x_rv64 (fmv_x_anyextw_rv64 X))
This pattern started showing up more after D151284
Ben Shi [Tue, 4 Jul 2023 11:29:21 +0000 (19:29 +0800)]
[RISCV][NFC] Simplify uses of PatFrag binop_oneuse
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D154435
max [Wed, 5 Jul 2023 20:02:59 +0000 (15:02 -0500)]
Add SymbolRefAttr to python bindings
Differential Revision: https://reviews.llvm.org/D154541
Matt Arsenault [Wed, 5 Jul 2023 12:31:28 +0000 (08:31 -0400)]
DAG: Implement soften float for ffrexp
Fixes #63661
https://reviews.llvm.org/D154555
Volodymyr Sapsai [Sat, 1 Jul 2023 02:45:23 +0000 (19:45 -0700)]
[ODRHash] Stop hashing `ObjCMethodDecl::isPropertyAccessor` as it doesn't capture inherent method quality.
`isPropertyAccessor` depends on the surrounding code and not on the method
itself. That's why it can be different in different modules. And
mismatches shouldn't be an error.
rdar://
109481753
Differential Revision: https://reviews.llvm.org/D154460
Volodymyr Sapsai [Wed, 21 Jun 2023 22:47:00 +0000 (15:47 -0700)]
[ODRHash] Stop hashing `ObjCMethodDecl::isOverriding` as it doesn't capture inherent method quality.
`isOverriding` depends on the surrounding code and not on the method
itself. That's why it can be different in different modules. And
mismatches shouldn't be an error.
rdar://
109481753
Differential Revision: https://reviews.llvm.org/D154459
Craig Topper [Thu, 6 Jul 2023 00:17:22 +0000 (17:17 -0700)]
[RISCV][TableGen] Remove f32 from XLenFVT for RV32.
We don't expect this to be used on RV32 currently so remove it
to reduce number of entries in the isel table.
Teach RegisterInfoEmitter.cpp to allow a type to be missing for
a particular HwMode.
Nemanja Ivanovic [Thu, 6 Jul 2023 00:04:49 +0000 (20:04 -0400)]
Revert "[PowerPC] Remove extend between shift and and"
This reverts commit
a57236de4eb8f38b4201647b10146941cbbb5c0b.
Causes a bootstrap failure on ppc64be.
Mariusz Borsa [Mon, 3 Jul 2023 20:44:45 +0000 (13:44 -0700)]
[Sanitizers][Darwin][Test] Mark symbolize_pc test unsupported in Darwin/LSan context
LSan is unsupported on Darwin anyway, and this test fals on public Darwin bots
Differential Revision: https://reviews.llvm.org/D154389
Joseph Huber [Wed, 5 Jul 2023 15:10:07 +0000 (10:10 -0500)]
[libc] Support fopen / fclose on the GPU
This patch adds the necessary support for the fopen and fclose functions
to work on the GPU via RPC. I added a new test that enables testing this
with the minimal features we have on the GPU. I will update it once we
have `fread` and `fwrite` to actually check the outputted strings. For
now I just relied on checking manually via the outpuot temp file.
Reviewed By: JonChesterfield, sivachandra
Differential Revision: https://reviews.llvm.org/D154519
Joseph Huber [Wed, 5 Jul 2023 19:18:27 +0000 (14:18 -0500)]
[libc] Add GPU support for the 'inttypes.h' functions
Another low hanging fruit we can put on the GPU, this ports the tests
over to the hermetic framework so we can run them on the GPU.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D154540
Joseph Huber [Tue, 21 Mar 2023 16:27:37 +0000 (11:27 -0500)]
[OpenMP] Delete old plugins
It's time to remove the old plugins as the next-gen has already been set
to default in LLVM 16.
Reviewed By: tianshilei1992
Differential Revision: https://reviews.llvm.org/D142820
Joseph Huber [Wed, 5 Jul 2023 21:45:18 +0000 (16:45 -0500)]
[Libomptarget] Remove the remote and ve plugins from libomptarget
These plugins are unmaintained and are not in a workable state. The VE
plugin has not been touched for years and has never had any running
tests. The remote plugin is in an unfinished state and is not production
ready upstream. These will need to be ported to the new nextgen
interface in the future if they are needed.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D154548
Fangrui Song [Wed, 5 Jul 2023 22:08:53 +0000 (15:08 -0700)]
[ELF] Remove one unneeded unquote from D124266
This one is unneeded after commit
d60ef9338deb734541ff1c9d0771807815d5d9e6 (2023-02-03).
Roger Pau Monne [Wed, 5 Jul 2023 21:56:15 +0000 (14:56 -0700)]
[lld/elf] support quote usage in section names
Section names used in ELF linker scripts can be quoted, but such
quotes must not be propagated to the binary ELF section names. As
such strip the quotes from the section names when processing them, and
also strip them from linker script functions that take section names
as parameters.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D124266
Matthew Voss [Wed, 5 Jul 2023 21:17:20 +0000 (14:17 -0700)]
[llvm] A Unified LTO Bitcode Frontend
Here's a high level summary of the changes in this patch. For more
information on rational, see the RFC.
(https://discourse.llvm.org/t/rfc-a-unified-lto-bitcode-frontend/61774).
- Add config parameter to LTO backend, specifying which LTO mode is
desired when using unified LTO.
- Add unified LTO flag to the summary index for efficiency. Unified
LTO modules can be detected without parsing the module.
- Make sure that the ModuleID is generated by incorporating more types
of symbols.
Differential Revision: https://reviews.llvm.org/D123803
Arthur Eubanks [Wed, 5 Jul 2023 21:48:53 +0000 (14:48 -0700)]
Revert "[X86] Fold BITOP(PACKSS(X,Z),PACKSS(Y,W)) --> PACKSS(BITOP(X,Y),BITOP(Z,W))"
This reverts commit
a32d14fd4c0a43c154f251df1ccfe57e8b0a711a.
Causes crashes, see https://reviews.llvm.org/rGa32d14fd4c0a43c154f251df1ccfe57e8b0a711a.
varconst [Sat, 1 Jul 2023 00:04:33 +0000 (17:04 -0700)]
[libc++][ranges] Implement the changes to `basic_string` from P1206 (`ranges::to`):
- add the `from_range_t` constructors and the related deduction guides;
- add the `insert_range`/`assign_range`/etc. member functions.
(Note: this patch is split from https://reviews.llvm.org/D142335)
Differential Revision: https://reviews.llvm.org/D149832
Louis Dionne [Wed, 5 Jul 2023 21:47:55 +0000 (17:47 -0400)]
[libc++][NFC] Remove leftover entry for <experimental/span> in header_information.py
Nikolas Klauser [Wed, 5 Jul 2023 21:42:50 +0000 (14:42 -0700)]
[libc++] Mark LWG2994 as complete and remove Clang from the version
Reviewed By: #libc, ldionne
Spies: ldionne, libcxx-commits
Differential Revision: https://reviews.llvm.org/D154381
Edoardo Sanguineti [Wed, 5 Jul 2023 21:33:18 +0000 (17:33 -0400)]
[libc++] add basic runtime assertions to <latch>
Adding assertions will aid users that have bugs in their code to
receive better error messages.
Differential Revision: https://reviews.llvm.org/D154425
Matt Arsenault [Thu, 15 Jun 2023 00:06:06 +0000 (20:06 -0400)]
DAG: Fix dropping flags when widening unary vector ops
Matt Arsenault [Wed, 14 Jun 2023 14:53:56 +0000 (10:53 -0400)]
AMDGPU: Correctly lower llvm.exp.f32
The library expansion has too many paths for all the permutations of
DAZ, unsafe and the 3 exp functions. It's easier to expand it in the
backend when we know all of these things. The library currently misses
the no-infinity check on the overflow, which this handles optimizing
out.
Some of the <3 x half> fast tests regress due to vector widening
dropping flags which will be fixed separately.
Apparently there is no exp10 intrinsic, but there should be. Adds some
deadish code in preparation for adding one while I'm following along
with the current library expansion.
Matt Arsenault [Wed, 14 Jun 2023 12:56:49 +0000 (08:56 -0400)]
AMDGPU: Correctly lower llvm.exp2.f32
Previously this did a fast math expansion only.
Joseph Huber [Wed, 5 Jul 2023 21:07:21 +0000 (16:07 -0500)]
[libc][Obvious] Fix timing on AMDGPU not being initialized
Summary:
Reviewer requested that this routine not be a macro, however that means
that it was not being intitialized as the static initializer was done
before the memcpy from the device. Fix this so we can get timing
information.
Akira Hatanaka [Wed, 5 Jul 2023 21:02:59 +0000 (14:02 -0700)]
Don't pass -ibuiltininc, which is used only by the driver, to CC1
This fixes a fallout from
5b77e752dcd073846b89559d6c0e1a7699e58615.
Differential Revision: https://reviews.llvm.org/D154388
Oskar Wirga [Wed, 5 Jul 2023 21:00:45 +0000 (14:00 -0700)]
Weaken MFI Max Call Frame Size Assertion
A year ago when I was not invested at all into compilers, I found an assertion error when building an AArch64 debug build with LTO + CFI, among other combinations.
It was posted as a github issue here: https://github.com/llvm/llvm-project/issues/54088
I took it upon myself to revisit the issue now that I have spent some more time working on LLVM.
Reviewed By: MatzeB
Differential Revision: https://reviews.llvm.org/D151276
Renato Golin [Wed, 5 Jul 2023 21:02:23 +0000 (22:02 +0100)]
Revert "[MLIR][Linalg] Add more arith named ops to linalg"
This reverts commit
eda47fdd258ca666815122a931b82699a0629b87.
It failed on NVidia, AMD and Windows bots. Investigating.
Joseph Huber [Wed, 5 Jul 2023 20:53:28 +0000 (15:53 -0500)]
[libc][Obvious] Fix bad macro check on NVPTX tests
Summary:
I forgot to add the `defined()` check on NVPTX.
Matt Arsenault [Sat, 1 Jul 2023 02:27:31 +0000 (22:27 -0400)]
AMDGPU: Always use v_rcp_f16 and v_rsq_f16
These inherited the fast math checks from f32, but the manual suggests
these should be accurate enough for unconditional use. The definition
of correctly rounded is 0.5ulp, but the manual says "0.51ulp". I've
been a bit nervous about changing this as the OpenCL conformance test
does not cover half. Brute force produces identical values compared to
a reference host implementation for all values.
Matt Arsenault [Sat, 1 Jul 2023 11:23:14 +0000 (07:23 -0400)]
AMDGPU: Add more tests for f16 fdiv lowering
Probably should merge the DAG and gisel tests.
David Tenty [Wed, 5 Jul 2023 18:00:12 +0000 (14:00 -0400)]
[NFC][clang] add extra member-alignment testcase
for when an alignment attribute is used. This will be useful for D147184 to demonstrate what changes.
Nemanja Ivanovic [Wed, 5 Jul 2023 20:32:49 +0000 (16:32 -0400)]
[PowerPC] Remove extend between shift and and
The SDAG will sometimes insert an extend between
the shift and an and (immediate) even though the
immediate is narrower than the narrow size.
This does not allow us to produce a rotate
instruction (such as rlwinm).
This patch just adds a combine to move the extend
onto the and.
Differential revision: https://reviews.llvm.org/D152911
Chia-hung Duan [Wed, 5 Jul 2023 20:31:29 +0000 (20:31 +0000)]
[scudo] Extract steps releaseToOSMaybe into functions in
This refactor helps us identify which steps need FLLock so that we can
reduce the holding time of FLLock in SizeClassAllocator64.
Also move the data members to the end of class to align the style in
SizeClassAllocator32.
Reviewed By: cferris
Differential Revision: https://reviews.llvm.org/D152596
Caslyn Tonelli [Wed, 5 Jul 2023 18:49:21 +0000 (18:49 +0000)]
[scudo] SCUDO_FUCHSIA uses ReservedMemoryDefault
Some Fuchsia zx tests failed from https://reviews.llvm.org/D153888:
https://turquoise-internal-review.git.corp.google.com/c/integration/+/729619
Use `ReservedMemoryDefault` for `SCUDO_FUCHSIA` to use the default
MemMap API, while test failures are debugged.
Differential Revision: https://reviews.llvm.org/D154538
Amaury Séchet [Wed, 5 Jul 2023 20:13:11 +0000 (20:13 +0000)]
[NFC] Autogenerate CodeGen/SystemZ/int-{uadd,sub}-0*.ll
Philip Reames [Wed, 5 Jul 2023 19:25:25 +0000 (12:25 -0700)]
[RISCV] Remove legacy TA/TU pseudo distinction for load instructions
This change continues with the line of work discussed in https://discourse.llvm.org/t/riscv-transition-in-vector-pseudo-structure-policy-variants/71295.
This change targets all the pseudos used in loads (unit, strided, segmented, fault first, and their combinations). As with previous changes in the series, we replace the existing TA and TU forms with a single unified pseudo with a passthru (which may be implicit_def) and a policy operand.
One quirk is that I went ahead and treated the unmasked mask load instruction (vlm) the same way. We need the pass thru operand to model tail undefined, but since the instruction is unconditionally agnostic and the instruction has no mask, the policy operand is arguably unneeded. I kept it mostly for consistency sake.
Another quirk worth highlighting is that segment loads require a bit of dedicated handling. Surprisingly, we don't have IMPLICIT_DEF nodes of the right types, and attempting to use them results in some odd looking codegen and a few crashes. Instead, I left the REG_SEQUENCE form, and extended InsertVSETVLI to recognize the complex undefs. Arguably, we should probably revisit the handling of undef reg_sequence nodes here, but I'm hoping to side step that in this patch.
As before, we see codegen changes (some improvements and some regressions) due to scheduling differences caused by the extra implicit_def instructions. I did have to delete one register allocation regression test as I couldn't figure out how to meaningfully update it. I spent a significant amount of time trying, and finally gave up.
Differential Revision: https://reviews.llvm.org/D154141
Aaron Ballman [Wed, 5 Jul 2023 19:54:13 +0000 (15:54 -0400)]
Remove unused test file
pth.h hasn't been used since we removed support for PTH in
0a6b5b653ee47234674614fecc213c1d73bb1e28
Nicolas Vasilache [Wed, 5 Jul 2023 11:49:18 +0000 (11:49 +0000)]
[mlir][Linalg] Relax restriction of Linalg passes on FuncOp
Existing Linalg passes are still anchoring on FuncOp.
Relax this unnecessary limitation.
Differential Revision: https://reviews.llvm.org/D154497
Jason Molenda [Wed, 5 Jul 2023 19:52:21 +0000 (12:52 -0700)]
Revert "Change the dyld notification function that lldb puts a breakpoint in"
We're seeing a lot of test failures on the lldb incremental x86 CI bot
since I landed https://reviews.llvm.org/D139453 - revert it while I
investigate.
This reverts commit
624813a4f41c5945dc8f8d998173960ad75db731.
Michael Maitland [Wed, 5 Jul 2023 17:10:51 +0000 (10:10 -0700)]
[llvm-mca][RISCV] Fix typo in test for vsetvli instruction
The instrument comment specified a different LMUL than the vsetvli
above it. This patch syncs the LMUL comment and the vsetvli.
Differential Revision: https://reviews.llvm.org/D154525
Matt Arsenault [Sun, 11 Jun 2023 21:00:15 +0000 (17:00 -0400)]
AMDGPU: Correctly lower llvm.log.f32 and llvm.log10.f32
Previously we expanded these in a fast-math way and the device
libraries were relying on this behavior. The libraries have a pending
change to switch to the new target intrinsic.
Unlike the library version, this takes advantage of no-infinities on
the result overflow check.
Joseph Huber [Tue, 4 Jul 2023 14:25:25 +0000 (09:25 -0500)]
[libc] Support timing information in libc tests
This patch adds the necessary support to provide timing information in
`libc` tests. This is useful for determining which tests look what
amount of time. We also can use this as a test basis for providing more
fine-grained timing when implementing things on the GPU.
The main difficulty with this is the fact that the AMDGPU fixed
frequency clock operates at an unknown frequency. We need to read this
on a per-card basis from the driver and then copy it in. NVPTX on the
other hand has a fixed clock at a resolution of 1ns. I have also
increased the resolution of the print-outs as the majority of these are
below a millisecond for me.
Reviewed By: JonChesterfield
Differential Revision: https://reviews.llvm.org/D154446
Mital Ashok [Mon, 3 Jul 2023 03:27:15 +0000 (20:27 -0700)]
Fix aggregate CTAD with string literals adding extra const
Missing a `withConst`, so when deducing from a string literal, a `const` is erroneously added to the deduced type.
Reviewed By: ychen
Differential Revision: https://reviews.llvm.org/D154301
Florian Hahn [Wed, 5 Jul 2023 18:15:55 +0000 (19:15 +0100)]
[LV] Update generateInstruction to return produced value (NFC).
Update generateInstruction to return the produced value instead of
setting it for each opcode. This reduces the amount of duplicated code
and is a preparation for D153696.
Reviewed By: Ayal
Differential Revision: https://reviews.llvm.org/D154240
Luke Lau [Wed, 5 Jul 2023 18:51:52 +0000 (19:51 +0100)]
[RISCV] Fix interleave/deinterleave store test output
Looks like the output changed after rebasing
Slava Zakharin [Wed, 5 Jul 2023 17:57:57 +0000 (10:57 -0700)]
[flang][hlfir] Lower actual TARGET for dummy POINTER.
This patch implements HLFIR lowering for associating an actual
TARGET argument to a dummy POINTER argument.
Reviewed By: tblah, jeanPerier
Differential Revision: https://reviews.llvm.org/D154311
Renato Golin [Wed, 5 Jul 2023 16:13:42 +0000 (17:13 +0100)]
[MLIR][Linalg] Add more arith named ops to linalg
Following up the 'add' named op, here are the remaining basic arithmetic
and maths, including a 'div_unsigned' for integer unsigned values. In the
same pattern as 'matmul_unsigned', the simply named 'div' assumes signed
values and the '_unsigned' variation handles the unsigned values.
It's a bit odd, but there doesn't seem to be a easy way to restrict to
specific types to make 'div_unsigned' only work with integers in the
structured ops framework.
Same as 'add', these have strict semantics regarding casts.
Unary math ops will need some massaging, so I split these ones for now
as I continue working on them.
Differential Revision: https://reviews.llvm.org/D154524
Jonas Devlieghere [Wed, 5 Jul 2023 18:26:25 +0000 (11:26 -0700)]
[lldb] Fix incorrect uses of formatv specifiers in LLDB_LOG
Fix incorrect uses of formatv specifiers in LLDB_LOG. Unlike Python,
arguments must be numbered. All the affected log statements take
llvm:Errors so use the LLDB_LOG_ERROR macro instead.
Differential revision: https://reviews.llvm.org/D154532
Jonas Devlieghere [Wed, 5 Jul 2023 17:47:14 +0000 (10:47 -0700)]
[lldb] Fix incorrect uses of LLDB_LOG_ERROR
Fix incorrect uses of LLDB_LOG_ERROR. The macro doesn't automatically
inject the error in the log message: it merely passes the error as the
first argument to formatv and therefore must be referenced with {0}.
Thanks to Nicholas Allegra for collecting a list of places where the
macro was misused.
rdar://
111581655
Differential revision: https://reviews.llvm.org/D154530
Krishna-13-cyber [Wed, 5 Jul 2023 18:24:30 +0000 (18:24 +0000)]
[clang-repl] Improve the clang-repl documentation.
We add usage, build instructions and examples illustrating how clang-repl works.
Differential revision: https://reviews.llvm.org/D152109
Luke Lau [Tue, 27 Jun 2023 14:00:10 +0000 (15:00 +0100)]
[RISCV] Lower deinterleave2 intrinsics to vlseg2
Following from D153864, this patch implements the lowerDeinterleaveIntrinsic
hook to lower deinterleaves of loads into vlseg2 intrinsics.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D153876
Luke Lau [Tue, 27 Jun 2023 13:45:28 +0000 (14:45 +0100)]
[RISCV] Add tests for vector.deinterleave2s of loads
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D153875
Luke Lau [Tue, 27 Jun 2023 12:41:46 +0000 (13:41 +0100)]
[RISCV] Lower interleave2 intrinsics to vsseg2
This patch teaches the RISCV TargetLowering class to lower interleave
intrinsics to vsseg2, so it can lower interleaved stores for scalable vectors.
Previously, we could only lower stores of interleaves for fixed length vectors
with vector shuffles.
This uses the lowerInterleaveIntrinsic interface for the interleaved
access pass that was added in D146218, and subsumes the DAG combine
approach taken in D144175
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D153864
Luke Lau [Tue, 27 Jun 2023 10:22:36 +0000 (11:22 +0100)]
[RISCV] Add tests for stores of vector.interleave2
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D153863
Michael Jones [Thu, 29 Jun 2023 20:53:57 +0000 (13:53 -0700)]
[libc] fix MPFR rounding problems in fuzz test
The accuracy for the MPFR numbers in the strtofloat fuzz test was set
too high, causing rounding issues when rounding to a smaller final
result.
Reviewed By: lntue
Differential Revision: https://reviews.llvm.org/D154150
Petr Hosek [Wed, 5 Jul 2023 17:42:39 +0000 (17:42 +0000)]
[libc] Use the new style includes
We should be using the standard includes.
Differential Revision: https://reviews.llvm.org/D154529
Dave Pagan [Sun, 2 Jul 2023 00:10:28 +0000 (19:10 -0500)]
[OpenMP][CodeGen] Add codegen for combined 'loop' directives.
The loop directive is a descriptive construct which allows the compiler
flexibility in how it generates code for the directive's associated
loop(s). See OpenMP specification 5.2 [257:8-9].
Codegen added in this patch for the combined 'loop' directives are:
'target teams loop' -> 'target teams distribute parallel for'
'teams loop' -> 'teams distribute parallel for'
'target parallel loop' -> 'target parallel for'
'parallel loop' -> 'parallel for'
NOTE: The implementation of the 'loop' directive itself is unchanged.
Differential Revision: https://reviews.llvm.org/D145823
James Y Knight [Mon, 19 Jun 2023 17:03:37 +0000 (13:03 -0400)]
[libcxx] Migrate posix_compat.h layer to not use CRT filesystem functions.
Right now, the filesystem APIs _mostly_ use Win32 API calls, but a
small number of functions use CRT APIs instead. The semantics are
effectively the same, except for which sorts of error codes are
returned. We want to be consistent about returning only native Win32
error codes, as a prerequisite for https://reviews.llvm.org/D151493.
This change switches getcwd, chdir, and mkdir. It does _not_ switch
open/close, because there are difficulties around the use of C-runtime
file descriptor numbers. Instead, those two APIs are removed from
posix_compat.h, and the win32-specific code inlined into the
operations.cpp FileDescriptor class (with a TODO comment).
Reviewed By: #libc, mstorsjo, Mordante
Differential Revision: https://reviews.llvm.org/D153037
Yusra Syeda [Wed, 5 Jul 2023 17:21:52 +0000 (13:21 -0400)]
[SystemZ][z/OS] z/OS ADA codegen and emission
This patch adds support for the ADA (associated data area), doing the following:
-Creates the ADA table to handle displacements
-Emits the ADA section in the SystemZAsmPrinter
-Lowers the ADA_ENTRY node into the appropriate load instruction
Differential Revision: https://reviews.llvm.org/D153788
Petr Hosek [Wed, 5 Jul 2023 17:20:11 +0000 (17:20 +0000)]
Revert "[libc] Use LIBC_INCLUDE_DIR in CMake rules"
This reverts commit
046deabd93aca70b508784bdd91f62305ced81e3 since
it broke libc-aarch64-ubuntu-fullbuild-dbg.
Petr Hosek [Sat, 1 Jul 2023 03:34:52 +0000 (03:34 +0000)]
[libc] Use LIBC_INCLUDE_DIR in CMake rules
D152592 introduced LIBC_INCLUDE_DIR for the location of the include
directory, use it in relevant CMake rules.
Differential Revision: https://reviews.llvm.org/D154278
Florian Hahn [Wed, 5 Jul 2023 17:11:39 +0000 (18:11 +0100)]
[SCEV] Add flag to control invertible check for normalization.
When normalizing a SCEV expression during expansion, there should be
no need for it to be invertible, as it will only be used for code
generation. This fixes a crash after
7f5b15ad150e.
Fixes https://github.com/llvm/llvm-project/issues/63678.
Henrik G. Olsson [Wed, 5 Jul 2023 17:08:51 +0000 (17:08 +0000)]
[UTC] Adapt version matcher to glob CLANG_VENDOR
Both the pattern for finding the clang version metadata, and the emitted
checker, are now more robust, to handle a vendor prefix.
Differential Revision: https://reviews.llvm.org/D154520
Petr Hosek [Sat, 1 Jul 2023 03:37:41 +0000 (03:37 +0000)]
[libc] Check if the hermetic test target exists
When crt1 isn't available, which is typical on baremetal, hermetic tests
aren't created and the hermetic test target won't be available.
Differential Revision: https://reviews.llvm.org/D154279
Nawrin Sultana [Tue, 6 Jun 2023 17:35:11 +0000 (12:35 -0500)]
[OpenMP] Minor improvement in error msg and fixes few coverity reported issues
Differential Revision: https://reviews.llvm.org/D152289
Igor Kirillov [Wed, 14 Jun 2023 16:41:50 +0000 (16:41 +0000)]
[CodeGen] Add support for Splats in ComplexDeinterleaving pass
This commit allows generating of complex number intrinsics for expressions
with constants or loops invariants, which are represented as splats.
For instance, after vectorizing loops in the following code snippets,
the ComplexDeinterleaving pass will be able to generate complex number
intrinsics:
```
complex<> x = ...;
for (int i = 0; i < N; ++i)
c[i] = a[i] * b[i] * x;
```
or
```
for (int i = 0; i < N; ++i)
c[i] = a[i] * b[i] * (11.0 + 3.0i);
```
Differential Revision: https://reviews.llvm.org/D153355
Arthur Eubanks [Thu, 1 Jun 2023 22:46:34 +0000 (15:46 -0700)]
[CMake] Add /winsysroot to lld-link when LLVM_WINSYSROOT is specified
So that the linker can find libraries in the winsysroot.
Reviewed By: hans, rnk
Differential Revision: https://reviews.llvm.org/D151946
John Brawn [Wed, 5 Jul 2023 16:53:12 +0000 (17:53 +0100)]
Fix compile error in UnresolvedSetTest.cpp, again
My previous fix used a gcc-style attribute, but not all compilers will accept
that. Instead use [[maybe_unused]], which is what we use elsewhere for this
kind of thing.
Ian Anderson [Sun, 4 Jun 2023 05:56:19 +0000 (22:56 -0700)]
[libc++][Modules] Remove explicit exports from modules that `export *`
This may be a clang bug, but explicit exports interfere with `export *`, especially in local submodule visibility mode. For example, exporting `depr.stdint_h` from `cstdint` causes std::int32_t to become an "unresolved using declaration" in LSV if `cstdint` and `stdint.h` are promoted to top level modules. This was previously worked around by exporting `Darwin.C.stdint` in `depr.stdint_h`, but that only works on Apple platforms, and it stops working when `cstdint` and `stdint.h` are promoted to top level modules.
Remove all of the explicit `export` statements in modules that have `export *`.
Reviewed By: ldionne, Mordante, #libc
Differential Revision: https://reviews.llvm.org/D153212
Ian Anderson [Mon, 5 Jun 2023 19:05:43 +0000 (12:05 -0700)]
[libc++][Modules] Add missing submodules
Several headers that are included by the modular headers are missing from the module map, add those in.
The either/or implementation headers `<__algorithm/pstl_backends/cpu_backends/serial.h>`/`<__algorithm/pstl_backends/cpu_backends/thread.h>` need to be textual, as does `<__undef_macros>`.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D153213
Amaury Séchet [Wed, 5 Jul 2023 16:40:20 +0000 (16:40 +0000)]
[NFC] Fix indentation in addcarry.ll
John Brawn [Wed, 5 Jul 2023 16:39:59 +0000 (17:39 +0100)]
Fix compile error in UnresolvedSetTest.cpp with -Wall
A stage 2 buildbot that compiles with -Wall -Werror is showing a failure because
a dummy value is unused. Use the unused attribute to suppress the warning, and
add a comment about why we have this value.
Luke Lau [Fri, 30 Jun 2023 21:46:37 +0000 (22:46 +0100)]
[RISCV] Add VFCVT pseudos with no mask
When emitting a vfcvt with a rounding mode, we end up generating an unnecessary
vmset because the only rounding mode pseudos have a mask operand. This patch
adds a pseudo without a mask, and marks the masked variant with the
MaskedPseudo class so the doPeepholeMergeVMV optimisation knows to remove the
redundant vmset.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D154266
Mark de Wever [Sun, 3 Apr 2022 15:43:52 +0000 (17:43 +0200)]
[libc++][format] Implements formatting pointer.
The feature is applied as DR instead of a normal paper. MSVC STL and
libstdc++ will do the same.
Implements
- P2510R3 Formatting pointers
Depends on D153192
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D153195
Mark de Wever [Mon, 15 May 2023 17:14:39 +0000 (19:14 +0200)]
[NFC][chrono][test] Fixes some tests on Windows.
This updates the tests to match the actual output on Windows.
Note some tests still need more investigation.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D153498
Alex Langford [Mon, 3 Jul 2023 20:29:48 +0000 (13:29 -0700)]
[lldb][NFCI] Minor cleanup of default OptionValue::GetSubValue implementation
This does 2 things:
- Corrects a minor typo (`value subvalue` -> `valid subvalue`)
- Removes an unnecessary instance of `str().c_str()` (creating a
temporary std::string from a StringRef just to get a valid
null-terminated string).
Differential Revision: https://reviews.llvm.org/D154387
Alex Langford [Tue, 27 Jun 2023 20:53:23 +0000 (13:53 -0700)]
[lldb][NFCI] Deprecate SBValue::GetOpaqueType
This method, as far as I can ascertain, is non-trivial to actually use
to work with (if not impossible). It doesn't make sense to use from
Python and you do not have access to the accompanying TypeSystem, so it
doesn't really do anything useful.
A possible follow-up is to gut the implementation and have it return `nullptr`.
Differential Revision: https://reviews.llvm.org/D153918
Benjamin Kramer [Wed, 5 Jul 2023 15:38:43 +0000 (17:38 +0200)]
Make python into C++
`not` is a C++ keyword, but it seems to cause trouble with MSVC
Alex Langford [Tue, 27 Jun 2023 17:57:27 +0000 (10:57 -0700)]
[lldb] Deprecate SBHostOS threading functionality
For some context, Raphael tried to this before: https://reviews.llvm.org/D104231
These methods are not tested at all, and in some cases, are not even fully
implemented (e.g. SBHostOS::ThreadCreated). I'm not convinced it's
possible to use these correctly from Python, and I'm not aware of any
users of these methods. It's difficult to remove these methods
wholesale, but we can start with deprecating them.
A possible follow-up to this change (which may require an RFC to get
more buy in from the community) is to gut these functions entirely. That
is, remove the implementations and replace them either with nothing or
have them dump out a message to stderr saying not to use these.
Differential Revision: https://reviews.llvm.org/D153900
Simon Pilgrim [Wed, 5 Jul 2023 15:43:34 +0000 (16:43 +0100)]
[X86] ComputeNumSignBitsForTargetNode - attempt to recognise PACKSSDW(PACKSSDW(X,Y),PACKSSDW(Z,W)) patterns
These are often used when we're packing vXi64 comparison results, but we don't have PACKSSQD so have to bitcast, which doesn't work well with num sign bits value tracking.
Simon Pilgrim [Wed, 5 Jul 2023 14:46:52 +0000 (15:46 +0100)]
[X86] Fold BITOP(PACKSS(X,Z),PACKSS(Y,W)) --> PACKSS(BITOP(X,Y),BITOP(Z,W))
Fold allsignbits pack patterns to make better use of cheap (and commutable) logic ops
Renato Golin [Wed, 5 Jul 2023 11:31:37 +0000 (12:31 +0100)]
[MLIR][Linalg] Named op 'add' element-wise
This adds the first strict element-wise named op to Linalg.
The semantics here is to not allow auto-cast, broadcast semantics and to
restrict the operations only to identical types. The remaining semantics
must come in the form of surrounding operations on operands, to avoid
ambiguity.
Examples:
```
// Cast int-to-fp
%0 = linalg.copy ins(%in: tensor<32x32xi32>)
outs(%out: tensor<32x32xf32>)
%1 = linalg.add ins(%arg, %0: tensor<32x32xf32>, tensor<32x32xf32>)
outs(%0: tensor<32x32xf32>)
// This can be lowered to
%1 = linalg.generic {...}
ins(%arg, %in: tensor<32x32xf32>, tensor<32x32xi32>)
outs(%0: tensor<32x32xf32>) {
^bb0(%a: f32, %i: i32, %out: f32):
%f = arith.uitofp %i : f32
%0 = arith.addf %a, %f : f32
linalg.yield %0 : f32
}
// Broadcast
%0 = linalg.broadcast ins(%in: tensor<32xf32>)
init(%out: tensor<32x32xf32>)
%1 = linalg.add ins(%arg, %0: tensor<32x32xf32>, tensor<32x32xf32>)
outs(%0: tensor<32x32xf32>)
// This can be lowered to
#bcast_map = affine_map<(d0, d1) -> (d0)>
%1 = linalg.generic {... #bcast_map] }
ins(%arg, %in: tensor<32x32xf32>, tensor<32xf32>)
outs(%0: tensor<32x32xf32>) {
^bb0(%a: f32, %b: f32, %out: f32):
%0 = arith.addf %a, %b : f32
linalg.yield %0 : f32
}
```
Once this gets accepted, other arithmetic and maths operations will be
added accordingly, with the same semantics.
Differential Revision: https://reviews.llvm.org/D154500
Valentin Clement [Wed, 5 Jul 2023 15:33:54 +0000 (08:33 -0700)]
[flang][openacc] Fix false error when common block is in copy clause
Wrong error was reported mentioning that the common block was in
more than one data sharing clause.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D154393
John Brawn [Tue, 4 Jul 2023 13:07:16 +0000 (14:07 +0100)]
[AST] Fix bug in UnresolvedSet::erase of last element
UnresolvedSet::erase works by popping the last element then replacing
the element to be erased with that element. When the element to be
erased is itself the last element this leads to writing past the end
of the set, causing an assertion failure.
Fix this by making erase of the last element just pop that element.
Differential Revision: https://reviews.llvm.org/D154502
Nikita Popov [Wed, 5 Jul 2023 14:59:29 +0000 (16:59 +0200)]
[InstCombine] Add old extract to worklist for DCE
To make sure it is removed in the same InstCombine iteration.
David Green [Wed, 5 Jul 2023 14:42:33 +0000 (15:42 +0100)]
[AArch64] Use known zero bits when creating BIC
If we know bits are already 0, we will not need to clear them again with a BIC.
So we can use KnownBits to shrink the size of the constant in the creation BIC
from And, potentially undoing the known-bits folds that happen during
compilation.
BIC only has a single register operand for input and output, so has less
scheduling freedom than a AND, but usually saves the materialization of a
constant.
Differential Revision: https://reviews.llvm.org/D154217