Revision tags: llvmorg-5.0.0-rc3 |
|
#
a131d3fb |
| 24-Aug-2017 |
Wei Ding <wei.ding2@amd.com> |
Add ‘llvm.experimental.constrained.fma‘ Intrinsic.
Differential Revision: http://reviews.llvm.org/D36335
llvm-svn: 311629
|
#
35189d52 |
| 22-Aug-2017 |
Craig Topper <craig.topper@intel.com> |
[SelectionDAG] Make ISD::isConstantSplatVector always return an element sized APInt.
This partially reverts r311429 in favor of making ISD::isConstantSplatVector do something not confusing. Turns ou
[SelectionDAG] Make ISD::isConstantSplatVector always return an element sized APInt.
This partially reverts r311429 in favor of making ISD::isConstantSplatVector do something not confusing. Turns out the only other user of it was also having to deal with the weird property of it returning a smaller size.
So rather than continue to deal with this quirk everywhere, just make the interface do something sane.
Differential Revision: https://reviews.llvm.org/D37039
llvm-svn: 311510
show more ...
|
#
b49f0893 |
| 22-Aug-2017 |
Craig Topper <craig.topper@intel.com> |
[X86] Prevent several calls to ISD::isConstantSplatVector from returning a narrower APInt than the original scalar type
ISD::isConstantSplatVector can shrink to the smallest splat width. But we don'
[X86] Prevent several calls to ISD::isConstantSplatVector from returning a narrower APInt than the original scalar type
ISD::isConstantSplatVector can shrink to the smallest splat width. But we don't check the size of the resulting APInt at all. This can cause us to misinterpret the results.
This patch just adds a flag to prevent the APInt from changing width.
Fixes PR34271.
Differential Revision: https://reviews.llvm.org/D36996
llvm-svn: 311429
show more ...
|
Revision tags: llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1 |
|
#
bb80d3e1 |
| 11-Jul-2017 |
Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> |
Enhance synchscope representation
OpenCL 2.0 introduces the notion of memory scopes in atomic operations to global and local memory. These scopes restrict how synchronization is achieved, whic
Enhance synchscope representation
OpenCL 2.0 introduces the notion of memory scopes in atomic operations to global and local memory. These scopes restrict how synchronization is achieved, which can result in improved performance.
This change extends existing notion of synchronization scopes in LLVM to support arbitrary scopes expressed as target-specific strings, in addition to the already defined scopes (single thread, system).
The LLVM IR and MIR syntax for expressing synchronization scopes has changed to use *syncscope("<scope>")*, where <scope> can be "singlethread" (this replaces *singlethread* keyword), or a target-specific name. As before, if the scope is not specified, it defaults to CrossThread/System scope.
Implementation details: - Mapping from synchronization scope name/string to synchronization scope id is stored in LLVM context; - CrossThread/System and SingleThread scopes are pre-defined to efficiently check for known scopes without comparing strings; - Synchronization scope names are stored in SYNC_SCOPE_NAMES_BLOCK in the bitcode.
Differential Revision: https://reviews.llvm.org/D21723
llvm-svn: 307722
show more ...
|
#
79ab643d |
| 06-Jul-2017 |
Craig Topper <craig.topper@intel.com> |
[Constants] If we already have a ConstantInt*, prefer to use isZero/isOne/isMinusOne instead of isNullValue/isOneValue/isAllOnesValue inherited from Constant. NFCI
Going through the Constant methods
[Constants] If we already have a ConstantInt*, prefer to use isZero/isOne/isMinusOne instead of isNullValue/isOneValue/isAllOnesValue inherited from Constant. NFCI
Going through the Constant methods requires redetermining that the Constant is a ConstantInt and then calling isZero/isOne/isMinusOne.
llvm-svn: 307292
show more ...
|
#
3d65030c |
| 29-Jun-2017 |
Sam Clegg <sbc@chromium.org> |
Remove `inline` keyword from inline `classof` methods
The style guide states that the explicit `inline` should not be used with inline methods. classof is very common inline method with a fair amou
Remove `inline` keyword from inline `classof` methods
The style guide states that the explicit `inline` should not be used with inline methods. classof is very common inline method with a fair amount on inconsistency:
$ git grep classof ./include | grep inline | wc -l 230 $ git grep classof ./include | grep -v inline | wc -l 257
I chose to target this method rather the larger change since this method is easily cargo-culted (I did it at least once). I considered doing the larger change and removing all occurrences but that would be a much larger change.
Differential Revision: https://reviews.llvm.org/D33906
llvm-svn: 306731
show more ...
|
#
2dac0b4d |
| 22-Jun-2017 |
Elena Demikhovsky <elena.demikhovsky@intel.com> |
AVX-512: Lowering Masked Gather intrinsic - fixed a bug
Masked gather for vector length 2 is lowered incorrectly for element type i32. The type <2 x i32> was automatically extended to <2 x i64> and
AVX-512: Lowering Masked Gather intrinsic - fixed a bug
Masked gather for vector length 2 is lowered incorrectly for element type i32. The type <2 x i32> was automatically extended to <2 x i64> and we generated VPGATHERQQ instead of VPGATHERQD. The type <2 x float> is extended to <4 x float>, so there is no bug for this type, but the sequence may be more optimal.
In this patch I'm fixing <2 x i32>bug and optimizing <2 x float> sequence for GATHERs only. The same fix should be done for Scatters as well.
Differential revision: https://reviews.llvm.org/D34343
llvm-svn: 305987
show more ...
|
Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3 |
|
#
6bda14b3 |
| 06-Jun-2017 |
Chandler Carruth <chandlerc@gmail.com> |
Sort the remaining #include lines in include/... and lib/....
I did this a long time ago with a janky python script, but now clang-format has built-in support for this. I fed clang-format every line
Sort the remaining #include lines in include/... and lib/....
I did this a long time ago with a janky python script, but now clang-format has built-in support for this. I fed clang-format every line with a #include and let it re-sort things according to the precise LLVM rules for include ordering baked into clang-format these days.
I've reverted a number of files where the results of sorting includes isn't healthy. Either places where we have legacy code relying on particular include ordering (where possible, I'll fix these separately) or where we have particular formatting around #include lines that I didn't want to disturb in this patch.
This patch is *entirely* mechanical. If you get merge conflicts or anything, just ignore the changes in this patch and run clang-format over your #include lines in the files.
Sorry for any noise here, but it is important to keep these things stable. I was seeing an increasing number of patches with irrelevant re-ordering of #include lines because clang-format was used. This patch at least isolates that churn, makes it easy to skip when resolving conflicts, and gets us to a clean baseline (again).
llvm-svn: 304787
show more ...
|
#
ba902060 |
| 03-Jun-2017 |
Eugene Zelenko <eugene.zelenko@gmail.com> |
[CodeGen] Fix Windows builds broken in r304621.
llvm-svn: 304624
|
#
167595ab |
| 03-Jun-2017 |
Eugene Zelenko <eugene.zelenko@gmail.com> |
[CodeGen] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC).
llvm-svn: 304621
|
Revision tags: llvmorg-4.0.1-rc2 |
|
#
f466001e |
| 25-May-2017 |
Andrew Kaylor <andrew.kaylor@intel.com> |
Add constrained intrinsics for some libm-equivalent operations
Differential revision: https://reviews.llvm.org/D32319
llvm-svn: 303922
|
#
d28f0cd4 |
| 01-May-2017 |
Amara Emerson <amara.emerson@arm.com> |
Generalize the specialized flag-carrying SDNodes by moving flags into SDNode.
This removes BinaryWithFlagsSDNode, and flags are now all passed by value.
Differential Revision: https://reviews.llvm.
Generalize the specialized flag-carrying SDNodes by moving flags into SDNode.
This removes BinaryWithFlagsSDNode, and flags are now all passed by value.
Differential Revision: https://reviews.llvm.org/D32527
llvm-svn: 301803
show more ...
|
Revision tags: llvmorg-4.0.1-rc1 |
|
#
cb69117e |
| 28-Mar-2017 |
Adam Nemet <anemet@apple.com> |
[SDAG] Handle VectorReduction in SDNodeFlags::intersectWith
Spotted by Sanjay in https://reviews.llvm.org/D31165
llvm-svn: 298962
|
#
6820f391 |
| 28-Mar-2017 |
Adam Nemet <anemet@apple.com> |
[SDAG] Add AllowContract to SNodeFlags
Properly propagate the FMF from the LLVM IR to this flag.
This is toward moving fp-contraction=fast from an LLVM TargetOption to a FastMathFlag in order to fi
[SDAG] Add AllowContract to SNodeFlags
Properly propagate the FMF from the LLVM IR to this flag.
This is toward moving fp-contraction=fast from an LLVM TargetOption to a FastMathFlag in order to fix PR25721.
Differential Revision: https://reviews.llvm.org/D31165
llvm-svn: 298961
show more ...
|
Revision tags: llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3 |
|
#
fa912a71 |
| 27-Feb-2017 |
Eugene Zelenko <eugene.zelenko@gmail.com> |
[CodeGen] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).
llvm-svn: 296404
|
Revision tags: llvmorg-4.0.0-rc2 |
|
#
bfd44955 |
| 06-Feb-2017 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
[X86][SSE] Combine shuffle nodes with multiple uses if all the users are being combined.
Currently we only combine shuffle nodes if they have a single user to prevent us from causing code bloat by s
[X86][SSE] Combine shuffle nodes with multiple uses if all the users are being combined.
Currently we only combine shuffle nodes if they have a single user to prevent us from causing code bloat by splitting the shuffles into several different combines.
We don't take into account that in some cases we will already have combined all the users during recursively calling up the shuffle tree.
This patch keeps a list of all the shuffle nodes that have been combined so far and permits combining of further shuffle nodes if all its users are in that list.
Differential Revision: https://reviews.llvm.org/D29399
llvm-svn: 294183
show more ...
|
#
135da1fa |
| 29-Jan-2017 |
Craig Topper <craig.topper@gmail.com> |
[SelectionDAG] Make SDNode::getConstantOperandVal an inline method.
It's operation already exists manually in many places without using the method.
llvm-svn: 293421
|
Revision tags: llvmorg-4.0.0-rc1 |
|
#
def496c0 |
| 10-Jan-2017 |
Matt Arsenault <Matthew.Arsenault@amd.com> |
Remove unused CONVERT_RNDSAT intrinsics
llvm-svn: 291607
|
Revision tags: llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2 |
|
#
76b913c4 |
| 01-Dec-2016 |
Chih-Hung Hsieh <chh@google.com> |
[SelectionDAG] getRawSubclassData should not return HasDebugValue.
This change fixes a regression in r279537 and makes getRawSubclassData behave like r279536. Without this change, the fp128-g.ll tes
[SelectionDAG] getRawSubclassData should not return HasDebugValue.
This change fixes a regression in r279537 and makes getRawSubclassData behave like r279536. Without this change, the fp128-g.ll test case will have an infinite loop involving SoftenFloatRes_LOAD.
Differential Revision: http://reviews.llvm.org/D26942
llvm-svn: 288420
show more ...
|
Revision tags: llvmorg-3.9.1-rc1 |
|
#
b81f81b9 |
| 10-Nov-2016 |
Eugene Zelenko <eugene.zelenko@gmail.com> |
Fix some Clang-tidy modernize-use-default and readability-redundant-member-init and Include What You Use warnings; other minor fixes.
Differential revision: https://reviews.llvm.org/D26087
llvm-svn
Fix some Clang-tidy modernize-use-default and readability-redundant-member-init and Include What You Use warnings; other minor fixes.
Differential revision: https://reviews.llvm.org/D26087
llvm-svn: 286484
show more ...
|
#
0ff17b62 |
| 21-Oct-2016 |
Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> |
[MachineMemOperand][AtomicSDNode] Remove getSuccessOrdering()
Differential Revision: https://reviews.llvm.org/D25786
llvm-svn: 284834
|
#
a7cab580 |
| 17-Oct-2016 |
Sanjay Patel <spatel@rotateright.com> |
[DAG] make isConstOrConstSplat and isConstOrConstSplatFP more accessible; NFC
As noted in: https://reviews.llvm.org/D25685
This is the next-to-smallest step needed to enable the ComputeNumSignBits
[DAG] make isConstOrConstSplat and isConstOrConstSplatFP more accessible; NFC
As noted in: https://reviews.llvm.org/D25685
This is the next-to-smallest step needed to enable the ComputeNumSignBits fix in that patch. In a minor attempt to keep some structure, we're pulling the FP helper over along with its integer sibling, but clearly we can and should do more refactoring of the similar helper functions in DAGCombiner and SelectionDAG to simplify and not duplicate functionality.
llvm-svn: 284421
show more ...
|
#
8ea0246e |
| 15-Oct-2016 |
Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> |
[MachineMemOperand] Move synchronization scope and atomic orderings from SDNode to MachineMemOperand, and remove redundant getAtomic* member functions from SelectionDAG.
Differential Revision: https
[MachineMemOperand] Move synchronization scope and atomic orderings from SDNode to MachineMemOperand, and remove redundant getAtomic* member functions from SelectionDAG.
Differential Revision: https://reviews.llvm.org/D24577
llvm-svn: 284312
show more ...
|
#
86e72d98 |
| 14-Oct-2016 |
Nicolai Haehnle <nhaehnle@gmail.com> |
Fix use-after-frees
Extracted from D25313, as suggested by Justin Bogner.
llvm-svn: 284220
|
#
5b10aa1f |
| 09-Oct-2016 |
Elena Demikhovsky <elena.demikhovsky@intel.com> |
DAG: Setting Masked-Expand-Load as a variant of Masked-Load node
Masked-expand-load node represents load operation that loads a variable amount of elements from memory according to amount of "true"
DAG: Setting Masked-Expand-Load as a variant of Masked-Load node
Masked-expand-load node represents load operation that loads a variable amount of elements from memory according to amount of "true" bits in the mask and expands the loaded elements according to their position in the mask vector. Right now, the node is used in intrinsics for VEXPAND* instructions. The work is done towards implementation of masked.expandload and masked.compressstore intrinsics.
Differential Revision: https://reviews.llvm.org/D25322
llvm-svn: 283694
show more ...
|