| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
For functions that need to spill CRs, and have dynamic stack allocations, the
value of the SP during the restore is not what it was during the save, and so
we need to use the FP in these cases (as for all of the other spills and
restores, but the CR restore has a special code path because its reserved slot,
like the link register, is specified directly relative to the adjusted SP).
llvm-svn: 179457
|
| |
|
|
|
|
| |
The order of copies depends on queue order, which is not very stable.
llvm-svn: 179456
|
| |
|
|
| |
llvm-svn: 179455
|
| |
|
|
| |
llvm-svn: 179453
|
| |
|
|
| |
llvm-svn: 179452
|
| |
|
|
|
|
| |
to check for a variant.
llvm-svn: 179451
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The initial values were arbitrary. I want them to be more
conservative. This represents the number of latency cycles hidden by
OOO execution. In practice, I think it should be within a small factor
of the complex floating point operation latency so the scheduler can
make some attempt to hide latency even for smallish blocks.
These are by no means the best values, just a starting point for
tuning heuristics. Some benchmarks such as TSVC run faster with this
lower value for SandyBridge. I haven't run anything on Haswell, but
it's shouldn't be 2x SB.
llvm-svn: 179450
|
| |
|
|
|
|
|
|
|
|
|
| |
The register allocator expects minimal physreg live ranges. Schedule
physreg copies accordingly. This is slightly tricky when they occur in
the middle of the scheduling region. For now, this is handled by
rescheduling the copy when its associated instruction is
scheduled. Eventually we may instead bundle them, but only if we can
preserve the bundles as parallel copies during regalloc.
llvm-svn: 179449
|
| |
|
|
|
|
|
|
|
|
| |
I need to handle this for the test case in my following scheduler
commit.
Work is already under way to redesign the mechanism for node order
propagation because this case by case approach is unmaintainable.
llvm-svn: 179448
|
| |
|
|
|
|
| |
I hope this brings http://lab.llvm.org:8011/builders/clang-x86_64-darwin11-self-mingw32 back.
llvm-svn: 179446
|
| |
|
|
|
|
|
|
| |
lowerINTRINSIC_WO_CHAIN into MipsSETargetLowering.
No functionality changes.
llvm-svn: 179444
|
| |
|
|
|
|
| |
Should fix the bots.
llvm-svn: 179441
|
| |
|
|
|
|
|
| |
We are now able to handle big endian macho files in llvm-readobject. Thanks to
David Fang for providing the object files.
llvm-svn: 179440
|
| |
|
|
| |
llvm-svn: 179434
|
| |
|
|
| |
llvm-svn: 179433
|
| |
|
|
|
|
|
| |
change intended. Test case previously added in r178568.
Part of rdar://13611297
llvm-svn: 179425
|
| |
|
|
| |
llvm-svn: 179422
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 179421
|
| |
|
|
| |
llvm-svn: 179420
|
| |
|
|
| |
llvm-svn: 179418
|
| |
|
|
|
|
| |
Fixes PR15737.
llvm-svn: 179417
|
| |
|
|
|
|
| |
perform a preliminary traversal of the graph to collect values with multiple users and check where the users came from.
llvm-svn: 179414
|
| |
|
|
|
|
| |
from 1 to two. Fixed a few tests that changes because now the cost of one insert + a vector operation on two doubles is lower than two scalar operations on doubles.
llvm-svn: 179413
|
| |
|
|
| |
llvm-svn: 179412
|
| |
|
|
|
|
| |
patch by Veselov, Yuri <Yuri.Veselov@intel.com>.
llvm-svn: 179409
|
| |
|
|
|
|
| |
when parsing MS-style inline assembly. No functional change intended.
llvm-svn: 179407
|
| |
|
|
|
|
|
|
| |
is a follow on to r179393 and r179399. Test case to be added on
the clang side.
Part of rdar://13453209
llvm-svn: 179403
|
| |
|
|
|
|
| |
the source test root.
llvm-svn: 179402
|
| |
|
|
| |
llvm-svn: 179401
|
| |
|
|
|
|
|
| |
is a follow on to r179393. Test case to be added on the clang side.
Part of rdar://13453209
llvm-svn: 179399
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
According to the ARM reference manual, constant offsets are mandatory for pre-indexed addressing modes.
The MC disassembler was not obeying this when the offset is 0.
It was producing instructions like: str r0, [r1]!.
Correct syntax is: str r0, [r1, #0]!.
This change modifies the dumping of operands so that the offset is always printed, regardless of its value, when pre-indexed addressing mode is used.
Patch by Mihail Popa <Mihail.Popa@arm.com>
llvm-svn: 179398
|
| |
|
|
|
|
|
|
|
| |
immediate displacement. Specifically, add support for generating the proper IR.
We've been able to parse this for some time now. Test case to be added on the
clang side.
Part of rdar://13453209
llvm-svn: 179393
|
| |
|
|
|
|
|
|
|
|
| |
TableGen will not combine nested list 'let' bindings into a single list, and
instead uses only the inner scope. As a result, several instruction definitions
were missing implicit register defs that were in outer scopes. This de-nests
these scopes and makes all instructions have only one let binding which sets
implicit register definitions.
llvm-svn: 179392
|
| |
|
|
| |
llvm-svn: 179391
|
| |
|
|
| |
llvm-svn: 179388
|
| |
|
|
|
|
| |
predication.
llvm-svn: 179387
|
| |
|
|
|
|
|
|
| |
The transform will execute like so:
(A & ~B) == 0 --> (A & B) != 0
(A & ~B) != 0 --> (A & B) == 0
llvm-svn: 179386
|
| |
|
|
|
|
|
| |
in r179325. Test case coming shortly on the clang side.
Part of rdar://13453209
llvm-svn: 179383
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't classify idiv/udiv as a reduction operation. Integer division is lossy.
For example : (1 / 2) * 4 != 4/2.
Example:
int a[] = { 2, 5, 2, 2}
int x = 80;
for()
x /= a[i];
Scalar:
x /= 2 // = 40
x /= 5 // = 8
x /= 2 // = 4
x /= 2 // = 2
Vectorized:
<80, 1> / <2,5> //= <40,0>
<40, 0> / <2,2> //= <20,0>
20*0 = 0
radar://13640654
llvm-svn: 179381
|
| |
|
|
|
|
|
|
| |
These tests rely specifically on the names of ELF relocations, let alone any
other detail. There's no way they'd work if LLVM was emitting something else by
default.
llvm-svn: 179376
|
| |
|
|
|
|
|
|
| |
It turns out some platforms (e.g. Windows) lay out their llvm-mc slightly
differently with extra newlines; there was no real reason for the test lines to
be consecutive, so this relaxes the FileCheck.
llvm-svn: 179375
|
| |
|
|
|
|
| |
You can't copy an OwningPtr, and move semantics aren't available in C++98.
llvm-svn: 179374
|
| |
|
|
| |
llvm-svn: 179373
|
| |
|
|
|
|
|
|
| |
answers for blocks larger than 3 instrs.
Also add a unit test. PR15727.
llvm-svn: 179370
|
| |
|
|
|
|
| |
by the driver
llvm-svn: 179367
|
| |
|
|
| |
llvm-svn: 179363
|
| |
|
|
| |
llvm-svn: 179362
|
| |
|
|
| |
llvm-svn: 179361
|
| |
|
|
|
|
|
| |
This test ensures that relocation type names returned by libObject match
the raw relocation type value.
llvm-svn: 179360
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This option expands shown relocations from single line to a dictionary
format:
Relocation {
Offset: 0x4
Type: R_386_32 (1)
Symbol: sym
Info: 0x0
}
llvm-svn: 179359
|