| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 198345
|
| |
|
|
|
|
|
| |
for pointing this out.
llvm-svn: 198341
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TableGen had been generating a different name for an anonymous multiclass's
NAME for every def in the multiclass. This had an unfortunate side effect: it
was impossible to reference one def within the multiclass from another (in the
parameter list, for example). By making sure we only generate an anonymous name
once per multiclass (which, as it turns out, requires only changing the name
parameter to reference type), we can now concatenate NAME within the multiclass
with a def name in order to generate a reference to that def.
This does not matter so much, in and of itself, but is necessary for a
follow-up commit that will fix variable capturing in implicit anonymous
multiclass defs (and that is important).
llvm-svn: 198340
|
| |
|
|
|
|
|
|
|
| |
When widening an IV to remove s/zext, we generally try to eliminate
the original narrow IV. However, LCSSA phi nodes outside the loop were
still using the original IV. Clean this up more aggressively to avoid
redundancy in generated code.
llvm-svn: 198338
|
| |
|
|
| |
llvm-svn: 198336
|
| |
|
|
|
|
| |
Based on a patch by Maciej Piechotka.
llvm-svn: 198334
|
| |
|
|
|
|
|
| |
This reverts r197927 until the discussion on llvm-commits comes to a
conclusion.
llvm-svn: 198333
|
| |
|
|
|
|
| |
from the disassembler table builder.
llvm-svn: 198327
|
| |
|
|
|
|
| |
table builder doesn't need to string match them to exclude them.
llvm-svn: 198323
|
| |
|
|
| |
llvm-svn: 198313
|
| |
|
|
|
|
|
| |
This patch makes it possible to select the ABI with -mattr. It will be used to
forward clang's -target-abi option to llvm's CodeGen.
llvm-svn: 198304
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When there are cycles in the value graph we have to be careful interpreting
"Value*" identity as "value" equivalence. We interpret the value of a phi node
as the value of its operands.
When we check for value equivalence now we make sure that the "Value*" dominates
all cycles (phis).
%0 = phi [%noaliasval, %addr2]
%l = load %ptr
%addr1 = gep @a, 0, %l
%addr2 = gep @a, 0, (%l + 1)
store %ptr ...
Before this patch we would return NoAlias for (%0, %addr1) which is wrong
because the value of the load is from different iterations of the loop.
Tested on x86_64 -mavx at O3 and O3 -flto with no performance or compile time
regressions.
PR18068
radar://15653794
llvm-svn: 198290
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During the years there have been some attempts at figuring out how to
align byval arguments. A look at the commit log suggests that they
were
* Use the ABI alignment.
* When that was not sufficient for x86-64, I added the 's' specification to
DataLayout.
* When that was not sufficient Evan added the virtual getByValTypeAlignment.
* When even that was not sufficient, we just got the FE to add the alignment
to the byval.
This patch is just a simple cleanup that removes my first attempt at fixing the
problem. I also added an AArch64 implementation of getByValTypeAlignment to
make sure this patch is a nop. I also left the 's' parsing for backward
compatibility.
I will send a short email to llvmdev about the change for anyone maintaining
an out of tree target.
llvm-svn: 198287
|
| |
|
|
| |
llvm-svn: 198286
|
| |
|
|
|
|
| |
used. Removes ~11.5K from static tables.
llvm-svn: 198284
|
| |
|
|
|
|
| |
__multi3() in correct order.
llvm-svn: 198281
|
| |
|
|
|
|
| |
does not clear top 32 bit, only SRL does.
llvm-svn: 198280
|
| |
|
|
|
|
| |
[-Wdocumentation]
llvm-svn: 198279
|
| |
|
|
|
|
| |
really more like OrRegFrm so we don't need a difference since we can just mask bits.
llvm-svn: 198278
|
| |
|
|
|
|
|
| |
Printing rounding control.
Enncoding for EVEX_RC (rounding control).
llvm-svn: 198277
|
| |
|
|
|
|
| |
instructions. These instructions can be handled by MRMXr instead.
llvm-svn: 198276
|
| |
|
|
|
|
| |
Patch by Ilia Filippov!
llvm-svn: 198267
|
| |
|
|
|
|
| |
realized we had no FP disassembler test cases.
llvm-svn: 198265
|
| |
|
|
| |
llvm-svn: 198263
|
| |
|
|
| |
llvm-svn: 198262
|
| |
|
|
| |
llvm-svn: 198258
|
| |
|
|
| |
llvm-svn: 198257
|
| |
|
|
|
|
|
|
|
| |
lib/Support/ThreadLocal.cpp:53:15: error: typedef 'SIZE_TOO_BIG' locally defined but not used [-Werror=unused-local-typedefs]
typedef int SIZE_TOO_BIG[sizeof(pthread_key_t) <= sizeof(data) ? 1 : -1];
Done the C++11 way, switching on and using LLVM_STATIC_ASSERT() instead of LLVM_ATTRIBUTE_UNUSED.
llvm-svn: 198255
|
| |
|
|
|
|
| |
functional change intended.
llvm-svn: 198254
|
| |
|
|
| |
llvm-svn: 198241
|
| |
|
|
|
|
| |
can be handled by MRMXr instead.
llvm-svn: 198238
|
| |
|
|
|
|
|
|
| |
Checking the trailing letter of the mnemonic is insufficient. Be more thorough
in the scanning of the instruction to ensure that we correctly work with the
predicated mnemonics.
llvm-svn: 198235
|
| |
|
|
| |
llvm-svn: 198233
|
| |
|
|
|
|
|
|
|
|
| |
r198196: Use a pointer to keep track of the skeleton unit for each normal unit and construct it up front.
r198199: Reapply r198196 with a fix to zero initialize the skeleton pointer.
r198202: Fix aranges and split dwarf by ensuring that the symbol and relocation back to the compile unit from the aranges section is to the skeleton unit and not the one in the dwo.
with a fix to use integer 0 for DW_AT_low_pc since the relocation to the text section symbol was causing issues with COFF. Accordingly remove addLocalLabelAddress and machinery since we're not currently using it.
llvm-svn: 198222
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
i686-cygming.
r198196: Use a pointer to keep track of the skeleton unit for each normal unit and construct it up front.
r198199: Reapply r198196 with a fix to zero initialize the skeleton pointer.
r198202: Fix aranges and split dwarf by ensuring that the symbol and relocation back to the compile unit from the aranges section is to the skeleton unit and not the one in the dwo.
They could be reproducible with explicit target.
llvm/lib/MC/WinCOFFObjectWriter.cpp:224: bool {anonymous}::COFFSymbol::should_keep() const: Assertion `Section->Number != -1 && "Sections with relocations must be real!"' failed.
llvm-svn: 198208
|
| |
|
|
|
|
|
|
|
|
|
| |
back to the compile unit from the aranges section is to the skeleton
unit and not the one in the dwo.
Do this by adding a method to grab a forwarded on local sym and local
section by querying the skeleton if one exists and using that. Add
a few tests to verify the relocations are back to the correct section.
llvm-svn: 198202
|
| |
|
|
| |
llvm-svn: 198201
|
| |
|
|
| |
llvm-svn: 198199
|
| |
|
|
|
|
| |
each normal unit" as it seems to be causing problems in the asan tests.
llvm-svn: 198197
|
| |
|
|
|
|
|
|
|
|
|
| |
and construct it up front. Add address ranges at the end and a helper
routine so that we're not needlessly using an indirction in the case
of split dwarf.
Update testcases according to the new ordering of attributes on
the compile unit.
llvm-svn: 198196
|
| |
|
|
| |
llvm-svn: 198194
|
| |
|
|
| |
llvm-svn: 198193
|
| |
|
|
| |
llvm-svn: 198192
|
| |
|
|
|
|
|
|
|
|
| |
For AArch64 backend, if DAGCombiner see "sext(setcc)", it will
combine them together to a single setcc with extended value type.
Then if it see "zext(setcc)", it assumes setcc is Vxi1, and try to
create "(and (vsetcc), (1, 1, ...)". While setcc isn't Vxi1,
DAGcombiner will create wrong node and get wrong code emitted.
llvm-svn: 198190
|
| |
|
|
|
|
|
| |
E.g. Can't select such IR:
%tmp = mul <2 x i64> %a, %b
llvm-svn: 198188
|
| |
|
|
|
|
|
|
| |
(unittests/ExecutionEngine/JIT/CMakeLists.txt is still missing for now, since
it handles export files in a strange way: It generates a .exports file from a
.def file instead of the other way round.)
llvm-svn: 198183
|
| |
|
|
|
|
|
|
|
| |
The DPR and SPR register lists are also register lists. Furthermore, the
registers need not be checked individually since the register type can be
checked via the list kind. Use that to simplify the logic and fix the incorrect
assertion.
llvm-svn: 198174
|
| |
|
|
|
|
|
| |
In order to provide compatibility with the GNU assembler, provide aliases for
pre-UAL mnemonics for floating point operations.
llvm-svn: 198172
|
| |
|
|
| |
llvm-svn: 198171
|
| |
|
|
|
|
|
| |
The vstm family of VFP instructions belong to the VFP store itinerary class, not
the VFP load itinerary class.
llvm-svn: 198170
|