platform/upstream/llvm.git
4 years ago[analyzer] Fix a strange compile error on a certain Clang-7.0.0
Artem Dergachev [Wed, 11 Mar 2020 12:53:10 +0000 (15:53 +0300)]
[analyzer] Fix a strange compile error on a certain Clang-7.0.0

error: default initialization of an object of const type
       'const clang::QualType' without a user-provided
       default constructor

  Irrelevant; // A placeholder, whenever we do not care about the type.
  ^
            {}

4 years ago[compiler-rt][tsan] Make fiber support in thread sanitizer dynamic linkable
Joachim Protze [Wed, 11 Mar 2020 13:12:51 +0000 (14:12 +0100)]
[compiler-rt][tsan] Make fiber support in thread sanitizer dynamic linkable

This patch will allow dynamic libraries to call into the fiber support functions
introduced in https://reviews.llvm.org/D54889

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

4 years ago[LIBOMPTARGET]Fix PR45139: Bug in mixing Python and OpenMP target offload.
Alexey Bataev [Tue, 10 Mar 2020 17:07:39 +0000 (13:07 -0400)]
[LIBOMPTARGET]Fix PR45139: Bug in mixing Python and OpenMP target offload.

Summary: Explicitly initialize data members of RTLsTy class upon construction.

Reviewers: grokos

Subscribers: guansong, openmp-commits, caomhin, kkwli0

Tags: #openmp

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

4 years ago[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering
Valentin Clement [Wed, 11 Mar 2020 12:56:31 +0000 (13:56 +0100)]
[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering

Summary:
This patch add some builtin operation for the gpu.all_reduce ops.
- for Integer only: `and`, `or`, `xor`
- for Float and Integer: `min`, `max`

This is useful for higher level dialect like OpenACC or OpenMP that can lower to the GPU dialect.

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

4 years agoRevert "[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm...
Stephan Herhut [Wed, 11 Mar 2020 13:03:03 +0000 (14:03 +0100)]
Revert "[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering"

Attribution to original author got lost.

4 years ago[clang-format] Improved identification of C# nullables
Jonathan Coe [Wed, 11 Mar 2020 12:57:29 +0000 (12:57 +0000)]
[clang-format] Improved identification of C# nullables

Summary:
Allow `?` inside C# generics.

Do not mistake casts like `(Type?)` as conditional operators.

Reviewers: krasimir

Subscribers: cfe-commits, MyDeveloperDay

Tags: #clang-format, #clang

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

4 years ago[clang-format] No space in `new()` and `this[Type x]` in C#
Jonathan Coe [Wed, 11 Mar 2020 12:53:53 +0000 (12:53 +0000)]
[clang-format] No space in `new()` and `this[Type x]` in C#

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits, MyDeveloperDay

Tags: #clang-format, #clang

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

4 years ago[NFC][ARM] Add test
Sam Parker [Wed, 11 Mar 2020 11:51:52 +0000 (11:51 +0000)]
[NFC][ARM] Add test

Precommit test for LowOverheadLoops.

4 years ago[NFC][ARM] Reorder some logic
Sam Parker [Wed, 11 Mar 2020 11:39:14 +0000 (11:39 +0000)]
[NFC][ARM] Reorder some logic

Move some logic around in LowOverheadLoop::ValidateLiveOut

4 years ago[X86] Replace (most) X86ISD::SHLD/SHRD usage with ISD::FSHL/FSHR generic opcodes...
Simon Pilgrim [Wed, 11 Mar 2020 11:17:34 +0000 (11:17 +0000)]
[X86] Replace (most) X86ISD::SHLD/SHRD usage with ISD::FSHL/FSHR generic opcodes (PR39467)

For i32 and i64 cases, X86ISD::SHLD/SHRD are close enough to ISD::FSHL/FSHR that we can use them directly, we just need to account for the operand commutation for SHRD.

The i16 SHLD/SHRD case is annoying as the shift amount is modulo-32 (vs funnel shift modulo-16), so I've added X86ISD::FSHL/FSHR equivalents, which matches the generic implementation in all other terms.

Something I'm slightly concerned with is that ISD::FSHL/FSHR legality is controlled by the Subtarget.isSHLDSlow() feature flag - we don't normally use non-ISA features for this but it allows the DAG combines to continue to operate after legalization in a lot more cases.

The X86 *bits.ll changes are all affected by the same issue - we now have a "FSHR(-1,-1,amt) -> ROTR(-1,amt) -> (-1)" simplification that reduces the dependencies enough for the branch fall through code to mess up.

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

4 years ago[LLD][ELF] Add initial LLD LinkerScript docs page
Peter Smith [Tue, 10 Mar 2020 13:26:50 +0000 (13:26 +0000)]
[LLD][ELF] Add initial LLD LinkerScript docs page

LLD implements Linker Scripts as they are described in the GNU ld manual.
This description is far from a specification, with the only true reference
the GNU ld implementation, which has undocumented behaviour that can vary
from release to release.

To make it easy for people to switch between linkers we try to follow GNU
ld implementation details wherever possible. We reserve the right to make
our own decisions where the undocumented GNU ld behaviour is not
appropriate for LLD. We don't have a place to document these decisions and
it can be difficult for users to find out this information.

This file is a statement of the LLD implementation policy and will contain
intentional deviations from GNU ld.

The first patch that will add concrete details to this file is D75724

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

4 years ago[gn build] Port 326bc1da45b
LLVM GN Syncbot [Wed, 11 Mar 2020 10:47:56 +0000 (10:47 +0000)]
[gn build] Port 326bc1da45b

4 years ago[Object] Fix handling of large archive members
James Henderson [Fri, 6 Mar 2020 14:25:32 +0000 (14:25 +0000)]
[Object] Fix handling of large archive members

The archive library truncated the size of archive members whose size was
greater than max uint32_t. This patch fixes the issue and adds some unit
tests to verify.

Reviewed by: ruiu, MaskRay, grimar, rupprecht

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

4 years ago[TTI][ARM][MVE] Refine gather/scatter cost model
Anna Welker [Wed, 11 Mar 2020 10:13:11 +0000 (10:13 +0000)]
[TTI][ARM][MVE] Refine gather/scatter cost model

Refines the gather/scatter cost model, but also changes the TTI
function getIntrinsicInstrCost to accept an additional parameter
which is needed for the gather/scatter cost evaluation.
This did require trivial changes in some non-ARM backends to
adopt the new parameter.
Extending gathers and truncating scatters are now priced cheaper.

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

4 years ago[ARM] Improve codegen of volatile load/store of i64
Victor Campos [Mon, 9 Mar 2020 13:29:37 +0000 (13:29 +0000)]
[ARM] Improve codegen of volatile load/store of i64

Summary:
Instead of generating two i32 instructions for each load or store of a volatile
i64 value (two LDRs or STRs), now emit LDRD/STRD.

These improvements cover architectures implementing ARMv5TE or Thumb-2.

The code generation explicitly deviates from using the register-offset
variant of LDRD/STRD. In this variant, the register allocated to the
register-offset cannot be reused in any of the remaining operands. Such
restriction seems to be non-trivial to implement in LLVM, thus it is
left as a to-do.

Reviewers: dmgreen, efriedma, john.brawn, nickdesaulniers

Reviewed By: efriedma, nickdesaulniers

Subscribers: danielkiss, alanphipps, hans, nathanchance, nickdesaulniers, vvereschaka, kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[NFC][Test] Add a PowerPC test to verify the behavior of a*b +/- c*d
QingShan Zhang [Wed, 11 Mar 2020 09:35:40 +0000 (09:35 +0000)]
[NFC][Test] Add a PowerPC test to verify the behavior of a*b +/- c*d

4 years ago[AMDGPU] Use script to generate atomic optimizations test
Sebastian Neubauer [Thu, 5 Mar 2020 13:29:40 +0000 (14:29 +0100)]
[AMDGPU] Use script to generate atomic optimizations test

This is a preparation for introducing a llvm.amdgcn.ballot intrinsic in
D65088.

4 years ago[NFC][Test] Format the test PowerPC/recipest.ll with update_llc_test_checks.py
QingShan Zhang [Wed, 11 Mar 2020 08:49:53 +0000 (08:49 +0000)]
[NFC][Test] Format the test PowerPC/recipest.ll with update_llc_test_checks.py

4 years ago[lldb/Reproducer] Prevent crash when GDB multi-loader can't be created.
Jonas Devlieghere [Wed, 11 Mar 2020 06:06:39 +0000 (23:06 -0700)]
[lldb/Reproducer] Prevent crash when GDB multi-loader can't be created.

Check that the multi loader isn't null and print an error otherwise.
This patch also extends the test to cover these error paths.

4 years ago[CodeGen][ObjC] Don't extend lifetime of ObjC pointers passed to calls
Akira Hatanaka [Wed, 11 Mar 2020 05:01:45 +0000 (22:01 -0700)]
[CodeGen][ObjC] Don't extend lifetime of ObjC pointers passed to calls
to __builtin_os_log_format if ARC isn't enabled

Fixes a bug introduced in this commit:
https://github.com/llvm/llvm-project/commit/f4d791f8332c2bb7e89849d0fe4ef48cb0a23229

rdar://problem/60301219

4 years agoMake IEEEFloat::roundToIntegral more standard conformant
Serge Pavlov [Thu, 27 Feb 2020 11:16:14 +0000 (18:16 +0700)]
Make IEEEFloat::roundToIntegral more standard conformant

Behavior of IEEEFloat::roundToIntegral is aligned with IEEE-754
operation roundToIntegralExact. In partucular this function now:
- returns opInvalid for signaling NaNs,
- returns opInexact if the result of rounding differs from argument.

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

4 years agoGlobalISel: Don't try to narrow extending loads/trunc store
Matt Arsenault [Thu, 13 Feb 2020 20:08:59 +0000 (15:08 -0500)]
GlobalISel: Don't try to narrow extending loads/trunc store

If the loaded memory size was smaller than the result size, this would
produce out of bounds memory accesses. I'm wondering if we need a
distinct narrow memory legalize action type, since a case I care about
is decomposing a 4-byte unaligned access into 4 extending loads, which
would leave the original result register type. I'm currently awkwardly
using narrowScalar to handle unaligned accesses that need to be split.

4 years agoGlobalISel: Add missing add/sub with carries to MachineIRBuilder
Matt Arsenault [Wed, 26 Feb 2020 20:05:14 +0000 (15:05 -0500)]
GlobalISel: Add missing add/sub with carries to MachineIRBuilder

4 years agoAMDGPU/GlobalISel: Add some tests that used to infinite loop
Matt Arsenault [Sat, 11 Jan 2020 14:05:27 +0000 (09:05 -0500)]
AMDGPU/GlobalISel: Add some tests that used to infinite loop

4 years ago[libunwind] Remove __FILE__ and __LINE__ from error reporting
Leonard Chan [Wed, 11 Mar 2020 01:58:41 +0000 (18:58 -0700)]
[libunwind] Remove __FILE__ and __LINE__ from error reporting

We were seeing non-deterministic binary size differences depending on which
toolchain was used to build fuchsia. This is because libunwind embeded the
FILE path into a logging macro, even for release builds, which makes the code
dependent on the build directory.

This removes the file and line number from the error message. This is
consistent with how other runtimes report error, e.g.
https://github.com/llvm/llvm-project/blob/master/libcxxabi/src/abort_message.cpp#L30.

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

4 years ago[cmake] Link libclangDaemonTweaks with clangFormat
Hubert Tong [Wed, 11 Mar 2020 01:31:10 +0000 (21:31 -0400)]
[cmake] Link libclangDaemonTweaks with clangFormat

Speculative fix for buildbot failure in
http://lab.llvm.org:8011/builders/clang-ppc64le-rhel/builds/1881/steps/build%20stage%201/logs/stdio

Cause appears to be D75716.

4 years ago[clang-tidy] Use more widely available headers for protability-restrict-system-includ...
Paula Toth [Tue, 10 Mar 2020 23:52:57 +0000 (16:52 -0700)]
[clang-tidy] Use more widely available headers for protability-restrict-system-includes-check's test

4 years agoFix crash-on-invalid when trying to recover from a function template
Richard Smith [Tue, 10 Mar 2020 23:33:42 +0000 (16:33 -0700)]
Fix crash-on-invalid when trying to recover from a function template
being deleted on its second or subsequent declaration.

4 years ago[AMDGPU] Allow struct.buffer.*.format intrinsics to accept i32
Carl Ritson [Tue, 10 Mar 2020 22:46:08 +0000 (07:46 +0900)]
[AMDGPU] Allow struct.buffer.*.format intrinsics to accept i32

Summary:
In the same manner as struct.buffer.load / struct.buffer.store,
allow struct.buffer.load.format / struct.buffer.store.format to
return / accept any type.  This simplifies front-end code gen.

Reviewers: tpr, arsenm, nhaehnle

Reviewed By: arsenm

Subscribers: kzhuravl, jvesely, wdng, yaxunl, dstuttard, t-tye, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[RuntimeDyld][COFF] Build stubs for COFF dllimport symbols.
Lang Hames [Mon, 9 Mar 2020 23:56:07 +0000 (16:56 -0700)]
[RuntimeDyld][COFF] Build stubs for COFF dllimport symbols.

Summary:
Enables JIT-linking by RuntimeDyld of COFF objects that contain references to
dllimport symbols. This is done by recognizing symbols that start with the
reserved "__imp_" prefix and building a pointer entry to the target symbol in
the stubs area of the section. References to the "__imp_" symbol are updated to
point to this pointer.

Work in progress: The generic code is in place, but only RuntimeDyldCOFFX86_64
and RuntimeDyldCOFFI386 have been updated to look for and update references to
dllimport symbols.

Reviewers: compnerd

Subscribers: hiraditya, ributzka, llvm-commits

Tags: #llvm

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

4 years ago[RuntimeDyld] Allow multi-line rtdyld-check and jitlink-check expressions.
Lang Hames [Tue, 10 Mar 2020 20:07:46 +0000 (13:07 -0700)]
[RuntimeDyld] Allow multi-line rtdyld-check and jitlink-check expressions.

This patch allows rtdyld-check / jitlink-check expressions to be extended over
multiple lines by terminating each line with a '\'. E.g.

  # llvm-rtdyld: *{8}X = \
  # llvm-rtdyld:   Y
  X:
    .quad Y

This will be used to break up some long lines in upcoming test cases.

4 years agoAMDGPU/GlobalISel: Refine G_TRUNC legality rules
Matt Arsenault [Sun, 16 Feb 2020 02:59:30 +0000 (21:59 -0500)]
AMDGPU/GlobalISel: Refine G_TRUNC legality rules

Scalarize most truncates. Avoid touching cases that could end up in
unresolvable infinite loops.

4 years agoAdd triple for non-x86 environments.
Bill Wendling [Tue, 10 Mar 2020 22:26:03 +0000 (15:26 -0700)]
Add triple for non-x86 environments.

4 years agoGlobalISel: Implement fewerElementsVector for G_TRUNC
Matt Arsenault [Sun, 16 Feb 2020 01:24:36 +0000 (20:24 -0500)]
GlobalISel: Implement fewerElementsVector for G_TRUNC

Extend fewerElementsVectorBasic to handle operands with different
element types.

4 years agoRevert "[libc++abi] Change __cxa_finalize return type to void"
Louis Dionne [Tue, 10 Mar 2020 22:11:26 +0000 (18:11 -0400)]
Revert "[libc++abi] Change __cxa_finalize return type to void"

This reverts commit fde9d33f7, which was not properly reviewed by a
libc++ or libc++abi code owner.

4 years ago[mlir] Create a std op instead of chain of ops.
Hanhan Wang [Tue, 10 Mar 2020 21:59:47 +0000 (14:59 -0700)]
[mlir] Create a std op instead of chain of ops.

Summary:
1-bit integer is tricky in different dialects sometimes. E.g., there is no
arithmetic instructions on 1-bit integer in SPIR-V, i.e., `spv.IMul %0, %1 : i1`
is not valid. Instead, `spv.LogicalAnd %0, %1 : i1` is valid. Creating the op
directly makes lowering easier because we don't need to match a complicated
pattern like `!(!lhs && !rhs)`. Also, this matches the semantic better.

Also add assertions on inputs.

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

4 years ago[libc++abi] Change __cxa_finalize return type to void
Ryan Prichard [Sat, 8 Feb 2020 01:00:39 +0000 (17:00 -0800)]
[libc++abi] Change __cxa_finalize return type to void

Summary:
The return type of __cxa_finalize is documented as void in the Itanium
C++ ABI, and it is void in various C libraries.

Reviewers: EricWF, ldionne, compnerd, mclow.lists, MaskRay

Reviewed By: MaskRay

Subscribers: MaskRay, dexonsmith, ldionne, libcxx-commits

Tags: #libc

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

4 years ago[libc++] Properly mark std::function as deprecated in C++03
Louis Dionne [Mon, 9 Mar 2020 15:16:22 +0000 (11:16 -0400)]
[libc++] Properly mark std::function as deprecated in C++03

Due to Clang bug http://llvm.org/PR45151, deprecated attributes are not
picked up on partial specializations. This patch instead applies it to
the first declaration of std::function itself.

4 years agoPR45083: Mark statement expressions as being dependent if they appear in
Richard Smith [Tue, 10 Mar 2020 00:34:33 +0000 (17:34 -0700)]
PR45083: Mark statement expressions as being dependent if they appear in
a dependent context.

This matches the GCC behavior.

We track the enclosing template depth when determining whether a
statement expression is within a dependent context; there doesn't appear
to be any other reliable way to determine this.

We previously assumed they were neither value- nor
instantiation-dependent under any circumstances, which would lead to
crashes and other misbehavior.

4 years agoAMDGPU: Use V_MAC_F32 for fmad.ftz
Matt Arsenault [Mon, 9 Mar 2020 20:53:00 +0000 (16:53 -0400)]
AMDGPU: Use V_MAC_F32 for fmad.ftz

This avoids regressions in a future patch. I'm confused by the use of
the gfx9 usage legacy_mad. Was this a pointless instruction rename, or
uses fmul_legacy handling? Why is regular mac avilable in that case?

4 years ago[CodeGenObjC] Place property names in __objc_methname
Erik Pilkington [Tue, 10 Mar 2020 18:42:47 +0000 (11:42 -0700)]
[CodeGenObjC] Place property names in __objc_methname

This allows the property name to deduplicate with the accessor method name.
rdar://58927964

4 years ago[Concepts] Fix incorrect DeclContext for transformed RequiresExprBodyDecl
Saar Raz [Tue, 10 Mar 2020 21:17:00 +0000 (23:17 +0200)]
[Concepts] Fix incorrect DeclContext for transformed RequiresExprBodyDecl

We would assign the incorrect DeclContext when transforming the RequiresExprBodyDecl, causing incorrect
handling of 'this' inside RequiresExprBodyDecls (bug #45162).

Assign the current context as the DeclContext of the transformed decl.

4 years ago[CodeGen] Emit destructor calls to destruct compound literals
Akira Hatanaka [Tue, 10 Mar 2020 21:06:25 +0000 (14:06 -0700)]
[CodeGen] Emit destructor calls to destruct compound literals

Fix a bug in IRGen where it wasn't destructing compound literals in C
that are ObjC pointer arrays or non-trivial structs. Also diagnose jumps
that enter or exit the lifetime of the compound literals.

rdar://problem/51867864

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

4 years ago[clang-tidy] Fix warning from my previous patch in ReleaseNotes.txt
Paula Toth [Tue, 10 Mar 2020 21:01:23 +0000 (14:01 -0700)]
[clang-tidy] Fix warning from my previous patch in ReleaseNotes.txt

4 years agoWarn of uninitialized variables on asm goto's indirect branch
Bill Wendling [Tue, 10 Mar 2020 20:47:30 +0000 (13:47 -0700)]
Warn of uninitialized variables on asm goto's indirect branch

Summary:
Outputs from an asm goto block cannot be used on the indirect branch.
It's not supported and may result in invalid code generation.

Reviewers: jyknight, nickdesaulniers, hfinkel

Reviewed By: nickdesaulniers

Subscribers: martong, cfe-commits, rnk, craig.topper, hiraditya, rsmith

Tags: #clang

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

4 years ago[clangd] Have visibleNamespaces() and getEligiblePoints() take a LangOptions rather...
Nathan Ridge [Fri, 6 Mar 2020 00:03:26 +0000 (19:03 -0500)]
[clangd] Have visibleNamespaces() and getEligiblePoints() take a LangOptions rather than a FormatStyle

Summary:
These functions only use the FormatStyle to obtain a LangOptions via
format::getFormattingLangOpts(), and some callers can more easily obtain
a LangOptions more directly.

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[clangd] Run clang-format on CodeComplete.cpp and SourceCodeTests.cpp
Nathan Ridge [Tue, 10 Mar 2020 20:10:04 +0000 (16:10 -0400)]
[clangd] Run clang-format on CodeComplete.cpp and SourceCodeTests.cpp

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[gn build] Port ebdb98f254f
LLVM GN Syncbot [Tue, 10 Mar 2020 20:34:28 +0000 (20:34 +0000)]
[gn build] Port ebdb98f254f

4 years ago[clang-tidy] Move fuchsia-restrict-system-includes to portability module for general...
Paula Toth [Tue, 10 Mar 2020 17:28:23 +0000 (10:28 -0700)]
[clang-tidy] Move fuchsia-restrict-system-includes to portability module for general use.

Summary:
Created a general check for restrict-system-includes under portability as recommend in the comments under D75332. I also fleshed out the user facing documentation to show examples for common use-cases such as allow-list, block-list, and wild carding.

Removed fuchsia's check as per phosek sugguestion.

Reviewers: aaron.ballman, phosek, alexfh, hokein, njames93

Reviewed By: phosek

Subscribers: Eugene.Zelenko, mgorny, xazax.hun, phosek, cfe-commits, MaskRay

Tags: #clang-tools-extra, #clang

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

4 years ago[mlir][vulkan-runner] Use std::make_tuple to create tuple
Lei Zhang [Tue, 10 Mar 2020 20:20:07 +0000 (16:20 -0400)]
[mlir][vulkan-runner] Use std::make_tuple to create tuple

4 years ago[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering
Stephan Herhut [Tue, 10 Mar 2020 20:04:48 +0000 (21:04 +0100)]
[MLIR] Add `and`, `or`, `xor`, `min`, `max` too gpu.all_reduce and the nvvm lowering

Summary:
This patch add some builtin operation for the gpu.all_reduce ops.
- for Integer only: `and`, `or`, `xor`
- for Float and Integer: `min`, `max`

This is useful for higher level dialect like OpenACC or OpenMP that can lower to the GPU dialect.

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

4 years ago[Concepts] Add constraints checks to isSameEntity
Saar Raz [Tue, 10 Mar 2020 20:05:36 +0000 (22:05 +0200)]
[Concepts] Add constraints checks to isSameEntity

isSameEntity was missing constraints checking, causing constrained overloads
to not travel well accross serialization. (bug #45115)

Add constraints checking to isSameEntity.

4 years ago[Concepts] Add FoundDecl to ConceptSpecializationExpr serialization
Saar Raz [Tue, 10 Mar 2020 20:04:11 +0000 (22:04 +0200)]
[Concepts] Add FoundDecl to ConceptSpecializationExpr serialization

FoundDecl was missing from ConceptSpecializationExpr serialization - add it.

4 years ago[mlir][vulkan-runner] Update mlir-vulkan-runner execution driver.
Denis Khalikov [Tue, 10 Mar 2020 19:17:07 +0000 (15:17 -0400)]
[mlir][vulkan-runner] Update mlir-vulkan-runner execution driver.

* Adds GpuLaunchFuncToVulkanLaunchFunc conversion pass.
* Moves a serialization of the `spirv::Module` from LaunchFuncToVulkanCalls pass to newly created pass.
* Updates LaunchFuncToVulkanCalls instrumentation pass, adds `initVulkan` and `deinitVulkan` runtime calls.
* Adds `bindResource` call to bind specifc resource by the given descriptor set and descriptor binding.
* Eliminates static construction and desctruction of `VulkanRuntimeManager`.

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

4 years ago[mlir][NFC] Move the interfaces and traits for side effects out of IR/ to Interfaces/
River Riddle [Tue, 10 Mar 2020 19:25:08 +0000 (12:25 -0700)]
[mlir][NFC] Move the interfaces and traits for side effects out of IR/ to Interfaces/

Summary:
Interfaces/ is the designated directory for these types of interfaces, and also removes the need for including them directly in IR/.

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

4 years ago[mlir][NFC] Move the operation interfaces out of Analysis/ and into a new Interfaces...
River Riddle [Tue, 10 Mar 2020 19:20:24 +0000 (12:20 -0700)]
[mlir][NFC] Move the operation interfaces out of Analysis/ and into a new Interfaces/ directory.

The interfaces themselves aren't really analyses, they may be used by analyses though. Having them in Analysis can also create cyclic dependencies if an analysis depends on a specific dialect, that also provides one of the interfaces.

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

4 years ago[AMDGPU] Fix the gfx10 scheduling model for f32 conversions
Jay Foad [Fri, 28 Feb 2020 23:38:41 +0000 (23:38 +0000)]
[AMDGPU] Fix the gfx10 scheduling model for f32 conversions

Summary:
As far as I can tell on gfx10 conversions to/from f32 (that are not
converting f32 to/from f64) are full rate instructions, but they were
marked as quarter rate instructions.

I have fixed this for gfx10 only. I assume the scheduling model was
correct for older architectures, though I don't have any documentation
handy to confirm that.

Reviewers: rampitec, arsenm

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[mlir][Linalg] Revisit 0-D abstraction
Nicolas Vasilache [Tue, 10 Mar 2020 19:10:34 +0000 (15:10 -0400)]
[mlir][Linalg] Revisit 0-D abstraction

This revision takes advantage of the empty AffineMap to specify the
0-D edge case. This allows removing a bunch of annoying corner cases
that ended up impacting users of Linalg.

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

4 years agoConvert a reachable llvm_unreachable into an assert.
Aaron Ballman [Tue, 10 Mar 2020 18:21:55 +0000 (14:21 -0400)]
Convert a reachable llvm_unreachable into an assert.

4 years ago[SimplifyLibcalls] Don't replace locked IO (fgetc/fgets/fputc/fputs/fread/fwrite...
Fangrui Song [Tue, 10 Mar 2020 15:05:00 +0000 (08:05 -0700)]
[SimplifyLibcalls] Don't replace locked IO (fgetc/fgets/fputc/fputs/fread/fwrite) with unlocked IO (*_unlocked)

This essentially reverts some of the SimplifyLibcalls part changes of D45736 [SimplifyLibcalls] Replace locked IO with unlocked IO.

C11 7.21.5.2 The fflush function

> If stream is a null pointer, the fflush function performs this flushing action on all streams for which the behavior is defined above.

i.e. fopen'ed FILE* is inherently captured.

POSIX.1-2017 getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked - stdio with explicit client locking

> These functions can safely be used in a multi-threaded program if and only if they are called while the invoking thread owns the ( FILE *) object, as is the case after a successful call to the flockfile() or ftrylockfile() functions.

After a thread fopen'ed a FILE*, when it is calling foobar() which is now replaced by foobar_unlocked(),
if another thread is concurrently calling fflush(0), the behavior is undefined.

C11 7.22.4.4 The exit function

> Next, all open streams with unwritten buffered data are flushed, all open streams are closed, and all files created by the tmpfile function are removed.

The replacement is only feasible if the program is single threaded, or exit or fflush(0) is never called.
See also http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20180528/556615.html
for how the replacement makes libc interceptors difficult to implement.

dalias: in a worst case, it's unbounded data corruption because of concurrent access to pointers
without synchronization.  f->wpos or rpos could get outside of the buffer, thread A could do
f->wpos += j after knowing j is in bounds, while thread B also changes it concurrently.

This can produce exploitable conditions depending on libc internals.

Revert the SimplifyLibcalls part change because the cons obviously
overweigh the pros.  Even when the replacement is feasible, the benefit
is indemonstrable, more so in an application instead of an artificial
glibc benchmark.  Theoretically the replacement could be beneficial when
calling getc_unlocked/putc_unlocked in a loop, but then it is better
using a blocked IO operation and the user is likely aware of that.

The function attribute inference is still useful and thus kept.

Reviewed By: xbolva00

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

4 years ago[docs] Regenerate ClangCommandLineReference.rst
Craig Topper [Tue, 10 Mar 2020 18:08:19 +0000 (11:08 -0700)]
[docs] Regenerate ClangCommandLineReference.rst

Just ran clang-tblgen -gen-opt-docs ClangOptionDocs.td

4 years agoARM: Fixup some tests using denormal-fp-math attribute
Matt Arsenault [Mon, 9 Mar 2020 15:08:49 +0000 (11:08 -0400)]
ARM: Fixup some tests using denormal-fp-math attribute

Don't use the deprecated, single mode form in tests. Also make sure to
parse the attribute, in case of the deprecated form.

4 years ago[MLIR] Add custom option parser type to PassOption
Eugene Zhulenev [Tue, 10 Mar 2020 17:55:05 +0000 (10:55 -0700)]
[MLIR] Add custom option parser type to PassOption

Summary: Pass custom DataType parser to pass options, similar to llvm::cl::opt class.

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

4 years agoRevert "[modules] Do not cache invalid state for modules that we attempted to load."
Rumeet Dhindsa [Tue, 10 Mar 2020 17:59:26 +0000 (10:59 -0700)]
Revert "[modules] Do not cache invalid state for modules that we attempted to load."
As per comment on https://reviews.llvm.org/D72860, it is suggested to
revert this change in the meantime, since it has introduced regression.

This reverts commit 83f4c3af021cd5322ea10fd1c4e839874c1dae49.

4 years agoAdd Optional overload to DiagnosticBuilder operator <<
Nathan James [Tue, 10 Mar 2020 13:41:01 +0000 (13:41 +0000)]
Add Optional overload to DiagnosticBuilder operator <<

Reviewers: aaron.ballman, gribozavr2, lebedev.ri

Reviewed By: gribozavr2

Subscribers: wuzish, nemanjai, kbarton, arphaman, cfe-commits

Tags: #clang

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

4 years agoRework findUnwindSectionsByPhdr to be more optimal.
Sterling Augustine [Fri, 6 Mar 2020 23:59:16 +0000 (15:59 -0800)]
Rework findUnwindSectionsByPhdr to be more optimal.

Summary:
- Executable segment is usually segment 3. Look there for the address first.
- GNU_EH_FRAME_HEADER segment is usually near the end. Iterate from the end.
- Exit early if both phdrs have been found.

This is the last cl before a patch to cache the information this function
finds.

Subscribers: libcxx-commits

Tags: #libc

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

4 years ago[libc++abi] NFC: Fix typo in comment
Louis Dionne [Tue, 10 Mar 2020 17:33:07 +0000 (13:33 -0400)]
[libc++abi] NFC: Fix typo in comment

4 years agoGive helpers internal linkage. NFC.
Benjamin Kramer [Tue, 10 Mar 2020 17:24:04 +0000 (18:24 +0100)]
Give helpers internal linkage. NFC.

4 years ago[clangd] Use a separate RunningTask flag instead of leaving a broken request on top...
Kadir Cetinkaya [Tue, 10 Mar 2020 15:52:31 +0000 (16:52 +0100)]
[clangd] Use a separate RunningTask flag instead of leaving a broken request on top of the queue

Summary:
This helps us prevent races when scheduler (or any other thread) tries
to read a request while it's still running.

Reviewers: sammccall

Subscribers: ilya-biryukov, javed.absar, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years agoSuppress an "unused variable" warning in release build
Mikhail Maltsev [Tue, 10 Mar 2020 17:07:46 +0000 (17:07 +0000)]
Suppress an "unused variable" warning in release build

4 years ago[gn build] Port a4cde9ad7b6
LLVM GN Syncbot [Tue, 10 Mar 2020 17:04:42 +0000 (17:04 +0000)]
[gn build] Port a4cde9ad7b6

4 years agoFixed [AssumeBundles] Move to IR so it can be used by Analysis
Tyker [Sun, 8 Mar 2020 11:19:29 +0000 (12:19 +0100)]
Fixed [AssumeBundles] Move to IR so it can be used by Analysis

This is a recommit of 57c964aaa76bfaa908398fbd9d8c9d6d19856859
after fixing modules build.

4 years ago[VE] Target-specific bit size for sjljehprepare
Kazushi (Jam) Marukawa [Tue, 10 Mar 2020 16:39:11 +0000 (17:39 +0100)]
[VE] Target-specific bit size for sjljehprepare

Summary:
This patch extends the TargetMachine to let targets specify the integer size
used by the sjljehprepare pass. This is 64bit for the VE target and otherwise
defaults to 32bit for all targets, which was hard-wired before.

Reviewed By: arsenm

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

4 years ago[OPENMP]Fix PR45132: OpenMP doacross loop nest with a decreasing
Alexey Bataev [Tue, 10 Mar 2020 16:05:36 +0000 (12:05 -0400)]
[OPENMP]Fix PR45132: OpenMP doacross loop nest with a decreasing
induction variable abends.

Used incorrect loop bound when trying to calculate the index in the vec
array for doacross construct in the loops with the reverse order.

4 years ago[instcombine] remove fsub to fneg hacks; only emit fneg
Simon Moll [Tue, 10 Mar 2020 15:05:31 +0000 (16:05 +0100)]
[instcombine] remove fsub to fneg hacks; only emit fneg

Summary: Rewrite the fsub-0.0 idiom to fneg and always emit fneg for fp
negation. This also extends the scalarization cost in instcombine for unary
operators to result in the same IR rewrites for fneg as for the idiom.

Reviewed By: cameron.mcinally

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

4 years ago[compiler-rt] Define ElfW() macro if it's not defined
Sergej Jaskiewicz [Tue, 10 Mar 2020 15:53:07 +0000 (18:53 +0300)]
[compiler-rt] Define ElfW() macro if it's not defined

Summary:
The `ElfW()` macro is not provided by `<link.h>` on some
systems (e.g., FreeBSD). On these systems the data structures are
just called `Elf_XXX`. Define `ElfW()` locally.

(This fix is taken from [libunwind](https://github.com/llvm/llvm-project/blob/9b05596eff21388ae6f17cdea8df0538dc630441/libunwind/src/AddressSpace.hpp#L144-L157).)

Reviewers: compnerd

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

4 years ago[X86][SSE] getFauxShuffleMask - add support for INSERT_VECTOR_ELT(EXTRACT_VECTOR_ELT...
Simon Pilgrim [Tue, 10 Mar 2020 15:42:03 +0000 (15:42 +0000)]
[X86][SSE] getFauxShuffleMask - add support for INSERT_VECTOR_ELT(EXTRACT_VECTOR_ELT) shuffle pattern

We already do this for PINSRB/PINSRW and SCALAR_TO_VECTOR.

4 years ago[X86][SSE] matchShuffleWithSHUFPD - add support for unary shuffles.
Simon Pilgrim [Tue, 10 Mar 2020 15:30:56 +0000 (15:30 +0000)]
[X86][SSE] matchShuffleWithSHUFPD - add support for unary shuffles.

This causes one minor test change but is mainly necessary for an upcoming patch.

4 years ago[X86][SSE] Add some extract+insert shuffle tests
Simon Pilgrim [Tue, 10 Mar 2020 14:39:09 +0000 (14:39 +0000)]
[X86][SSE] Add some extract+insert shuffle tests

Shows failure to avoid xmm<->gpr transfers by using insertps/blendps

4 years ago[PSI] Add tests for is(Hot|Cold)FunctionInCallGraphNthPercentile.
Hiroshi Yamauchi [Wed, 4 Mar 2020 18:33:23 +0000 (10:33 -0800)]
[PSI] Add tests for is(Hot|Cold)FunctionInCallGraphNthPercentile.

Summary:
Follow up on D75283.

Also remove the test code that was moved to another test and was to be removed.

Reviewers: davidxl

Subscribers: eraman, llvm-commits

Tags: #llvm

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

4 years agoAMDGPU/GlobalISel: Insert readfirstlane on SGPR returns
Matt Arsenault [Sat, 15 Feb 2020 02:23:07 +0000 (21:23 -0500)]
AMDGPU/GlobalISel: Insert readfirstlane on SGPR returns

In case the source value ends up in a VGPR, insert a readfirstlane to
avoid producing an illegal copy later. If it turns out to be
unnecessary, it can be folded out.

4 years ago[ARM][MVE] VFMA and VFMS validForTailPredication
Sam Parker [Tue, 10 Mar 2020 10:38:25 +0000 (10:38 +0000)]
[ARM][MVE] VFMA and VFMS validForTailPredication

Add four instructions to the whitelist.

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

4 years ago[SystemZ] Improve foldMemoryOperandImpl().
Jonas Paulsson [Tue, 5 Nov 2019 13:28:13 +0000 (14:28 +0100)]
[SystemZ]  Improve foldMemoryOperandImpl().

Swap the compare operands if LHS is spilled while updating the CCMask:s of
the CC users. This is relatively straight forward since the live-in lists for
the CC register can be assumed to be correct during register allocation
(thanks to 659efa2).

Also fold a spilled operand of an LOCR/SELR into an LOC(G).

Review: Ulrich Weigand

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

4 years ago[gn build] Port 714466bf367
LLVM GN Syncbot [Tue, 10 Mar 2020 14:33:04 +0000 (14:33 +0000)]
[gn build] Port 714466bf367

4 years ago[InstCombine] Support vectors in SimplifyAddWithRemainder.
Florian Hahn [Tue, 10 Mar 2020 14:22:19 +0000 (14:22 +0000)]
[InstCombine] Support vectors in SimplifyAddWithRemainder.

SimplifyAddWithRemainder currently also matches for vector types, but
tries to create an integer constant, which causes a crash.

By using Constant::getIntegerValue() we can support both the scalar and
vector cases.

The 2 added test cases crash without the fix.

Reviewers: spatel, lebedev.ri

Reviewed By: spatel, lebedev.ri

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

4 years agoRevert "[clang-tidy] New check: bugprone-suspicious-include"
Nico Weber [Tue, 10 Mar 2020 14:27:57 +0000 (10:27 -0400)]
Revert "[clang-tidy] New check: bugprone-suspicious-include"

This reverts commit 1e0669bfe05f0f48ee88152c4a1d581f484f8d67
(and follow-ups 698a12712920c214e39bb215fe26fad2e099425b and
52bbdad7d63fd060d102b3591b433d116a982255).
The tests fail fail on Windows, see https://reviews.llvm.org/D74669

4 years ago[gn build] (manually) merge 47edf5bafb
Nico Weber [Tue, 10 Mar 2020 14:22:39 +0000 (10:22 -0400)]
[gn build] (manually) merge 47edf5bafb

4 years ago[ARM,CDE] Generalize MVE intrinsics infrastructure to support CDE
Mikhail Maltsev [Tue, 10 Mar 2020 14:01:42 +0000 (14:01 +0000)]
[ARM,CDE] Generalize MVE intrinsics infrastructure to support CDE

Summary:
This patch generalizes the existing code to support CDE intrinsics
which will share some properties with existing MVE intrinsics
(some of the intrinsics will be polymorphic and accept/return values
of MVE vector types).
Specifically the patch:
* Adds new tablegen backends -gen-arm-cde-builtin-def,
  -gen-arm-cde-builtin-codegen, -gen-arm-cde-builtin-sema,
  -gen-arm-cde-builtin-aliases, -gen-arm-cde-builtin-header based on
  existing MVE backends.
* Renames the '__clang_arm_mve_alias' attribute into
  '__clang_arm_builtin_alias' (it will be used with CDE intrinsics as
  well as MVE intrinsics)
* Implements semantic checks for the coprocessor argument of the CDE
  intrinsics as well as the existing coprocessor intrinsics.
* Adds one CDE intrinsic __arm_cx1 to test the above changes

Reviewers: simon_tatham, MarkMurrayARM, ostannard, dmgreen

Reviewed By: simon_tatham

Subscribers: sdesmalen, mgorny, kristof.beyls, danielkiss, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[SimplifyCFG] Skip merging return blocks if it would break a CallBr.
Jonas Paulsson [Wed, 4 Mar 2020 16:11:40 +0000 (17:11 +0100)]
[SimplifyCFG]  Skip merging return blocks if it would break a CallBr.

SimplifyCFG should not merge empty return blocks and leave a CallBr behind
with a duplicated destination since the verifier will then trigger an
assert. This patch checks for this case and avoids the transformation.

CodeGenPrepare has a similar check which also has a FIXME comment about why
this is needed. It seems perhaps better if these two passes would eventually
instead update the CallBr instruction instead of just checking and avoiding.

This fixes https://bugs.llvm.org/show_bug.cgi?id=45062.

Review: Craig Topper

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

4 years ago[InstCombine] regenerate test checks; NFC
Sanjay Patel [Tue, 10 Mar 2020 13:56:38 +0000 (09:56 -0400)]
[InstCombine] regenerate test checks; NFC

tmp -> t because 'tmp' tends to cause problems for the auto-generation script.

4 years ago[TargetLowering] SimplifyDemandedVectorElts - add DemandedElts mask to ISD::BITCAST...
Simon Pilgrim [Tue, 10 Mar 2020 13:38:33 +0000 (13:38 +0000)]
[TargetLowering] SimplifyDemandedVectorElts - add DemandedElts mask to ISD::BITCAST SimplifyDemandedBits call.

This fixes most of the regressions introduced in the rG4bc6f6332028 bugfix. The vector-trunc.ll issue should be fixed by D66004.

4 years ago[lldb] Improve test failure messages in vscode tests
Pavel Labath [Tue, 10 Mar 2020 13:31:03 +0000 (14:31 +0100)]
[lldb] Improve test failure messages in vscode tests

A couple of tests sporadically fail on these assertions, but the error
messages do not give a clue as to what has actually happened.

Improve them so that we can better understand what is going wrong.

4 years ago[InstCombine] fold gep-of-select-of-constants (PR45084)
Sanjay Patel [Mon, 9 Mar 2020 21:24:11 +0000 (17:24 -0400)]
[InstCombine] fold gep-of-select-of-constants (PR45084)

As shown in:
https://bugs.llvm.org/show_bug.cgi?id=45084
...we failed to combine a gep with constant indexes with a
pointer operand that is a select of constants.

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

4 years ago[InstCombine] add/adjust tests for select-gep; NFC
Sanjay Patel [Sun, 8 Mar 2020 14:45:14 +0000 (10:45 -0400)]
[InstCombine] add/adjust tests for select-gep; NFC

Goes with D75807

4 years ago[SLP] Support vectorizing functions provided by vector libs.
Florian Hahn [Tue, 10 Mar 2020 13:03:43 +0000 (13:03 +0000)]
[SLP] Support vectorizing functions provided by vector libs.

It seems like the SLPVectorizer is currently not aware of vector
versions of functions provided by libraries like Accelerate [1].
This patch updates SLPVectorizer to use the same infrastructure
the LoopVectorizer uses to detect vectorizable library functions.

For calls, it computes the cost of an intrinsic call (existing behavior)
and the cost of a vector function library call, if available. Like
LoopVectorizer, it assumes the cost of the vector function is simply the
cost of a call to a vector function.

[1] https://developer.apple.com/documentation/accelerate

Reviewers: ABataev, RKSimon, spatel

Reviewed By: ABataev

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

4 years ago[lldb] Break up CommandObjectDisassemble::DoExecute
Pavel Labath [Mon, 9 Mar 2020 15:22:43 +0000 (16:22 +0100)]
[lldb] Break up CommandObjectDisassemble::DoExecute

The function consisted of a complicated set of conditions to compute the
address ranges which are to be disassembled (depending on the mode
selected by command line switches). This patch creates a separate
function for each mode, so that DoExecute is only left with the task of
figuring out how to dump the relevant ranges.

This is NFC-ish, except for one change in the error message, which is
actually an improvement.

4 years ago[lldb] Make UnwindLLDB a non-plugin
Pavel Labath [Mon, 9 Mar 2020 13:36:15 +0000 (14:36 +0100)]
[lldb] Make UnwindLLDB a non-plugin

Summary:
This is the only real unwinder, and things have been this way for quite
a long time. At this point, the class has accumulated so many features
it is unlikely that anyone will want to reimplement the whole thing.

The class is also fairly closely coupled (through UnwindPlans and
FuncUnwinders) with a lot of other lldb components that it is hard to
imagine a different unwinder implementation being substantially
different without reimplementing all of those.

The existing unwinding functionality is nonetheless fairly complex and
there is space for adding more structure to it, but I believe a more
worthwhile effort would be to take the existing UnwindLLDB class and try
to break it down and introduce extension/customization points, instead
of writing a brand new Unwind implementation.

Reviewers: jasonmolenda, JDevlieghere, xiaobai

Subscribers: mgorny, lldb-commits

Tags: #lldb

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

4 years ago[NFC] Tweak OptionsUtils
Nathan James [Tue, 10 Mar 2020 12:50:58 +0000 (12:50 +0000)]
[NFC] Tweak OptionsUtils

4 years ago[LLD] Add support for --unique option
David Bozier [Mon, 9 Mar 2020 15:43:20 +0000 (15:43 +0000)]
[LLD] Add support for --unique option

Summary:
Places orphan sections into a unique output section. This prevents the merging of orphan sections of the same name.
Matches behaviour of GNU ld --unique. --unique=pattern is not implemented.

Motivated user case shown in the test has 2 local symbols as they would appear if C++ source has been compiled with -ffunction-sections. The merging of these sections in the case of a partial link (-r) may limit the effectiveness of -gc-sections of a subsequent link.

Reviewers: espindola, jhenderson, bd1976llvm, edd, andrewng, JonChesterfield, MaskRay, grimar, ruiu, psmith

Reviewed By: MaskRay, grimar

Subscribers: emaste, arichardson, MaskRay, llvm-commits

Tags: #llvm

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

4 years ago[X86][SSE] Add more accurate costs for fmaxnum/fminnum codegen
Simon Pilgrim [Tue, 10 Mar 2020 11:59:23 +0000 (11:59 +0000)]
[X86][SSE] Add more accurate costs for fmaxnum/fminnum codegen

Based off llvm-mca reports on codegen in llvm\test\CodeGen\X86\fmaxnum.ll + llvm\test\CodeGen\X86\fminnum.ll