| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Eli Friedman. This implements CodeGen/Generic/2008-02-20-MatchingMem.ll.
llvm-svn: 47428
|
| |
|
|
|
|
|
|
|
|
| |
inline asms.
Fix PR2078 by marking aliases of registers used when a register is
marked used. This prevents EAX from being allocated when AX is listed
in the clobber set for the asm.
llvm-svn: 47426
|
| |
|
|
| |
llvm-svn: 47416
|
| |
|
|
|
|
|
|
| |
No need to go up more levels. A def of a register also sets its sub-registers
(so if PhysRegInfo[SuperReg] is NULL, it means SuperReg's super registers are
not previously defined).
llvm-svn: 47399
|
| |
|
|
| |
llvm-svn: 47395
|
| |
|
|
| |
llvm-svn: 47389
|
| |
|
|
| |
llvm-svn: 47388
|
| |
|
|
|
|
|
|
|
| |
and splitting extract_subvector. This fixes nine
"make check" testcases, for example
2008-02-04-ExtractSubvector.ll and (partially)
CodeGen/Generic/vector.ll.
llvm-svn: 47384
|
| |
|
|
| |
llvm-svn: 47383
|
| |
|
|
| |
llvm-svn: 47382
|
| |
|
|
| |
llvm-svn: 47381
|
| |
|
|
| |
llvm-svn: 47380
|
| |
|
|
| |
llvm-svn: 47375
|
| |
|
|
| |
llvm-svn: 47368
|
| |
|
|
|
|
| |
annoying warnings.
llvm-svn: 47367
|
| |
|
|
|
|
|
| |
Added two "FIXMEs" for code that looks dubious to me (but I could be
wrong).
llvm-svn: 47366
|
| |
|
|
|
|
| |
changes. (Sorry for any formatting changes that creeped in.)
llvm-svn: 47362
|
| |
|
|
|
|
|
|
| |
AddNodeIDNode does profiling for a ConstantSDNode, but so does
SelectionDAG::getConstant. This profiling should be moved to a common
static function in ConstantSDNode.
llvm-svn: 47359
|
| |
|
|
|
|
|
| |
- Constified some MachineOperand values.
- Added/Modified some comments.
llvm-svn: 47358
|
| |
|
|
| |
llvm-svn: 47348
|
| |
|
|
|
|
| |
order to save a single instruction since a branch will be inserted for each BB.
llvm-svn: 47301
|
| |
|
|
|
|
|
|
| |
check if it's essentially a SCALAR_TO_VECTOR. Avoid turning (v8i16) <10, u, u, u> to <10, 0, u, u, u, u, u, u>. Instead, simply convert it to a SCALAR_TO_VECTOR of the proper type.
- X86 now normalize SCALAR_TO_VECTOR to (BIT_CONVERT (v4i32 SCALAR_TO_VECTOR)). Get rid of X86ISD::S2VEC.
llvm-svn: 47290
|
| |
|
|
|
|
| |
- For now, conservatively ignore copy MI whose source is a physical register. Commuting its def MI can cause a physical register live interval to be live through a loop (since we know it's live coming into the def MI).
llvm-svn: 47281
|
| |
|
|
|
|
| |
of an MBB returns a pointer the MBB. Reviewed by Evan.
llvm-svn: 47267
|
| |
|
|
|
|
| |
That simply trade a live interval for another and because only the non-two-address operands can be folded into loads, may end up pessimising code.
llvm-svn: 47262
|
| |
|
|
|
|
| |
a noop (which is how it use to be treated). If someone who knows the x86 backend better than me could tell me how to get a lock prefix on an instruction, that would be nice to complete x86 support.
llvm-svn: 47213
|
| |
|
|
|
|
| |
br_cc. This fixes 5 "make check" failures.
llvm-svn: 47212
|
| |
|
|
|
|
| |
instruction.
llvm-svn: 47208
|
| |
|
|
| |
llvm-svn: 47204
|
| |
|
|
| |
llvm-svn: 47200
|
| |
|
|
|
|
|
| |
it actually does. Simplify CountOperands a little by reusing
ComputeMemOperandsEnd. And reword some comments for both.
llvm-svn: 47198
|
| |
|
|
| |
llvm-svn: 47196
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
tblgen will complain if a sign-extended constant does not fit into a
data type smaller than i32, e.g., i16. This causes a problem when certain
hex constants are used, such as 0xff for byte masks or immediate xor
values.
tblgen will try the sign-extended value first and, if the sign extended
value would overflow, it tries to see if the unsigned value will fit.
Consequently, a software developer can now safely incant:
(XORHIr16 R16C:$rA, 0xffff)
which is somewhat clearer and more informative than incanting:
(XORHIr16 R16C:$rA, (i16 -1))
even if the two are bitwise equivalent.
Tblgen also outputs the 64-bit unsigned constant in the generated ISel code
when getTargetConstant() is invoked.
llvm-svn: 47188
|
| |
|
|
| |
llvm-svn: 47179
|
| |
|
|
|
|
| |
with the TIED_TO attribute.
llvm-svn: 47177
|
| |
|
|
|
|
|
| |
that should be checked for the TIED_TO attribute instead of
using CountOperands.
llvm-svn: 47176
|
| |
|
|
|
|
|
|
|
| |
in a ret node. These are created as i32 constants
but on some platforms i32 is not legal. This
fixes 26 "make check" failures, for example
Alpha/2005-07-12-TwoMallocCalls.ll.
llvm-svn: 47172
|
| |
|
|
|
|
|
| |
register defs and uses after each successful coalescing.
- Also removed a number of hacks and fixed some subtle kill information bugs.
llvm-svn: 47167
|
| |
|
|
|
|
| |
machine instr will change its definition register.
llvm-svn: 47166
|
| |
|
|
| |
llvm-svn: 47164
|
| |
|
|
|
|
| |
with a hard-coded operand number.
llvm-svn: 47163
|
| |
|
|
| |
llvm-svn: 47128
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the return value is zero-extended if it isn't
sign-extended. It may also be any-extended.
Also, if a floating point value was returned
in a larger floating point type, pass 1 as the
second operand to FP_ROUND, which tells it
that all the precision is in the original type.
I think this is right but I could be wrong.
Finally, when doing libcalls, set isZExt on
a parameter if it is "unsigned". Currently
isSExt is set when signed, and nothing is
set otherwise. This should be right for all
calls to standard library routines.
llvm-svn: 47122
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) ConstantFP is now expand by default
2) ConstantFP is not turned into TargetConstantFP during Legalize
if it is legal.
This allows ConstantFP to be handled like Constant, allowing for
targets that can encode FP immediates as MachineOperands.
As a bonus, fix up Itanium FP constants, which now correctly match,
and match more constants! Hooray.
llvm-svn: 47121
|
| |
|
|
|
|
| |
FP Immediates, crazily enough
llvm-svn: 47117
|
| |
|
|
| |
llvm-svn: 47101
|
| |
|
|
| |
llvm-svn: 47098
|
| |
|
|
|
|
| |
to pass the mask APInt by value, not by reference.
llvm-svn: 47096
|
| |
|
|
| |
llvm-svn: 47079
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CTTZ and CTPOP. The expansion code differs from
that in LegalizeDAG in that it chooses to take the
CTLZ/CTTZ count from the Hi/Lo part depending on
whether the Hi/Lo value is zero, not on whether
CTLZ/CTTZ of Hi/Lo returned 32 (or whatever the
width of the type is) for it. I made this change
because the optimizers may well know that Hi/Lo
is zero and exploit it. The promotion code for
CTTZ also differs from that in LegalizeDAG: it
uses an "or" to get the right result when the
original value is zero, rather than using a compare
and select. This also means the value doesn't
need to be zero extended.
llvm-svn: 47075
|