| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
functions. No functional change.
llvm-svn: 163596
|
| |
|
|
|
|
| |
table size.
llvm-svn: 163594
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Hexagon target decided to use a lot of functionality from the
target-independent scheduler. That's fine, and other targets should be
able to do the same. This reorg and API update makes that easy.
For the record, ScheduleDAGMI was not meant to be subclassed. Instead,
new scheduling algorithms should be able to implement
MachineSchedStrategy and be done. But if need be, it's nice to be
able to extend ScheduleDAGMI, so I also made that easier. The target
scheduler is somewhat more apt to break that way though.
llvm-svn: 163580
|
| |
|
|
| |
llvm-svn: 163561
|
| |
|
|
| |
llvm-svn: 163557
|
| |
|
|
| |
llvm-svn: 163556
|
| |
|
|
| |
llvm-svn: 163547
|
| |
|
|
|
|
| |
and update the printOperand() function accordingly.
llvm-svn: 163544
|
| |
|
|
| |
llvm-svn: 163542
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The ARM backend can eliminate cmp instructions by reusing flags from a
nearby sub instruction with similar arguments.
Don't do that if the sub is predicated - the flags are not written
unconditionally.
<rdar://problem/12263428>
llvm-svn: 163535
|
| |
|
|
|
|
| |
- Fix an remaining issue of PR11674 as well
llvm-svn: 163528
|
| |
|
|
|
|
| |
Improve AQ instruction selection in the Hexagon MI scheduler.
llvm-svn: 163523
|
| |
|
|
|
|
|
|
| |
- If a boolean value is generated from CMOV and tested as boolean value,
simplify the use of test result by referencing the original condition.
RDRAND intrinisc is one of such cases.
llvm-svn: 163516
|
| |
|
|
|
|
|
|
| |
undefined or zeroinitializer.
I've added the "zeroinitializer" case in this patch.
llvm-svn: 163506
|
| |
|
|
| |
llvm-svn: 163504
|
| |
|
|
| |
llvm-svn: 163484
|
| |
|
|
| |
llvm-svn: 163473
|
| |
|
|
| |
llvm-svn: 163463
|
| |
|
|
| |
llvm-svn: 163461
|
| |
|
|
|
|
| |
FFLOOR of v4f32 to Expand for ARM. v2f64 was already correct.
llvm-svn: 163458
|
| |
|
|
|
|
|
|
| |
For some reason .lcomm uses byte alignment and .comm log2 alignment so we can't
use the same setting for both. Fix this by reintroducing the LCOMM enum.
I verified this against mingw's gcc.
llvm-svn: 163420
|
| |
|
|
|
|
|
| |
The 'select' transformations apply to all ARM architectures and don't
require hasV6T2Ops.
llvm-svn: 163396
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Darwin lied about not supporting .lcomm and turned it into zerofill in the
asm parser. Push the zerofill-conversion down into macho-specific code.
- This makes the tri-state LCOMMType enum superfluous, there are no targets
without .lcomm.
- Do proper error reporting when trying to use .lcomm with alignment on a target
that doesn't support it.
- .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2.
- Fixes PR13755 (.lcomm crashes on ELF).
llvm-svn: 163395
|
| |
|
|
|
|
|
|
|
| |
registers.
gas accepts this and it seems to be common enough to be worth supporting. This
doesn't affect the parsing of reg operands outside of .cfi directives.
llvm-svn: 163390
|
| |
|
|
| |
llvm-svn: 163383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The assembler can alias one instruction into another based
on the operands. For example the jump instruction "J" takes
and immediate operand, but if the operand is a register the
assembler will change it into a jump register "JR" instruction.
These changes are in the instruction td file.
Test cases included
Contributer: Vladimir Medic
llvm-svn: 163368
|
| |
|
|
|
|
|
|
|
|
| |
Actually these are just stubs for parsing the directives.
Semantic support will come later.
Test cases included
Contributer: Vladimir Medic
llvm-svn: 163364
|
| |
|
|
|
|
|
| |
Test cases included
Contributer: Vladimir Medic
llvm-svn: 163363
|
| |
|
|
| |
llvm-svn: 163359
|
| |
|
|
|
|
|
|
|
| |
This includes sb,sc,sh,sw,lb,lw,lbu,lh,lhu,ll,lw
Test case included
Contributer: Vladimir Medic
llvm-svn: 163346
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 163339
|
| |
|
|
|
|
| |
Patch by Chris Lidbury.
llvm-svn: 163323
|
| |
|
|
|
|
|
|
| |
instructions.
Patch by Chris Lidbury.
llvm-svn: 163321
|
| |
|
|
|
|
| |
Patch by Chris Lidbury.
llvm-svn: 163318
|
| |
|
|
|
|
| |
Added generation of VPSHUB instruction for <32 x i8> vector shuffle when possible.
llvm-svn: 163312
|
| |
|
|
| |
llvm-svn: 163309
|
| |
|
|
| |
llvm-svn: 163306
|
| |
|
|
|
|
| |
If we have a BUILD_VECTOR that is mostly a constant splat, it is often better to splat that constant then insertelement the non-constant lanes instead of insertelementing every lane from an undef base.
llvm-svn: 163304
|
| |
|
|
|
|
| |
to a VSETLN on D registers, instead of an (INSERT_SUBREG (VSETLN (EXTRACT_SUBREG ))) sequence to help the register coalescer.
llvm-svn: 163298
|
| |
|
|
| |
llvm-svn: 163295
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
register support. Test case included.
Contributer: Vladimir Medic
llvm-svn: 163268
|
| |
|
|
| |
llvm-svn: 163258
|
| |
|
|
|
|
| |
by casting. Found with gcc48.
llvm-svn: 163247
|
| |
|
|
|
|
|
|
| |
Since TOC is just defined for PPC64, move its definition to PPC64 td file.
Patch by Adhemerval Zanella.
llvm-svn: 163234
|