| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
best practices.
llvm-svn: 48442
|
|
|
|
|
|
| |
each lowering, which is 'best practice'.
llvm-svn: 48441
|
|
|
|
| |
llvm-svn: 48169
|
|
|
|
|
|
| |
and prefetchnta instructions.
llvm-svn: 48042
|
|
|
|
|
|
|
|
| |
This fixes a crash on
test/DebugInfo/funccall.ll
llvm-svn: 47709
|
|
|
|
| |
llvm-svn: 47707
|
|
|
|
| |
llvm-svn: 47706
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Add an overload that supports the uint64_t interface for use by clients
that haven't been updated yet.
llvm-svn: 47039
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
middle of a class.
llvm-svn: 46676
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
precision integers. This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on. While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.
llvm-svn: 46280
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467
|
|
|
|
|
|
| |
Likewise setImmedValue -> setImm
llvm-svn: 45453
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
|
|
|
|
|
|
|
| |
adjustment fields, and an optional flag. If there is a "dynamic_stackalloc" in
the code, make sure that it's bracketed by CALLSEQ_START and CALLSEQ_END. If
not, then there is the potential for the stack to be changed while the stack's
being used by another instruction (like a call).
This can only result in tears...
llvm-svn: 44037
|
|
|
|
| |
llvm-svn: 42881
|
|
|
|
|
|
| |
illegal. Thanks to gabor for pointing this out!
llvm-svn: 42832
|
|
|
|
|
|
|
| |
init_trampoline. There is now only one
trampoline intrinsic.
llvm-svn: 41841
|
|
|
|
|
|
| |
still under discussion.
llvm-svn: 40549
|
|
|
|
| |
llvm-svn: 39813
|
|
|
|
| |
llvm-svn: 39737
|
|
|
|
|
|
|
|
|
| |
TargetLowering to SelectionDAG so that they have more convenient
access to the current DAG, in preparation for the ValueType routines
being changed from standalone functions to members of SelectionDAG for
the pre-legalize vector type changes.
llvm-svn: 37704
|
|
|
|
|
|
| |
zext/sext/aext stuff.
llvm-svn: 35008
|
|
|
|
| |
llvm-svn: 34488
|
|
|
|
| |
llvm-svn: 34482
|
|
|
|
|
|
| |
address nodes.
llvm-svn: 33636
|
|
|
|
| |
llvm-svn: 33537
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Three changes:
1. Convert signed integer types to signless versions.
2. Implement the @sext and @zext parameter attributes. Previously the
type of an function parameter was used to determine whether it should
be sign extended or zero extended before the call. This information is
now communicated via the function type's parameter attributes.
3. The interface to LowerCallTo had to be changed in order to accommodate
the parameter attribute information. Although it would have been
convenient to pass in the FunctionType itself, there isn't always one
present in the caller. Consequently, a signedness indication for the
result type and for each parameter was provided for in the interface
to this method. All implementations were changed to make the adjustment
necessary.
llvm-svn: 32788
|
|
|
|
| |
llvm-svn: 32333
|
|
|
|
|
|
| |
of opcode and number of operands.
llvm-svn: 31947
|
|
|
|
| |
llvm-svn: 31571
|
|
|
|
| |
llvm-svn: 31294
|
|
|
|
| |
llvm-svn: 30945
|
|
|
|
| |
llvm-svn: 30844
|
|
|
|
| |
llvm-svn: 30759
|
|
|
|
|
|
| |
extra operand to LOADX to specify the exact value extension type.
llvm-svn: 30714
|
|
|
|
| |
llvm-svn: 30279
|
|
|
|
| |
llvm-svn: 29901
|
|
|
|
| |
llvm-svn: 29898
|
|
|
|
| |
llvm-svn: 29895
|
|
|
|
| |
llvm-svn: 29726
|