| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
|  | 
llvm-svn: 162292
 | 
| | 
| 
| 
| 
| 
|  | 
Patch by Vladimir Medic.
llvm-svn: 162124
 | 
| | 
| 
| 
|  | 
llvm-svn: 162085
 | 
| | 
| 
| 
|  | 
llvm-svn: 162082
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
printed if the number of tests are less than the number of default threads.
Thanks to Vinson Lee, reported in PR13620.
llvm-svn: 162078
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Select instructions pick one of two virtual registers based on a
condition, like x86 cmov. On targets like ARM that support predication,
selects can sometimes be eliminated by predicating the instruction
defining one of the operands.
Teach PeepholeOptimizer to recognize select instructions, and ask the
target to optimize them.
llvm-svn: 162059
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This can be used to tell TableGen to use a specific SubRegIndex instead
of synthesizing one when discovering all sub-registers.
llvm-svn: 161982
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
TableGen sometimes synthesizes missing sub-register indexes. Emit these
indexes as enumerators in the target namespace along with the
user-defined ones.
Also take this opportunity to stop creating new Record objects for
synthetic indexes.
llvm-svn: 161964
 | 
| | 
| 
| 
|  | 
llvm-svn: 161940
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.
As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:
Time to compile at -O2 (averaged w/ hot caches):
  Previous: 35.5s
  New:       8.9s
TEXT size:
  Previous: 447,251
  New:      297,661
Builds in 25% of the time previously required and generates code 66% of
the size.
Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.
llvm-svn: 161888
 | 
| | 
| 
| 
|  | 
llvm-svn: 161657
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
We've switched to a 3-component version numbering scheme for Apple releases,
and with this scheme, the final number is the one most relevant for setting
LLVM_MINOR_VERSION.  <rdar://problem/12071459>
llvm-svn: 161645
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This new attribute is intended to be used by the backend to determine how
the inline asm string should be parsed/printed. This patch adds the 
ia_nsdialect attribute and also adds a test case to ensure the IR is
correctly parsed, but there is no functional change at this time.
The standard dialect is assumed to be AT&T.  Therefore, this attribute
should only be added to MS-style inline assembly statements, which use
the Intel dialect.  If we ever support more dialects we'll need to
add additional state to the attribute.
llvm-svn: 161641
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This replaces an existing subtarget hook on ARM and allows standard
CodeGen passes to potentially use the property.
llvm-svn: 161471
 | 
| | 
| 
| 
|  | 
llvm-svn: 161298
 | 
| | 
| 
| 
|  | 
llvm-svn: 161223
 | 
| | 
| 
| 
|  | 
llvm-svn: 161206
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
yaml2obj takes a textual description of an object file in YAML format
and outputs the binary equivalent. This greatly simplifies writing
tests that take binary object files as input.
llvm-svn: 161205
 | 
| | 
| 
| 
| 
| 
|  | 
used to store the operand types and encodings. Store only the unique combinations in a separate table and store indices in the instruction table. Saves about 32K of static data.
llvm-svn: 161101
 | 
| | 
| 
| 
|  | 
llvm-svn: 161082
 | 
| | 
| 
| 
|  | 
llvm-svn: 161065
 | 
| | 
| 
| 
| 
| 
|  | 
data.
llvm-svn: 161034
 | 
| | 
| 
| 
| 
| 
|  | 
instead of uint16_t for loop indices. Use unsigned instead of uint32_t for arguments to raw_ostream.indent.
llvm-svn: 161033
 | 
| | 
| 
| 
|  | 
llvm-svn: 161032
 | 
| | 
| 
| 
|  | 
llvm-svn: 161031
 | 
| | 
| 
| 
|  | 
llvm-svn: 161030
 | 
| | 
| 
| 
| 
| 
|  | 
isCodeGenOnly change allows special detection of _NOREX instructions to be removed from tablegen disassembler code.
llvm-svn: 160951
 | 
| | 
| 
| 
| 
| 
|  | 
IsCodeGenOnly
llvm-svn: 160950
 | 
| | 
| 
| 
| 
| 
|  | 
guaranteed it. Replace another sub class check with ShouldBeEmitted flag since it was factored in there already.
llvm-svn: 160949
 | 
| | 
| 
| 
| 
| 
|  | 
functional change.
llvm-svn: 160948
 | 
| | 
| 
| 
| 
| 
|  | 
and it isn't the only 256-bit memory type anyway.
llvm-svn: 160946
 | 
| | 
| 
| 
|  | 
llvm-svn: 160945
 | 
| | 
| 
| 
|  | 
llvm-svn: 160852
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
These tables were indexed by [register][subreg index] which made them,
very large and sparse.
Replace them with lists of sub-register indexes that match the existing
lists of sub-registers. MCRI::getSubReg() becomes a very short linear
search, like getSubRegIndex() already was.
llvm-svn: 160843
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Now that the weird X86 sub_ss and sub_sd sub-register indexes are gone,
there is no longer a need for the CompositeIndices construct in .td
files. Sub-register index composition can be specified on the
SubRegIndex itself using the ComposedOf field.
Also enforce unique names for sub-registers in TableGen. The same
sub-register cannot be available with multiple sub-register indexes.
llvm-svn: 160842
 | 
| | 
| 
| 
| 
| 
|  | 
with their non-AVX forms.
llvm-svn: 160775
 | 
| | 
| 
| 
| 
| 
| 
|  | 
This simplifies MCRegisterInfo and shrinks the target descriptions a bit
more.
llvm-svn: 160758
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
redirection in the system call.
Patch by Andy Gibbs.
llvm-svn: 160644
 | 
| | 
| 
| 
|  | 
llvm-svn: 160621
 | 
| | 
| 
| 
| 
| 
|  | 
subprocesses.
llvm-svn: 160556
 | 
| | 
| 
| 
| 
| 
| 
|  | 
is one more that MRM_DF which is 55.  Previously, it held value 45, the same
as MRM_D0.
llvm-svn: 160465
 | 
| | 
| 
| 
|  | 
llvm-svn: 160463
 | 
| | 
| 
| 
| 
| 
|  | 
instructions. Also fix Intel syntax for gather instructions to use 'DWORD PTR' or 'QWORD PTR' to match gas.
llvm-svn: 160420
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
A standalone pattern defined in a multiclass expansion should handle
null_frag references just like patterns on instructions. Follow-up to
r160333.
llvm-svn: 160384
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Define a 'null_frag' SDPatternOperator node, which if referenced in an
instruction Pattern, results in the pattern being collapsed to be as-if
'[]' had been specified instead. This allows supporting a multiclass
definition where some instaniations have ISel patterns associated and
others do not.
For example,
multiclass myMulti<RegisterClass rc, SDPatternOperator OpNode = null_frag> {
  def _x : myI<(outs rc:), (ins rc:), []>;
  def _r : myI<(outs rc:), (ins rc:), [(set rc:, (OpNode rc:))]>;
}
defm foo : myMulti<GRa, not>;
defm bar : myMulti<GRb>;
llvm-svn: 160333
 | 
| | 
| 
| 
| 
| 
|  | 
user-defined match classes have been checked.  This allows the creation of MatchClass's that are supersets of a register class.
llvm-svn: 160327
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Make sure the tblgen'erated asm matcher correctly returns numoperands+1
as the ErrorInfo when the problem was that there weren't enough operands
specified.
rdar://9142751
llvm-svn: 160144
 | 
| | 
| 
| 
| 
| 
|  | 
myself and Manman Ren.
llvm-svn: 160110
 | 
| | 
| 
| 
|  | 
llvm-svn: 159959
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
subtarget CPU descriptions and support new features of
MachineScheduler.
MachineModel has three categories of data:
1) Basic properties for coarse grained instruction cost model.
2) Scheduler Read/Write resources for simple per-opcode and operand cost model (TBD).
3) Instruction itineraties for detailed per-cycle reservation tables.
These will all live side-by-side. Any subtarget can use any
combination of them. Instruction itineraries will not change in the
near term. In the long run, I expect them to only be relevant for
in-order VLIW machines that have complex contraints and require a
precise scheduling/bundling model. Once itineraries are only actively
used by VLIW-ish targets, they could be replaced by something more
appropriate for those targets.
This tablegen backend rewrite sets things up for introducing
MachineModel type #2: per opcode/operand cost model.
llvm-svn: 159891
 |