| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
just substituted. This could cause infinite looping in certain
pathological cases.
llvm-svn: 91843
|
| |
|
|
|
|
|
|
|
|
|
| |
values, resolving references to them, and then removing the definitions.
If a template argument is set to an undefined value, we need to resolve
references to that argument to an explicit undefined value. The current code
leaves the reference to the template argument as it is, which causes an
assertion failure later when the definition of the template argument is
removed.
llvm-svn: 89581
|
| |
|
|
| |
llvm-svn: 74445
|
| |
|
|
| |
llvm-svn: 73148
|
| |
|
|
| |
llvm-svn: 73140
|
| |
|
|
|
|
|
| |
regular expressions. We will add an OpenBSD implementation
and re-apply ASAP.
llvm-svn: 73138
|
| |
|
|
| |
llvm-svn: 73099
|
| |
|
|
| |
llvm-svn: 73091
|
| |
|
|
| |
llvm-svn: 73090
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 71811
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 71277
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
#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
|
| |
|
|
|
|
|
| |
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: 66949
|
| |
|
|
| |
llvm-svn: 66663
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
don't fail when (expected) error output is produced. This fixes 17 tests.
While I was there, I also made all RUN lines of the form "not llvm-as..." a bit
more consistent, they now all redirect stderr and stdout to /dev/null and use
input redirect to read their input.
llvm-svn: 52174
|
| |
|
|
| |
llvm-svn: 46930
|
| |
|
|
| |
llvm-svn: 41097
|
| |
|
|
| |
llvm-svn: 37801
|
| |
|
|
|
|
| |
Fix syntax of tests to ensure grep pattern is properly quoted.
llvm-svn: 36134
|
| |
|
|
| |
llvm-svn: 36070
|
| |
|
|
|
|
|
|
| |
global variables that needed to be passed in. This makes it possible to
add new global variables with only a couple changes (Makefile and llvm-dg.exp)
instead of touching every single dg.exp file.
llvm-svn: 35918
|
|
|
llvm-svn: 33296
|