| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
they can be distributed along with the header files.
llvm-svn: 59953
|
|
|
|
|
|
|
| |
support targets that support these conversions. Users should avoid using
this node as the current targets don't generating code for it.
llvm-svn: 59001
|
|
|
|
| |
llvm-svn: 58539
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the predicates by extending simple predicates to create
more complex predicates instead of duplicating the logic
for the simple predicates.
This doesn't reduce much redundancy in DAGISelEmitter.cpp's
generated source yet; that will require improvements to
DAGISelEmitter.cpp's instruction sorting, to make it more
effectively group nodes with similar predicates together.
llvm-svn: 57565
|
|
|
|
|
|
|
| |
parameters instead of raw Constants. This prevents the constants from
being selected by the isel pass, fixing PR2735.
llvm-svn: 57385
|
|
|
|
|
|
| |
Apologies for the thrashing.
llvm-svn: 56251
|
|
|
|
|
|
|
|
|
|
| |
- Add linkage to SymbolSDNode (default to external).
- Change ISD::ExternalSymbol to ISD::Symbol.
- Change ISD::TargetExternalSymbol to ISD::TargetSymbol
These changes pave the way to allowing SymbolSDNodes with non-external linkage.
llvm-svn: 56249
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ATOMIC_LOAD_ADD_{8,16,32,64} instead of ATOMIC_LOAD_ADD.
Increased the Hardcoded Constant OpActionsCapacity to match.
Large but boring; no functional change.
This is to support partial-word atomics on ppc; i8 is
not a valid type there, so by the time we get to lowering, the
ATOMIC_LOAD nodes looks the same whether the type was i8 or i32.
The information can be added to the AtomicSDNode, but that is the
largest SDNode; I don't fully understand the SDNode allocation,
but it is sensitive to the largest node size, so increasing
that must be bad. This is the alternative.
llvm-svn: 55457
|
|
|
|
|
|
| |
binary primitives.
llvm-svn: 55343
|
|
|
|
| |
llvm-svn: 55130
|
|
|
|
| |
llvm-svn: 55057
|
|
|
|
|
|
| |
necessary to use dyn_cast in these predicates.
llvm-svn: 55055
|
|
|
|
|
|
| |
Just expand it like the other X-bit sub_and_fetches.
llvm-svn: 55023
|
|
|
|
|
|
| |
was already present, but not hooked up to anything.
llvm-svn: 55018
|
|
|
|
|
|
| |
of operands should be -1 not 0.
llvm-svn: 54141
|
|
|
|
|
|
| |
the base SDNode's VTList.
llvm-svn: 52722
|
|
|
|
|
|
|
|
| |
Added abstract class MemSDNode for any Node that have an associated MemOperand
Changed atomic.lcs => atomic.cmp.swap, atomic.las => atomic.load.add, and
atomic.lss => atomic.load.sub
llvm-svn: 52706
|
|
|
|
| |
llvm-svn: 52270
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and better control the abstraction. Rename the type
to MVT. To update out-of-tree patches, the main
thing to do is to rename MVT::ValueType to MVT, and
rewrite expressions like MVT::getSizeInBits(VT) in
the form VT.getSizeInBits(). Use VT.getSimpleVT()
to extract a MVT::SimpleValueType for use in switch
statements (you will get an assert failure if VT is
an extended value type - these shouldn't exist after
type legalization).
This results in a small speedup of codegen and no
new testsuite failures (x86-64 linux).
llvm-svn: 52044
|
|
|
|
|
|
|
|
|
|
|
| |
index for the input pattern in terms of the output pattern. Instead
keep track of how many fixed operands the input pattern actually
has, and have the input matching code pass the output-emitting
function that index value. This simplifies the code, disentangles
variables_ops from the support for predication operations, and
makes variable_ops more robust.
llvm-svn: 51808
|
|
|
|
|
|
|
|
|
|
|
|
| |
definitions. This adds a new construct, "discard", for indicating
that a named node in the input matching pattern is to be discarded,
instead of corresponding to a node in the output pattern. This
allows tblgen to know where the arguments for the varaible_ops are
supposed to begin.
This fixes "rdar://5791600", whatever that is ;-).
llvm-svn: 51699
|
|
|
|
|
|
| |
This is necessary to unbreak the build.
llvm-svn: 50988
|
|
|
|
| |
llvm-svn: 50663
|
|
|
|
|
|
| |
LowerSubregs pass. Add a new TII, subreg_to_reg, which is like insert_subreg except that it takes an immediate implicit value to insert into rather than a register.
llvm-svn: 48412
|
|
|
|
|
|
|
| |
on real instructions, ridding the asm printers of the hack used to do this previously. In the process, update LowerSubregs to be careful about eliminating copies that have side affects.
Note: the coalescer will have to be careful about this too, when it starts coalescing insert_subreg nodes.
llvm-svn: 48329
|
|
|
|
|
|
| |
and prefetchnta instructions.
llvm-svn: 48042
|
|
|
|
|
|
| |
failing on archs that haven't implemented them yet
llvm-svn: 47430
|
|
|
|
| |
llvm-svn: 47204
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.
This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.
As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.
llvm-svn: 47121
|
|
|
|
|
|
| |
Add some notes to the README.
llvm-svn: 46949
|
|
|
|
| |
llvm-svn: 46901
|
|
|
|
|
|
|
|
|
|
| |
complex! ComplexExpressions can now have attributes which affect how TableGen interprets
the pattern when generating matchin code.
The first (and currently, only) attribute causes the immediate parent node of the ComplexPattern operand to be passed into the matching code rather than the node at the root of the entire DAG containing the pattern.
llvm-svn: 46606
|
|
|
|
|
|
|
|
| |
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.
llvm-svn: 46538
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.
The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret
instead of:
_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret
llvm-svn: 46140
|
|
|
|
|
|
| |
Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td.
llvm-svn: 46017
|
|
|
|
| |
llvm-svn: 45825
|
|
|
|
|
|
|
|
| |
the x86
instructions (with patterns) that load memory marked, for example.
llvm-svn: 45818
|
|
|
|
| |
llvm-svn: 45656
|
|
|
|
|
|
|
|
|
|
|
| |
instead of "ISD::STORE". This allows us to mark target-specific dag
nodes as storing (such as ppc byteswap stores). This allows us to remove
more explicit isStore flags from the .td files.
Finally, add a warning for when a .td file contains an explicit
isStore and tblgen is able to infer it.
llvm-svn: 45654
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
| |
llvm-svn: 44303
|
|
|
|
| |
llvm-svn: 44045
|
|
|
|
| |
llvm-svn: 42282
|
|
|
|
|
|
|
|
|
|
|
|
| |
1.
[(set GR32:$dst, (add GR32:$src1, GR32:$src2)),
(modify EFLAGS)]
This indicates the source pattern expects the instruction would produce 2 values. The first is the result of the addition. The second is an implicit definition in register EFLAGS.
2.
def : Pat<(parallel (addc GR32:$src1, GR32:$src2), (modify EFLAGS)), ()>
Similar to #1 except this is used for def : Pat patterns.
llvm-svn: 41897
|
|
|
|
|
|
| |
Lots of problems yet but some simple things work.
llvm-svn: 40847
|
|
|
|
| |
llvm-svn: 40516
|
|
|
|
| |
llvm-svn: 39921
|
|
|
|
|
|
| |
X86 32 bits.
llvm-svn: 36283
|
|
|
|
| |
llvm-svn: 33537
|
|
|
|
|
|
| |
stores.
llvm-svn: 31735
|