| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 57709
|
| |
|
|
|
|
|
| |
in 32-bit mode instead of assigning a register pair. This has nothing to
do with PR2356, but I happened to notice it while working on it.
llvm-svn: 57704
|
| |
|
|
|
|
| |
except they do not have any operands. The RegModRM byte is encoded with register number 0.
llvm-svn: 57692
|
| |
|
|
| |
llvm-svn: 57691
|
| |
|
|
|
|
|
| |
should work for intel long double, but ppc long double aborts
in convert.
llvm-svn: 57672
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.
A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.
To support this, teach tablegen how to handle 64-bit constants.
llvm-svn: 57663
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
shift counts, and patterns that match dynamic shift counts
when the subtract is obscured by a truncate node.
Add DAGCombiner support for recognizing rotate patterns
when the shift counts are defined by truncate nodes.
Fix and simplify the code for commuting shld and shrd
instructions to work even when the given instruction doesn't
have a parent, and when the caller needs a new instruction.
These changes allow LLVM to use the shld, shrd, rol, and ror
instructions on x86 to replace equivalent code using two
shifts and an or in many more cases.
llvm-svn: 57662
|
| |
|
|
| |
llvm-svn: 57649
|
| |
|
|
| |
llvm-svn: 57644
|
| |
|
|
|
|
| |
uninitialized in these functions with gcc-4.3.
llvm-svn: 57635
|
| |
|
|
| |
llvm-svn: 57631
|
| |
|
|
|
|
|
| |
x86 backend. These will all be answered with "patches welcome", so
a PR doesn't help drive them along.
llvm-svn: 57630
|
| |
|
|
|
|
|
| |
basically working, feel free to remove the tag. The other targets have
really basic things that break them.
llvm-svn: 57628
|
| |
|
|
| |
llvm-svn: 57622
|
| |
|
|
| |
llvm-svn: 57621
|
| |
|
|
|
|
| |
an unindexed load.
llvm-svn: 57612
|
| |
|
|
| |
llvm-svn: 57586
|
| |
|
|
| |
llvm-svn: 57582
|
| |
|
|
| |
llvm-svn: 57579
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
the predicates by extending simple predicates to create
more complex predicates instead of duplicating the logic
for the simple predicates.
This doesn't reduce much redundancy in DAGISelEmitter.cpp's
generated source yet; that will require improvements to
DAGISelEmitter.cpp's instruction sorting, to make it more
effectively group nodes with similar predicates together.
llvm-svn: 57565
|
| |
|
|
| |
llvm-svn: 57557
|
| |
|
|
|
|
|
| |
are due to argument passing in calls. This is significant because
it hits all immediate arguments to calls on x86-32.
llvm-svn: 57556
|
| |
|
|
|
|
|
|
|
|
| |
this:
- movl $0, %eax
- movl %eax, _yy_n_chars
+ movl $0, _yy_n_chars
llvm-svn: 57555
|
| |
|
|
| |
llvm-svn: 57553
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
1. Compute action in X86SelectSelect based on MVT instead of type.
2. Use TLI.getValueType(..) instead of MVT::getVT(..) because the former
handles pointers and the later doesn't.
3. Don't pass TLI into isTypeLegal, since it already has access to it as
an ivar.
#2 gives fast isel some minor new functionality: handling load/stores of
pointers.
llvm-svn: 57552
|
| |
|
|
| |
llvm-svn: 57551
|
| |
|
|
|
|
| |
change the generated code, but makes the code simpler.
llvm-svn: 57550
|
| |
|
|
|
|
|
|
| |
which makes it easy to share the compare/imm folding logic with 'setcc'.
This shaves a bunch of instructions off the common select case, which
happens a lot in llvm-gcc.
llvm-svn: 57549
|
| |
|
|
|
|
| |
loading 4 into a register and then doing the compare.
llvm-svn: 57548
|
| |
|
|
| |
llvm-svn: 57547
|
| |
|
|
| |
llvm-svn: 57546
|
| |
|
|
| |
llvm-svn: 57545
|
| |
|
|
| |
llvm-svn: 57544
|
| |
|
|
|
|
|
|
|
|
|
| |
i.e. conditions that cannot be checked with a single instruction. For example,
SETONE and SETUEQ on x86.
- Teach legalizer to implement *illegal* setcc as a and / or of a number of
legal setcc nodes. For now, only implement FP conditions. e.g. SETONE is
implemented as SETO & SETNE, SETUEQ is SETUO | SETEQ.
- Move x86 target over.
llvm-svn: 57542
|
| |
|
|
|
|
|
|
|
| |
- Move the EH landing-pad code and adjust it so that it works
with FastISel as well as with SDISel.
- Add FastISel support for @llvm.eh.exception and
@llvm.eh.selector.
llvm-svn: 57539
|
| |
|
|
|
|
|
|
| |
for pentium). Fixes
gcc.target/i386/20000720-1.c
gcc.target/i386/pr26826.c
llvm-svn: 57528
|
| |
|
|
| |
llvm-svn: 57526
|
| |
|
|
|
|
| |
left to right)
llvm-svn: 57524
|
| |
|
|
|
|
|
|
|
| |
instead of requiring all "short description" strings to begin with
two spaces. This makes these strings less mysterious, and it fixes
some cases where short description strings mistakenly did not
begin with two spaces.
llvm-svn: 57521
|
| |
|
|
| |
llvm-svn: 57508
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
create a new DAG node to represent the new shift to keep the
DAG consistent, even though it'll almost always be folded into
the address.
If a user of the resulting address has multiple uses, the
nodes may get revisited by a later MatchAddress call, in which
case DAG inconsistencies do matter.
This fixes PR2849.
llvm-svn: 57465
|
| |
|
|
| |
llvm-svn: 57414
|
| |
|
|
|
|
|
| |
parameters instead of raw Constants. This prevents the constants from
being selected by the isel pass, fixing PR2735.
llvm-svn: 57385
|
| |
|
|
| |
llvm-svn: 57381
|
| |
|
|
| |
llvm-svn: 57380
|
| |
|
|
|
|
|
|
| |
the same pattern as roundpd/roundps, the Intel compiler
builtins do not: rounds* has an extra operand. Fixes
gcc.target/i386/sse4_1-rounds[sd]-[1234].c
llvm-svn: 57370
|
| |
|
|
| |
llvm-svn: 57368
|
| |
|
|
|
|
| |
support there. At least, this will allow libgcc compile, however we are not ABI-compatible with stuff compiled with native gcc.
llvm-svn: 57364
|
| |
|
|
| |
llvm-svn: 57363
|
| |
|
|
| |
llvm-svn: 57362
|