- Oct 22, 2008
-
-
Argyrios Kyrtzidis authored
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h -Define strtoull llvm-svn: 57970
-
Duncan Sands authored
llvm-svn: 57969
-
Duncan Sands authored
may return i8, which can result in SELECT nodes for which the type of the condition is i8, but there are no patterns for select with i8 condition. Tweak the LegalizeTypes logic to avoid this as much as possible. This isn't a real fix because it is still perfectly possible to end up with such select nodes - CellSPU needs to be fixed IMHO. llvm-svn: 57968
-
Duncan Sands authored
ADDC/ADDE/SUBC/SUBE if the target supports it. llvm-svn: 57967
-
Duncan Sands authored
that is not of type MVT::i1 in SELECT and SETCC nodes. Relax the LegalizeTypes SELECT condition promotion sanity checks to allow other condition types than i1. llvm-svn: 57966
-
Duncan Sands authored
to have a different type to the vector element type. This should be fairly harmless because in the past guys like this were being built all over the place (and were cleaned up when I added this check). The reason for relaxing this check is that it helps LegalizeTypes legalize vector shuffles: the mask is a BUILD_VECTOR that it is *not always possible* to legalize while keeping it a BUILD_VECTOR (vector_shuffle requires the mask to be a BUILD_VECTOR, as opposed to a vector with the right vector type). With this check it is even harder to legalize the mask - turning the check off means that LegalizeTypes manages to legalize almost all vector shuffles encountered in practice. The correct solution is to change vector_shuffle to be a variadic node with the mask built into it as operands. While waiting for that change, this hack stops the problem with vector_shuffle from blocking the turning on of LegalizeTypes. llvm-svn: 57965
-
Chris Lattner authored
are their operands. llvm-svn: 57956
-
Daniel Dunbar authored
llvm-svn: 57946
-
Oscar Fuentes authored
llvm-svn: 57945
-
Oscar Fuentes authored
llvm-svn: 57944
-
Oscar Fuentes authored
names of LLVMCore and ARMCodeGen. llvm-svn: 57943
-
Dale Johannesen authored
llvm-svn: 57940
-
Bill Wendling authored
llvm-svn: 57939
-
Oscar Fuentes authored
llvm-svn: 57937
-
Daniel Dunbar authored
createPrintModulePass and createPrintFunctionPass. - So clients who compile w/o RTTI can use them. llvm-svn: 57933
-
Dale Johannesen authored
well, sort of. (Algorithm by Ian Ollmann.) llvm-svn: 57932
-
- Oct 21, 2008
-
-
Dale Johannesen authored
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
-
Dan Gohman authored
handle first-class aggregate values. Also, fix a bug in the Ret handling for empty aggregates. llvm-svn: 57925
-
Daniel Dunbar authored
documentation. Add C++ header marker. llvm-svn: 57923
-
Dan Gohman authored
llvm-svn: 57920
-
Dan Gohman authored
llvm-svn: 57915
-
Torok Edwin authored
llvm-svn: 57912
-
Jim Grosbach authored
llvm-svn: 57911
-
Nuno Lopes authored
fix a tricky bug in the JIT global variable emitter, that was triggered when 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
-
Ted Kremenek authored
llvm-svn: 57894
-
Chris Lattner authored
llvm-svn: 57889
-
Chris Lattner authored
llvm-svn: 57888
-
Chris Lattner authored
llvm-svn: 57887
-
Dan Gohman authored
isn't yet prepared for it. llvm-svn: 57886
-
Dan Gohman authored
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
-
Dan Gohman authored
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
-
Dan Gohman authored
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
-
Dan Gohman authored
that NaNs are less common. llvm-svn: 57871
-
Dan Gohman authored
llvm-svn: 57870
-
Oscar Fuentes authored
llvm-svn: 57869
-
Dan Gohman authored
llvm-svn: 57864
-
Chris Lattner authored
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
-
- Oct 20, 2008
-
-
Evan Cheng authored
llvm-svn: 57847
-
Jim Grosbach authored
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
-
Dan Gohman authored
llvm-svn: 57845
-