| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 24652
|
|
|
|
|
|
| |
the same type as the pointer type for a target.
llvm-svn: 24649
|
|
|
|
|
|
|
|
|
| |
it has more than one real use (non-chain uses).
* Record folded chain producing node in CodeGenMap.
* Do not fold a chain producing node if it has already been selected as an
operand of a chain use.
llvm-svn: 24647
|
|
|
|
|
|
| |
real use
llvm-svn: 24643
|
|
|
|
|
|
|
| |
functions can return false and causing the instruction pattern match to fail.
* Code clean up.
llvm-svn: 24642
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
| |
* Fixed a bug related to hasCtrlDep property use.
llvm-svn: 24610
|
|
|
|
|
|
| |
if available
llvm-svn: 24597
|
|
|
|
| |
llvm-svn: 24593
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
|
|
| |
def SHL8rCL : I<0xD2, MRM4r, (ops R8 :$dst, R8 :$src),
"shl{b} {%cl, $dst|$dst, %CL}",
[(set R8:$dst, (shl R8:$src, CL))]>, Imp<[CL],[]>;
This generates a CopyToReg operand and added its 2nd result to the shl as
a flag operand.
llvm-svn: 24557
|
|
|
|
|
|
|
| |
ValueType from the RegisterClass or Operands. This step is necessary to
allow RegisterClasses to have multiple ValueTypes.
llvm-svn: 24555
|
|
|
|
|
|
| |
permit future changes.
llvm-svn: 24553
|
|
|
|
| |
llvm-svn: 24519
|
|
|
|
| |
llvm-svn: 24393
|
|
|
|
| |
llvm-svn: 24391
|
|
|
|
|
|
| |
on patterns like "(set R32:$dst, (i32 imm:$src))"
llvm-svn: 24383
|
|
|
|
| |
llvm-svn: 24162
|
|
|
|
|
|
|
|
| |
define:
def : Pat<(i1 1), (CMPEQ r0, r0)>;
llvm-svn: 24149
|
|
|
|
|
|
| |
building the itanium backend.
llvm-svn: 24095
|
|
|
|
|
|
|
| |
reflect what it is.
Convert some more code over to use it.
llvm-svn: 24072
|
|
|
|
| |
llvm-svn: 24071
|
|
|
|
| |
llvm-svn: 24010
|
|
|
|
| |
llvm-svn: 24008
|
|
|
|
| |
llvm-svn: 23983
|
|
|
|
|
|
|
| |
tblgen: In ZAPNOTi: Cannot use 'IZAPX' in an input pattern!
for a bad pattern, instead of an ugly assertion.
llvm-svn: 23854
|
|
|
|
|
|
|
|
|
|
| |
write things like this:
def : Pat<(add GPRC:$in, 12),
(ADD12 GPRC:$in)>;
Andrew: if this isn't enough or doesn't work for you, please lemme know.
llvm-svn: 23819
|
|
|
|
| |
llvm-svn: 23817
|
|
|
|
|
|
|
|
|
| |
def : Pat<(trunc G8RC:$in),
(OR8To4 G8RC:$in, X0)>;
Even though this doesn't make any sense on PPC :)
llvm-svn: 23815
|
|
|
|
| |
llvm-svn: 23814
|
|
|
|
|
|
| |
patterns. Certainly a logical request.
llvm-svn: 23810
|
|
|
|
| |
llvm-svn: 23780
|
|
|
|
|
|
| |
SelectNodeTo instead of getTargetNode when possible.
llvm-svn: 23758
|
|
|
|
|
|
|
|
| |
a pattern match, make sure to emit the (minimal number of) type checks that
verify the pattern matches this specific instruction. This allows FMA32
patterns to not match double expressions for example.
llvm-svn: 23748
|
|
|
|
|
|
|
|
| |
type constraint. This lets tblgen realize that it doesn't need any dynamic
type checks for fextend/fround on PPC (and many other targets), because there
are only two fp types.
llvm-svn: 23730
|
|
|
|
|
|
| |
Overall, no functionality change yet though.
llvm-svn: 23729
|
|
|
|
| |
llvm-svn: 23728
|
|
|
|
| |
llvm-svn: 23725
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. If an operation has to be int or fp and the target only supports one
int or fp type, relize that the op has to have that type.
2. If a target has operations on multiple types, do not emit matching code
for patterns involving those operators, since we do not emit the code to
check for them yet. This prevents PPC from generating FP ops currently.
Also move some code around into more logical places.
llvm-svn: 23724
|
|
|
|
|
|
| |
find all of teh pattern matches for EQV from one definition
llvm-svn: 23529
|
|
|
|
|
|
|
|
|
|
|
| |
doesn't have to specify them manually. It currently handles associativity,
e.g. knowing that (X*Y)+Z also matches X+(Y*Z) and will be extended in
the future.
It is smart enough to not introduce duplicate patterns or patterns that can
never match.
llvm-svn: 23526
|
|
|
|
| |
llvm-svn: 23502
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we check that immediate values live on the RHS of commutative
operators. Defining ORI like this, for example:
def ORI : DForm_4<24, (ops GPRC:$dst, GPRC:$src1, u16imm:$src2),
"ori $dst, $src1, $src2",
[(set GPRC:$dst, (or immZExt16:$src2, GPRC:$src1))]>;
results in:
tblgen: In ORI: Instruction can never match: Immediate values must be on the RHS of commutative operators!
llvm-svn: 23501
|
|
|
|
| |
llvm-svn: 23499
|
|
|
|
|
|
|
|
| |
generated
file
llvm-svn: 23492
|
|
|
|
| |
llvm-svn: 23488
|
|
|
|
| |
llvm-svn: 23457
|
|
|
|
|
|
| |
which is not stable.
llvm-svn: 23456
|