| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
a toplevel 'defm', make sure to properly resolve references.
llvm-svn: 106570
|
| |
|
|
|
|
|
| |
The rule is simple: only inherit from a class list if they come
in the end, after the last multiclass.
llvm-svn: 106305
|
| |
|
|
|
|
| |
providing more ways to factor out commonality from the records.
llvm-svn: 105776
|
| |
|
|
| |
llvm-svn: 105519
|
| |
|
|
|
|
| |
Use !cast<string>() to compare other types of objects.
llvm-svn: 92754
|
| |
|
|
| |
llvm-svn: 89582
|
| |
|
|
| |
llvm-svn: 78848
|
| |
|
|
|
|
|
|
| |
- Sorry, I can't help myself.
- No intended functionality change.
llvm-svn: 74742
|
| |
|
|
| |
llvm-svn: 74443
|
| |
|
|
| |
llvm-svn: 73843
|
| |
|
|
|
|
|
| |
regular expressions. We will add an OpenBSD implementation
and re-apply ASAP.
llvm-svn: 73138
|
| |
|
|
| |
llvm-svn: 73099
|
| |
|
|
|
|
|
|
| |
other operators. For the rare cases where a list type cannot be
deduced, provide a []<type> syntax, where <type> is the list element
type.
llvm-svn: 73078
|
| |
|
|
| |
llvm-svn: 73074
|
| |
|
|
| |
llvm-svn: 71815
|
| |
|
|
|
|
|
|
|
|
| |
Ok, not really, but do support some common LISP functions:
* car
* cdr
* null
llvm-svn: 71805
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use it on dags and lists like this:
class decls {
string name;
}
def Decls : decls;
class B<list<string> names> : A<!foreach(Decls.name, names, !strconcat(Decls.name, ", Sr."))>;
llvm-svn: 71803
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
def/var/string substitution on generic pattern templates. For example:
def Type;
def v4f32 : Type;
def TYPE : Type;
class GenType<Type t> {
let type = !(subst TYPE, v4f32, t);
}
def TheType : GenType<TYPE>;
llvm-svn: 71801
|
| |
|
|
| |
llvm-svn: 71794
|
| |
|
|
|
|
|
|
|
|
|
| |
Create an OpInit class to serve as a base for all operation Inits.
Move parsing of operation constructs to separate functions and reference
from multiple places.
Add some commented out new operations. Coming soon.
llvm-svn: 71789
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#NAME# with the name of the defm instantiating the multiclass. This is
useful for AVX instruction naming where a "V" prefix is standard
throughout the ISA. For example:
multiclass SSE_AVX_Inst<...> {
def SS : Instr<...>;
def SD : Instr<...>;
def PS : Instr<...>;
def PD : Instr<...>;
def V#NAME#SS : Instr<...>;
def V#NAME#SD : Instr<...>;
def V#NAME#PS : Instr<...>;
def V#NAME#PD : Instr<...>;
}
defm ADD : SSE_AVX_Inst<...>;
Results in
ADDSS
ADDSD
ADDPS
ADDPD
VADDSS
VADDSD
VADDPS
VADDPD
llvm-svn: 70979
|
| |
|
|
|
|
|
| |
so that it doesn't shadow the instance variable of the same name.
Make the parameter names in method declarations match the definitions.
llvm-svn: 70502
|
| |
|
|
| |
llvm-svn: 70499
|
| |
|
|
| |
llvm-svn: 70319
|
| |
|
|
|
|
|
| |
by base multiclasses. Do not attempt to alter defs from previous base
multiclasses. This fixes multiple multiclass inheritance.
llvm-svn: 69974
|
| |
|
|
|
|
|
| |
allows binops to be used in typed contexts such as when passing
arguments to classes.
llvm-svn: 69921
|
| |
|
|
| |
llvm-svn: 69832
|
| |
|
|
|
|
| |
name in the symbol table, returning an object.
llvm-svn: 69822
|
| |
|
|
| |
llvm-svn: 69810
|
| |
|
|
| |
llvm-svn: 67758
|
| |
|
|
|
|
|
| |
in selectiondag patterns. This is required for the upcoming shuffle_vector rewrite,
and as it turns out, cleans up a hack in the Alpha instruction info.
llvm-svn: 67286
|
| |
|
|
| |
llvm-svn: 66897
|
| |
|
|
| |
llvm-svn: 66895
|
| |
|
|
| |
llvm-svn: 66663
|
| |
|
|
|
|
|
|
|
|
| |
Cleanup some warning.
Remark: when struct/class are declared differently than they are defined, this make problem for VC++ since it seems to mangle class differently that struct. These error are very hard to understand and find. So please, try to keep your definition/declaration in sync.
Only tested with VS2008. hope it does not break anything. feel free to revert.
llvm-svn: 64554
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
def : Pat<((v2f64 (vector_shuffle immAllZerosV_bc,
^
llvm-svn: 49462
|
| |
|
|
| |
llvm-svn: 45827
|
| |
|
|
| |
llvm-svn: 45419
|
| |
|
|
|
|
| |
section from TableGen project file as it is no longer needed. #Include <algorithm> directly from TGParser.cpp so it can see std::reverse.
llvm-svn: 44340
|
| |
|
|
| |
llvm-svn: 44277
|
|
|
bison parser.
This makes the parser much easier to understand, eliminates a ton of global variables,
and gives tblgen nice caret diagnostics. It is also faster, but tblgen probably doesn't
care about performance.
There are a couple of FIXMEs which I will take care of next.
llvm-svn: 44274
|