| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
side effects for machine instructions.
llvm-svn: 45022
|
| |
|
|
| |
llvm-svn: 44969
|
| |
|
|
|
|
| |
Target maintainers: please check that the instructions for your target are correctly marked.
llvm-svn: 44012
|
| |
|
|
| |
llvm-svn: 42423
|
| |
|
|
|
|
| |
between two registers in the specific class.
llvm-svn: 42123
|
| |
|
|
| |
llvm-svn: 41128
|
| |
|
|
|
|
|
|
| |
LLVM. It cleans up the intrinsic definitions and generally smooths the process for more complicated intrinsic writing. It will be used by the upcoming atomic intrinsics as well as vector and float intrinsics in the future.
This also changes the syntax for llvm.bswap, llvm.part.set, llvm.part.select, and llvm.ct* intrinsics. They are automatically upgraded by both the LLVM ASM reader and the bitcode reader. The test cases have been updated, with special tests added to ensure the automatic upgrading is supported.
llvm-svn: 40807
|
| |
|
|
|
|
| |
MBB's. PR1350
llvm-svn: 40518
|
| |
|
|
| |
llvm-svn: 40513
|
| |
|
|
| |
llvm-svn: 40075
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
InOperandList. This gives one piece of important information: # of results
produced by an instruction.
An example of the change:
def ADD32rr : I<0x01, MRMDestReg, (ops GR32:$dst, GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
=>
def ADD32rr : I<0x01, MRMDestReg, (outs GR32:$dst), (ins GR32:$src1, GR32:$src2),
"add{l} {$src2, $dst|$dst, $src2}",
[(set GR32:$dst, (add GR32:$src1, GR32:$src2))]>;
llvm-svn: 40033
|
| |
|
|
| |
llvm-svn: 39828
|
| |
|
|
| |
llvm-svn: 38498
|
| |
|
|
| |
llvm-svn: 37963
|
| |
|
|
|
|
| |
their predicates are fixed at isel time.
llvm-svn: 37899
|
| |
|
|
|
|
|
|
|
| |
instruction flag, and use the flag along with a virtual member function
hook for targets to override if there are instructions that are only
trivially rematerializable with specific operands (i.e. constant pool
loads).
llvm-svn: 37728
|
| |
|
|
|
|
|
|
|
|
| |
with a general target hook to identify rematerializable instructions. Some
instructions are only rematerializable with specific operands, such as loads
from constant pools, while others are always rematerializable. This hook
allows both to be identified as being rematerializable with the same
mechanism.
llvm-svn: 37644
|
| |
|
|
| |
llvm-svn: 37643
|
| |
|
|
|
|
| |
class basis.
llvm-svn: 37572
|
| |
|
|
|
|
| |
are used to predicate instructions.
llvm-svn: 37465
|
| |
|
|
|
|
|
| |
being changed from an enum to an integer type, which can't have a custom
operator<< overload.
llvm-svn: 37412
|
| |
|
|
|
|
| |
without having a PredicateOperand.
llvm-svn: 37116
|
| |
|
|
|
|
|
|
|
|
| |
Implement code generation for overloaded intrinsic functions. The basic
difference is that "actual" argument types must be provided when
constructing intrinsic names and types. Also, for recognition, only the
prefix is examined. If it matches, the suffix is assumed to match. The
suffix is checked by the Verifier, however.
llvm-svn: 35539
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#include <mmintrin.h>
extern __m64 C;
void baz(__v2si *A, __v2si *B)
{
*A = C;
_mm_empty();
}
We get this:
_baz:
call "L1$pb"
"L1$pb":
popl %eax
movl L_C$non_lazy_ptr-"L1$pb"(%eax), %eax
movq (%eax), %mm0
movl 4(%esp), %eax
movq %mm0, (%eax)
emms
ret
GCC gives us this:
_baz:
pushl %ebx
call L3
"L00000000001$pb":
L3:
popl %ebx
subl $8, %esp
movl L_C$non_lazy_ptr-"L00000000001$pb"(%ebx), %eax
movl (%eax), %edx
movl 4(%eax), %ecx
movl 16(%esp), %eax
movl %edx, (%eax)
movl %ecx, 4(%eax)
emms
addl $8, %esp
popl %ebx
ret
llvm-svn: 35351
|
| |
|
|
| |
llvm-svn: 35159
|
| |
|
|
| |
llvm-svn: 34697
|
| |
|
|
|
|
|
|
|
|
| |
CodeGenTarget.cpp updated: 1.82 -> 1.83
Record.cpp updated: 1.55 -> 1.56
Record.h updated: 1.59 -> 1.60
TableGen.cpp updated: 1.47 -> 1.48
It's missing CallingConvEmitter.h
llvm-svn: 34693
|
| |
|
|
| |
llvm-svn: 34682
|
| |
|
|
| |
llvm-svn: 33539
|
| |
|
|
| |
llvm-svn: 32333
|
| |
|
|
| |
llvm-svn: 32107
|
| |
|
|
|
|
|
|
|
|
| |
not be used for anything other than backwards compat constraint handling.
Add support for a new DisableEncoding property which contains a list of
registers that should not be encoded by the generated code emitter. Convert
the codeemitter generator to use this, fixing some PPC JIT regressions.
llvm-svn: 31769
|
| |
|
|
| |
llvm-svn: 31748
|
| |
|
|
|
|
| |
have to be a subpart of a complex operand.
llvm-svn: 31618
|
| |
|
|
| |
llvm-svn: 31484
|
| |
|
|
|
|
| |
to extend.
llvm-svn: 31481
|
| |
|
|
| |
llvm-svn: 31480
|
| |
|
|
| |
llvm-svn: 31451
|
| |
|
|
| |
llvm-svn: 31432
|
| |
|
|
|
|
| |
throw an exception.
llvm-svn: 31361
|
| |
|
|
| |
llvm-svn: 31333
|
| |
|
|
| |
llvm-svn: 30890
|
| |
|
|
| |
llvm-svn: 28790
|
| |
|
|
| |
llvm-svn: 28376
|
| |
|
|
| |
llvm-svn: 28366
|
| |
|
|
|
|
| |
represent pointer type.
llvm-svn: 28363
|
| |
|
|
|
|
| |
register classes.
llvm-svn: 28323
|
| |
|
|
| |
llvm-svn: 27568
|
| |
|
|
| |
llvm-svn: 27197
|
| |
|
|
| |
llvm-svn: 27196
|