| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
and update the printOperand() function accordingly.
llvm-svn: 163544
|
| |
|
|
| |
llvm-svn: 163542
|
| |
|
|
| |
llvm-svn: 163539
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 163532
|
| |
|
|
|
|
| |
properly.
llvm-svn: 163530
|
| |
|
|
|
|
| |
- Fix an remaining issue of PR11674 as well
llvm-svn: 163528
|
| |
|
|
|
|
| |
Improve AQ instruction selection in the Hexagon MI scheduler.
llvm-svn: 163523
|
| |
|
|
|
|
| |
This folding happens as early as possible for performance reasons, and to make sure it isn't foiled by other transforms (e.g. forming FMAs).
llvm-svn: 163519
|
| |
|
|
| |
llvm-svn: 163518
|
| |
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
| |
concat_vectors, and a followup bug with SelectionDAG::getNode() creating nodes with invalid types.
llvm-svn: 163511
|
| |
|
|
| |
llvm-svn: 163510
|
| |
|
|
| |
llvm-svn: 163509
|
| |
|
|
|
|
| |
intervals twice or to theirself.
llvm-svn: 163508
|
| |
|
|
|
|
| |
single basic block.
llvm-svn: 163507
|
| |
|
|
|
|
|
|
| |
undefined or zeroinitializer.
I've added the "zeroinitializer" case in this patch.
llvm-svn: 163506
|
| |
|
|
| |
llvm-svn: 163504
|
| |
|
|
| |
llvm-svn: 163503
|
| |
|
|
|
|
|
|
| |
- The C API should be stable
- InlineAsm::AsmDialect is not exposed to C
- The function didn't match the prototype so this was unreachable code
llvm-svn: 163502
|
| |
|
|
| |
llvm-svn: 163496
|
| |
|
|
|
|
| |
region.
llvm-svn: 163495
|
| |
|
|
| |
llvm-svn: 163494
|
| |
|
|
| |
llvm-svn: 163491
|
| |
|
|
| |
llvm-svn: 163485
|
| |
|
|
| |
llvm-svn: 163484
|
| |
|
|
| |
llvm-svn: 163483
|
| |
|
|
| |
llvm-svn: 163480
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
during critical edge splitting.
Previously we checked if the register is def'd in a block via the def/use list a
nd walked the list of kills to check if the register is killed in a block. Both
of these checks can be made much cheaper by walking the block first and
recording all defs and kills.
This reduces the compile time of the test case from PR13651 from 40s to 15s at
-O2. The compile time is still dominated by LV updating but now the main culprit
is SparseBitVector's slowness.
llvm-svn: 163478
|
| |
|
|
| |
llvm-svn: 163473
|
| |
|
|
| |
llvm-svn: 163463
|
| |
|
|
| |
llvm-svn: 163461
|
| |
|
|
|
|
| |
FFLOOR of v4f32 to Expand for ARM. v2f64 was already correct.
llvm-svn: 163458
|
| |
|
|
| |
llvm-svn: 163454
|
| |
|
|
|
|
| |
Patch and test case by Alastair Murray!
llvm-svn: 163437
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 163416
|
| |
|
|
|
|
| |
bytes, not power of 2.
llvm-svn: 163405
|
| |
|
|
| |
llvm-svn: 163401
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 163378
|
| |
|
|
|
|
| |
- this should fix PR13780
llvm-svn: 163370
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- This patch is inspired by the failure of the following code snippet
which is used to convert enumerable values into encoding bits to
improve the readability of td files.
class S<int s> {
bits<2> V = !if(!eq(s, 8), {0, 0},
!if(!eq(s, 16), {0, 1},
!if(!eq(s, 32), {1, 0},
!if(!eq(s, 64), {1, 1}, {?, ?}))));
}
Later, PR8330 is found to report not exactly the same bug relevant
issue to bit/bits values.
- Instead of resolving bit/bits values separately through
resolveBitReference(), this patch adds getBit() for all Inits and
resolves bit value by resolving plus getting the specified bit. This
unifies the resolving of bit with other values and removes redundant
logic for resolving bit only. In addition,
BitsInit::resolveReferences() is optimized to take advantage of this
origanization by resolving VarBitInit's variable reference first and
then getting bits from it.
- The type interference in '!if' operator is revised to support possible
combinations of int and bits/bit in MHS and RHS.
- As there may be illegal assignments from integer value to bit, says
assign 2 to a bit, but we only check this during instantiation in some
cases, e.g.
bit V = !if(!eq(x, 17), 0, 2);
Verbose diagnostic message is generated when invalid value is
resolveed to help locating the error.
- PR8330 is fixed as well.
llvm-svn: 163360
|
| |
|
|
| |
llvm-svn: 163359
|