| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
lowering and patterns. This makes it consistent with the incoming DAG nodes from the DAG builder.
llvm-svn: 163293
|
| |
|
|
|
|
| |
of a 256-bit vector to VMOVAPSmr/VMOVUPSmr.
llvm-svn: 163292
|
| |
|
|
| |
llvm-svn: 163289
|
| |
|
|
| |
llvm-svn: 163288
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
assembler such as shifts greater than 32. In the case
of direct object, the code gen needs to do this lowering
since the assembler is not involved.
With the advent of the llvm-mc assembler, it also needs
to do the same lowering.
This patch makes that specific lowering code accessible
to both the direct object output and the assembler.
This patch does not affect generated output.
llvm-svn: 163287
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 163279
|
| |
|
|
|
|
|
| |
Test case included.
Contributer: Vladimir Medic
llvm-svn: 163277
|
| |
|
|
|
|
|
| |
These pseudos are no longer needed now that it is possible to represent
predicated instructions in SSA form.
llvm-svn: 163275
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that it is possible to dynamically tie MachineInstr operands,
predicated instructions are possible in SSA form:
%vreg3<def> = SUBri %vreg1, -2147483647, pred:14, pred:%noreg, %opt:%noreg
%vreg4<def,tied1> = MOVCCr %vreg3<tied0>, %vreg1, %pred:12, pred:%CPSR
Becomes a predicated SUBri with a tied imp-use:
SUBri %vreg1, -2147483647, pred:13, pred:%CPSR, opt:%noreg, %vreg1<imp-use,tied0>
This means that any instruction that is safe to move can be folded into
a MOVCC, and the *CC pseudo-instructions are no longer needed.
The test case changes reflect that Thumb2SizeReduce recognizes the
predicated instructions. It didn't understand the pseudos.
llvm-svn: 163274
|
| |
|
|
| |
llvm-svn: 163273
|
| |
|
|
|
|
|
|
|
| |
switch, make sure we include the value for the cases when calculating edge
value from switch to the default destination.
rdar://12241132
llvm-svn: 163270
|
| |
|
|
|
|
|
| |
register support. Test case included.
Contributer: Vladimir Medic
llvm-svn: 163268
|
| |
|
|
| |
llvm-svn: 163263
|
| |
|
|
| |
llvm-svn: 163258
|
| |
|
|
|
|
| |
MachineInstr.
llvm-svn: 163257
|
| |
|
|
| |
llvm-svn: 163256
|
| |
|
|
|
|
| |
ArchiveMemberHeader. Found by gcc48 -Wcast-qual.
llvm-svn: 163255
|
| |
|
|
|
|
| |
of its constness. Found by gcc48 -Wcast-qual.
llvm-svn: 163254
|
| |
|
|
|
|
| |
the SubtargetInfoKV tables. Found by gcc48 -Wcast-qual.
llvm-svn: 163251
|
| |
|
|
|
|
| |
by casting. Found with gcc48.
llvm-svn: 163247
|
| |
|
|
| |
llvm-svn: 163243
|
| |
|
|
|
|
|
|
| |
Since TOC is just defined for PPC64, move its definition to PPC64 td file.
Patch by Adhemerval Zanella.
llvm-svn: 163234
|
| |
|
|
|
|
| |
inteldialect.
llvm-svn: 163231
|
| |
|
|
|
|
|
|
| |
Previous patch accidentally decided it couldn't convert a VFP to a
NEON instruction after it had already destroyed the old one. Not a
good move.
llvm-svn: 163230
|
| |
|
|
| |
llvm-svn: 163225
|
| |
|
|
|
|
|
| |
Make sure to return a pointer into the target memory, not the local memory.
Often they are the same, but we can't assume that.
llvm-svn: 163217
|
| |
|
|
|
|
|
|
| |
It relies on clear() being fast and the cache rarely has more than 1 or 2
elements, so give it an inline capacity and always shrink it back down in case
it grows. DenseMap will grow to 64 buckets which makes clear() a lot slower.
llvm-svn: 163215
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
subreg_hireg of register pair Rp.
* lib/Target/Hexagon/HexagonPeephole.cpp(PeepholeDoubleRegsMap): New
DenseMap similar to PeepholeMap that additionally records subreg info
too.
(runOnMachineFunction): Record information in PeepholeDoubleRegsMap
and copy propagate the high sub-reg of Rp0 in Rp1 = lsr(Rp0, #32) to
the instruction Rx = COPY Rp1:logreg_subreg.
* test/CodeGen/Hexagon/remove_lsr.ll: New test.
llvm-svn: 163214
|
| |
|
|
| |
llvm-svn: 163205
|
| |
|
|
|
|
| |
types. The previous code was making the assumption that the length of the bitmask returned by isConstantSplat was equal to the size of the vector type. Now we first make sure that the splat value has at least the length of the vector lane type, then we only use as many fields as we have available in the splat value.
llvm-svn: 163203
|
| |
|
|
|
|
| |
Reid Watson
llvm-svn: 163199
|
| |
|
|
|
|
| |
insert_subvector into undef accomplishes the same thing.
llvm-svn: 163198
|
| |
|
|
|
|
| |
Also add patterns to turn subvector inserts with loads to index 0 of an undef into VMOVAPS.
llvm-svn: 163196
|
| |
|
|
|
|
| |
major release.
llvm-svn: 163195
|
| |
|
|
| |
llvm-svn: 163194
|
| |
|
|
| |
llvm-svn: 163193
|
| |
|
|
|
|
| |
build time. Similar was previously done for vinserti128/vinsertf128. Add patterns for folding these extract_subvectors with stores.
llvm-svn: 163192
|
| |
|
|
| |
llvm-svn: 163190
|
| |
|
|
| |
llvm-svn: 163187
|
| |
|
|
|
|
| |
Reader/Writer.
llvm-svn: 163185
|
| |
|
|
| |
llvm-svn: 163184
|
| |
|
|
| |
llvm-svn: 163181
|
| |
|
|
|
|
|
|
| |
pointers-to-strong-pointers may be in play. These can lead to retains and
releases happening in unstructured ways, foiling the optimizer. This fixes
rdar://12150909.
llvm-svn: 163180
|
| |
|
|
| |
llvm-svn: 163179
|
| |
|
|
|
|
|
| |
Implicit uses can be dynamically tied to defs. This will soon be used
for predicated instructions on ARM.
llvm-svn: 163177
|
| |
|
|
|
|
| |
class.
llvm-svn: 163175
|
| |
|
|
|
|
|
| |
implementation does not co-exist well with how the sideeffect and alignstack
attributes are handled. The reverts r161641.
llvm-svn: 163174
|
| |
|
|
|
|
| |
Doesn't set MadeChange to TRUE if BypassSlowDivision doesn't change anything.
llvm-svn: 163165
|
| |
|
|
|
|
|
|
|
|
| |
Also a few minor changes:
- use pre-inc instead of post-inc
- use isa instead of dyn_cast
- 80 col
- trailing spaces
llvm-svn: 163164
|
| |
|
|
| |
llvm-svn: 163154
|