| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
For shrinking SOPK instructions, we were creating a hint to tell the
register allocator to use the register allocated for src0 for the dst
operand as well. However, this seems to not work sometimes depending
on the order virtual registers are assigned physical registers.
To fix this, I've added a second allocation hint which does the reverse,
asks that the register allocated for dst is used for src0.
Reviewers: arsenm
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: https://reviews.llvm.org/D23862
llvm-svn: 279968
|
| |
|
|
| |
llvm-svn: 279967
|
| |
|
|
|
|
|
| |
There is no lit feature 'X86' so this test is just disabled completely.
Make it XFAIL until a solution is found.
llvm-svn: 279966
|
| |
|
|
|
|
| |
MC itself never needs to know about these sections.
llvm-svn: 279965
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: A follow-up fix on r279958.
Reviewers: bkramer
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D23989
llvm-svn: 279964
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The SILoadStoreOptimizer will need to use AliasAnalysis here in order to
move it before scheduling.
Reviewers: arsenm
Subscribers: arsenm, llvm-commits, kzhuravl
Differential Revision: https://reviews.llvm.org/D23813
llvm-svn: 279963
|
| |
|
|
|
|
|
|
|
| |
The problem occurs when the Node doesn't updated in place , UpdateNodeOperation() return the node that already exist.
In this case assert fail in PromoteIntegerOperand() , N have 2 results ( val + chain).
Differential Revision: http://reviews.llvm.org/D23756
llvm-svn: 279961
|
| |
|
|
|
|
|
|
| |
TEST sequence.
Differential Revision: http://reviews.llvm.org/D23490
llvm-svn: 279960
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: A follow-up fixing on http://llvm.org/viewvc/llvm-project?view=revision&revision=279905.
Reviewers: bkramer
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D23985
llvm-svn: 279959
|
| |
|
|
|
|
|
|
| |
create a ConstantFPSDNode and let that be lowered.
This allows broadcast loads to used when available.
llvm-svn: 279958
|
| |
|
|
|
|
| |
integer operations when DQI isn't supported. This is consistent with the recent changes to promote logical operations to i64 vectors.
llvm-svn: 279957
|
| |
|
|
| |
llvm-svn: 279956
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
switch to using one indirect stub manager per logical dylib rather than one per
input module.
LogicalDylib is a helper class used by the CompileOnDemandLayer to manage
symbol resolution between modules during lazy compilation. In particular, it
ensures that internal symbols resolve correctly even in the case where multiple
input modules contain the same internal symbol name (which must to be promoted
to external hidden linkage so that functions in any given module can be split
out by lazy compilation). LogicalDylib's resolution scheme (before this commit)
required one stub-manager per input module. This made recompilation of functions
(by adding a module containing a new definition) difficult, as the stub manager
for any given symbol was bound to the module that supplied the original
definition. By using one stubs manager for the whole logical dylib symbols can
be more easily replaced, although support for doing this is not included in this
patch (it will be implemented in a follow up).
llvm-svn: 279952
|
| |
|
|
| |
llvm-svn: 279951
|
| |
|
|
| |
llvm-svn: 279950
|
| |
|
|
|
|
| |
Will be fixed in a future commit.
llvm-svn: 279949
|
| |
|
|
| |
llvm-svn: 279943
|
| |
|
|
| |
llvm-svn: 279939
|
| |
|
|
|
|
| |
constant vectors
llvm-svn: 279937
|
| |
|
|
|
|
|
|
|
|
| |
number of vector elements
Over eager combing prevents the correct folding of writemasks.
At the moment this occurs for ALL EVEX shuffles, in the future we need to check that the user of the root shuffle is a VSELECT that can fold to a writemask.
llvm-svn: 279934
|
| |
|
|
|
|
| |
Implement lowering for atomicrmw min/max/umin/umax. Fixes PR28818.
llvm-svn: 279933
|
| |
|
|
|
|
|
|
|
| |
Fixed a bug in run-time checks for possible memory conflicts inside loop.
The bug is in Low <-> High boundaries calculation. The High boundary should be calculated as "last memory access pointer + element size".
Differential revision: https://reviews.llvm.org/D23176
llvm-svn: 279930
|
| |
|
|
|
|
|
|
|
|
| |
AVX512F/AVX512VL.
Previously we weren't creating masked logical operations if bitcasts appeared between the logic operation and the select. The IR optimizers can move bitcasts across logic operations and create these cases. To minimize the number of cases we need to handle, this change promotes all logic ops to an i64 vector type just like when only SSE or AVX is available.
Unfortunately, this also has the consequence of making it difficult to select unmasked VPANDD/VPORD/VPXORD in all the cases it was previously used. This is the cause of most of the test change. This shouldn't result in any functional change though.
llvm-svn: 279929
|
| |
|
|
|
|
|
|
| |
are bitcasts between the logic op and the select.
This is taken from optimized IR of clang test cases for masked logic ops.
llvm-svn: 279928
|
| |
|
|
|
|
| |
instructions instead of ending 128/256. NFC
llvm-svn: 279927
|
| |
|
|
|
|
|
|
| |
Fix and improve tests
Differential Revision: https://reviews.llvm.org/D23899
llvm-svn: 279925
|
| |
|
|
|
|
| |
REX.X or REX.R bits. It's old name conflicted with a function in X8II namespace that doesnt' quite do the same thing. NFC
llvm-svn: 279924
|
| |
|
|
|
|
| |
already found a register that requires a REX prefix. Otherwise we don't error if a high byte register is used after SPL/BPL/DIL/SIL.
llvm-svn: 279923
|
| |
|
|
|
|
| |
more consistent with its name and simplifies assembler code.
llvm-svn: 279922
|
| |
|
|
|
|
| |
for CR8-CR15.
llvm-svn: 279921
|
| |
|
|
| |
llvm-svn: 279915
|
| |
|
|
|
|
| |
VCMPPS/PD/SS/SD to be commuted just like the SSE and AVX counterparts.
llvm-svn: 279914
|
| |
|
|
| |
llvm-svn: 279913
|
| |
|
|
| |
llvm-svn: 279912
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This addresses a regression in common handling from the new LTO
API in r278338. Only create a new common if the size is different.
The type comparison against an array type fails when the size is
different but not an array. GlobalMerge does not handle the
array types as well and we lose some global merging opportunities.
Reviewers: mehdi_amini
Subscribers: junbuml, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D23955
llvm-svn: 279911
|
| |
|
|
|
|
| |
Fixes bug 26800
llvm-svn: 279910
|
| |
|
|
|
|
|
| |
SI_BREAK, SI_IF_BREAK, and SI_ELSE_BREAK do not def exec.
SI_IF_BREAK and SI_ELSE_BREAK do not read it either.
llvm-svn: 279909
|
| |
|
|
|
|
|
| |
This should fix the MSVC errors in
http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/15120
llvm-svn: 279908
|
| |
|
|
|
|
|
|
|
| |
Without invalidating the entries in the MD cache we would try to access instructions
that were removed in previous iterations of hoisting.
Differential Revision: https://reviews.llvm.org/D23927
llvm-svn: 279907
|
| |
|
|
| |
llvm-svn: 279906
|
| |
|
|
| |
llvm-svn: 279905
|
| |
|
|
| |
llvm-svn: 279904
|
| |
|
|
| |
llvm-svn: 279902
|
| |
|
|
|
|
|
|
| |
There's only one use of this for the convenience
of a pattern. I think v_mov_b64_pseudo should also be
moved, but SIFoldOperands does currently make use of it.
llvm-svn: 279901
|
| |
|
|
| |
llvm-svn: 279900
|
| |
|
|
|
|
|
|
|
| |
It isn't used for anything, and is also misleading since
it could be spilled at the end of the block, so it can't be relied
on. There ends up being a verifier error about using an undefined
register since the spill kills the register.
llvm-svn: 279899
|
| |
|
|
|
|
| |
Unfortunately this seems to only help the assembler diagnostic.
llvm-svn: 279895
|
| |
|
|
|
|
|
|
| |
Generating the Components import file is useless if there are no components coming in from the runtimes configuration, so we should skip generation in that case.
This also should fix the configuration error that Renato reported on llvm-dev.
llvm-svn: 279893
|
| |
|
|
| |
llvm-svn: 279892
|
| |
|
|
|
|
|
|
|
| |
When global-isel fails on a MachineFunction MF, MF will be cleaned up
and given to SDISel.
Thanks to this fallback, we can already perform correctness test even if
we support only a small portion of the functions in a test.
llvm-svn: 279891
|