platform/upstream/llvm.git
15 months agoPromoteMem2Reg: use poison instead of undef as placeholder in phi entries from unreac...
Nuno Lopes [Sat, 10 Jun 2023 10:19:03 +0000 (11:19 +0100)]
PromoteMem2Reg: use poison instead of undef as placeholder in phi entries from unreachable predecessors [NFC]

15 months ago[SCCP] Skip computing intrinsics if one of its args is unknownOrUndef
luxufan [Sat, 10 Jun 2023 07:48:46 +0000 (15:48 +0800)]
[SCCP] Skip computing intrinsics if one of its args is unknownOrUndef

For constant range supported intrinsics, we got consantrange from args
no matter if they are unknown or undef. And the constant range computed
from unknown or undef value state is full range.

I think compute with full constant range is harmful since although we
can do mergeIn after these args value state are changed, the merge
operation of two constant ranges is union.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D152499

15 months ago[SCCP][NFC] Precommit test
luxufan [Sat, 10 Jun 2023 07:36:06 +0000 (15:36 +0800)]
[SCCP][NFC] Precommit test

15 months ago[NFC][SetVector] Update some usages of SetVector to SmallSetVector
Dhruv Chawla [Thu, 8 Jun 2023 14:51:39 +0000 (20:21 +0530)]
[NFC][SetVector] Update some usages of SetVector to SmallSetVector

This patch is a continuation of D152497. It updates usages of SetVector
that were found in llvm/ and clang/ which were originally specifying either
SmallPtrSet or SmallVector to just using SmallSetVector, as the overhead
of SetVector is reduced with D152497.

This also helps clean up the code a fair bit, and gives a decent speed
boost at -O0 (~0.2%):
https://llvm-compile-time-tracker.com/compare.php?from=9ffdabecabcddde298ff313f5353f9e06590af62&to=97f1c0cde42ba85eaa67cbe89bec8fe45b801f21&stat=instructions%3Au

Differential Revision: https://reviews.llvm.org/D152522

15 months ago[SetVector] Improve performance for small sizes
Dhruv Chawla [Wed, 7 Jun 2023 07:16:52 +0000 (12:46 +0530)]
[SetVector] Improve performance for small sizes

SmallSetVector has an inefficiency where it does set insertions
regardless of the number of elements present within it. This contrasts
with other "Small-" containers where they use linear scan up to a
certain size "N", after which they switch to another strategy.

This patch implements this functionality in SetVector, adding a template
parameter "N" which specifies the number of elements upto which the
SetVector follows the "small" strategy. Due to the use of "if
constexpr", there is no "small" code emitted when N is 0 which makes
this a zero overhead change for users using the default behaviour.

This change also allows having SmallSetVector use DenseSet instead of
SmallDenseSet by default, which helps a little with performance.

The reason for implementing this functionality in SetVector instead of
SmallSetVector is that it allows reusing all the code that is already
there and it is just augmented with the "isSmall" checks.

This change gives a good speedup (0.4%):
https://llvm-compile-time-tracker.com/compare.php?from=086601eac266ec253bf313c746390ff3e5656132&to=acd0a72a4d3ee840f7b455d1b35d82b11ffdb3c0&stat=instructions%3Au

Differential Revision: https://reviews.llvm.org/D152497

15 months ago[libc][NFC] Introduce a Location object for consistent failure logging
Guillaume Chatelet [Fri, 9 Jun 2023 13:23:27 +0000 (13:23 +0000)]
[libc][NFC] Introduce a Location object for consistent failure logging

This is just an implementation detail.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D152532

15 months ago[libc][NFC] Clean up matchers namespace
Guillaume Chatelet [Fri, 9 Jun 2023 13:37:01 +0000 (13:37 +0000)]
[libc][NFC] Clean up matchers namespace

This is a follow up to https://reviews.llvm.org/D152503

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D152533

15 months ago[libc][math] Move str method from FPBits class to testing utils.
Tue Ly [Sat, 10 Jun 2023 03:48:49 +0000 (23:48 -0400)]
[libc][math] Move str method from FPBits class to testing utils.

str method of FPBits class is only used for pretty printing its objects
in tests.  It brings cpp::string dependency to FPBits class, which is not ideal
for embedded use case.  We move str method to a free function in test utils and
remove this dependency of FPBits class.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D152607

15 months ago[MemCpyOpt] Use memcpy source directly if dest is known to be immutable from attributes
khei4 [Wed, 7 Jun 2023 03:26:33 +0000 (12:26 +0900)]
[MemCpyOpt] Use memcpy source directly if dest is known to be immutable from attributes
Differential Revision: https://reviews.llvm.org/D150970

15 months ago[MemCpyOpt] precommit test for memcpy removal for immutable arguments from attributes...
khei4 [Wed, 7 Jun 2023 03:23:00 +0000 (12:23 +0900)]
[MemCpyOpt] precommit test for memcpy removal for immutable arguments from attributes (NFC)
Differential Revision: https://reviews.llvm.org/D150967

15 months ago[clang][NFC] Refactor printableTextForNextCharacter
Timm Bäder [Thu, 18 May 2023 05:26:42 +0000 (07:26 +0200)]
[clang][NFC] Refactor printableTextForNextCharacter

Differential Revision: https://reviews.llvm.org/D150843

15 months ago[clang][parse][NFC] Fix grammar in a comment
Timm Bäder [Fri, 9 Jun 2023 04:54:04 +0000 (06:54 +0200)]
[clang][parse][NFC] Fix grammar in a comment

15 months ago[GlobalIsel][X86] Legalize G_FREEZE
Thorsten Schütt [Fri, 9 Jun 2023 07:08:25 +0000 (09:08 +0200)]
[GlobalIsel][X86] Legalize G_FREEZE

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D152501

15 months ago[libc++][spaceship] Implement `operator<=>` for `stack`
Hristo Hristov [Tue, 14 Mar 2023 19:18:55 +0000 (21:18 +0200)]
[libc++][spaceship] Implement `operator<=>` for `stack`

Depends on D146066

Depends on D132268

Implements parts of P1614R2 `operator<=>` for `stack`

Reviewed By: #libc, Mordante

Differential Revision: https://reviews.llvm.org/D146094

15 months ago[SelectionDAG] Update test case according to post review comments, NFC
Phoebe Wang [Sat, 10 Jun 2023 04:00:46 +0000 (12:00 +0800)]
[SelectionDAG] Update test case according to post review comments, NFC

Differential Revision: https://reviews.llvm.org/D152492

15 months ago[HWASAN] Fix verbose_threads
Vitaly Buka [Sat, 10 Jun 2023 03:39:15 +0000 (20:39 -0700)]
[HWASAN] Fix verbose_threads

Looks like D104248 acidentally moved the code.

15 months ago[libc++][spaceship] Implement `operator<=>` for `vector`
Hristo Hristov [Sat, 20 May 2023 15:37:00 +0000 (18:37 +0300)]
[libc++][spaceship] Implement `operator<=>` for `vector`

Implements part of P1614R2 "The Mothership has Landed"

Depends on D150188

Reviewed By: Mordante, #libc

Differential Revision: https://reviews.llvm.org/D132268

15 months ago[libc++][spaceship] Fixed `__debug_three_way_comp`'s `operator()` for `vector<bool...
Hristo Hristov [Fri, 9 Jun 2023 17:00:19 +0000 (20:00 +0300)]
[libc++][spaceship] Fixed `__debug_three_way_comp`'s `operator()` for `vector<bool>'s `operator<=>`

An issue with `operator()` was found during the implementation of https://reviews.llvm.org/D132268.

This patch aims to resolve the issues by updating the operator to use perfect forwarding.

The original motivation for `three_way_comp_ref_type` is given in: https://reviews.llvm.org/D131395

`three_way_comp_ref_type`'s implementation is inspired by `comp_ref_type`, which has two overloads:

```
    template <class _Tp, class _Up>
    bool operator()(const _Tp& __x,  const _Up& __y);

    template <class _Tp, class _Up>
    bool operator()(_Tp& __x,  _Up& __y);
```

`__debug_three_way_comp` is missing the first overload and also declares the typealias`_three_way_comp_ref_type ` incorrectly.

Reviewed By: #libc, philnik

Differential Revision: https://reviews.llvm.org/D150188

15 months ago[test][HWASAN] Add verbose_threads test
Vitaly Buka [Sat, 10 Jun 2023 03:32:08 +0000 (20:32 -0700)]
[test][HWASAN] Add verbose_threads test

15 months ago[NFC] Remove old README.txt under llvm/lib/Analysis/
Shivam Gupta [Fri, 9 Jun 2023 12:31:51 +0000 (18:01 +0530)]
[NFC] Remove old README.txt under llvm/lib/Analysis/

Github issue might be place to list them.
I think these two optimization oppertunities are fulfilled now.
Aleast for first testcase is not there and for second it seems fixed -
https://godbolt.org/z/KEzz4hafn

Differential Revision: https://reviews.llvm.org/D152527

15 months agoAMDGPU: Extract test out of old patch
Matt Arsenault [Sat, 10 Jun 2023 01:51:34 +0000 (21:51 -0400)]
AMDGPU: Extract test out of old patch

Don't think the patch is still useful but I don't see equivalent tests
for decreased alloca alignment.

https://reviews.llvm.org/D23908

15 months agoAMDGPU: Mark scalar loads as rematerializable
Matt Arsenault [Wed, 30 Nov 2022 00:17:33 +0000 (19:17 -0500)]
AMDGPU: Mark scalar loads as rematerializable

This should be true, but this is useless as is. The rematerialization
logic only permits rematerialize with constant physical register uses,
so non-constant physregs or virtual register uses (the case that
really matters) are not rematerialized. Add the tests which shows
nothing happens, but should in the future.

Also, all loads should really be rematerializable so in the future
this should apply to all the other kinds.

15 months agoAMDGPU: Avoid endpgm in middle of block for fallback trap lowering.
Matt Arsenault [Wed, 7 Jun 2023 19:38:08 +0000 (15:38 -0400)]
AMDGPU: Avoid endpgm in middle of block for fallback trap lowering.

This was inserting an s_endpgm in the middle of the block when it has
to be a terminator. Split the block and insert a branch to a new block
with the trap if it's not in a terminator position.

Fixes verifier error on LDS in function with no trap support (and
other trap sources).

15 months agoGlobalISel: Remove block insertion legalizer check
Matt Arsenault [Wed, 7 Jun 2023 21:21:58 +0000 (17:21 -0400)]
GlobalISel: Remove block insertion legalizer check

This report was broken. The passed null block would crash in the
remark constructor.

I have a patch which will introduce a new block, and it seems to work
fine. It doesn't require legalizing any instructions in the new block,
so it's possible those will be missed.

15 months agoCodeGen: Expand memory intrinsics in PreISelIntrinsicLowering
Matt Arsenault [Wed, 7 Jun 2023 13:03:17 +0000 (09:03 -0400)]
CodeGen: Expand memory intrinsics in PreISelIntrinsicLowering

Expand large or unknown size memory intrinsics into loops in the
default lowering pipeline if the target doesn't have the corresponding
libfunc. Previously AMDGPU had a custom pass which existed to call the
expansion utilities.

With a default no-libcall option, we can remove the libfunc checks in
LoopIdiomRecognize for these, which never made any sense. This also
provides a path to lifting the immarg restriction on
llvm.memcpy.inline.

There seems to be a bug where TLI reports functions as available if
you use -march and not -mtriple.

15 months ago[ASTStructuralEquivalence] Fix crash when ObjCCategoryDecl doesn't have corresponding...
Volodymyr Sapsai [Fri, 26 May 2023 01:09:11 +0000 (18:09 -0700)]
[ASTStructuralEquivalence] Fix crash when ObjCCategoryDecl doesn't have corresponding ObjCInterfaceDecl.

When this happens, it is invalid code and there is diagnostic
```
error: cannot find interface declaration for '...'
```

But clang shouldn't crash even if code is invalid. Though subsequent
diagnostic can be imperfect because without ObjCInterfaceDecl we don't have
a type for error messages.

rdar://108818430

Differential Revision: https://reviews.llvm.org/D151523

15 months ago[bazel][NFC] Add Dialect/Func/Extensions library and deps
Jordan Rupprecht [Sat, 10 Jun 2023 00:04:41 +0000 (17:04 -0700)]
[bazel][NFC] Add Dialect/Func/Extensions library and deps

Added in D120368

15 months ago[-Wunsafe-buffer-usage] Remove the unnecessary `const` qualifier in safe buffer analysis
ziqingluo-90 [Fri, 9 Jun 2023 23:39:51 +0000 (16:39 -0700)]
[-Wunsafe-buffer-usage] Remove the unnecessary `const` qualifier in safe buffer analysis

Casting away the qualifier raises a warning in 1e270be0886c3a770e7a967679552a02dfc1dca9

15 months ago[clang-format] Remove redundant test case
Paul Kirth [Fri, 9 Jun 2023 21:15:41 +0000 (21:15 +0000)]
[clang-format] Remove redundant test case

The test is now properly covered in unit tests, and shouldn't have been
added in the initial commit of D152473.

Reviewed By: owenpan

Differential Revision: https://reviews.llvm.org/D152584

15 months agoAMDGPU: Add baseline tests for integer mad matching
Matt Arsenault [Thu, 8 Jun 2023 21:55:36 +0000 (17:55 -0400)]
AMDGPU: Add baseline tests for integer mad matching

Test some clpeak-like patterns with multiple use muls.

15 months agoInline: Fix case of not inlining with denormal-fp-math-f32
Matt Arsenault [Fri, 9 Jun 2023 22:23:03 +0000 (18:23 -0400)]
Inline: Fix case of not inlining with denormal-fp-math-f32

This was failing to inline the opencl libraries with daz enabled. As a
modifier to the base mode, denormal-fp-mode-f32 is weird and has no
meaning if it's missing.

15 months agoAMDGPU: Add inlining testcases for denormal-fp-math
Matt Arsenault [Fri, 9 Jun 2023 22:19:15 +0000 (18:19 -0400)]
AMDGPU: Add inlining testcases for denormal-fp-math

Somehow missed this one and it's not working correctly

15 months ago[test][Msan] Move x86 specific tests into subdir
Vitaly Buka [Fri, 9 Jun 2023 22:27:19 +0000 (15:27 -0700)]
[test][Msan] Move x86 specific tests into subdir

15 months ago[-Wunsafe-buffer-usage] Add fix-its for function parameters using the `span` strategy
ziqingluo-90 [Fri, 9 Jun 2023 22:37:21 +0000 (15:37 -0700)]
[-Wunsafe-buffer-usage] Add fix-its for function parameters using the `span` strategy

Generate fix-its for function parameters that are raw pointers used
unsafely.  Currently, the analyzer fixes one parameter at a time.

Fix-its for a function parameter includes:

- Fix the parameter declaration of the definition, result in a new
  overload of the function. We call the function with the original
  signature the old overload.
- For any other existing declaration of the old overload, mark it with
  the [[unsafe_buffer_usage]] attribute and generate a new overload
  declaration next to it.
- Creates a new definition for the old overload, which is simply
  defined by a call to the new overload.

Reviewed by: NoQ (Artem Dergachev), t-rasmud (Rashmi Mudduluru), and
             jkorous (Jan Korous)

Differential revision: https://reviews.llvm.org/D143048

15 months ago[lldb][NFCI] Replace some static ConstStrings with StringLiterals in Disassembler
Alex Langford [Fri, 9 Jun 2023 22:37:09 +0000 (15:37 -0700)]
[lldb][NFCI] Replace some static ConstStrings with StringLiterals in Disassembler

These should have been replaced in e53e1de57ecc but I missed them
because ConstStrings can be implicitly converted to llvm::StringRefs.

15 months ago[RDF] Do not use trailing return type after all, NFC
Krzysztof Parzyszek [Fri, 9 Jun 2023 22:33:38 +0000 (15:33 -0700)]
[RDF] Do not use trailing return type after all, NFC

This sort of reverts commit d3b34b7f3a7cbfc96aea897419f167b5ee19e61a,
the issue with `Use` will be addressed by using fully-qualified name.

15 months ago[RDF] Stop looking when reached code node in getNextRef with NextOnly
Krzysztof Parzyszek [Tue, 6 Jun 2023 19:14:49 +0000 (12:14 -0700)]
[RDF] Stop looking when reached code node in getNextRef with NextOnly

NextOnly tells getNextRef to only check the next node in the chain, and
stop iterating. The loop didn't stop though when the next link pointed
back to the beginning of the circular list.

15 months ago[InstCombine] Optimize and of icmps with power-of-2 and contiguous masks
John McIver [Fri, 9 Jun 2023 21:26:30 +0000 (15:26 -0600)]
[InstCombine] Optimize and of icmps with power-of-2 and contiguous masks

Add an instance combine optimization for expressions of the form:

(%arg u< C1) & ((%arg & C2) != C2) -> %arg u< C2

Where C1 is a power-of-2 and C2 is a contiguous mask starting 1 bit below
C1. This commit resolves GitHub missed-optimization issue #54856.

Validation of scalar tests:
  - https://alive2.llvm.org/ce/z/JfKjiU
  - https://alive2.llvm.org/ce/z/AruHY_
  - https://alive2.llvm.org/ce/z/JAiR6t
  - https://alive2.llvm.org/ce/z/S2X2e5
  - https://alive2.llvm.org/ce/z/4cycdE
  - https://alive2.llvm.org/ce/z/NcDiLP

Validation of vector tests:
  - https://alive2.llvm.org/ce/z/ABY6tE
  - https://alive2.llvm.org/ce/z/BTJi3s
  - https://alive2.llvm.org/ce/z/3BKWpu
  - https://alive2.llvm.org/ce/z/RrAbkj
  - https://alive2.llvm.org/ce/z/nM6fsN

Reviewed By: goldstein.w.n

Differential Revision: https://reviews.llvm.org/D125717

15 months ago[InstCombine][NFC] Add tests pre-implementation of issue #54856
John McIver [Fri, 9 Jun 2023 21:22:25 +0000 (15:22 -0600)]
[InstCombine][NFC] Add tests pre-implementation of issue #54856

Provide both positive and negative testing using scalar and vector values for
issue #54856.

Reviewed By: goldstein.w.n

Differential Revision: https://reviews.llvm.org/D143044

15 months ago[GlobalISel] Fix D144336 in a different way, by choosing operands from the first...
Amara Emerson [Fri, 9 Jun 2023 21:37:54 +0000 (14:37 -0700)]
[GlobalISel] Fix D144336 in a different way, by choosing operands from the first of the div/rem insts.

Differential Revision: https://reviews.llvm.org/D144336

15 months ago[libc] Fix some tests on NVPTX due to insufficient stack size
Joseph Huber [Fri, 9 Jun 2023 21:08:52 +0000 (16:08 -0500)]
[libc] Fix some tests on NVPTX due to insufficient stack size

A few of these tests were disabled due to failing on NVPTX. After
looking into it the vast majority of these cases were due to
insufficient stack memory. This can be worked around by increasing the
stack size in the loader or by reducing the memory usage in the case of
large string constants.

Reviewed By: tra

Differential Revision: https://reviews.llvm.org/D152583

15 months agoFix regex in test case so that it doesn't match "coverage" in directory
Akira Hatanaka [Thu, 8 Jun 2023 23:18:16 +0000 (16:18 -0700)]
Fix regex in test case so that it doesn't match "coverage" in directory
names

The test case was failing because "-f{{[^"]*coverage.*}}" was matching
the following string:

"-fdebug-compilation-dir=/Users/buildslave/jenkins/workspace/coverage/"

Differential Revision: https://reviews.llvm.org/D152485

15 months ago[clang-tidy] Fix error in documentation of bugprone-unchecked-optional-access.
Yitzhak Mandelbaum [Fri, 9 Jun 2023 20:42:09 +0000 (20:42 +0000)]
[clang-tidy] Fix error in documentation of bugprone-unchecked-optional-access.

The documentation claims that the check recognizes `ASSERT_THAT`, but it doesn't
recognize any googletest macros at the moment. This patch removes the reference.

15 months ago[test] Use update_test_checks for dse.ll
Arthur Eubanks [Fri, 9 Jun 2023 20:24:06 +0000 (13:24 -0700)]
[test] Use update_test_checks for dse.ll

15 months ago[test] Explain the purpose of LLVM :: LTO/Resolution/X86/local-def-dllimport.ll
Matthew Voss [Fri, 9 Jun 2023 19:58:26 +0000 (12:58 -0700)]
[test] Explain the purpose of LLVM :: LTO/Resolution/X86/local-def-dllimport.ll

Requested in https://reviews.llvm.org/D148950#4315575

15 months ago[clang-format] Add test case for issue 63170
Paul Kirth [Thu, 8 Jun 2023 21:58:42 +0000 (21:58 +0000)]
[clang-format] Add test case for issue 63170

After https://reviews.llvm.org/D151954 we've noticed some issues w/
clang-format behavior, as outlined in
https://github.com/llvm/llvm-project/issues/63170.

Valid C/C++ files, that were previously accepted, are now rejected by
clang-format, emitting the message:

"The new replacement overlaps with an existing replacement."

This reverts commit 4b9764959dc4b8783e18747c1742ab164e4bc4ee and
d2627cf88d2553a4c2e850430bdb908a4b7d2e52, which depends on it.

Reviewed By: phosek

Differential Revision: https://reviews.llvm.org/D152473

15 months ago[NewGVN] Fold equivalent freeze instructions
Jay Foad [Fri, 9 Jun 2023 12:44:06 +0000 (13:44 +0100)]
[NewGVN] Fold equivalent freeze instructions

Differential Revision: https://reviews.llvm.org/D152529

15 months ago[NewGVN] Precommit test for folding freeze
Jay Foad [Fri, 9 Jun 2023 12:42:42 +0000 (13:42 +0100)]
[NewGVN] Precommit test for folding freeze

Differential Revision: https://reviews.llvm.org/D152528

15 months ago[LoadStoreVectorizer] Optimize check for IsAllocaAccess. NFC
Bjorn Pettersson [Fri, 9 Jun 2023 19:36:23 +0000 (21:36 +0200)]
[LoadStoreVectorizer] Optimize check for IsAllocaAccess. NFC

Swap order for checking address space and the strip pointer cast
when analyzing if a load/store is accessing an alloca. This to
make sure we do the cheaper check first.

This is done as a follow up to D152386.

15 months ago[profi][NFC] Refactor SampleProfileInference::initFunction
Amir Ayupov [Fri, 9 Jun 2023 19:40:37 +0000 (12:40 -0700)]
[profi][NFC] Refactor SampleProfileInference::initFunction

Initialize and return `FlowFunction` from initFunction->createFlowFunction.
Aligns the interface to `createFlowFunction` in D144500, intent to reuse
in a follow-up.

Reviewed By: spupyrev

Differential Revision: https://reviews.llvm.org/D152216

15 months agoUpdate CODE_OWNERS.TXT
Johannes Doerfert [Fri, 9 Jun 2023 19:35:02 +0000 (12:35 -0700)]
Update CODE_OWNERS.TXT

Fix my email and add OpenMP-Opt and Attributor to the list.

15 months ago[AMDGPU,BPF,SystemZ,WebAssembly] Migrate to new encodeInstruction that uses SmallVect...
Fangrui Song [Fri, 9 Jun 2023 19:26:19 +0000 (12:26 -0700)]
[AMDGPU,BPF,SystemZ,WebAssembly] Migrate to new encodeInstruction that uses SmallVectorImpl<char>. NFC

15 months ago[NVPTX] Remove few more unneeded fp16 instruction variants
Artem Belevich [Thu, 8 Jun 2023 22:34:43 +0000 (15:34 -0700)]
[NVPTX] Remove few more unneeded fp16 instruction variants

Differential Revision: https://reviews.llvm.org/D152478

15 months ago[SCEV] Try smaller ZExts when using loop guard info.
Florian Hahn [Fri, 9 Jun 2023 19:05:50 +0000 (20:05 +0100)]
[SCEV] Try smaller ZExts when using loop guard info.

If we didn't find the extact ZExt expr in the rewrite map, check if
there's an entry for a smaller ZExt we can use instead.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D149786

15 months ago[lldb][NFCI] Delete unused member from SymbolFileSymtab
Alex Langford [Fri, 9 Jun 2023 18:53:17 +0000 (11:53 -0700)]
[lldb][NFCI] Delete unused member from SymbolFileSymtab

15 months ago[RDF] Use trailing return type syntax, NFC
Krzysztof Parzyszek [Fri, 2 Jun 2023 17:47:36 +0000 (10:47 -0700)]
[RDF] Use trailing return type syntax, NFC

The name rdf::Use conflicts with llvm::Use when both namespaces are
used via `using namespace`. Specifically this happened in the declaration
of DataFlowGraph::newUse (in RDFGraph.cpp):
```
using namespace rdf;

Use newUse(...);  <-- Lookup conflict for "Use"
```
Since the TRT lookup starts in a different namespace than that of the
leading type, this serves as a workaround. In general the rdf namespace
will not likely be introduced via `using namespace`, so this shouldn't
be a problem elsewhere.

15 months ago[RDF] Define short type names: NodeAddr<XyzNode*> -> Xyz, NFC
Krzysztof Parzyszek [Fri, 2 Jun 2023 16:07:49 +0000 (09:07 -0700)]
[RDF] Define short type names: NodeAddr<XyzNode*> -> Xyz, NFC

15 months ago[GlobalISel] Introduce G_CONSTANT_FOLD_BARRIER and use it to prevent constant folding
Amara Emerson [Thu, 1 Jun 2023 22:11:24 +0000 (15:11 -0700)]
[GlobalISel] Introduce G_CONSTANT_FOLD_BARRIER and use it to prevent constant folding
hoisted constants.

The constant hoisting pass tries to hoist large constants into predecessors and also
generates remat instructions in terms of the hoisted constants. These aim to prevent
codegen from rematerializing expensive constants multiple times. So we can re-use
this optimization, we can preserve the no-op bitcasts that are used to anchor
constants to the predecessor blocks.

SelectionDAG achieves this by having the OpaqueConstant node, which is just a
normal constant with an opaque flag set. I've opted to avoid introducing a new
constant generic instruction here. Instead, we have a new G_CONSTANT_FOLD_BARRIER
operation that constitutes a folding barrier.

These are somewhat like the optimization hints, G_ASSERT_ZEXT in that they're
eliminated by the generic instruction selection code.

This change by itself has very minor improvements in -Os CTMark overall. What this
does allow is better optimizations when future combines are added that rely on having
expensive constants remain unfolded.

Differential Revision: https://reviews.llvm.org/D144336

15 months ago[mlir] Add support for "promised" interfaces
River Riddle [Tue, 22 Feb 2022 22:51:37 +0000 (14:51 -0800)]
[mlir] Add support for "promised" interfaces

Promised interfaces allow for a dialect to "promise" the implementation of an interface, i.e.
declare that it supports an interface, but have the interface defined in an extension in a library
separate from the dialect itself. A promised interface is powerful in that it alerts the user when
the interface is attempted to be used (e.g. via cast/dyn_cast/etc.) and the implementation has
not yet been provided. This makes the system much more robust against misconfiguration,
and ensures that we do not lose the benefit we currently have of defining the interface in
the dialect library.

Differential Revision: https://reviews.llvm.org/D120368

15 months ago[llvm-dlltool] Implement the --no-leading-underscore option
Martin Storsjö [Wed, 7 Jun 2023 11:11:30 +0000 (14:11 +0300)]
[llvm-dlltool] Implement the --no-leading-underscore option

This requires being able to opt out from adding the leading underscores
in COFFModuleDefinition. Normally it is added automatically for I386
type targets. We could either move the decision entirely to all
callers, letting the caller check the machine type and decide whether
underscores should be added, or keep the logic mostly as is, but allowing
opting out from the behaviour on I386.

I went with keeping the interface as is for now.

Differential Revision: https://reviews.llvm.org/D152363

15 months ago[clang/test/CodeGen] Add test coverage for VarBypassDetector handling init statements...
Wang [Fri, 9 Jun 2023 18:05:51 +0000 (11:05 -0700)]
[clang/test/CodeGen] Add test coverage for VarBypassDetector handling init statements and condition variables in switch clauses

[VarBypassDetector.cpp](https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/VarBypassDetector.cpp) lacks test coverage for handling init statements and condition variables in switch clauses, as is shown in:
https://lab.llvm.org/coverage/coverage-reports/coverage/Users/buildslave/jenkins/workspace/coverage/llvm-project/clang/lib/CodeGen/VarBypassDetector.cpp.html#L70
This patch adds test coverage for uncovered lines.

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D152412

15 months ago[CodeGen] Fix a warning in release builds
Kazu Hirata [Fri, 9 Jun 2023 18:00:14 +0000 (11:00 -0700)]
[CodeGen] Fix a warning in release builds

This patch fixes:

  llvm/lib/CodeGen/MachineScheduler.cpp:4223:9: error: unused type
  alias 'IntervalTy' [-Werror,-Wunused-local-typedef]

15 months agoBrings back "[mlir][sparse] moving inbound check for slice driven loop into before...
Peiming Liu [Fri, 9 Jun 2023 17:22:56 +0000 (17:22 +0000)]
Brings back "[mlir][sparse] moving inbound check for slice driven loop into before block of the WhileOp"

This reverts commit 07b927902d410fefd2ebdec727957767dcd4fd2e.

Reviewed By: K-Wu

Differential Revision: https://reviews.llvm.org/D152566

15 months agoRevert "[mlir][sparse] moving inbound check for slice driven loop into before block...
Peiming Liu [Fri, 9 Jun 2023 17:19:21 +0000 (17:19 +0000)]
Revert "[mlir][sparse] moving inbound check for slice driven loop into before block of the WhileOp"

This reverts commit 853d704fd0c4744731870df67ade7249d5440438.

Differential Revision: https://reviews.llvm.org/D152562

15 months ago[mlir][sparse][gpu] unify dnmat and dnvec handle and ops
Kun Wu [Fri, 9 Jun 2023 16:58:44 +0000 (16:58 +0000)]
[mlir][sparse][gpu] unify dnmat and dnvec handle and ops

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D152465

15 months ago[mlir][sparse] moving inbound check for slice driven loop into before block of the...
Peiming Liu [Wed, 7 Jun 2023 23:34:44 +0000 (23:34 +0000)]
[mlir][sparse] moving inbound check for slice driven loop into before block of the WhileOp

This patch changes the while loop generated for iterating over a fully reduced sparse level with affine index expression.
Before:
```
cont = true
while (cont) {
  if (inBound()) {
    ....
    cont = true;
  } else {
    cont = false;
  }
}
```
After:
```
while(inBound()) {
  ....
}
```

Reviewed By: K-Wu

Differential Revision: https://reviews.llvm.org/D152463

15 months ago[RISCV] Cleanup vmv.v.x isel patterns to look more like other patterns. NFC
Craig Topper [Fri, 9 Jun 2023 16:59:27 +0000 (09:59 -0700)]
[RISCV] Cleanup vmv.v.x isel patterns to look more like other patterns. NFC

Add register classes to output registers. Use simm5 instead of XLenVT
for output immediate.

15 months ago[gn build] Fix per target runtime directory path
Arthur Eubanks [Fri, 9 Jun 2023 16:58:08 +0000 (09:58 -0700)]
[gn build] Fix per target runtime directory path

15 months ago[AppleAccelTable][NFC] Refactor iterator class
Felipe de Azevedo Piovezan [Sun, 4 Jun 2023 13:30:00 +0000 (09:30 -0400)]
[AppleAccelTable][NFC] Refactor iterator class

The current implementation of the AppleAcceleratorTable::Entry is problematic
for a few reasons:

1. It is heavyweight. Iterators should be cheap, but the current implementation
tracks 3 different integer values, one "Entry" object, and one pointer to the
actual accelerator table. Most of this information is redundant and can be
removed.

2. It performs "memory reads" outside of the dereference operation. This
violates the usual expectations of iterators, whereby we don't access anything
so long as we don't dereference  the iterator.

3. It doesn't commit to tracking _one_ thing only. It tries to track both an
"index" into a list of HashData entries and a pointer in a blob of data. For
this reason, it allows for multiple "invalid" states, keeps redundant
information around and is difficult to understand.

4. It couples the interpretation of the data with the iterator increment. As
such, if the *interpretation* fails, the iterator will keep on producing garbage
values without ever indicating so to consumers.

The problem this iterator is trying to solve is simple: we have a blob of data
containing many "HashData" entries and we want to iterate over them. As such,
this commit makes the iterator only track a pointer over that data, and it
decouples the iterator increments from the interpretation of this blob of data.

We maintain the already existing assumption that failures never happen, but now
make it explicit with an assert.

Depends on D152158

Differential Revision: https://reviews.llvm.org/D152159

15 months ago[Driver] Mark many target-specific driver-only options as TargetSpecific
Fangrui Song [Fri, 9 Jun 2023 16:26:37 +0000 (09:26 -0700)]
[Driver] Mark many target-specific driver-only options as TargetSpecific

so that they get an error on other targets. This change uses let statements to
apply `Flags = [TargetSpecific]` to options (mostly -m*) without specifying `Flags`.
Follow-up to D151590.

For some options, e.g. -mdefault-build-attributes (D31813), -mbranch-likely
(D38168), -mfpu=/-mabi= (6890b9b71e525020ab58d436336664beede71575), a warning
seems desired in at least certain cases. This is not the best practice, but this
change works around them by not applying `Flags = [TargetSpecific]`.

(
For Intel CPU errata -malign-branch= family options, we also drop the unneeded
NotXarchOption flag. This flag reports an error if the option is used with
-Xarch_*. This error reporting does not seem very useful.
)

15 months ago[gn build] Port 6adb1ca555ec
LLVM GN Syncbot [Fri, 9 Jun 2023 15:44:13 +0000 (15:44 +0000)]
[gn build] Port 6adb1ca555ec

15 months ago[WebAssembly] Re-land 8392bf6000ad
Caleb Zulawski [Fri, 9 Jun 2023 15:42:26 +0000 (08:42 -0700)]
[WebAssembly] Re-land 8392bf6000ad

Correctly handle single-element vectors to fix an assertion failure. Add tests
that were missing from the original commit.

Differential Revision: D151782

15 months ago[libc++] Add concepts that ensure a given iterator meets the syntactic requirements
Nikolas Klauser [Fri, 9 Jun 2023 15:38:07 +0000 (08:38 -0700)]
[libc++] Add concepts that ensure a given iterator meets the syntactic requirements

These concepts are used to ensure valid iterators are passed to PSTL algorithms, but can also be used for other interfaces.

Reviewed By: ldionne, #libc

Spies: EricWF, libcxx-commits

Differential Revision: https://reviews.llvm.org/D150493

15 months ago[GVN] Fix typo in freeze test case
Jay Foad [Fri, 9 Jun 2023 14:36:48 +0000 (15:36 +0100)]
[GVN] Fix typo in freeze test case

Differential Revision: https://reviews.llvm.org/D152539

15 months ago[mlir][vector][transform] Expose tensor slice -> transfer folding patterns
Matthias Springer [Fri, 9 Jun 2023 14:22:41 +0000 (16:22 +0200)]
[mlir][vector][transform] Expose tensor slice -> transfer folding patterns

Add a new transform op to populate patterns: ApplyFoldTensorSliceIntoTransferPatternsOp.

Differential Revision: https://reviews.llvm.org/D152531

15 months ago[libclang] Add CXBinaryOperatorKind and CXUnaryOperatorKind
MineGame159 [Fri, 9 Jun 2023 14:01:43 +0000 (10:01 -0400)]
[libclang] Add CXBinaryOperatorKind and CXUnaryOperatorKind

Adds 2 new functions to the C libclang api for retrieving operator
kinds for binary and unary operators from cursors. Also adds 2
functions for retrieving the spelling of the new enums.

Fixes https://github.com/llvm/llvm-project/issues/29138
Differential Revision: https://reviews.llvm.org/D150910

15 months ago[RDF] Remove `constexpr` from `hash
Krzysztof Parzyszek [Fri, 9 Jun 2023 13:52:39 +0000 (06:52 -0700)]
[RDF] Remove `constexpr` from `hash

15 months agoRemove unnecessary metadata check in test
Akira Hatanaka [Fri, 9 Jun 2023 13:41:22 +0000 (06:41 -0700)]
Remove unnecessary metadata check in test

15 months ago[SLP] Update X86/schedule_budget.ll test case to show budget impact
Bjorn Pettersson [Fri, 9 Jun 2023 12:52:43 +0000 (14:52 +0200)]
[SLP] Update X86/schedule_budget.ll test case to show budget impact

The comments and the checks in
  test/Transforms/SLPVectorizer/X86/schedule_budget.ll
did not match. After commit 352c46e70716061e99 the vectorization
has happened also with the reduced budget.

This patch is supposed to restore the original intention with the
test case (the one described in the comments). We want to see
that a restricted budget may reduce the amount of vectorization (i.e.
verifying that the -slp-schedule-budget option makes a difference),
while a higher budget still result in vectorization.

Differential Revision: https://reviews.llvm.org/D152530

15 months ago[LoadStoreVectorizer] Only upgrade align for alloca
Bjorn Pettersson [Wed, 7 Jun 2023 15:44:37 +0000 (17:44 +0200)]
[LoadStoreVectorizer] Only upgrade align for alloca

In commit 2be0abb7fe72ed453 (D149893) the load store vectorized was
reimplemented. One thing that can happen with the new LSV is that
it can increase the align of alloca and global objects. However,
the code comments indicate that the intention only was to increase
alignment of alloca.
Now we will use stripPointerCasts to analyse if the load/store really
is accessing an alloca (same as getOrEnforceKnownAlignment is using).
And then we only try to change the align if we find an alloca
instruction. This way the code will match better with code comments,
and we won't change alignment of non-stack variables to use the
"StackAdjustedAlignment".

Differential Revision: https://reviews.llvm.org/D152386

15 months ago[BOLT][NFCI] Use StringRef.split in launchPerfProcess
Amir Ayupov [Fri, 9 Jun 2023 13:23:46 +0000 (06:23 -0700)]
[BOLT][NFCI] Use StringRef.split in launchPerfProcess

Use StringRef method instead of reimplementing the splitting.
Incidentally, it also fixes the duplicate printing of the command arguments:
```
PERF2BOLT: spawning perf job to read branch events
Launching perf: /usr/bin/perf script^@-F^@pid,ip,brstack -F^@pid,ip,brstack pid,ip,brstack -f -i
PERF2BOLT: spawning perf job to read mem events
Launching perf: /usr/bin/perf script^@-F^@pid,event,addr,ip -F^@pid,event,addr,ip pid,event,addr,ip -f -i
PERF2BOLT: spawning perf job to read process events
Launching perf: /usr/bin/perf script^@--show-mmap-events --show-mmap-events -f -i
PERF2BOLT: spawning perf job to read task events
Launching perf: /usr/bin/perf script^@--show-task-events --show-task-events -f -i
```

Fixes it to:
```
PERF2BOLT: spawning perf job to read branch events
Launching perf: /usr/bin/perf script -F pid,ip,brstack -f -i
PERF2BOLT: spawning perf job to read mem events
Launching perf: /usr/bin/perf script -F pid,event,addr,ip -f -i
PERF2BOLT: spawning perf job to read process events
Launching perf: /usr/bin/perf script --show-mmap-events -f -i
PERF2BOLT: spawning perf job to read task events
Launching perf: /usr/bin/perf script --show-task-events -f -i
```

Reviewed By: #bolt, rafauler

Differential Revision: https://reviews.llvm.org/D152483

15 months ago[Metadata] Fix `addAnnotationMetadata` when appending a string tuple to an existing...
Zain Jaffal [Fri, 9 Jun 2023 13:20:17 +0000 (14:20 +0100)]
[Metadata] Fix `addAnnotationMetadata` when appending a string tuple to an existing MDTuple.

Currently if the MD_Annotation node containd a string node when we add a
string tuple node the string will not be preserved. This change fixes
that issue.

Reviewed By: fhahn

Differential Revision: https://reviews.llvm.org/D152448

15 months ago[RDF] Allow RegisterRef to contain register unit
Krzysztof Parzyszek [Thu, 1 Jun 2023 19:00:47 +0000 (12:00 -0700)]
[RDF] Allow RegisterRef to contain register unit

15 months ago[gn build] Port aee34000f9fb
LLVM GN Syncbot [Fri, 9 Jun 2023 13:02:57 +0000 (13:02 +0000)]
[gn build] Port aee34000f9fb

15 months ago[MISched][rework] Introduce and use ResourceSegments.
Francesco Petrogalli [Fri, 9 Jun 2023 11:24:21 +0000 (13:24 +0200)]
[MISched][rework] Introduce and use ResourceSegments.

Re-landing the code that was reverted because of the buildbot failure
in https://lab.llvm.org/buildbot#builders/9/builds/27319.

Original commit message
======================

The class `ResourceSegments` is used to keep track of the intervals
that represent resource usage of a list of instructions that are
being scheduled by the machine scheduler.

The collection is made of intervals that are closed on the left and
open on the right (represented by the standard notation `[a, b)`).

These collections of intervals can be extended by `add`ing new
intervals accordingly while scheduling a basic block.

Unit tests are added to verify the possible configurations of
intervals, and the relative possibility of scheduling a new
instruction in these configurations. Specifically, the methods
`getFirstAvailableAtFromBottom` and `getFirstAvailableAtFromTop` are
tested to make sure that both bottom-up and top-down scheduling work
when tracking resource usage across the basic block with
`ResourceSegments`.

Note that the scheduler tracks resource usage with two methods:

1. counters (via `std::vector<unsigned> ReservedCycles;`);

2. intervals (via `std::map<unsigned, ResourceSegments> ReservedResourceSegments;`).

This patch can be considered a NFC test for existing scheduling models
because the tracking system that uses intervals is turned off by
default (field `bit EnableIntervals = false;` in the tablegen class
`SchedMachineModel`).

Reviewed By: andreadb

Differential Revision: https://reviews.llvm.org/D150312

15 months ago[Scalarizer] Scalarize freeze instruction
Jay Foad [Fri, 9 Jun 2023 11:10:02 +0000 (12:10 +0100)]
[Scalarizer] Scalarize freeze instruction

Differential Revision: https://reviews.llvm.org/D152518

15 months ago[Scalarizer] Precommit tests for freeze instruction
Jay Foad [Fri, 9 Jun 2023 11:08:47 +0000 (12:08 +0100)]
[Scalarizer] Precommit tests for freeze instruction

Differential Revision: https://reviews.llvm.org/D152517

15 months ago[HIP] Instruct lld to go through all archives
Siu Chi Chan [Tue, 6 Jun 2023 19:48:26 +0000 (15:48 -0400)]
[HIP] Instruct lld to go through all archives

Add the --whole-archive flag when linking HIP programs to instruct lld
to go through every archive library to link in all the kernel functions
(entry pointers to the GPU program); otherwise, lld may skip some
library files if there are no more symbols that need to be resolved.

Differential Revision: https://reviews.llvm.org/D152207

Change-Id: I084d3d606f9cee646f9adc65f4b648c9bcb252e6

15 months agoFix "[compiler-rt] Allow 3 simultaneous interceptors on Linux"
Marco Elver [Fri, 9 Jun 2023 12:30:02 +0000 (14:30 +0200)]
Fix "[compiler-rt] Allow 3 simultaneous interceptors on Linux"

Build bots have been failing with:

/usr/bin/ld: read-only segment has dynamic relocations

Remove support for interceptor trampoline on s390, and revert new
implementation of __tls_get_offset.

15 months ago[GlobalIsel][X86] Update legalization of G_PTR_ADD
Simon Pilgrim [Fri, 9 Jun 2023 12:14:04 +0000 (13:14 +0100)]
[GlobalIsel][X86] Update legalization of G_PTR_ADD

Replace the legacy legalizer versions

Add test coverage for 32-bit targets and non-constant ptr offsets

15 months ago[MCP] Do not remove redundant copy for COPY from undef
pvanhout [Fri, 9 Jun 2023 07:28:17 +0000 (09:28 +0200)]
[MCP] Do not remove redundant copy for COPY from undef

I don't think we can safely remove the second COPY as redundant in such cases.
The first COPY (which has undef src) may be lowered to a KILL instruction instead, resulting in no COPY being emitted at all.

Testcase is X86 so it's in the same place as other testcases for this function, but this was initially spotted on AMDGPU with the following:
```
 renamable $vgpr24 = PRED_COPY undef renamable $vgpr25, implicit $exec
 renamable $vgpr24 = PRED_COPY killed renamable $vgpr25, implicit $exec
```
The second COPY waas removed as redundant, and the first one was lowered to a KILL (= removed too), causing $vgpr24 to not have $vgpr25's value.

Fixes SWDEV-401507

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D152502

15 months agoReland [AMDGPU] New PAL metadata updates to ps_extra_lds_size and float_mode
David Stuttard [Thu, 11 May 2023 13:09:38 +0000 (14:09 +0100)]
Reland [AMDGPU] New PAL metadata updates to ps_extra_lds_size and float_mode

New metadata format contains full calculation of field contents for
ps_extra_lds_size (vs old format where the value in RSRC register is used by PAL
to calculate the value required).

Also stop updating float_mode and rely on front end settings for this field.

Differential Revision: https://reviews.llvm.org/D152247

15 months ago[gn build] Port f1d1ca3d7434
LLVM GN Syncbot [Fri, 9 Jun 2023 11:24:06 +0000 (11:24 +0000)]
[gn build] Port f1d1ca3d7434

15 months agoRevert "[MISched] Introduce and use ResourceSegments."
Francesco Petrogalli [Fri, 9 Jun 2023 11:21:52 +0000 (13:21 +0200)]
Revert "[MISched] Introduce and use ResourceSegments."

Reverted because it produces the following builbot failure at https://lab.llvm.org/buildbot#builders/9/builds/27319:

/b/ml-opt-rel-x86-64-b1/llvm-project/llvm/unittests/CodeGen/SchedBoundary.cpp: In member function ‘virtual void ResourceSegments_getFirstAvailableAtFromBottom_empty_Test::TestBody()’:
/b/ml-opt-rel-x86-64-b1/llvm-project/llvm/unittests/CodeGen/SchedBoundary.cpp:395:31: error: call of overloaded ‘ResourceSegments(<brace-enclosed initializer list>)’ is ambiguous
 395 |   auto X = ResourceSegments({});
     |                               ^

This reverts commit dc312f0331309692e8d6e06e93b3492b6a40989f.

15 months ago[gn build] Port dc312f033130
LLVM GN Syncbot [Fri, 9 Jun 2023 11:17:35 +0000 (11:17 +0000)]
[gn build] Port dc312f033130

15 months agoFix "[compiler-rt] Introduce asm macros for interceptor trampolines"
Marco Elver [Fri, 9 Jun 2023 11:07:41 +0000 (13:07 +0200)]
Fix "[compiler-rt] Introduce asm macros for interceptor trampolines"

Add missing ASM_INTERCEPTOR_TRAMPOLINE(setjmp).

15 months ago[MISched] Introduce and use ResourceSegments.
Francesco Petrogalli [Fri, 9 Jun 2023 07:06:48 +0000 (09:06 +0200)]
[MISched] Introduce and use ResourceSegments.

The class `ResourceSegments` is used to keep track of the intervals
that represent resource usage of a list of instructions that are
being scheduled by the machine scheduler.

The collection is made of intervals that are closed on the left and
open on the right (represented by the standard notation `[a, b)`).

These collections of intervals can be extended by `add`ing new
intervals accordingly while scheduling a basic block.

Unit tests are added to verify the possible configurations of
intervals, and the relative possibility of scheduling a new
instruction in these configurations. Specifically, the methods
`getFirstAvailableAtFromBottom` and `getFirstAvailableAtFromTop` are
tested to make sure that both bottom-up and top-down scheduling work
when tracking resource usage across the basic block with
`ResourceSegments`.

Note that the scheduler tracks resource usage with two methods:

1. counters (via `std::vector<unsigned> ReservedCycles;`);

2. intervals (via `std::map<unsigned, ResourceSegments> ReservedResourceSegments;`).

This patch can be considered a NFC test for existing scheduling models
because the tracking system that uses intervals is turned off by
default (field `bit EnableIntervals = false;` in the tablegen class
`SchedMachineModel`).

Reviewed By: andreadb

Differential Revision: https://reviews.llvm.org/D150312

15 months agoInherit SliceOptions constructor in BackwardSliceOptions.
Johannes Reifferscheid [Fri, 9 Jun 2023 10:55:08 +0000 (12:55 +0200)]
Inherit SliceOptions constructor in BackwardSliceOptions.

Reviewed By: csigg

Differential Revision: https://reviews.llvm.org/D152515

15 months ago[mlir][tensor] Add pattern to rewrite tensor.generate as a constant
Matthias Springer [Fri, 9 Jun 2023 10:37:46 +0000 (12:37 +0200)]
[mlir][tensor] Add pattern to rewrite tensor.generate as a constant

Only ops with a static tensor type and a constant yield value are rewritten.

Differential Revision: https://reviews.llvm.org/D152511

15 months ago[GlobalIsel][X86] Move intrinsics getActionDefinitionsBuilder defs above remaining...
Simon Pilgrim [Fri, 9 Jun 2023 10:28:08 +0000 (11:28 +0100)]
[GlobalIsel][X86] Move intrinsics getActionDefinitionsBuilder defs above remaining legacy handling