| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 27188
|
|
|
|
| |
llvm-svn: 27078
|
|
|
|
|
|
|
|
| |
the CodeGen* implementations.
Parse the MVT::ValueType for each operand of the intrinsics.
llvm-svn: 27075
|
|
|
|
| |
llvm-svn: 26869
|
|
|
|
| |
llvm-svn: 26437
|
|
|
|
|
|
| |
packed word integer (v8i16), and 64-bit packed doubleword integer (v2i32).
llvm-svn: 26294
|
|
|
|
| |
llvm-svn: 25673
|
|
|
|
|
|
|
|
|
| |
SNDPOutFlag to DAG nodes. These properties do not belong to target specific
instructions.
* Added DAG node property SNDPOptInFlag. It's same as SNDPInFlag except it's
optional. Used by ret / call, etc.
llvm-svn: 25154
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently tblgen cannot tell which operands in the operand list are results so
it assumes the first one is a result. This is bad. Ideally we would fix this
by separating results from inputs, e.g. (res R32:$dst),
(ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding
'let noResults = 1' is the workaround to tell tblgen that the instruction does
not produces a result. It works for now since tblgen does not support
instructions which produce multiple results.
llvm-svn: 25017
|
|
|
|
|
|
|
| |
support which is fragile.
* Fixed a number of bugs.
llvm-svn: 24996
|
|
|
|
| |
llvm-svn: 24753
|
|
|
|
|
|
| |
* Renamed MatchingNodes to RootNodes.
llvm-svn: 24636
|
|
|
|
|
|
|
| |
matching code that is not currently auto-generated by tblgen, e.g. X86
addressing mode. Selection routines for complex patterns can return multiple operands, e.g. X86 addressing mode returns 4.
llvm-svn: 24634
|
|
|
|
|
|
|
|
|
|
|
| |
* Enhanced tblgen to handle instructions which have chain operand and writes a
chain result.
* Enhanced tblgen to handle instructions which produces no results. Part of
the change is a temporary hack which relies on instruction property (e.g.
isReturn, isBranch). The proper fix would be to change the .td syntax to
separate results dag from ops dag.
llvm-svn: 24587
|
|
|
|
|
|
| |
work. This change has no effect on generated code.
llvm-svn: 24563
|
|
|
|
| |
llvm-svn: 24556
|
|
|
|
| |
llvm-svn: 24514
|
|
|
|
|
|
| |
to JeffC for pointing this out.
llvm-svn: 24426
|
|
|
|
|
|
|
| |
operands, digging into them to find register values (used on X86). Patch
by Evan Cheng!
llvm-svn: 24424
|