| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 198162
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
This plugs a memory leak in ARM's FastISel by storing the GV in Module so that
it's reclaimed.
PR17978
llvm-svn: 198160
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
instructions instead of reusing 32 bit instruction patterns.
 This is done to avoid spilling the result of the 64-bit instructions to a 4-byte slot.
llvm-svn: 198157
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
flag manually in LowerCall().
 This makes the sparc backend to generate Sparc64 ABI compliant code.
llvm-svn: 198149
 | 
| | 
| 
| 
|  | 
llvm-svn: 198146
 | 
| | 
| 
| 
| 
| 
|  | 
Also, pass fp128 arguments to varargs through integer registers if necessary.
llvm-svn: 198145
 | 
| | 
| 
| 
|  | 
llvm-svn: 198144
 | 
| | 
| 
| 
|  | 
llvm-svn: 198133
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Directive parsers must return false if the target assembler is interested in
handling the directive.  The Error member function returns true always.  Using
the 'return Error()' pattern would incorrectly indicate to the general parser
that the target was not interested in the directive, when in reality it simply
encountered a badly formed directive or some other error.  This corrects the
behaviour to ensure that the parser behaves appropriately.
llvm-svn: 198132
 | 
| | 
| 
| 
|  | 
llvm-svn: 198131
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
Schedule more conservatively to account for stalls on floating point
resources and latency. Use the AGU resource to model latency stalls
since it's shared between FP and LD/ST instructions. This might not be
completely accurate but should work well in practice.
llvm-svn: 198125
 | 
| | 
| 
| 
|  | 
llvm-svn: 198124
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Many vector operations never had itineraries. Since the new machine
model was a mapping from existing itinerary classes, we don't have a
model for these. We still want to migrate A9 even though no one has
invested in a complete model, so mark it incomplete to avoid the
scheduler asserting.
llvm-svn: 198123
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
PostGenericScheduler uses either the new machine model or the hazard
checker for top-down scheduling. Most of the infrastructure for PreRA
machine scheduling is reused.
With a some tuning, this should allow MachineScheduler to be default
for all ARM targets, including cortex-A9, using the new machine
model. Likewise, with additional tuning, it should be able to replace
PostRAScheduler for all targets.
The PostMachineScheduler pass does not currently run the
AntiDepBreaker. There is less need for it on targets that are already
running preRA MachineScheduler. I want to prove it's necessary before
committing to the maintenance burden.
The PostMachineScheduler also currently removes kill flags and adds
them all back later. This is a bit ridiculous. I'd prefer passes to
directly use a liveness utility than rely on flags.
A test case that enables this scheduler will be included in a
subsequent checkin that updates the A9 model.
llvm-svn: 198122
 |