| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 47287
|
|
|
|
|
|
|
| |
on x86-32 since i64 itself is not a Legal type. And, update some
comments.
llvm-svn: 47282
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 47280
|
|
|
|
| |
llvm-svn: 47279
|
|
|
|
| |
llvm-svn: 47278
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
has plain one-result scalar integer multiplication instructions.
This avoids expanding such instructions into MUL_LOHI sequences that
must be special-cased at isel time, and avoids the problem with that
code that provented memory operands from being folded.
This fixes PR1874, addressesing the most common case. The uncommon
cases of optimizing multiply-high operations will require work
in DAGCombiner.
llvm-svn: 47277
|
|
|
|
|
|
| |
to Dale for noticing this!
llvm-svn: 47276
|
|
|
|
| |
llvm-svn: 47275
|
|
|
|
|
|
|
|
| |
requested by Chris. While there, do the same
for an existing function committed by someone
called "lattner" :)
llvm-svn: 47273
|
|
|
|
| |
llvm-svn: 47272
|
|
|
|
|
|
|
|
| |
to explicitly check
that Object is an Argument before casting it to one.
llvm-svn: 47268
|
|
|
|
|
|
| |
of an MBB returns a pointer the MBB. Reviewed by Evan.
llvm-svn: 47267
|
|
|
|
|
|
|
|
|
|
|
| |
that, if an sret function tail calls
another sret function, it should pass its own sret parameter to the tail callee, allowing it to fill in the correct
return value. llvm-gcc does not emit this by default. Instead, it allocates space in the caller for the sret of
the tail call and then uses memcpy to copy the result into the caller's sret parameter. This optimization detects
and optimizes that case.
llvm-svn: 47265
|
|
|
|
|
|
| |
code was not.
llvm-svn: 47264
|
|
|
|
| |
llvm-svn: 47263
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
this speeds it up 2.3% on eon.
llvm-svn: 47261
|
|
|
|
| |
llvm-svn: 47258
|
|
|
|
|
|
| |
a function must be the first parameter.
llvm-svn: 47254
|
|
|
|
|
|
| |
cases that failed the first test.
llvm-svn: 47253
|
|
|
|
| |
llvm-svn: 47252
|
|
|
|
| |
llvm-svn: 47251
|
|
|
|
|
|
|
| |
If we see a memcpy of a pointer, make sure to check later
uses of the pointer as well.
llvm-svn: 47250
|
|
|
|
| |
llvm-svn: 47248
|
|
|
|
|
|
|
|
|
| |
addresses.
Also, noalias arguments are be considered "like" stack allocated ones for this purpose, because
the only way they can be modref'ed is if they escape somewhere in the current function.
llvm-svn: 47247
|
|
|
|
|
|
| |
the second half of PR2047
llvm-svn: 47244
|
|
|
|
| |
llvm-svn: 47242
|
|
|
|
|
|
| |
that is also a subtract. This implements PR2047 and Transforms/Reassociate/subtest2.ll
llvm-svn: 47241
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 47239
|
|
|
|
| |
llvm-svn: 47237
|
|
|
|
|
|
| |
is not passed as an argument to a trampoline intrinsic.
llvm-svn: 47220
|
|
|
|
| |
llvm-svn: 47219
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
we had reached the "fake bucket" after the last bucket, allowing the iterator
in some cases to run off the end of the hashtable.
llvm-svn: 47178
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
really really really need refactoring :(
llvm-svn: 47171
|
|
|
|
|
|
|
|
|
|
|
| |
the global comment. This prevents printing things like:
... # foo
bar
when the name is "foo\nbar".
llvm-svn: 47170
|
|
|
|
|
|
| |
when they occur in the name, just like " is escaped.
llvm-svn: 47169
|