| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
names of LLVMCore and ARMCodeGen.
llvm-svn: 57943
|
| |
|
|
| |
llvm-svn: 57940
|
| |
|
|
| |
llvm-svn: 57937
|
| |
|
|
|
|
|
| |
createPrintModulePass and createPrintFunctionPass.
- So clients who compile w/o RTTI can use them.
llvm-svn: 57933
|
| |
|
|
|
|
| |
well, sort of. (Algorithm by Ian Ollmann.)
llvm-svn: 57932
|
| |
|
|
|
|
|
|
|
|
| |
The same one Apple gcc uses, faster. Also gets the
extreme case in gcc.c-torture/execute/ieee/rbug.c
correct which we weren't before; this is not
sufficient to get the test to pass though, there
is another bug.
llvm-svn: 57926
|
| |
|
|
|
|
|
| |
handle first-class aggregate values. Also, fix a bug in
the Ret handling for empty aggregates.
llvm-svn: 57925
|
| |
|
|
|
|
|
|
| |
documentation.
Add C++ header marker.
llvm-svn: 57923
|
| |
|
|
| |
llvm-svn: 57915
|
| |
|
|
| |
llvm-svn: 57911
|
| |
|
|
|
|
| |
JITing a variable independently of a function. This lead to sharing memory memory between functions and GVs thus changing the value of a GV could change the code in execution. more details on the ML.
llvm-svn: 57900
|
| |
|
|
|
|
| |
isn't yet prepared for it.
llvm-svn: 57886
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the 32-bit signed offset field of addresses. Even though this
may be intended, some linkers refuse to relocate code where the
relocated address computation overflows.
Also, fix the sign-extension of constant offsets to use the
actual pointer size, rather than the size of the GlobalAddress
node, which may be different, for example on x86-64 where MVT::i32
is used when the address is being fit into the 32-bit displacement
field.
llvm-svn: 57885
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Where previously LLVM might emit code like this:
ucomisd %xmm1, %xmm0
setne %al
setp %cl
orb %al, %cl
jne .LBB4_2
it now emits this:
ucomisd %xmm1, %xmm0
jne .LBB4_2
jp .LBB4_2
It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.
To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.
Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.
llvm-svn: 57873
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the copy instruction from the instruction list before asking the
target to create the new instruction. This gets the old instruction
out of the way so that it doesn't interfere with the target's
rematerialization code. In the case of x86, this helps it find
more cases where EFLAGS is not live.
Also, in the X86InstrInfo.cpp, teach isSafeToClobberEFLAGS to check
to see if it reached the end of the block after scanning each
instruction, instead of just before. This lets it notice when the
end of the block is only two instructions away, without doing any
additional scanning.
These changes allow rematerialization to clobber EFLAGS in more
cases, for example using xor instead of mov to set the return value
to zero in the included testcase.
llvm-svn: 57872
|
| |
|
|
|
|
| |
that NaNs are less common.
llvm-svn: 57871
|
| |
|
|
| |
llvm-svn: 57870
|
| |
|
|
| |
llvm-svn: 57869
|
| |
|
|
| |
llvm-svn: 57864
|
| |
|
|
|
|
|
|
|
| |
for strange asm conditions earlier. In this case, we have a
double being passed in an integer reg class. Convert to like
sized integer register so that we allocate the right number
for the class (two i32's for the f64 in this case).
llvm-svn: 57862
|
| |
|
|
| |
llvm-svn: 57847
|
| |
|
|
|
|
|
|
|
|
| |
is re-written by the callback to branch directly to the compiled code
in future invocations.
Added back in range-based memory permission functions for the updating of
the stub on Darwin.
llvm-svn: 57846
|
| |
|
|
| |
llvm-svn: 57845
|
| |
|
|
| |
llvm-svn: 57844
|
| |
|
|
|
|
|
|
|
| |
result type when the result type is legal but
not the operand type. Add additional support
for EXTRACT_SUBVECTOR and CONCAT_VECTORS,
needed to handle such cases.
llvm-svn: 57840
|
| |
|
|
| |
llvm-svn: 57838
|
| |
|
|
|
|
| |
with TLI.getPointerTy for a small simplification.
llvm-svn: 57837
|
| |
|
|
|
|
|
|
| |
the condition of a SELECT node. Make sure that the
correct extension type (any-, sign- or zero-extend)
is used.
llvm-svn: 57836
|
| |
|
|
| |
llvm-svn: 57834
|
| |
|
|
|
|
| |
use an MVT::i1 and simplify the code while there.
llvm-svn: 57833
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
LowerOperation if it doesn't know what else to do.
This methods should probably be factorized some,
but this is good enough for the moment. Have
LowerATOMIC_BINARY_64 use EXTRACT_ELEMENT rather
than assuming the operand is a BUILD_PAIR (if it
is then getNode will automagically simplify the
EXTRACT_ELEMENT). This way LowerATOMIC_BINARY_64
usable from LegalizeTypes.
llvm-svn: 57831
|
| |
|
|
|
|
| |
be either deleted or referenced afterwards.
llvm-svn: 57786
|
| |
|
|
| |
llvm-svn: 57785
|
| |
|
|
|
|
| |
this everywhere in LegalizeTypes.
llvm-svn: 57783
|
| |
|
|
|
|
|
|
|
| |
elements. Otherwise LegalizeTypes will, reasonably
enough, legalize the mask, which may result in it
no longer being a BUILD_VECTOR node (LegalizeDAG
simply ignores the legality or not of vector masks).
llvm-svn: 57782
|
| |
|
|
|
|
|
|
|
|
| |
the previous patch this one actually passes make check.
"Fix PR2356 on PowerPC: if we have an input and output that are tied together
that have different sizes (e.g. i32 and i64) make sure to reserve registers for
the bigger operand."
llvm-svn: 57771
|
| |
|
|
| |
llvm-svn: 57770
|
| |
|
|
| |
llvm-svn: 57766
|
| |
|
|
| |
llvm-svn: 57765
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and add a TargetLowering hook for it to use to determine when this
is legal (i.e. not in PIC mode, etc.)
This allows instruction selection to emit folded constant offsets
in more cases, such as the included testcase, eliminating the need
for explicit arithmetic instructions.
This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
that attempted to achieve the same effect, but wasn't as effective.
Also, fix handling of offsets in GlobalAddressSDNodes in several
places, including changing GlobalAddressSDNode's offset from
int to int64_t.
The Mips, Alpha, Sparc, and CellSPU targets appear to be
unaware of GlobalAddress offsets currently, so set the hook to
false on those targets.
llvm-svn: 57748
|
| |
|
|
|
|
|
| |
test/CodeGen/X86/2008-09-17-inline-asm-1.ll
and a few others, and it breaks the llvm-gcc build.
llvm-svn: 57747
|
| |
|
|
| |
llvm-svn: 57734
|
| |
|
|
| |
llvm-svn: 57733
|
| |
|
|
|
|
| |
ISD condition opcodes into helper functions.
llvm-svn: 57726
|
| |
|
|
|
|
| |
is not technically true, it tells tblgen that these instructions "clobber" the entire XMM register file.
llvm-svn: 57723
|
| |
|
|
|
|
|
|
| |
reuse happened.
Patch by Lang Hames!
llvm-svn: 57720
|
| |
|
|
| |
llvm-svn: 57715
|
| |
|
|
|
|
|
|
|
| |
have an unreachable block in a function. This was triggering the assert. This is
a horrid hack to cover this up.
Oh! for a good debug info architecture!
llvm-svn: 57714
|
| |
|
|
|
|
| |
touches memory and need an associated MemOperand
llvm-svn: 57712
|
| |
|
|
|
|
| |
ISD condition opcodes into helper functions.
llvm-svn: 57710
|