| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Limit register coalescer by not allowing it to artificially increase
size of registers beyond dword. Such super-registers are in fact
register sequences and not distinct HW registers.
With more super-regs we would need to allocate adjacent registers
and constraint regalloc more than needed. Moreover, our super
registers are overlapping. For instance we have VGPR0_VGPR1_VGPR2,
VGPR1_VGPR2_VGPR3, VGPR2_VGPR3_VGPR4 etc, which complicates registers
allocation even more, resulting in excessive spilling.
Differential Revision: https://reviews.llvm.org/D28782
llvm-svn: 292413
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: vpykhtin, artem.tamazov, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D28802
llvm-svn: 292224
|
| |
|
|
| |
llvm-svn: 292205
|
| |
|
|
|
|
|
| |
This is the unsafe conversion pattern, but not guarded by
an unsafe math check. It is also already done in LegalizeDAG.
llvm-svn: 292173
|
| |
|
|
|
|
|
|
| |
_RTN versions will be a lot more complicated
Differential Revision: https://reviews.llvm.org/D28067
llvm-svn: 292162
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D28496
llvm-svn: 291954
|
| |
|
|
|
|
|
| |
With some minor manual fixes for using function_ref instead of
std::function. No functional change intended.
llvm-svn: 291904
|
| |
|
|
|
|
|
|
|
|
|
| |
Rename from addOperand to just add, to match the other method that has been
added to MachineInstrBuilder for adding more than just 1 operand.
See https://reviews.llvm.org/D28057 for the whole discussion.
Differential Revision: https://reviews.llvm.org/D28556
llvm-svn: 291891
|
| |
|
|
| |
llvm-svn: 291792
|
| |
|
|
| |
llvm-svn: 291790
|
| |
|
|
| |
llvm-svn: 291784
|
| |
|
|
| |
llvm-svn: 291779
|
| |
|
|
| |
llvm-svn: 291778
|
| |
|
|
| |
llvm-svn: 291777
|
| |
|
|
| |
llvm-svn: 291748
|
| |
|
|
|
|
| |
Patch mostly by Fiona Glaser
llvm-svn: 291733
|
| |
|
|
|
|
| |
Patch mostly by Fiona Glaser
llvm-svn: 291732
|
| |
|
|
|
|
| |
Patch mostly by Fiona Glaser
llvm-svn: 291731
|
| |
|
|
|
|
| |
Allows better source modifier usage.
llvm-svn: 291729
|
| |
|
|
|
|
| |
To shrink to VOP2 the input carry must also be VCC.
llvm-svn: 291720
|
| |
|
|
|
|
|
|
| |
This produces worse code when i16 is legal, mostly
due to combines getting confused by conversions inserted
for uniform 16-bit operations.
llvm-svn: 291717
|
| |
|
|
|
|
|
| |
This was shrinking the instruction even though the carry output
register was a virtual register, not known VCC.
llvm-svn: 291716
|
| |
|
|
|
|
|
| |
Whether it is legal or not needs to check for the instruction
it will be replaced with.
llvm-svn: 291711
|
| |
|
|
|
|
|
|
|
|
|
|
| |
immediate operands
Reviewers: artem.tamazov, nhaustov, vpykhtin, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D28157
llvm-svn: 291668
|
| |
|
|
|
|
|
|
|
|
|
|
| |
updated instructions:
pmulld, pmullw, pmulhw, mulsd, mulps, mulpd, divss, divps, divsd, divpd, addpd and subpd.
special optimization case which replaces pmulld with pmullw\pmulhw\pshuf seq.
In case if the real operands bitwidth <= 16.
Differential Revision: https://reviews.llvm.org/D28104
llvm-svn: 291657
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D28164
llvm-svn: 291622
|
| |
|
|
|
|
| |
In future commits these patterns will appear after moveToVALU changes.
llvm-svn: 291615
|
| |
|
|
|
|
| |
This was enabled without many specific tests or the comment.
llvm-svn: 291586
|
| |
|
|
|
|
|
|
|
|
|
| |
For i16 zeroext arguments when i16 was a legal type, the
known bits information from the truncate was lost. Insert
a zeroext so the known bits optimizations work with the 32-bit
loads.
Fixes code quality regressions vs. SI in min.ll test.
llvm-svn: 291461
|
| |
|
|
| |
llvm-svn: 291460
|
| |
|
|
|
|
|
|
| |
This will make transition to SCRATCH_MEMORY easier
Differential Revision: https://reviews.llvm.org/D24746
llvm-svn: 291279
|
| |
|
|
| |
llvm-svn: 291246
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D27732
llvm-svn: 291245
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This reverts commit r291144. It breaks build bots.
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/3270, http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fuzzer/builds/2058
lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp:1638:12: error: could not convert ‘(const unsigned int*)(& Variants)’ from ‘const unsigned int*’ to ‘llvm::ArrayRef<unsigned int>’
return Variants;
Reviewers: eugenis, tstellarAMD
Patch by Alex Shlyapnikov.
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D28372
llvm-svn: 291168
|
| |
|
|
|
|
| |
Arrays are supposed to be static const
llvm-svn: 291144
|
| |
|
|
|
|
|
| |
This caused buildbot failures due to returning ArrayRefs referencing local
(temporary) objects.
llvm-svn: 291067
|
| |
|
|
| |
llvm-svn: 291025
|
| |
|
|
|
|
|
|
| |
v2: expose using amdgcn prefix
Differential Revision: https://reviews.llvm.org/D23511
llvm-svn: 290977
|
| |
|
|
|
|
|
|
|
|
|
| |
Among other stuff, this allows to use predefined .option.machine_version_major
/minor/stepping symbols in the directive.
Relevant test expanded at once (also file renamed for clarity).
Differential Revision: https://reviews.llvm.org/D28140
llvm-svn: 290710
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(.kernel.{v|s}gpr_count)
The feature allows for conditional assembly, filling the entries
of .amd_kernel_code_t etc.
Symbols are defined with value 0 at the beginning of each kernel scope.
After each register usage, the respective symbol is set to:
value = max( value, ( register index + 1 ) )
Thus, at the end of scope the value represents a count of used registers.
Kernel scopes begin at .amdgpu_hsa_kernel directive, end at the
next .amdgpu_hsa_kernel (or EOF, whichever comes first). There is also
dummy scope that lies from the beginning of source file til the
first .amdgpu_hsa_kernel.
Test added.
Differential Revision: https://reviews.llvm.org/D27859
llvm-svn: 290608
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: nhaustov, artem.tamazov, vpykhtin, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D28051
llvm-svn: 290599
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D27989
llvm-svn: 290435
|
| |
|
|
|
|
|
|
| |
find.
Notable is the assert in NewGVN which had no effect because of the bug.
llvm-svn: 290400
|
| |
|
|
|
|
|
|
|
|
|
| |
Canonicalize a select with a constant to the false side. This
enables more instruction shrinking opportunities since an
inline immediate can be used for the false side of v_cndmask_b32_e32.
This seems to usually be better but causes some code size regressions
in some tests.
llvm-svn: 290372
|
| |
|
|
| |
llvm-svn: 290351
|
| |
|
|
| |
llvm-svn: 290349
|
| |
|
|
| |
llvm-svn: 290348
|
| |
|
|
|
|
|
|
| |
Caused by dereferencing end iterator when trying to const cast the iterator.
Patch by Martin Sherburn
llvm-svn: 290347
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: This is needed for later SDWA support in CodeGen.
Reviewers: vpykhtin, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D27412
llvm-svn: 290338
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Real instruction should copy constraints from real instruction. This allows auto-generated disassembler to correctly process tied operands.
Reviewers: nhaustov, vpykhtin, tstellarAMD
Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tony-tye
Differential Revision: https://reviews.llvm.org/D27847
llvm-svn: 290336
|