| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
| |
These instructions are a late addition to the architecture, and may
yet end up behind an optional attribute, but for now they're available
at all times.
llvm-svn: 174496
|
| |
|
|
|
|
|
| |
This adds hints to the various "prfm" instructions so that they can
affect the instruction cache as well as the data cache.
llvm-svn: 174495
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Attribute groups are of the form:
#0 = attributes { noinline "no-sse" "cpu"="cortex-a8" alignstack=4 }
Target-dependent attributes are represented as strings. Attributes can have
optional values associated with them. E.g., the "cpu" attribute has the value
"cortex-a8".
Target-independent attributes are listed as enums inside the attribute classes.
Multiple attribute groups can be referenced by the same object. In that case,
the attributes are merged together.
llvm-svn: 174493
|
| |
|
|
| |
llvm-svn: 174492
|
| |
|
|
| |
llvm-svn: 174491
|
| |
|
|
|
|
|
|
|
|
|
| |
Use the validateTargetOperandClass() hook to match literal '#0' operands in
InstAlias definitions. Previously this required per-instruction C++ munging of the
operand list, but not is handled as a natural part of the matcher. Much better.
No additional tests are required, as the pre-existing tests for these instructions
exercise the new behaviour as being functionally equivalent to the old.
llvm-svn: 174488
|
| |
|
|
|
|
| |
initialization is one of the reasons I consider -werror to be shoddy.
llvm-svn: 174485
|
| |
|
|
| |
llvm-svn: 174483
|
| |
|
|
| |
llvm-svn: 174482
|
| |
|
|
|
|
|
| |
Fix the 'operator==' and 'hasAttributes' queries to take into account
target-dependent attributes.
llvm-svn: 174481
|
| |
|
|
|
|
|
|
| |
This is useful when parsing an object that references multiple attribute groups.
N.B. If both builders have alignments specified, then they should match!
llvm-svn: 174480
|
| |
|
|
|
|
|
|
|
| |
Failure: undefined symbol 'Lline_table_start0'.
Root-cause: we use a symbol subtraction to calculate at_stmt_list, but
the line table entries are not dumped in the assembly.
Fix: use zero instead of a symbol subtraction for Compile Unit 0.
llvm-svn: 174479
|
| |
|
|
| |
llvm-svn: 174473
|
| |
|
|
|
|
| |
AttributeSet.
llvm-svn: 174467
|
| |
|
|
| |
llvm-svn: 174465
|
| |
|
|
| |
llvm-svn: 174463
|
| |
|
|
|
|
|
|
| |
The stuff we're handing are all enums (Attribute::AttrKind), integers and
strings. Don't convert them to Constants, which is an unnecessary step here. The
rest of the changes are mostly mechanical.
llvm-svn: 174456
|
| |
|
|
|
|
|
| |
pointer in function prologs/epilogs. The opcodes should depend on the
data model (LP64 vs. ILP32) rather than the architecture bit-ness.
llvm-svn: 174446
|
| |
|
|
|
|
|
|
|
| |
We generate one line table for each compilation unit in the object file.
Reviewed by Eric and Kevin.
rdar://problem/13067005
llvm-svn: 174445
|
| |
|
|
|
|
|
|
|
|
|
| |
is a vararg function.
The original code was examining flag OutputArg::IsFixed to determine whether
CC_MipsN_VarArg or CC_MipsN should be called. This is not correct, since this
flag is often set to false when the function being analyzed is a non-variadic
function.
llvm-svn: 174442
|
| |
|
|
| |
llvm-svn: 174438
|
| |
|
|
| |
llvm-svn: 174432
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
differentiate between the alignment of the
base point of a load, and the overall alignment of the load. This caused infinite loops in DAG combine with the
original application of this patch.
ORIGINAL COMMIT LOG:
When the target-independent DAGCombiner inferred a higher alignment for a load,
it would replace the load with one with the higher alignment. However, it did
not place the new load in the worklist, which prevented later DAG combines in
the same phase (for example, target-specific combines) from ever seeing it.
This patch corrects that oversight, and updates some tests whose output changed
due to slightly different DAGCombine outputs.
llvm-svn: 174431
|
| |
|
|
|
|
| |
Found by running instcombine on a fabricated test case for the constant folder.
llvm-svn: 174430
|
| |
|
|
|
|
| |
zext( set[ne,eq,gt,ugt] (...) ) type of dag patterns.
llvm-svn: 174429
|
| |
|
|
|
|
| |
This was introduced in r173293.
llvm-svn: 174424
|
| |
|
|
|
|
|
| |
Introduce a helper class that computes the cost of memory access instructions.
No functionality change intended.
llvm-svn: 174422
|
| |
|
|
|
|
|
| |
edge is critical, then split it so we can insert the store.
rdar://13126179
llvm-svn: 174418
|
| |
|
|
|
|
|
|
| |
All targets are now adding return value registers as implicit uses on
return instructions, and there is no longer a need for the live out
lists.
llvm-svn: 174417
|
| |
|
|
|
|
|
| |
Now that return value registers are return instruction uses, there is no
need for special treatment of return blocks.
llvm-svn: 174416
|
| |
|
|
| |
llvm-svn: 174415
|
| |
|
|
| |
llvm-svn: 174414
|
| |
|
|
| |
llvm-svn: 174413
|
| |
|
|
| |
llvm-svn: 174412
|
| |
|
|
| |
llvm-svn: 174411
|
| |
|
|
| |
llvm-svn: 174410
|
| |
|
|
| |
llvm-svn: 174409
|
| |
|
|
| |
llvm-svn: 174408
|
| |
|
|
| |
llvm-svn: 174407
|
| |
|
|
| |
llvm-svn: 174406
|
| |
|
|
| |
llvm-svn: 174402
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, when a fragment is relaxed, its size is modified, but its
offset is not (it gets laid out as a side effect of checking whether
it needs relaxation), then all subsequent fragments are invalidated
because their offsets need to change. When bundling is enabled,
relaxed fragments need to get laid out again, because the increase in
size may push it over a bundle boundary. So instead of only
invalidating subsequent fragments, also invalidate the fragment that
gets relaxed, which causes it to get laid out again.
This patch also fixes some trailing whitespace and fixes the
bundling-related debug output of MCFragments.
llvm-svn: 174401
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Something very strange is going on with the output registers in this
target. Its ISelLowering code is inserting dangling CopyToReg nodes,
hoping that those physregs won't get clobbered before the RETURN.
This patch adds the output registers as implicit uses on RETURN
instructions in the custom emission pass. I'd much prefer to have those
CopyToReg nodes glued to the RETURNs, but I don't see how.
llvm-svn: 174400
|
| |
|
|
|
|
|
|
|
|
| |
The liveout lists are about to be removed from MRI, this is the only
place they were used after register allocation.
Get the live out V registers directly from the return instructions
instead.
llvm-svn: 174399
|
| |
|
|
|
|
|
| |
Patch by: Vincent Lejeune
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 174395
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use one intrinsic for all sorts of interpolation.
Use two separate unexpanded instructions to represent INTERP_XY and _ZW -
this will allow to eliminate one part if it's not used.
Track liveness of special interpolation regs instead of reserving them -
this will allow to reuse those regs, lowering reg pressure.
Patch By: Vadim Girlin
v2[Vincent Lejeune]: Rebased against current llvm master
Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 174394
|
| |
|
|
|
|
|
|
| |
Emitting the function name allows us to check for it in the FileCheck
tests so we can make sure FileCheck is checking the output of the
correct function.
llvm-svn: 174392
|
| |
|
|
|
|
|
|
|
|
| |
Fixes 37 piglit tests and allows e.g. FlightGear to run with radeonsi.
Patch by: Michel Dänzer
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 174391
|
| |
|
|
| |
llvm-svn: 174390
|
| |
|
|
|
|
| |
for the existing instructions.
llvm-svn: 174389
|