| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Operand size override prefix to be part of their records.
llvm-svn: 102556
|
|
|
|
| |
llvm-svn: 102493
|
|
|
|
|
|
| |
SHLD16rrCL, just perform custom dag combine to form x86 specific dag so they match to the same pattern. This also makes sure later dag combine do not cause isel to miss them (e.g. promoting i16 to i32).
llvm-svn: 102485
|
|
|
|
| |
llvm-svn: 102467
|
|
|
|
| |
llvm-svn: 101979
|
|
|
|
| |
llvm-svn: 101621
|
|
|
|
| |
llvm-svn: 100480
|
|
|
|
|
|
|
|
|
| |
a new subtarget option for AES and check for the support. Add "westmere"
line of processors and add AES-NI support to the core i7.
Add a couple of TODOs for information I couldn't verify.
llvm-svn: 100231
|
|
|
|
|
|
| |
*input* of other type, which is the VT.
llvm-svn: 99749
|
|
|
|
| |
llvm-svn: 99743
|
|
|
|
|
|
| |
nodes all have an EFLAGS result when made by isel lowering.
llvm-svn: 99736
|
|
|
|
| |
llvm-svn: 99700
|
|
|
|
| |
llvm-svn: 99686
|
|
|
|
|
|
|
| |
Remove much horribleness from X86InstrFormats as a result. Similar
simplifications are probably possible for other targets.
llvm-svn: 99539
|
|
|
|
|
|
|
| |
handles dead implicit results more aggressively. More
to come, I think this is now just a data entry problem.
llvm-svn: 99486
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
illegal code like this:
addl $12, %esp
popl %esi
popl %edi
popl %ebx
popl %ebp
jmpl *__Block_deallocator-L1$pb(%esi) # TAILCALL
The problem is the global base register is assigned GR32 register class. TCRETURNmi needs the registers making up the address mode to have the GR32_TC register class.
The *proper* fix is for X86DAGToDAGISel::getGlobalBaseReg() to return a copy from the global base register of the machine function rather than returning the register itself. But that has the potential of causing it to be coalesced to a more restrictive register class: GR32_TC. It can introduce additional copies and spills. For something as important the PIC base, it's not worth it especially since this is not an issue on 64-bit.
llvm-svn: 99455
|
|
|
|
|
|
|
| |
and defining the add pattern with Pat<>, eliminating a use of
parallel.
llvm-svn: 99375
|
|
|
|
| |
llvm-svn: 99370
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ISD node. The only change in the generated isel code are comments
like:
< // Src: (X86dec_flag:i16 GR16:i16:$src)
---
> // Src: (X86dec_flag:i16:i32 GR16:i16:$src)
because now it knows that X86dec_flag returns both an i16 (for the result)
and an i32 (for EFLAGS) in this case. Wewt.
llvm-svn: 99369
|
|
|
|
| |
llvm-svn: 99359
|
|
|
|
| |
llvm-svn: 99358
|
|
|
|
|
|
| |
that they are dead.
llvm-svn: 99000
|
|
|
|
|
|
|
|
| |
dag isel gen instead of instruction properties. This
allows the oh-so-useful behavior of matching a variadic
non-root node.
llvm-svn: 98934
|
|
|
|
|
|
|
| |
can't match or just have no testcases. Will remove after
confirmation from dan that they really are dead.
llvm-svn: 98930
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to input patterns, we can fix X86ISD::CMP and X86ISD::BT as taking
two inputs (which have to be the same type) and *returning an i32*.
This is how the SDNodes get made in the graph, but we weren't able
to model it this way due to deficiencies in the pattern language.
Now we can change things like this:
def UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
- [(X86cmp RFP80:$lhs, RFP80:$rhs),
- (implicit EFLAGS)]>; // CC = ST(0) cmp ST(i)
+ [(set EFLAGS, (X86cmp RFP80:$lhs, RFP80:$rhs))]>;
and fix terrible crimes like this:
-def : Pat<(parallel (X86cmp GR8:$src1, 0), (implicit EFLAGS)),
+def : Pat<(X86cmp GR8:$src1, 0),
(TEST8rr GR8:$src1, GR8:$src1)>;
This relies on matching the result of TEST8rr (which is EFLAGS, which is
an implicit def) to the result of X86cmp, an i32.
llvm-svn: 98903
|
|
|
|
| |
llvm-svn: 98864
|
|
|
|
|
|
| |
with the integrated assembler!
llvm-svn: 98615
|
|
|
|
|
|
| |
the operand type.
llvm-svn: 98507
|
|
|
|
|
|
| |
PR4841. Patch by Craig Smith!
llvm-svn: 98496
|
|
|
|
|
|
| |
support to allow loads to be folded to tail call instructions.
llvm-svn: 98465
|
|
|
|
|
|
| |
only" so they don't get selected by the asm matcher.
llvm-svn: 98098
|
|
|
|
|
|
| |
only" so they don't get selected by the asm matcher.
llvm-svn: 98097
|
|
|
|
|
|
| |
for the encoding and is not the same as vmptrld.
llvm-svn: 97992
|
|
|
|
| |
llvm-svn: 97982
|
|
|
|
| |
llvm-svn: 97957
|
|
|
|
|
|
| |
instruction.
llvm-svn: 97888
|
|
|
|
|
|
|
| |
We cannot use a normal call here since it has extra unmodelled side
effects (it changes stack pointer). This should fix PR5292.
llvm-svn: 97884
|
|
|
|
|
|
|
|
|
| |
These instructions technically define AL,AH, but a trick in X86ISelDAGToDAG
reads AX in order to avoid reading AH with a REX instruction.
Fix PR6489.
llvm-svn: 97742
|
|
|
|
|
|
| |
better done by dag combine.
llvm-svn: 97633
|
|
|
|
|
|
|
| |
'dsload' pattern. tblgen doesn't check patterns to see if they're
textually identical. This allows better factoring.
llvm-svn: 97630
|
|
|
|
|
|
|
|
| |
that they are not destination type specific. This allows
tblgen to factor them and the type check is redundant with
what the isel does anyway.
llvm-svn: 97629
|
|
|
|
| |
llvm-svn: 97348
|
|
|
|
|
|
| |
instead of %AL/%AH.
llvm-svn: 97006
|
|
|
|
|
|
| |
though some look dubious afaict, these are all ok.
llvm-svn: 96899
|
|
|
|
|
|
| |
tables.
llvm-svn: 96073
|
|
|
|
| |
llvm-svn: 96065
|
|
|
|
|
|
| |
fix swapgs to be spelled right.
llvm-svn: 96058
|
|
|
|
|
|
| |
is pc relative or not, mark call and branches as pcrel.
llvm-svn: 96026
|
|
|
|
| |
llvm-svn: 96011
|
|
|
|
|
|
| |
with "tied memory operands", which is wrong.
llvm-svn: 95950
|