| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
Use sub0-15 everywhere.
Patch by: Michel Dänzerr
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
llvm-svn: 174610
|
| |
|
|
|
|
|
|
|
|
|
| |
These instructions compare two floating point values and return an
integer true (-1) or false (0) value.
When compiling code generated by the Mesa GLSL frontend, the SET*_DX10
instructions save us four instructions for most branch decisions that
use floating-point comparisons.
llvm-svn: 174609
|
| |
|
|
| |
llvm-svn: 174607
|
| |
|
|
|
|
| |
hosts.
llvm-svn: 174602
|
| |
|
|
|
|
| |
For example, when we are doing mips16 hard float or soft float.
llvm-svn: 174583
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A double inclusion will pretty much always be an error in TableGen, so
there's no point going on just to die with "def already defined" or
whatnot.
I'm not too thrilled about the "public: ... private: ..." to expose the
DependenciesMapTy, but I really didn't see a better way to keep that
type centralized. It's a smell that indicates that some refactoring is
needed to make this code more loosely coupled.
This should avoid all bugs of the same nature as PR15189.
llvm-svn: 174582
|
| |
|
|
|
|
|
|
| |
1. Moved a comment from ObjCARCOpts.cpp -> ObjCARCContract.cpp.
2. Removed a comment from ObjCARCOpts.cpp that was already moved to
ObjCARCAliasAnalysis.h/.cpp.
llvm-svn: 174581
|
| |
|
|
| |
llvm-svn: 174580
|
| |
|
|
|
| |
FIXME: Are they really truncated to i32 from i64 unconditionally?
llvm-svn: 174574
|
| |
|
|
| |
llvm-svn: 174571
|
| |
|
|
|
|
| |
implementation on the host. This is a little bit unfortunate, but until someone decides to implement a full libm for APFloat, we don't have a better way to get this functionality.
llvm-svn: 174561
|
| |
|
|
|
|
| |
intrinsics, including ones on half types.
llvm-svn: 174555
|
| |
|
|
| |
llvm-svn: 174550
|
| |
|
|
|
|
| |
units coming in.
llvm-svn: 174548
|
| |
|
|
| |
llvm-svn: 174547
|
| |
|
|
| |
llvm-svn: 174546
|
| |
|
|
|
|
|
|
|
|
|
|
| |
account. Atoms use LEA for updating SP in prologs/epilogs, and the
exact LEA opcode depends on the data model.
Also reapplying the test case which was added and then reverted
(because of Atom failures), this time specifying explicitly the CPU in
addition to the triple. The test case now checks all variations (data
mode, cpu Atom vs. Core).
llvm-svn: 174542
|
| |
|
|
|
|
|
|
| |
Most of PPCCallingConv.td is used only by the 32-bit SVR4 ABI. Rename
things to clarify this. Also delete some code that's been commented out
for a long time.
llvm-svn: 174526
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Only implemented for R600 so far. SI is missing implementations of a
few callbacks used by the Indirect Addressing pass and needs code to
handle frame indices.
At the moment R600 only supports array sizes of 16 dwords or less.
Register packing of vector types is currently disabled, which means that a
vec4 is stored in T0_X, T1_X, T2_X, T3_X, rather than T0_XYZW. In order
to correctly pack registers in all cases, we will need to implement an
analysis pass for R600 that determines the correct vector width for each
array.
v2:
- Add support for i8 zext load from stack.
- Coding style fixes
v3:
- Don't reserve registers for indirect addressing when it isn't
being used.
- Fix bug caused by LLVM limiting the number of SubRegIndex
declarations.
v4:
- Fix 64-bit defines
llvm-svn: 174525
|
| |
|
|
|
|
|
|
|
| |
Weakly defined symbols should evaluate to 0 if they're undefined at
link-time. This is impossible to do with the usual address generation
patterns, so we should use a literal pool entry to materlialise the
address.
llvm-svn: 174518
|
| |
|
|
| |
llvm-svn: 174515
|
| |
|
|
|
|
|
|
| |
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
|