| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
This eliminates the need for several awkward casts, including
the last dynamic_cast under lib/Target.
llvm-svn: 51091
|
| |
|
|
|
|
|
| |
several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017
|
| |
|
|
| |
llvm-svn: 50698
|
| |
|
|
|
|
|
| |
memcpy/memset expansion. It was a bug for the SVOffset value
to be used in the actual address calculations.
llvm-svn: 50359
|
| |
|
|
|
|
|
|
| |
the memory manager which function
the stub will resolve.
llvm-svn: 49814
|
| |
|
|
|
|
| |
instruction. X86, PowerPC and ARM are implemented
llvm-svn: 49809
|
| |
|
|
|
|
| |
memory intrinsic expansion code.
llvm-svn: 49666
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
on any current target and aren't optimized in DAGCombiner. Instead
of using intermediate nodes, expand the operations, choosing between
simple loads/stores, target-specific code, and library calls,
immediately.
Previously, the code to emit optimized code for these operations
was only used at initial SelectionDAG construction time; now it is
used at all times. This fixes some cases where rep;movs was being
used for small copies where simple loads/stores would be better.
This also cleans up code that checks for alignments less than 4;
let the targets make that decision instead of doing it in
target-independent code. This allows x86 to use rep;movs in
low-alignment cases.
Also, this fixes a bug that resulted in the use of rep;stos for
memsets of 0 with non-constant memory size when the alignment was
at least 4. It's better to use the library in this case, which
can be significantly faster when the size is large.
This also preserves more SourceValue information when memory
intrinsics are lowered into simple loads/stores.
llvm-svn: 49572
|
| |
|
|
| |
llvm-svn: 49012
|
| |
|
|
| |
llvm-svn: 48995
|
| |
|
|
|
|
| |
patch by David Chisnall.
llvm-svn: 48963
|
| |
|
|
| |
llvm-svn: 48801
|
| |
|
|
|
|
|
| |
marked read-write. Use const so that they can be allocated in a
read-only segment.
llvm-svn: 48800
|
| |
|
|
| |
llvm-svn: 48753
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
flags. This is needed by the new legalize types
infrastructure which wants to expand the 64 bit
constants previously used to hold the flags on
32 bit machines. There are two functional changes:
(1) in LowerArguments, if a parameter has the zext
attribute set then that is marked in the flags;
before it was being ignored; (2) PPC had some bogus
code for handling two word arguments when using the
ELF 32 ABI, which was hard to convert because of
the bogusness. As suggested by the original author
(Nicolas Geoffray), I've disabled it for the moment.
Tested with "make check" and the Ada ACATS testsuite.
llvm-svn: 48640
|
| |
|
|
|
|
| |
independent one: TargetInstrInfo::IMPLICIT_DEF.
llvm-svn: 48380
|
| |
|
|
|
|
|
|
| |
that merely add passes. This allows them to be used with either
FunctionPassManager or PassManager, or even with a custom new
kind of pass manager.
llvm-svn: 48256
|
| |
|
|
| |
llvm-svn: 48169
|
| |
|
|
|
|
|
|
|
|
| |
field to 32 bits, thus enabling correct handling of ByVal
structs bigger than 0x1ffff. Abstract interface a bit.
Fixes gcc.c-torture/execute/pr23135.c and
gcc.c-torture/execute/pr28982b.c in gcc testsuite (were ICE'ing
on ppc32, quietly producing wrong code on x86-32.)
llvm-svn: 48122
|
| |
|
|
|
|
| |
and prefetchnta instructions.
llvm-svn: 48042
|
| |
|
|
|
|
| |
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927
|
| |
|
|
|
|
| |
16-byte boundaries.
llvm-svn: 47703
|
| |
|
|
| |
llvm-svn: 47663
|
| |
|
|
| |
llvm-svn: 47657
|
| |
|
|
|
|
| |
would have been a Godsend here!
llvm-svn: 47625
|
| |
|
|
| |
llvm-svn: 47369
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
really really really need refactoring :(
llvm-svn: 47171
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
to pass the mask APInt by value, not by reference.
llvm-svn: 47096
|
| |
|
|
|
|
| |
DAGCombine is now quite good at zapifying them.
llvm-svn: 47053
|
| |
|
|
|
|
|
| |
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.
llvm-svn: 47039
|
| |
|
|
|
|
| |
Spotted by Nick Kledzik.
llvm-svn: 47037
|
| |
|
|
| |
llvm-svn: 47036
|
| |
|
|
| |
llvm-svn: 46930
|
| |
|
|
|
|
| |
the load address first to make sure it's 16 byte aligned.
llvm-svn: 46893
|
| |
|
|
|
|
|
|
| |
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.
llvm-svn: 46827
|
| |
|
|
|
|
| |
we are recording variable information at isel time this means parameters would appear in the reverse order. The short term fix is to issue recordVariable() at asm printing time instead.
llvm-svn: 46724
|
| |
|
|
| |
llvm-svn: 46723
|
| |
|
|
| |
llvm-svn: 46720
|
| |
|
|
|
|
| |
middle of a class.
llvm-svn: 46676
|
| |
|
|
| |
llvm-svn: 46673
|
| |
|
|
| |
llvm-svn: 46667
|
| |
|
|
|
|
|
|
|
| |
information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
llvm-svn: 46659
|
| |
|
|
|
|
| |
re-commit.
llvm-svn: 46623
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.
Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.
Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.
llvm-svn: 46585
|
| |
|
|
|
|
|
|
| |
proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert
instruction at the end.
llvm-svn: 46562
|
| |
|
|
|
|
|
|
| |
and StoreSDNode into their common base class LSBaseSDNode. Member
functions getLoadedVT and getStoredVT are replaced with the common
getMemoryVT to simplify code that will handle both loads and stores.
llvm-svn: 46538
|
| |
|
|
|
|
| |
the function label isn't associated with something it shouldn't be.
llvm-svn: 46449
|